
    ;^h;                     h   S r SSKrSSKrSSKrSSKrSSKrSSKJr  SSKJr  SSKJr  SSKJ	r	  SSKJ
r
  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJ r   SSKJ!r!  \RD                  RF                  r#\RH                  " 5       r%Sr&S r' " S  S!\5      r( " S" S#\(5      r)\RT                  RW                  \(       + S$S%9 " S& S'\5      5       r, " S( S)\5      r-g)*a  Tests for detecting function memory leaks (typically the ones
implemented in C). It does so by calling a function many times and
checking whether process memory usage keeps increasing between
calls or over time.
Note that this may produce false positives (especially on Windows
for some reason).
PyPy appears to be completely unstable for this framework, probably
because of how its JIT handles memory, so tests are skipped.
    N)LINUX)MACOS)OPENBSD)POSIX)SUNOS)WINDOWS)HAS_CPU_AFFINITY)HAS_CPU_FREQ)HAS_ENVIRON)
HAS_IONICE)HAS_MEMORY_MAPS)HAS_NET_IO_COUNTERS)HAS_PROC_CPU_NUM)HAS_PROC_IO_COUNTERS)
HAS_RLIMIT)HAS_SENSORS_BATTERY)HAS_SENSORS_FANS)HAS_SENSORS_TEMPERATURES)TestMemoryLeak)create_sockets)
get_testfn)process_namespace)pytest)skip_on_access_denied)spawn_testproc)system_namespace)	terminate   c                      S n U $ )zkDecorator for those Linux functions which are implemented in pure
Python, and which we want to run faster.
c                 F   ^  [         R                  " T 5      U 4S j5       nU$ )Nc                    > [         (       aH  U R                  R                  n [        U R                  l        T" U /UQ70 UD6X0R                  l        $ T" U /UQ70 UD6$ ! X0R                  l        f = fN)r   	__class__times	FEW_TIMES)selfargskwargsbeforefuns       L/var/www/html/env/lib/python3.13/site-packages/psutil/tests/test_memleaks.pywrapper5fewtimes_if_linux.<locals>.decorator.<locals>.wrapper@   sg    u--2+4DNN(t5d5f5+1NN(41$1&11 ,2NN(s    A! !A3)	functoolswraps)r*   r,   s   ` r+   	decorator$fewtimes_if_linux.<locals>.decorator?   s%    				2 
		2      )r0   s    r+   fewtimes_if_linuxr4   :   s    
 r2   c                      \ rS rSrSr\rS r\" 5       S 5       r	\" 5       S 5       r
\" 5       S 5       r\" 5       S 5       r\R                  R                  \(       + SS	9\" 5       S
 5       5       r\R                  R                  \(       + SS	9\" 5       S 5       5       r\" 5       S 5       rS rS r\R                  R                  \(       + SS	9S 5       r\R                  R                  \(       + SS	9S 5       r\R                  R                  \(       + SS	9\" 5       S 5       5       r\R                  R                  \SS	9S 5       r\" 5       S 5       r\" 5       \" \S9S 5       5       r\R                  R                  \ (       + SS	9S 5       r!\R                  R                  \(       + SS	9\" 5       S 5       5       r"\" 5       S 5       r#\" 5       \" \S9S 5       5       r$\" 5       S 5       r%\" 5       \R                  R                  \&(       + SS	9S 5       5       r'\" 5       S 5       r(\" 5       S  5       r)\R                  R                  \(       + SS	9\" 5       S! 5       5       r*S" r+\" 5       S# 5       r,\R                  R                  \-(       + SS	9S$ 5       r.\R                  R                  \-(       + SS	9S% 5       r/\" 5       S& 5       r0\R                  R                  \1(       + SS	9\" 5       S' 5       5       r2\R                  R                  \3(       + S(S	9\R                  R                  \4(       + SS	9S) 5       5       r5\R                  R                  \3(       + S(S	9\R                  R                  \4(       + SS	9S* 5       5       r6\" 5       \R                  R                  \ S+S	9S, 5       5       r7\R                  R                  \8(       + SS	9S- 5       r9\R                  R                  \ (       + SS	9S. 5       r:S/r;g0)1TestProcessObjectLeaksV   z$Test leaks of Process class methods.c                 j    [        S 5      nUR                  XR                  UR                  -   5        g r"   )r   test_class_coveragegetterssettersr&   nss     r+   test_coverage$TestProcessObjectLeaks.test_coverage[   s'    t$
tZZ"**%<=r2   c                 N    U R                  U R                  R                  5        g r"   )executeprocnamer&   s    r+   	test_name TestProcessObjectLeaks.test_name_       TYY^^$r2   c                 N    U R                  U R                  R                  5        g r"   )rA   rB   cmdlinerD   s    r+   test_cmdline#TestProcessObjectLeaks.test_cmdlinec       TYY&&'r2   c                 N    U R                  U R                  R                  5        g r"   )rA   rB   exerD   s    r+   test_exeTestProcessObjectLeaks.test_exeg       TYY]]#r2   c                 N    U R                  U R                  R                  5        g r"   )rA   rB   ppidrD   s    r+   	test_ppid TestProcessObjectLeaks.test_ppidk   rG   r2   z
POSIX onlyreasonc                 N    U R                  U R                  R                  5        g r"   )rA   rB   uidsrD   s    r+   	test_uids TestProcessObjectLeaks.test_uidso        	TYY^^$r2   c                 N    U R                  U R                  R                  5        g r"   )rA   rB   gidsrD   s    r+   	test_gids TestProcessObjectLeaks.test_gidst   r\   r2   c                 N    U R                  U R                  R                  5        g r"   )rA   rB   statusrD   s    r+   test_status"TestProcessObjectLeaks.test_statusy       TYY%%&r2   c                 N    U R                  U R                  R                  5        g r"   )rA   rB   nicerD   s    r+   	test_nice TestProcessObjectLeaks.test_nice}   s    TYY^^$r2   c                 \   ^ ^ [         R                  5       mT R                  UU 4S j5        g )Nc                  :   > TR                   R                  T 5      $ r"   )rB   rg   )nicenessr&   s   r+   <lambda>6TestProcessObjectLeaks.test_nice_set.<locals>.<lambda>   s    TYY^^H5r2   )thisprocrg   rA   )r&   rl   s   `@r+   test_nice_set$TestProcessObjectLeaks.test_nice_set   s    ==?56r2   not supportedc                 N    U R                  U R                  R                  5        g r"   )rA   rB   ionicerD   s    r+   test_ionice"TestProcessObjectLeaks.test_ionice   re   r2   c                 >  ^ ^ [         (       a+  [        R                  5       mT R                  U U4S j5        g T R                  U 4S j5        [        R
                  " [        R                  [        R                  " 5       SS5      nT R                  [        U5        g )Nc                  :   > T R                   R                  T5      $ r"   )rB   rt   )r&   values   r+   rm   8TestProcessObjectLeaks.test_ionice_set.<locals>.<lambda>   s    !1!1%!8r2   c                  V   > T R                   R                  [        R                  5      $ r"   )rB   rt   psutilIOPRIO_CLASS_NONErD   s   r+   rm   rz      s    !1!1&2J2J!Kr2   r   )r   ro   rt   rA   r.   partialcextproc_ioprio_setosgetpidexecute_w_excOSError)r&   r*   ry   s   ` @r+   test_ionice_set&TestProcessObjectLeaks.test_ionice_set   s`    7OO%ELL89LLKL##D$8$8"))+r1MCw,r2   c                 N    U R                  U R                  R                  5        g r"   )rA   rB   io_countersrD   s    r+   test_io_counters'TestProcessObjectLeaks.test_io_counters        	TYY**+r2   zworthless on POSIXc                     [         R                  " 5       R                  5         U R                  U R                  R                  5        g r"   )r|   ProcessusernamerA   rB   rD   s    r+   test_username$TestProcessObjectLeaks.test_username   s-     	!!#TYY''(r2   c                 N    U R                  U R                  R                  5        g r"   )rA   rB   create_timerD   s    r+   test_create_time'TestProcessObjectLeaks.test_create_time       TYY**+r2   )only_ifc                 N    U R                  U R                  R                  5        g r"   )rA   rB   num_threadsrD   s    r+   test_num_threads'TestProcessObjectLeaks.test_num_threads   r   r2   WINDOWS onlyc                 N    U R                  U R                  R                  5        g r"   )rA   rB   num_handlesrD   s    r+   test_num_handles'TestProcessObjectLeaks.test_num_handles   r   r2   c                 N    U R                  U R                  R                  5        g r"   )rA   rB   num_fdsrD   s    r+   test_num_fds#TestProcessObjectLeaks.test_num_fds        	TYY&&'r2   c                 N    U R                  U R                  R                  5        g r"   )rA   rB   num_ctx_switchesrD   s    r+   test_num_ctx_switches,TestProcessObjectLeaks.test_num_ctx_switches       TYY//0r2   c                 N    U R                  U R                  R                  5        g r"   )rA   rB   threadsrD   s    r+   test_threads#TestProcessObjectLeaks.test_threads   r   r2   c                 N    U R                  U R                  R                  5        g r"   )rA   rB   	cpu_timesrD   s    r+   test_cpu_times%TestProcessObjectLeaks.test_cpu_times   s    TYY(()r2   c                 N    U R                  U R                  R                  5        g r"   )rA   rB   cpu_numrD   s    r+   test_cpu_num#TestProcessObjectLeaks.test_cpu_num   r   r2   c                 N    U R                  U R                  R                  5        g r"   )rA   rB   memory_inforD   s    r+   test_memory_info'TestProcessObjectLeaks.test_memory_info   r   r2   c                 N    U R                  U R                  R                  5        g r"   )rA   rB   memory_full_inforD   s    r+   test_memory_full_info,TestProcessObjectLeaks.test_memory_full_info   r   r2   c                 N    U R                  U R                  R                  5        g r"   )rA   rB   terminalrD   s    r+   test_terminal$TestProcessObjectLeaks.test_terminal   s     	TYY''(r2   c                     [         (       a  [        OU R                  nU R                  U R                  R
                  US9  g )Nr$   )r   r%   r$   rA   rB   resumer&   r$   s     r+   test_resume"TestProcessObjectLeaks.test_resume   s+    "U	

TYY%%U3r2   c                 N    U R                  U R                  R                  5        g r"   )rA   rB   cwdrD   s    r+   test_cwdTestProcessObjectLeaks.test_cwd   rQ   r2   c                 N    U R                  U R                  R                  5        g r"   )rA   rB   cpu_affinityrD   s    r+   test_cpu_affinity(TestProcessObjectLeaks.test_cpu_affinity   s    TYY++,r2   c                    ^ ^ [         R                  5       mT R                  UU 4S j5        T R                  [        U 4S j5        g )Nc                  :   > TR                   R                  T 5      $ r"   rB   r   )affinityr&   s   r+   rm   >TestProcessObjectLeaks.test_cpu_affinity_set.<locals>.<lambda>   s    TYY33H=r2   c                  <   > T R                   R                  S/5      $ Nr~   r   rD   s   r+   rm   r      s    tyy/E/Erd/Kr2   )ro   r   rA   r   
ValueError)r&   r   s   `@r+   test_cpu_affinity_set,TestProcessObjectLeaks.test_cpu_affinity_set   s/    ((*=>:'KLr2   c                     [        [        5       S5         U R                  U R                  R                  5        S S S 5        g ! , (       d  f       g = f)Nw)openr   rA   rB   
open_filesrD   s    r+   test_open_files&TestProcessObjectLeaks.test_open_files   s0    *,$LL--. %$$s   &A
Ac                 N    U R                  U R                  R                  5        g r"   )rA   rB   memory_mapsrD   s    r+   test_memory_maps'TestProcessObjectLeaks.test_memory_maps   r   r2   z
LINUX onlyc                 0   ^  T R                  U 4S j5        g )Nc                  V   > T R                   R                  [        R                  5      $ r"   rB   rlimitr|   RLIMIT_NOFILErD   s   r+   rm   4TestProcessObjectLeaks.test_rlimit.<locals>.<lambda>   s    TYY--f.B.BCr2   rA   rD   s   `r+   test_rlimit"TestProcessObjectLeaks.test_rlimit   s     	CDr2   c                    ^ ^ [         R                  [        R                  5      mT R	                  UU 4S j5        T R                  [        [        4U 4S j5        g )Nc                  X   > TR                   R                  [        R                  T 5      $ r"   r   )limitr&   s   r+   rm   8TestProcessObjectLeaks.test_rlimit_set.<locals>.<lambda>   s    TYY--f.B.BEJr2   c                  :   > T R                   R                  S5      $ r   )rB   r   rD   s   r+   rm   r      s    $)):J:J2:Nr2   )ro   r   r|   r   rA   r   r   r   )r&   r   s   `@r+   test_rlimit_set&TestProcessObjectLeaks.test_rlimit_set   s<      4 45JKGZ02NOr2   zworthless on WINDOWSc                    ^ ^ [        5          [        (       a  SOSmT R                  UU 4S j5        S S S 5        g ! , (       d  f       g = f)Ninetallc                  :   > TR                   R                  T 5      $ r"   )rB   net_connections)kindr&   s   r+   rm   =TestProcessObjectLeaks.test_net_connections.<locals>.<lambda>   s    !:!:4!@r2   )r   r   rA   )r&   r   s   `@r+   test_net_connections+TestProcessObjectLeaks.test_net_connections   s/     "U6DLL@A s	   &<
A
c                 N    U R                  U R                  R                  5        g r"   )rA   rB   environrD   s    r+   test_environ#TestProcessObjectLeaks.test_environ  rL   r2   c                 (    U R                  S 5        g )Nc                  R    [         R                  [        R                  " 5       5      $ r"   )r   	proc_infor   r   r3   r2   r+   rm   7TestProcessObjectLeaks.test_proc_info.<locals>.<lambda>  s    T^^BIIK8r2   r   rD   s    r+   test_proc_info%TestProcessObjectLeaks.test_proc_info  s    89r2   r3   N)<__name__
__module____qualname____firstlineno____doc__ro   rB   r>   r4   rE   rJ   rO   rT   r   markskipifr   rZ   r_   rc   rh   rp   r   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r   r   r   r   r   r   r   r   r   r   r   r   r  __static_attributes__r3   r2   r+   r6   r6   V   s   .D> % % ( ( $ $ % % [[E	,7%  8% [[E	,7%  8% ' '%7 [[J?' @' [[J?- @- [[00I,  J, [[&:;) <)
 , , 7+, , , [[GN;, <, [[E	,7(  8( 1 1 7+( , ( * * [[,,_E( F ( , , 1 1 [[E	,7)  8)4 $ $ [[,,_E- F- [[,,_EM FM
 / / [[O+OD,  E, [[E	,7[[J?E @ 8E [[E	,7[[J?P @ 8P
  [[(>?B @ B [[K@( A( [[GN;: <:r2   r6   c                      ^  \ rS rSrSr\U 4S j5       r\U 4S j5       rS r\	(       a  S r
S rS rS	 rS
 rS rSrU =r$ SrU =r$ )TestTerminatedProcessLeaksi  zRepeat the tests above looking for leaks occurring when dealing
with terminated processes raising NoSuchProcess exception.
The C functions are still invoked but will follow different code
paths. We'll check those code paths.
c                   > [         TU ]  5         [        5       U l        [        R
                  " U R                  R                  5      U l        U R                  R                  5         U R                  R                  5         g r"   )
super
setUpClassr   subpr|   r   pidrB   killwaitclsr#   s    r+   r  %TestTerminatedProcessLeaks.setUpClass  sJ    !#>>#((,,/r2   c                 L   > [         TU ]  5         [        U R                  5        g r"   )r  tearDownClassr   r  r  s    r+   r  (TestTerminatedProcessLeaks.tearDownClass  s    #((r2   c                 H     U" 5         g ! [         R                   a     g f = fr"   )r|   NoSuchProcess)r&   r*   s     r+   callTestTerminatedProcessLeaks.call  s$    	E## 		s   
 !!c                 N    U R                  U R                  R                  5        g r"   )rA   rB   r  rD   s    r+   	test_kill$TestTerminatedProcessLeaks.test_kill'      LL(r2   c                 N    U R                  U R                  R                  5        g r"   )rA   rB   r   rD   s    r+   test_terminate)TestTerminatedProcessLeaks.test_terminate*  s    LL,,-r2   c                 N    U R                  U R                  R                  5        g r"   )rA   rB   suspendrD   s    r+   test_suspend'TestTerminatedProcessLeaks.test_suspend-  s    LL**+r2   c                 N    U R                  U R                  R                  5        g r"   )rA   rB   r   rD   s    r+   r   &TestTerminatedProcessLeaks.test_resume0  s    LL))*r2   c                 N    U R                  U R                  R                  5        g r"   )rA   rB   r  rD   s    r+   	test_wait$TestTerminatedProcessLeaks.test_wait3  r&  r2   c                 4   ^  U 4S jnT R                  U5        g )Nc                  x   >  [         R                  T R                  R                  5      $ ! [         a     g f = fr"   )r   r  rB   r  ProcessLookupErrorrD   s   r+   r!  7TestTerminatedProcessLeaks.test_proc_info.<locals>.call8  s1    >>$))--88) s   (, 
99r   )r&   r!  s   ` r+   r  )TestTerminatedProcessLeaks.test_proc_info6  s     LLr2   r3   )r  r	  r
  r  r  classmethodr  r  r!  r   r$  r(  r,  r   r1  r  r  __classcell__)r#   s   @r+   r  r    sb         	)	.	,	+	)	 	# r2   r  r   rV   c                        \ rS rSrS rS rSrg)TestProcessDualImplementationiA  c                 (    U R                  S 5        g )Nc                  P    [         R                  [        R                  " 5       SS9$ )NTuse_pebr   proc_cmdliner   r   r3   r2   r+   rm   ETestProcessDualImplementation.test_cmdline_peb_true.<locals>.<lambda>D  s    T..ryy{D.Ir2   r   rD   s    r+   test_cmdline_peb_true3TestProcessDualImplementation.test_cmdline_peb_trueC  s    IJr2   c                 (    U R                  S 5        g )Nc                  P    [         R                  [        R                  " 5       SS9$ )NFr>  r@  r3   r2   r+   rm   FTestProcessDualImplementation.test_cmdline_peb_false.<locals>.<lambda>G  s    T..ryy{E.Jr2   r   rD   s    r+   test_cmdline_peb_false4TestProcessDualImplementation.test_cmdline_peb_falseF  s    JKr2   r3   N)r  r	  r
  r  rC  rH  r  r3   r2   r+   r;  r;  A  s    KLr2   r;  c                   2   \ rS rSrSrS r\" 5       S 5       r\" 5       S 5       r\" 5       S 5       r	\" 5       S 5       r
\" 5       S 5       r\" 5       \R                  R                  \=(       a    \R"                  " 5       S	:H  S
S9\R                  R                  \(       + SS9S 5       5       5       r\R                  R                  \(       + SS9S 5       rS r\R                  R                  \SS9S 5       rS rS rS r\R                  R                  \=(       a     \R<                  R?                  S5      (       + SS9\" 5       S 5       5       r \" 5       S 5       r!\" 5       \R                  R                  \"(       + SS9S 5       5       r#\" 5       \R                  R                  \=(       a    \RH                  " 5       S:g  SS9S 5       5       r%S r&S r'\" 5       \R                  R                  \((       + SS9S  5       5       r)\" 5       \R                  R                  \*(       + SS9S! 5       5       r+\" 5       \R                  R                  \,(       + SS9S" 5       5       r-\" 5       S# 5       r.S$ r/S% r0\(       a  S& r1S' r2S( r3S) r4S* r5S+r6g,S+r6g,)-TestModuleFunctionsLeaksiO  z&Test leaks of psutil module functions.c                 N    [        5       nUR                  XR                  5        g r"   )r   r9   r   r<   s     r+   r>   &TestModuleFunctionsLeaks.test_coverageR  s    
tVV,r2   c                 (    U R                  S 5        g )Nc                  *    [         R                  " SS9$ )NTlogicalr|   	cpu_countr3   r2   r+   rm   9TestModuleFunctionsLeaks.test_cpu_count.<locals>.<lambda>Z  s    V--d;r2   r   rD   s    r+   test_cpu_count'TestModuleFunctionsLeaks.test_cpu_countX  s    ;<r2   c                 (    U R                  S 5        g )Nc                  *    [         R                  " SS9$ )NFrP  rR  r3   r2   r+   rm   ?TestModuleFunctionsLeaks.test_cpu_count_cores.<locals>.<lambda>^  s    V--e<r2   r   rD   s    r+   test_cpu_count_cores-TestModuleFunctionsLeaks.test_cpu_count_cores\  s    <=r2   c                 B    U R                  [        R                  5        g r"   )rA   r|   r   rD   s    r+   r   'TestModuleFunctionsLeaks.test_cpu_times`      V%%&r2   c                 (    U R                  S 5        g )Nc                  *    [         R                  " SS9$ )NT)percpu)r|   r   r3   r2   r+   rm   =TestModuleFunctionsLeaks.test_per_cpu_times.<locals>.<lambda>f  s    V--T:r2   r   rD   s    r+   test_per_cpu_times+TestModuleFunctionsLeaks.test_per_cpu_timesd  s    :;r2   c                 B    U R                  [        R                  5        g r"   )rA   r|   	cpu_statsrD   s    r+   test_cpu_stats'TestModuleFunctionsLeaks.test_cpu_statsh  r^  r2   arm64zskipped due to #1892rV   rr   c                 B    U R                  [        R                  5        g r"   )rA   r|   cpu_freqrD   s    r+   test_cpu_freq&TestModuleFunctionsLeaks.test_cpu_freql  s     	V__%r2   r   c                 l    [         R                  " 5         U R                  [         R                  5        g r"   )r|   
getloadavgrA   rD   s    r+   test_getloadavg(TestModuleFunctionsLeaks.test_getloadavgu  s     V&&'r2   c                 B    U R                  [        R                  5        g r"   )rA   r|   virtual_memoryrD   s    r+   test_virtual_memory,TestModuleFunctionsLeaks.test_virtual_memory|  s    V**+r2   z&worthless on SUNOS (uses a subprocess)c                 B    U R                  [        R                  5        g r"   )rA   r|   swap_memoryrD   s    r+   test_swap_memory)TestModuleFunctionsLeaks.test_swap_memory  s    V''(r2   c                 `    [         (       a  [        OU R                  nU R                  S US9  g )Nc                  T    [         R                  " [        R                  " 5       5      $ r"   )r|   
pid_existsr   r   r3   r2   r+   rm   :TestModuleFunctionsLeaks.test_pid_exists.<locals>.<lambda>  s    V..ryy{;r2   r   r   r%   r$   rA   r   s     r+   test_pid_exists(TestModuleFunctionsLeaks.test_pid_exists  s"    "U	

;5Ir2   c                 `    [         (       a  [        OU R                  nU R                  S US9  g )Nc                  .    [         R                  " S5      $ )N.)r|   
disk_usager3   r2   r+   rm   :TestModuleFunctionsLeaks.test_disk_usage.<locals>.<lambda>  s    V..s3r2   r   r~  r   s     r+   test_disk_usage(TestModuleFunctionsLeaks.test_disk_usage  s"    "U	

35Ar2   c                 B    U R                  [        R                  5        g r"   )rA   r|   disk_partitionsrD   s    r+   test_disk_partitions-TestModuleFunctionsLeaks.test_disk_partitions  s    V++,r2   z/proc/diskstatsz3/proc/diskstats not available on this Linux versionc                 (    U R                  S 5        g )Nc                  *    [         R                  " SS9$ NF)nowrap)r|   disk_io_countersr3   r2   r+   rm   @TestModuleFunctionsLeaks.test_disk_io_counters.<locals>.<lambda>  s    V44EBr2   r   rD   s    r+   test_disk_io_counters.TestModuleFunctionsLeaks.test_disk_io_counters  s     	BCr2   c                 B    U R                  [        R                  5        g r"   )rA   r|   pidsrD   s    r+   	test_pids"TestModuleFunctionsLeaks.test_pids  s    V[[!r2   c                 (    U R                  S 5        g )Nc                  *    [         R                  " SS9$ r  )r|   net_io_countersr3   r2   r+   rm   ?TestModuleFunctionsLeaks.test_net_io_counters.<locals>.<lambda>  s    V335Ar2   r   rD   s    r+   test_net_io_counters-TestModuleFunctionsLeaks.test_net_io_counters  s     	ABr2   r   zneed root accessc                     [         R                  " SS9  [        5          U R                  S 5        S S S 5        g ! , (       d  f       g = f)Nr   r   c                  *    [         R                  " SS9$ )Nr   r  )r|   r   r3   r2   r+   rm   ?TestModuleFunctionsLeaks.test_net_connections.<locals>.<lambda>  s    !7!7U!Cr2   )r|   r   r   rA   rD   s    r+   r   -TestModuleFunctionsLeaks.test_net_connections  s1     	E*LLCD s	   ;
A	c                 r    [         (       a  SOU R                  nU R                  [        R                  US9  g )Ni @ )	tolerance)r   r  rA   r|   net_if_addrs)r&   r  s     r+   test_net_if_addrs*TestModuleFunctionsLeaks.test_net_if_addrs  s'    !(Idnn	V((I>r2   c                 B    U R                  [        R                  5        g r"   )rA   r|   net_if_statsrD   s    r+   test_net_if_stats*TestModuleFunctionsLeaks.test_net_if_stats  s    V(()r2   c                 B    U R                  [        R                  5        g r"   )rA   r|   sensors_batteryrD   s    r+   test_sensors_battery-TestModuleFunctionsLeaks.test_sensors_battery  s     	V++,r2   c                 B    U R                  [        R                  5        g r"   )rA   r|   sensors_temperaturesrD   s    r+   test_sensors_temperatures2TestModuleFunctionsLeaks.test_sensors_temperatures  s     	V001r2   c                 B    U R                  [        R                  5        g r"   )rA   r|   sensors_fansrD   s    r+   test_sensors_fans*TestModuleFunctionsLeaks.test_sensors_fans  s     	V(()r2   c                 B    U R                  [        R                  5        g r"   )rA   r|   	boot_timerD   s    r+   test_boot_time'TestModuleFunctionsLeaks.test_boot_time  r^  r2   c                 B    U R                  [        R                  5        g r"   )rA   r|   usersrD   s    r+   
test_users#TestModuleFunctionsLeaks.test_users  s    V\\"r2   c                 (    U R                  S 5        g )Nc                  .    [         R                  " S5      $ )NF)r|   
_set_debugr3   r2   r+   rm   9TestModuleFunctionsLeaks.test_set_debug.<locals>.<lambda>  s    V..u5r2   r   rD   s    r+   test_set_debug'TestModuleFunctionsLeaks.test_set_debug  s    56r2   c                 B    U R                  [        R                  5        g r"   )rA   r   winservice_enumeraterD   s    r+   test_win_service_iter.TestModuleFunctionsLeaks.test_win_service_iter  s    LL223r2   c                     g r"   r3   rD   s    r+   test_win_service_get-TestModuleFunctionsLeaks.test_win_service_get  s    r2   c                    ^ [        [        R                  " 5       5      R                  5       mU R	                  U4S j5        g )Nc                  .   > [         R                  T 5      $ r"   )r   winservice_query_configrC   s   r+   rm   FTestModuleFunctionsLeaks.test_win_service_get_config.<locals>.<lambda>      !=!=d!Cr2   nextr|   win_service_iterrC   rA   r&   rC   s    @r+   test_win_service_get_config4TestModuleFunctionsLeaks.test_win_service_get_config  ,    //12779DLLCDr2   c                    ^ [        [        R                  " 5       5      R                  5       mU R	                  U4S j5        g )Nc                  .   > [         R                  T 5      $ r"   )r   winservice_query_statusr  s   r+   rm   FTestModuleFunctionsLeaks.test_win_service_get_status.<locals>.<lambda>  r  r2   r  r  s    @r+   test_win_service_get_status4TestModuleFunctionsLeaks.test_win_service_get_status  r  r2   c                    ^ [        [        R                  " 5       5      R                  5       mU R	                  U4S j5        g )Nc                  .   > [         R                  T 5      $ r"   )r   winservice_query_descrr  s   r+   rm   KTestModuleFunctionsLeaks.test_win_service_get_description.<locals>.<lambda>  s    !<!<T!Br2   r  r  s    @r+    test_win_service_get_description9TestModuleFunctionsLeaks.test_win_service_get_description  s,    //12779DLLBCr2   r3   N)7r  r	  r
  r  r  r>   r4   rU  rZ  r   rc  rg  r   r  r  r   platformmachiner
   rl  r   rp  rt  r   rx  r  r  r  r   r   pathexistsr  r  r   r  getuidr   r  r  r   r  r   r  r   r  r  r  r  r  r  r  r  r  r  r3   r2   r+   rK  rK  O  s9   0- = = > > ' ' < < ' ' [[/(""$/8N   [[L(A& B & [[GN;( <(, [[&NO) P)JB- [[7bggnn%677D   D 	
D
 " "
 [[//HC I C [[2"))+"2;MNE O E?
*
 [[//H- I - [[44_M2 N 2 [[,,_E* F *
 ' '#7 	4		E	E	D% r2   rK  ).r  r.   r   r  r|   psutil._commonr   r   r   r   r   r   psutil.testsr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   _psplatformr   r   ro   r%   r4   r6   r  r  r  r;  rK  r3   r2   r+   <module>r     s     	          ) % $ # ( , ) - # , ) 1 ' ' # *  . ' ) " >>	8r:^ r:j3!7 3l K7LN L 8LXD~ XDr2   