
    9i:                     d   S 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  SSK
J r   \RB                  RD                  r"\RF                  " 5       r$Sr%S  r& " S! S"\5      r' " S# S$\'5      r(\RR                  RU                  \	(       + 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)AARCH64)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_subproc)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       Z/var/www/html/land-doc-ocr/venv/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      )r1   s    r,   fewtimes_if_linuxr5   7   s    
 r3   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TestProcessObjectLeaksS   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_coverageX   s'    t$
tZZ"**%<=r3   c                 N    U R                  U R                  R                  5        g r#   )executeprocnamer'   s    r,   	test_name TestProcessObjectLeaks.test_name\       TYY^^$r3   c                 N    U R                  U R                  R                  5        g r#   )rB   rC   cmdlinerE   s    r,   test_cmdline#TestProcessObjectLeaks.test_cmdline`       TYY&&'r3   c                 N    U R                  U R                  R                  5        g r#   )rB   rC   exerE   s    r,   test_exeTestProcessObjectLeaks.test_exed       TYY]]#r3   c                 N    U R                  U R                  R                  5        g r#   )rB   rC   ppidrE   s    r,   	test_ppid TestProcessObjectLeaks.test_ppidh   rH   r3   z
POSIX onlyreasonc                 N    U R                  U R                  R                  5        g r#   )rB   rC   uidsrE   s    r,   	test_uids TestProcessObjectLeaks.test_uidsl        	TYY^^$r3   c                 N    U R                  U R                  R                  5        g r#   )rB   rC   gidsrE   s    r,   	test_gids TestProcessObjectLeaks.test_gidsq   r]   r3   c                 N    U R                  U R                  R                  5        g r#   )rB   rC   statusrE   s    r,   test_status"TestProcessObjectLeaks.test_statusv       TYY%%&r3   c                 N    U R                  U R                  R                  5        g r#   )rB   rC   nicerE   s    r,   	test_nice TestProcessObjectLeaks.test_nicez   s    TYY^^$r3   c                 \   ^ ^ [         R                  5       mT R                  UU 4S j5        g )Nc                  :   > TR                   R                  T 5      $ r#   )rC   rh   )nicenessr'   s   r,   <lambda>6TestProcessObjectLeaks.test_nice_set.<locals>.<lambda>   s    TYY^^H5r3   )thisprocrh   rB   )r'   rm   s   `@r,   test_nice_set$TestProcessObjectLeaks.test_nice_set}   s    ==?56r3   not supportedc                 N    U R                  U R                  R                  5        g r#   )rB   rC   ionicerE   s    r,   test_ionice"TestProcessObjectLeaks.test_ionice   rf   r3   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#   )rC   ru   )r'   values   r,   rn   8TestProcessObjectLeaks.test_ionice_set.<locals>.<lambda>   s    !1!1%!8r3   c                  V   > T R                   R                  [        R                  5      $ r#   )rC   ru   psutilIOPRIO_CLASS_NONErE   s   r,   rn   r{      s    !1!1&2J2J!Kr3   r   )r   rp   ru   rB   r/   partialcextproc_ioprio_setosgetpidexecute_w_excOSError)r'   r+   rz   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,r3   c                 N    U R                  U R                  R                  5        g r#   )rB   rC   io_countersrE   s    r,   test_io_counters'TestProcessObjectLeaks.test_io_counters        	TYY**+r3   zworthless on POSIXc                     [         R                  " 5       R                  5         U R                  U R                  R                  5        g r#   )r}   ProcessusernamerB   rC   rE   s    r,   test_username$TestProcessObjectLeaks.test_username   s-     	!!#TYY''(r3   c                 N    U R                  U R                  R                  5        g r#   )rB   rC   create_timerE   s    r,   test_create_time'TestProcessObjectLeaks.test_create_time       TYY**+r3   )only_ifc                 N    U R                  U R                  R                  5        g r#   )rB   rC   num_threadsrE   s    r,   test_num_threads'TestProcessObjectLeaks.test_num_threads   r   r3   WINDOWS onlyc                 N    U R                  U R                  R                  5        g r#   )rB   rC   num_handlesrE   s    r,   test_num_handles'TestProcessObjectLeaks.test_num_handles   r   r3   c                 N    U R                  U R                  R                  5        g r#   )rB   rC   num_fdsrE   s    r,   test_num_fds#TestProcessObjectLeaks.test_num_fds        	TYY&&'r3   c                 N    U R                  U R                  R                  5        g r#   )rB   rC   num_ctx_switchesrE   s    r,   test_num_ctx_switches,TestProcessObjectLeaks.test_num_ctx_switches       TYY//0r3   c                 N    U R                  U R                  R                  5        g r#   )rB   rC   threadsrE   s    r,   test_threads#TestProcessObjectLeaks.test_threads   r   r3   c                 N    U R                  U R                  R                  5        g r#   )rB   rC   	cpu_timesrE   s    r,   test_cpu_times%TestProcessObjectLeaks.test_cpu_times   s    TYY(()r3   c                 N    U R                  U R                  R                  5        g r#   )rB   rC   cpu_numrE   s    r,   test_cpu_num#TestProcessObjectLeaks.test_cpu_num   r   r3   c                 N    U R                  U R                  R                  5        g r#   )rB   rC   memory_inforE   s    r,   test_memory_info'TestProcessObjectLeaks.test_memory_info   r   r3   c                 N    U R                  U R                  R                  5        g r#   )rB   rC   memory_full_inforE   s    r,   test_memory_full_info,TestProcessObjectLeaks.test_memory_full_info   r   r3   c                 N    U R                  U R                  R                  5        g r#   )rB   rC   terminalrE   s    r,   test_terminal$TestProcessObjectLeaks.test_terminal   s     	TYY''(r3   c                     [         (       a  [        OU R                  nU R                  U R                  R
                  US9  g )Nr%   )r   r&   r%   rB   rC   resumer'   r%   s     r,   test_resume"TestProcessObjectLeaks.test_resume   s+    "U	

TYY%%U3r3   c                 N    U R                  U R                  R                  5        g r#   )rB   rC   cwdrE   s    r,   test_cwdTestProcessObjectLeaks.test_cwd   rR   r3   c                 N    U R                  U R                  R                  5        g r#   )rB   rC   cpu_affinityrE   s    r,   test_cpu_affinity(TestProcessObjectLeaks.test_cpu_affinity   s    TYY++,r3   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#   rC   r   )affinityr'   s   r,   rn   >TestProcessObjectLeaks.test_cpu_affinity_set.<locals>.<lambda>   s    TYY33H=r3   c                  <   > T R                   R                  S/5      $ Nr   r   rE   s   r,   rn   r      s    tyy/E/Erd/Kr3   )rp   r   rB   r   
ValueError)r'   r   s   `@r,   test_cpu_affinity_set,TestProcessObjectLeaks.test_cpu_affinity_set   s/    ((*=>:'KLr3   c                     [        [        5       S5         U R                  U R                  R                  5        S S S 5        g ! , (       d  f       g = f)Nw)openr   rB   rC   
open_filesrE   s    r,   test_open_files&TestProcessObjectLeaks.test_open_files   s0    *,$LL--. %$$s   &A
Ac                 N    U R                  U R                  R                  5        g r#   )rB   rC   memory_mapsrE   s    r,   test_memory_maps'TestProcessObjectLeaks.test_memory_maps   r   r3   z
LINUX onlyc                 0   ^  T R                  U 4S j5        g )Nc                  V   > T R                   R                  [        R                  5      $ r#   rC   rlimitr}   RLIMIT_NOFILErE   s   r,   rn   4TestProcessObjectLeaks.test_rlimit.<locals>.<lambda>   s    TYY--f.B.BCr3   rB   rE   s   `r,   test_rlimit"TestProcessObjectLeaks.test_rlimit   s     	CDr3   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,   rn   8TestProcessObjectLeaks.test_rlimit_set.<locals>.<lambda>   s    TYY--f.B.BEJr3   c                  :   > T R                   R                  S5      $ r   )rC   r   rE   s   r,   rn   r      s    $)):J:J2:Nr3   )rp   r   r}   r   rB   r   r   r   )r'   r   s   `@r,   test_rlimit_set&TestProcessObjectLeaks.test_rlimit_set   s<      4 45JKGZ02NOr3   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#   )rC   net_connections)kindr'   s   r,   rn   =TestProcessObjectLeaks.test_net_connections.<locals>.<lambda>   s    !:!:4!@r3   )r   r   rB   )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#   )rB   rC   environrE   s    r,   test_environ#TestProcessObjectLeaks.test_environ   rM   r3   c                 (    U R                  S 5        g )Nc                  R    [         R                  [        R                  " 5       5      $ r#   )r   	proc_infor   r   r4   r3   r,   rn   7TestProcessObjectLeaks.test_proc_info.<locals>.<lambda>  s    T^^BIIK8r3   r   rE   s    r,   test_proc_info%TestProcessObjectLeaks.test_proc_info  s    89r3   r4   N)<__name__
__module____qualname____firstlineno____doc__rp   rC   r?   r5   rF   rK   rP   rU   r   markskipifr   r[   r`   rd   ri   rq   r   rv   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__r4   r3   r,   r7   r7   S   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;: <:r3   r7   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   pidrC   killwaitclsr$   s    r,   r  %TestTerminatedProcessLeaks.setUpClass  sI     ?>>#((,,/r3   c                 L   > [         TU ]  5         [        U R                  5        g r#   )r  tearDownClassr   r  r  s    r,   r  (TestTerminatedProcessLeaks.tearDownClass  s    #((r3   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#   )rB   rC   r  rE   s    r,   	test_kill$TestTerminatedProcessLeaks.test_kill$      LL(r3   c                 N    U R                  U R                  R                  5        g r#   )rB   rC   r   rE   s    r,   test_terminate)TestTerminatedProcessLeaks.test_terminate'  s    LL,,-r3   c                 N    U R                  U R                  R                  5        g r#   )rB   rC   suspendrE   s    r,   test_suspend'TestTerminatedProcessLeaks.test_suspend*  s    LL**+r3   c                 N    U R                  U R                  R                  5        g r#   )rB   rC   r   rE   s    r,   r   &TestTerminatedProcessLeaks.test_resume-  s    LL))*r3   c                 N    U R                  U R                  R                  5        g r#   )rB   rC   r  rE   s    r,   	test_wait$TestTerminatedProcessLeaks.test_wait0  r'  r3   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  rC   r  ProcessLookupErrorrE   s   r,   r"  7TestTerminatedProcessLeaks.test_proc_info.<locals>.call5  s1    >>$))--88) s   (, 
99r   )r'   r"  s   ` r,   r  )TestTerminatedProcessLeaks.test_proc_info3  s     LLr3   r4   )r	  r
  r  r  r  classmethodr  r  r"  r   r%  r)  r-  r   r2  r  r  __classcell__)r$   s   @r,   r  r    sb         	)	.	,	+	)	 	# r3   r  r   rW   c                        \ rS rSrS rS rSrg)TestProcessDualImplementationi>  c                 (    U R                  S 5        g )Nc                  P    [         R                  [        R                  " 5       SS9$ )NTuse_pebr   proc_cmdliner   r   r4   r3   r,   rn   ETestProcessDualImplementation.test_cmdline_peb_true.<locals>.<lambda>A  s    T..ryy{D.Ir3   r   rE   s    r,   test_cmdline_peb_true3TestProcessDualImplementation.test_cmdline_peb_true@  s    IJr3   c                 (    U R                  S 5        g )Nc                  P    [         R                  [        R                  " 5       SS9$ )NFr?  rA  r4   r3   r,   rn   FTestProcessDualImplementation.test_cmdline_peb_false.<locals>.<lambda>D  s    T..ryy{E.Jr3   r   rE   s    r,   test_cmdline_peb_false4TestProcessDualImplementation.test_cmdline_peb_falseC  s    JKr3   r4   N)r	  r
  r  r  rD  rI  r  r4   r3   r,   r<  r<  >  s    KLr3   r<  c                      \ 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    \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    \RF                  " 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$ r/\(       a  S% r0S& r1S' r2S( r3S) r4S*r5g+S*r5g+),TestModuleFunctionsLeaksiL  z&Test leaks of psutil module functions.c                 N    [        5       nUR                  XR                  5        g r#   )r   r:   r   r=   s     r,   r?   &TestModuleFunctionsLeaks.test_coverageO  s    
tVV,r3   c                 (    U R                  S 5        g )Nc                  *    [         R                  " SS9$ )NTlogicalr}   	cpu_countr4   r3   r,   rn   9TestModuleFunctionsLeaks.test_cpu_count.<locals>.<lambda>W  s    V--d;r3   r   rE   s    r,   test_cpu_count'TestModuleFunctionsLeaks.test_cpu_countU  s    ;<r3   c                 (    U R                  S 5        g )Nc                  *    [         R                  " SS9$ )NFrQ  rS  r4   r3   r,   rn   ?TestModuleFunctionsLeaks.test_cpu_count_cores.<locals>.<lambda>[  s    V--e<r3   r   rE   s    r,   test_cpu_count_cores-TestModuleFunctionsLeaks.test_cpu_count_coresY  s    <=r3   c                 B    U R                  [        R                  5        g r#   )rB   r}   r   rE   s    r,   r   'TestModuleFunctionsLeaks.test_cpu_times]      V%%&r3   c                 (    U R                  S 5        g )Nc                  *    [         R                  " SS9$ )NT)percpu)r}   r   r4   r3   r,   rn   =TestModuleFunctionsLeaks.test_per_cpu_times.<locals>.<lambda>c  s    V--T:r3   r   rE   s    r,   test_per_cpu_times+TestModuleFunctionsLeaks.test_per_cpu_timesa  s    :;r3   c                 B    U R                  [        R                  5        g r#   )rB   r}   	cpu_statsrE   s    r,   test_cpu_stats'TestModuleFunctionsLeaks.test_cpu_statse  r_  r3   zskipped due to #1892rW   rs   c                 B    U R                  [        R                  5        g r#   )rB   r}   cpu_freqrE   s    r,   test_cpu_freq&TestModuleFunctionsLeaks.test_cpu_freqi  s    
 	V__%r3   r   c                 l    [         R                  " 5         U R                  [         R                  5        g r#   )r}   
getloadavgrB   rE   s    r,   test_getloadavg(TestModuleFunctionsLeaks.test_getloadavgp  s     V&&'r3   c                 B    U R                  [        R                  5        g r#   )rB   r}   virtual_memoryrE   s    r,   test_virtual_memory,TestModuleFunctionsLeaks.test_virtual_memoryw  s    V**+r3   z&worthless on SUNOS (uses a subprocess)c                 B    U R                  [        R                  5        g r#   )rB   r}   swap_memoryrE   s    r,   test_swap_memory)TestModuleFunctionsLeaks.test_swap_memory{  s    V''(r3   c                 `    [         (       a  [        OU R                  nU R                  S US9  g )Nc                  T    [         R                  " [        R                  " 5       5      $ r#   )r}   
pid_existsr   r   r4   r3   r,   rn   :TestModuleFunctionsLeaks.test_pid_exists.<locals>.<lambda>  s    V..ryy{;r3   r   r   r&   r%   rB   r   s     r,   test_pid_exists(TestModuleFunctionsLeaks.test_pid_exists  s"    "U	

;5Ir3   c                 `    [         (       a  [        OU R                  nU R                  S US9  g )Nc                  .    [         R                  " S5      $ )N.)r}   
disk_usager4   r3   r,   rn   :TestModuleFunctionsLeaks.test_disk_usage.<locals>.<lambda>  s    V..s3r3   r   r~  r   s     r,   test_disk_usage(TestModuleFunctionsLeaks.test_disk_usage  s"    "U	

35Ar3   c                 B    U R                  [        R                  5        g r#   )rB   r}   disk_partitionsrE   s    r,   test_disk_partitions-TestModuleFunctionsLeaks.test_disk_partitions  s    V++,r3   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_countersr4   r3   r,   rn   @TestModuleFunctionsLeaks.test_disk_io_counters.<locals>.<lambda>  s    V44EBr3   r   rE   s    r,   test_disk_io_counters.TestModuleFunctionsLeaks.test_disk_io_counters  s     	BCr3   c                 B    U R                  [        R                  5        g r#   )rB   r}   pidsrE   s    r,   	test_pids"TestModuleFunctionsLeaks.test_pids  s    V[[!r3   c                 (    U R                  S 5        g )Nc                  *    [         R                  " SS9$ r  )r}   net_io_countersr4   r3   r,   rn   ?TestModuleFunctionsLeaks.test_net_io_counters.<locals>.<lambda>  s    V335Ar3   r   rE   s    r,   test_net_io_counters-TestModuleFunctionsLeaks.test_net_io_counters  s     	ABr3   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   r4   r3   r,   rn   ?TestModuleFunctionsLeaks.test_net_connections.<locals>.<lambda>  s    !7!7U!Cr3   )r}   r   r   rB   rE   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  rB   r}   net_if_addrs)r'   r  s     r,   test_net_if_addrs*TestModuleFunctionsLeaks.test_net_if_addrs  s'    !(Idnn	V((I>r3   c                 B    U R                  [        R                  5        g r#   )rB   r}   net_if_statsrE   s    r,   test_net_if_stats*TestModuleFunctionsLeaks.test_net_if_stats  s    V(()r3   c                 B    U R                  [        R                  5        g r#   )rB   r}   sensors_batteryrE   s    r,   test_sensors_battery-TestModuleFunctionsLeaks.test_sensors_battery  s     	V++,r3   c                 B    U R                  [        R                  5        g r#   )rB   r}   sensors_temperaturesrE   s    r,   test_sensors_temperatures2TestModuleFunctionsLeaks.test_sensors_temperatures  s     	V001r3   c                 B    U R                  [        R                  5        g r#   )rB   r}   sensors_fansrE   s    r,   test_sensors_fans*TestModuleFunctionsLeaks.test_sensors_fans  s     	V(()r3   c                 B    U R                  [        R                  5        g r#   )rB   r}   	boot_timerE   s    r,   test_boot_time'TestModuleFunctionsLeaks.test_boot_time  r_  r3   c                 B    U R                  [        R                  5        g r#   )rB   r}   usersrE   s    r,   
test_users#TestModuleFunctionsLeaks.test_users  s    V\\"r3   c                 (    U R                  S 5        g )Nc                  .    [         R                  " S5      $ )NF)r}   
_set_debugr4   r3   r,   rn   9TestModuleFunctionsLeaks.test_set_debug.<locals>.<lambda>  s    V..u5r3   r   rE   s    r,   test_set_debug'TestModuleFunctionsLeaks.test_set_debug  s    56r3   c                 B    U R                  [        R                  5        g r#   )rB   r   winservice_enumeraterE   s    r,   test_win_service_iter.TestModuleFunctionsLeaks.test_win_service_iter  s    LL223r3   c                     g r#   r4   rE   s    r,   test_win_service_get-TestModuleFunctionsLeaks.test_win_service_get  s    r3   c                    ^ [        [        R                  " 5       5      R                  5       mU R	                  U4S j5        g )Nc                  .   > [         R                  T 5      $ r#   )r   winservice_query_configrD   s   r,   rn   FTestModuleFunctionsLeaks.test_win_service_get_config.<locals>.<lambda>      !=!=d!Cr3   nextr}   win_service_iterrD   rB   r'   rD   s    @r,   test_win_service_get_config4TestModuleFunctionsLeaks.test_win_service_get_config  ,    //12779DLLCDr3   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,   rn   FTestModuleFunctionsLeaks.test_win_service_get_status.<locals>.<lambda>  r  r3   r  r  s    @r,   test_win_service_get_status4TestModuleFunctionsLeaks.test_win_service_get_status  r  r3   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,   rn   KTestModuleFunctionsLeaks.test_win_service_get_description.<locals>.<lambda>  s    !<!<T!Br3   r  r  s    @r,    test_win_service_get_description9TestModuleFunctionsLeaks.test_win_service_get_description  s,    //12779DLLBCr3   r4   N)6r	  r
  r  r  r  r?   r5   rV  r[  r   rd  rh  r   r  r  r   r	   r   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  r4   r3   r,   rL  rL  L  s%   0- = = > > ' ' < < ' ' [[)'2HI[[L(A& B J & [[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% r3   rL  )-r  r/   r   r}   r   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   r   _psplatformr   r   rp   r&   r5   r7   r  r  r  r<  rL  r4   r3   r,   <module>r     s     	          ) % $ # ( , ) - # , ) 1 ' ' # *  . & ) ">>	8r:^ r:j3!7 3l K7LN L 8LVD~ VDr3   