
    Xh:                     j   d Z ddlZddlZddlZddlZddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 ddlm
Z
 dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z  ddlm!Z! ejD                  jF                  Z# ejH                         Z%dZ&d  Z' G d! d"e      Z( G d# d$e(      Z)ejT                  jW                  e
 d%&       G d' d(e             Z, G d) d*e      Z-y)+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                      d } | S )zsDecorator for those Linux functions which are implemented in pure
    Python, and which we want to run faster.
    c                 B     t        j                          fd       }|S )Nc                     t         rI| j                  j                  }	 t        | j                  _         | g|i ||| j                  _        S  | g|i |S # || j                  _        w xY wN)r   	__class__times	FEW_TIMES)selfargskwargsbeforefuns       N/var/www/html/myenv/lib/python3.12/site-packages/psutil/tests/test_memleaks.pywrapperz5fewtimes_if_linux.<locals>.decorator.<locals>.wrapper>   si    --2+4DNN(t5d5f5+1DNN(41$1&11 ,2DNN(s    A A0)	functoolswraps)r+   r-   s   ` r,   	decoratorz$fewtimes_if_linux.<locals>.decorator=   s%    				2 
		2      )r0   s    r,   fewtimes_if_linuxr3   8   s    
 r1   c                      e Zd ZdZeZd Z e       d        Z e       d        Z	 e       d        Z
 e       d        Zej                  j                  e d       e       d	               Zej                  j                  e d       e       d
               Z e       d        Zd Zd Zej                  j                  e d      d        Zej                  j                  e d      d        Zej                  j                  e d       e       d               Zej                  j                  ed      d        Z e       d        Z e        ee      d               Zej                  j                  e d      d        Z ej                  j                  e d       e       d               Z! e       d        Z" e        ee      d               Z# e       d        Z$ e       ej                  j                  e% d      d               Z& e       d        Z' e       d        Z(ej                  j                  e d       e       d                Z)d! Z* e       d"        Z+ej                  j                  e, d      d#        Z-ej                  j                  e, d      d$        Z. e       d%        Z/ej                  j                  e0 d       e       d&               Z1ej                  j                  e2 d'      ej                  j                  e3 d      d(               Z4ej                  j                  e2 d'      ej                  j                  e3 d      d)               Z5 e       ej                  j                  ed*      d+               Z6ej                  j                  e7 d      d,        Z8ej                  j                  e d      d-        Z9y.)/TestProcessObjectLeaksz$Test leaks of Process class methods.c                 l    t        d       }|j                  | |j                  |j                  z          y r#   )r   test_class_coveragegetterssettersr'   nss     r,   test_coveragez$TestProcessObjectLeaks.test_coverageY   s)    t$
tRZZ"**%<=r1   c                 N    | j                  | j                  j                         y r#   )executeprocnamer'   s    r,   	test_namez TestProcessObjectLeaks.test_name]       TYY^^$r1   c                 N    | j                  | j                  j                         y r#   )r>   r?   cmdlinerA   s    r,   test_cmdlinez#TestProcessObjectLeaks.test_cmdlinea       TYY&&'r1   c                 N    | j                  | j                  j                         y r#   )r>   r?   exerA   s    r,   test_exezTestProcessObjectLeaks.test_exee       TYY]]#r1   c                 N    | j                  | j                  j                         y r#   )r>   r?   ppidrA   s    r,   	test_ppidz TestProcessObjectLeaks.test_ppidi   rC   r1   z
POSIX onlyreasonc                 N    | j                  | j                  j                         y r#   )r>   r?   uidsrA   s    r,   	test_uidsz TestProcessObjectLeaks.test_uidsm        	TYY^^$r1   c                 N    | j                  | j                  j                         y r#   )r>   r?   gidsrA   s    r,   	test_gidsz TestProcessObjectLeaks.test_gidsr   rT   r1   c                 N    | j                  | j                  j                         y r#   )r>   r?   statusrA   s    r,   test_statusz"TestProcessObjectLeaks.test_statusw       TYY%%&r1   c                 N    | j                  | j                  j                         y r#   )r>   r?   nicerA   s    r,   	test_nicez TestProcessObjectLeaks.test_nice{   s    TYY^^$r1   c                 Z     t         j                          j                   fd       y )Nc                  :    j                   j                         S r#   )r?   r]   )nicenessr'   s   r,   <lambda>z6TestProcessObjectLeaks.test_nice_set.<locals>.<lambda>   s    TYY^^H5 r1   )thisprocr]   r>   )r'   ra   s   `@r,   test_nice_setz$TestProcessObjectLeaks.test_nice_set~   s    ==?56r1   not supportedc                 N    | j                  | j                  j                         y r#   )r>   r?   ionicerA   s    r,   test_ionicez"TestProcessObjectLeaks.test_ionice   r[   r1   c                 ,    t         r*t        j                          j                   fd       y  j                   fd       t	        j
                  t        j                  t        j                         dd      } j                  t        |       y )Nc                  :     j                   j                        S r#   )r?   rg   )r'   values   r,   rb   z8TestProcessObjectLeaks.test_ionice_set.<locals>.<lambda>   s    !1!1%!8 r1   c                  V     j                   j                  t        j                        S r#   )r?   rg   psutilIOPRIO_CLASS_NONErA   s   r,   rb   z8TestProcessObjectLeaks.test_ionice_set.<locals>.<lambda>   s    !1!1&2J2J!K r1   r   )r   rc   rg   r>   r.   partialcextproc_ioprio_setosgetpidexecute_w_excOSError)r'   r+   rk   s   ` @r,   test_ionice_setz&TestProcessObjectLeaks.test_ionice_set   s^    OO%ELL89LLKL##D$8$8"))+r1MCw,r1   c                 N    | j                  | j                  j                         y r#   )r>   r?   io_countersrA   s    r,   test_io_countersz'TestProcessObjectLeaks.test_io_counters        	TYY**+r1   zworthless on POSIXc                     t        j                         j                          | j                  | j                  j                         y r#   )rm   Processusernamer>   r?   rA   s    r,   test_usernamez$TestProcessObjectLeaks.test_username   s-     	!!#TYY''(r1   c                 N    | j                  | j                  j                         y r#   )r>   r?   create_timerA   s    r,   test_create_timez'TestProcessObjectLeaks.test_create_time       TYY**+r1   )only_ifc                 N    | j                  | j                  j                         y r#   )r>   r?   num_threadsrA   s    r,   test_num_threadsz'TestProcessObjectLeaks.test_num_threads   r{   r1   WINDOWS onlyc                 N    | j                  | j                  j                         y r#   )r>   r?   num_handlesrA   s    r,   test_num_handlesz'TestProcessObjectLeaks.test_num_handles   r   r1   c                 N    | j                  | j                  j                         y r#   )r>   r?   num_fdsrA   s    r,   test_num_fdsz#TestProcessObjectLeaks.test_num_fds        	TYY&&'r1   c                 N    | j                  | j                  j                         y r#   )r>   r?   num_ctx_switchesrA   s    r,   test_num_ctx_switchesz,TestProcessObjectLeaks.test_num_ctx_switches       TYY//0r1   c                 N    | j                  | j                  j                         y r#   )r>   r?   threadsrA   s    r,   test_threadsz#TestProcessObjectLeaks.test_threads   r   r1   c                 N    | j                  | j                  j                         y r#   )r>   r?   	cpu_timesrA   s    r,   test_cpu_timesz%TestProcessObjectLeaks.test_cpu_times   s    TYY(()r1   c                 N    | j                  | j                  j                         y r#   )r>   r?   cpu_numrA   s    r,   test_cpu_numz#TestProcessObjectLeaks.test_cpu_num   r   r1   c                 N    | j                  | j                  j                         y r#   )r>   r?   memory_inforA   s    r,   test_memory_infoz'TestProcessObjectLeaks.test_memory_info   r   r1   c                 N    | j                  | j                  j                         y r#   )r>   r?   memory_full_inforA   s    r,   test_memory_full_infoz,TestProcessObjectLeaks.test_memory_full_info   r   r1   c                 N    | j                  | j                  j                         y r#   )r>   r?   terminalrA   s    r,   test_terminalz$TestProcessObjectLeaks.test_terminal   s     	TYY''(r1   c                     t         rt        n| j                  }| j                  | j                  j
                  |       y )Nr%   )r   r&   r%   r>   r?   resumer'   r%   s     r,   test_resumez"TestProcessObjectLeaks.test_resume   s)    "	

TYY%%U3r1   c                 N    | j                  | j                  j                         y r#   )r>   r?   cwdrA   s    r,   test_cwdzTestProcessObjectLeaks.test_cwd   rK   r1   c                 N    | j                  | j                  j                         y r#   )r>   r?   cpu_affinityrA   s    r,   test_cpu_affinityz(TestProcessObjectLeaks.test_cpu_affinity   s    TYY++,r1   c                      t         j                          j                   fd        j                  t         fd       y )Nc                  :    j                   j                         S r#   r?   r   )affinityr'   s   r,   rb   z>TestProcessObjectLeaks.test_cpu_affinity_set.<locals>.<lambda>   s    TYY33H= r1   c                  <     j                   j                  dg      S Nro   r   rA   s   r,   rb   z>TestProcessObjectLeaks.test_cpu_affinity_set.<locals>.<lambda>   s    tyy/E/Erd/K r1   )rc   r   r>   ru   
ValueError)r'   r   s   `@r,   test_cpu_affinity_setz,TestProcessObjectLeaks.test_cpu_affinity_set   s/    ((*=>:'KLr1   c                     t        t               d      5  | j                  | j                  j                         d d d        y # 1 sw Y   y xY w)Nw)openr   r>   r?   
open_filesrA   s    r,   test_open_filesz&TestProcessObjectLeaks.test_open_files   s9    *,$ 	/LL--.	/ 	/ 	/s   &AAc                 N    | j                  | j                  j                         y r#   )r>   r?   memory_mapsrA   s    r,   test_memory_mapsz'TestProcessObjectLeaks.test_memory_maps   r{   r1   z
LINUX onlyc                 .      j                   fd       y )Nc                  V     j                   j                  t        j                        S r#   r?   rlimitrm   RLIMIT_NOFILErA   s   r,   rb   z4TestProcessObjectLeaks.test_rlimit.<locals>.<lambda>   s    TYY--f.B.BC r1   r>   rA   s   `r,   test_rlimitz"TestProcessObjectLeaks.test_rlimit   s     	CDr1   c                      t         j                  t        j                         j	                   fd        j                  t        t        f fd       y )Nc                  X    j                   j                  t        j                         S r#   r   )limitr'   s   r,   rb   z8TestProcessObjectLeaks.test_rlimit_set.<locals>.<lambda>   s    TYY--f.B.BEJ r1   c                  :     j                   j                  d      S r   )r?   r   rA   s   r,   rb   z8TestProcessObjectLeaks.test_rlimit_set.<locals>.<lambda>   s    $)):J:J2:N r1   )rc   r   rm   r   r>   ru   rv   r   )r'   r   s   `@r,   test_rlimit_setz&TestProcessObjectLeaks.test_rlimit_set   s<      4 45JKGZ02NOr1   zworthless on WINDOWSc                      t               5  t        rdnd j                   fd       d d d        y # 1 sw Y   y xY w)Ninetallc                  :    j                   j                         S r#   )r?   net_connections)kindr'   s   r,   rb   z=TestProcessObjectLeaks.test_net_connections.<locals>.<lambda>   s    !:!:4!@ r1   )r   r   r>   )r'   r   s   `@r,   test_net_connectionsz+TestProcessObjectLeaks.test_net_connections   s:      	B"6DLL@A	B 	B 	Bs    6?c                 N    | j                  | j                  j                         y r#   )r>   r?   environrA   s    r,   test_environz#TestProcessObjectLeaks.test_environ   rG   r1   c                 (    | j                  d        y )Nc                  P    t         j                  t        j                               S r#   )rq   	proc_infors   rt   r2   r1   r,   rb   z7TestProcessObjectLeaks.test_proc_info.<locals>.<lambda>  s    T^^BIIK8 r1   r   rA   s    r,   test_proc_infoz%TestProcessObjectLeaks.test_proc_info  s    89r1   N):__name__
__module____qualname____doc__rc   r?   r<   r3   rB   rF   rJ   rN   r   markskipifr   rS   rW   rZ   r^   rd   r   rh   rw   r   rz   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   r2   r1   r,   r5   r5   T   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;: <:r1   r5   c                   v     e Zd ZdZe fd       Ze fd       Zd Zerd Z	d Z
d Zd Zd	 Zd
 Z xZS  xZS )TestTerminatedProcessLeakszRepeat 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         |           t               | _        t	        j
                  | j                  j                        | _        | j                  j                          | j                  j                          y r#   )
super
setUpClassr   subprm   r}   pidr?   killwaitclsr$   s    r,   r   z%TestTerminatedProcessLeaks.setUpClass  sI     ?>>#((,,/r1   c                 L    t         |           t        | j                         y r#   )r   tearDownClassr   r   r   s    r,   r   z(TestTerminatedProcessLeaks.tearDownClass  s    #((r1   c                 F    	  |        y # t         j                  $ r Y y w xY wr#   )rm   NoSuchProcess)r'   r+   s     r,   callzTestTerminatedProcessLeaks.call  s$    	E## 		s   
   c                 N    | j                  | j                  j                         y r#   )r>   r?   r   rA   s    r,   	test_killz$TestTerminatedProcessLeaks.test_kill%      LL(r1   c                 N    | j                  | j                  j                         y r#   )r>   r?   r   rA   s    r,   test_terminatez)TestTerminatedProcessLeaks.test_terminate(  s    LL,,-r1   c                 N    | j                  | j                  j                         y r#   )r>   r?   suspendrA   s    r,   test_suspendz'TestTerminatedProcessLeaks.test_suspend+  s    LL**+r1   c                 N    | j                  | j                  j                         y r#   )r>   r?   r   rA   s    r,   r   z&TestTerminatedProcessLeaks.test_resume.  s    LL))*r1   c                 N    | j                  | j                  j                         y r#   )r>   r?   r   rA   s    r,   	test_waitz$TestTerminatedProcessLeaks.test_wait1  r   r1   c                 2      fd} j                  |       y )Nc                  v    	 t         j                   j                  j                        S # t        $ r Y y w xY wr#   )rq   r   r?   r   ProcessLookupErrorrA   s   r,   r   z7TestTerminatedProcessLeaks.test_proc_info.<locals>.call6  s1    >>$))--88) s   (, 	88r   )r'   r   s   ` r,   r   z)TestTerminatedProcessLeaks.test_proc_info4  s     LLr1   )r   r   r   r   classmethodr   r   r   r   r   r   r   r   r   r   __classcell__)r$   s   @r,   r   r   	  s]         	)	.	,	+	)	# r1   r   r   rO   c                       e Zd Zd Zd Zy)TestProcessDualImplementationc                 (    | j                  d        y )Nc                  T    t         j                  t        j                         d      S )NTuse_pebrq   proc_cmdliners   rt   r2   r1   r,   rb   zETestProcessDualImplementation.test_cmdline_peb_true.<locals>.<lambda>B  s    T..ryy{D.I r1   r   rA   s    r,   test_cmdline_peb_truez3TestProcessDualImplementation.test_cmdline_peb_trueA  s    IJr1   c                 (    | j                  d        y )Nc                  T    t         j                  t        j                         d      S )NFr  r  r2   r1   r,   rb   zFTestProcessDualImplementation.test_cmdline_peb_false.<locals>.<lambda>E  s    T..ryy{E.J r1   r   rA   s    r,   test_cmdline_peb_falsez4TestProcessDualImplementation.test_cmdline_peb_falseD  s    JKr1   N)r   r   r   r	  r  r2   r1   r,   r  r  ?  s    KLr1   r  c                      e Zd ZdZd Z e       d        Z e       d        Z e       d        Z e       d        Z	 e       d        Z
 e       ej                  j                  exr ed	      ej                  j                  e d
	      d                      Zej                  j                  e d	      d        Zd Zej                  j                  ed	      d        Zd Zd Zd Zej                  j                  exr ej8                  j;                  d       d	       e       d               Z e       d        Z e       ej                  j                  e  d
	      d               Z! e       ej                  j                  exr  ejD                         dk7  d	      d               Z#d Z$d Z% e       ej                  j                  e& d
	      d               Z' e       ej                  j                  e( d
	      d               Z) e       ej                  j                  e* d
	      d                Z+ e       d!        Z,d" Z-d# Z.erd$ Z/d% Z0d& Z1d' Z2d( Z3y)y))*TestModuleFunctionsLeaksz&Test leaks of psutil module functions.c                 P    t               }|j                  | |j                         y r#   )r   r7   r   r:   s     r,   r<   z&TestModuleFunctionsLeaks.test_coverageP  s    
tRVV,r1   c                 (    | j                  d        y )Nc                  .    t        j                  d      S )NTlogicalrm   	cpu_countr2   r1   r,   rb   z9TestModuleFunctionsLeaks.test_cpu_count.<locals>.<lambda>X  s    V--d; r1   r   rA   s    r,   test_cpu_countz'TestModuleFunctionsLeaks.test_cpu_countV  s    ;<r1   c                 (    | j                  d        y )Nc                  .    t        j                  d      S )NFr  r  r2   r1   r,   rb   z?TestModuleFunctionsLeaks.test_cpu_count_cores.<locals>.<lambda>\  s    V--e< r1   r   rA   s    r,   test_cpu_count_coresz-TestModuleFunctionsLeaks.test_cpu_count_coresZ  s    <=r1   c                 B    | j                  t        j                         y r#   )r>   rm   r   rA   s    r,   r   z'TestModuleFunctionsLeaks.test_cpu_times^      V%%&r1   c                 (    | j                  d        y )Nc                  .    t        j                  d      S )NT)percpu)rm   r   r2   r1   r,   rb   z=TestModuleFunctionsLeaks.test_per_cpu_times.<locals>.<lambda>d  s    V--T: r1   r   rA   s    r,   test_per_cpu_timesz+TestModuleFunctionsLeaks.test_per_cpu_timesb  s    :;r1   c                 B    | j                  t        j                         y r#   )r>   rm   	cpu_statsrA   s    r,   test_cpu_statsz'TestModuleFunctionsLeaks.test_cpu_statsf  r  r1   zskipped due to #1892rO   re   c                 B    | j                  t        j                         y r#   )r>   rm   cpu_freqrA   s    r,   test_cpu_freqz&TestModuleFunctionsLeaks.test_cpu_freqj  s    
 	V__%r1   r   c                 j    t        j                          | j                  t         j                         y r#   )rm   
getloadavgr>   rA   s    r,   test_getloadavgz(TestModuleFunctionsLeaks.test_getloadavgq  s     V&&'r1   c                 B    | j                  t        j                         y r#   )r>   rm   virtual_memoryrA   s    r,   test_virtual_memoryz,TestModuleFunctionsLeaks.test_virtual_memoryx  s    V**+r1   z&worthless on SUNOS (uses a subprocess)c                 B    | j                  t        j                         y r#   )r>   rm   swap_memoryrA   s    r,   test_swap_memoryz)TestModuleFunctionsLeaks.test_swap_memory|  s    V''(r1   c                 \    t         rt        n| j                  }| j                  d |       y )Nc                  P    t        j                  t        j                               S r#   )rm   
pid_existsrs   rt   r2   r1   r,   rb   z:TestModuleFunctionsLeaks.test_pid_exists.<locals>.<lambda>  s    V..ryy{; r1   r   r   r&   r%   r>   r   s     r,   test_pid_existsz(TestModuleFunctionsLeaks.test_pid_exists  s     "	

;5Ir1   c                 \    t         rt        n| j                  }| j                  d |       y )Nc                  ,    t        j                  d      S )N.)rm   
disk_usager2   r1   r,   rb   z:TestModuleFunctionsLeaks.test_disk_usage.<locals>.<lambda>  s    V..s3 r1   r   r2  r   s     r,   test_disk_usagez(TestModuleFunctionsLeaks.test_disk_usage  s     "	

35Ar1   c                 B    | j                  t        j                         y r#   )r>   rm   disk_partitionsrA   s    r,   test_disk_partitionsz-TestModuleFunctionsLeaks.test_disk_partitions  s    V++,r1   z/proc/diskstatsz3/proc/diskstats not available on this Linux versionc                 (    | j                  d        y )Nc                  .    t        j                  d      S NF)nowrap)rm   disk_io_countersr2   r1   r,   rb   z@TestModuleFunctionsLeaks.test_disk_io_counters.<locals>.<lambda>  s    V44EB r1   r   rA   s    r,   test_disk_io_countersz.TestModuleFunctionsLeaks.test_disk_io_counters  s     	BCr1   c                 B    | j                  t        j                         y r#   )r>   rm   pidsrA   s    r,   	test_pidsz"TestModuleFunctionsLeaks.test_pids  s    V[[!r1   c                 (    | j                  d        y )Nc                  .    t        j                  d      S r>  )rm   net_io_countersr2   r1   r,   rb   z?TestModuleFunctionsLeaks.test_net_io_counters.<locals>.<lambda>  s    V335A r1   r   rA   s    r,   test_net_io_countersz-TestModuleFunctionsLeaks.test_net_io_counters  s     	ABr1   r   zneed root accessc                     t        j                  d       t               5  | j                  d        d d d        y # 1 sw Y   y xY w)Nr   r   c                  .    t        j                  d      S )Nr   rJ  )rm   r   r2   r1   r,   rb   z?TestModuleFunctionsLeaks.test_net_connections.<locals>.<lambda>  s    !7!7U!C r1   )rm   r   r   r>   rA   s    r,   r   z-TestModuleFunctionsLeaks.test_net_connections  s>     	E* 	ELLCD	E 	E 	Es	   =Ac                 n    t         rdn| j                  }| j                  t        j                  |       y )Ni @ )	tolerance)r   rM  r>   rm   net_if_addrs)r'   rM  s     r,   test_net_if_addrsz*TestModuleFunctionsLeaks.test_net_if_addrs  s%    !(Idnn	V((I>r1   c                 B    | j                  t        j                         y r#   )r>   rm   net_if_statsrA   s    r,   test_net_if_statsz*TestModuleFunctionsLeaks.test_net_if_stats  s    V(()r1   c                 B    | j                  t        j                         y r#   )r>   rm   sensors_batteryrA   s    r,   test_sensors_batteryz-TestModuleFunctionsLeaks.test_sensors_battery  s     	V++,r1   c                 B    | j                  t        j                         y r#   )r>   rm   sensors_temperaturesrA   s    r,   test_sensors_temperaturesz2TestModuleFunctionsLeaks.test_sensors_temperatures  s     	V001r1   c                 B    | j                  t        j                         y r#   )r>   rm   sensors_fansrA   s    r,   test_sensors_fansz*TestModuleFunctionsLeaks.test_sensors_fans  s     	V(()r1   c                 B    | j                  t        j                         y r#   )r>   rm   	boot_timerA   s    r,   test_boot_timez'TestModuleFunctionsLeaks.test_boot_time  r  r1   c                 B    | j                  t        j                         y r#   )r>   rm   usersrA   s    r,   
test_usersz#TestModuleFunctionsLeaks.test_users  s    V\\"r1   c                 (    | j                  d        y )Nc                  ,    t        j                  d      S )NF)rm   
_set_debugr2   r1   r,   rb   z9TestModuleFunctionsLeaks.test_set_debug.<locals>.<lambda>  s    V..u5 r1   r   rA   s    r,   test_set_debugz'TestModuleFunctionsLeaks.test_set_debug  s    56r1   c                 B    | j                  t        j                         y r#   )r>   rq   winservice_enumeraterA   s    r,   test_win_service_iterz.TestModuleFunctionsLeaks.test_win_service_iter  s    LL223r1   c                      y r#   r2   rA   s    r,   test_win_service_getz-TestModuleFunctionsLeaks.test_win_service_get  s    r1   c                     t        t        j                               j                         | j	                  fd       y )Nc                  .    t         j                         S r#   )rq   winservice_query_configr@   s   r,   rb   zFTestModuleFunctionsLeaks.test_win_service_get_config.<locals>.<lambda>      !=!=d!C r1   nextrm   win_service_iterr@   r>   r'   r@   s    @r,   test_win_service_get_configz4TestModuleFunctionsLeaks.test_win_service_get_config  ,    //12779DLLCDr1   c                     t        t        j                               j                         | j	                  fd       y )Nc                  .    t         j                         S r#   )rq   winservice_query_statusrn  s   r,   rb   zFTestModuleFunctionsLeaks.test_win_service_get_status.<locals>.<lambda>  ro  r1   rp  rs  s    @r,   test_win_service_get_statusz4TestModuleFunctionsLeaks.test_win_service_get_status  ru  r1   c                     t        t        j                               j                         | j	                  fd       y )Nc                  .    t         j                         S r#   )rq   winservice_query_descrrn  s   r,   rb   zKTestModuleFunctionsLeaks.test_win_service_get_description.<locals>.<lambda>  s    !<!<T!B r1   rp  rs  s    @r,    test_win_service_get_descriptionz9TestModuleFunctionsLeaks.test_win_service_get_description  s,    //12779DLLBCr1   N)4r   r   r   r   r<   r3   r  r  r   r  r"  r   r   r   r   r	   r   r%  r   r(  r+  r   r.  r3  r8  r;  r   rs   pathexistsrA  rD  r   rH  getuidr   rO  rR  r   rU  r   rX  r   r[  r^  ra  re  rh  rj  rt  ry  r}  r2   r1   r,   r  r  M  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% r1   r  ).r   r.   rs   rm   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   r   _psplatformrq   r}   rc   r&   r3   r5   r   r   r   r  r  r2   r1   r,   <module>r     s     	           ) % $ # ( , ) - # , ) 1 ' ' # *  . & ) "6>>	8r:^ r:j3!7 3l K7LN L 8LVD~ VDr1   