
    Xi:                     h   d 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j!        j"        Z" ej#                    Z$dZ%d  Z& G d! d"e          Z' G d# d$e'          Z(ej)        *                    e	 d%&           G d' d(e                      Z+ G d) d*e          Z,dS )+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                 F     t          j                    fd            }|S )Nc                     t           rG| j        j        }	 t          | j        _         | g|R i ||| j        _        S # || j        _        w xY w | g|R i |S N)r   	__class__times	FEW_TIMES)selfargskwargsbeforefuns       r/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/psutil/tests/test_memleaks.pywrapperz5fewtimes_if_linux.<locals>.decorator.<locals>.wrapper=   s     2-2+4DN(3t5d555f55+1DN((6DN(1111s41$111&111s	   ? A)	functoolswraps)r+   r-   s   ` r,   	decoratorz$fewtimes_if_linux.<locals>.decorator<   s8    					2 		2 		2 		2 
			2      )r0   s    r,   fewtimes_if_linuxr3   7   s    
   r1   c                   j	   e Zd ZdZeZd Z e            d             Z e            d             Z	 e            d             Z
 e            d             Zej                            e d           e            d	                         Zej                            e d           e            d
                         Z e            d             Zd Zd Zej                            e d          d             Zej                            e d          d             Zej                            e d           e            d                         Zej                            ed          d             Z e            d             Z e             ee          d                         Zej                            e d          d             Z ej                            e d           e            d                         Z! e            d             Z" e             ee          d                         Z# e            d             Z$ e            ej                            e% d          d                         Z& e            d             Z' e            d             Z(ej                            e d           e            d                          Z)d! Z* e            d"             Z+ej                            e, d          d#             Z-ej                            e, d          d$             Z. e            d%             Z/ej                            e0 d           e            d&                         Z1ej                            e2 d'          ej                            e3 d          d(                         Z4ej                            e2 d'          ej                            e3 d          d)                         Z5 e            ej                            ed*          d+                         Z6ej                            e7 d          d,             Z8ej                            e d          d-             Z9d.S )/TestProcessObjectLeaksz$Test leaks of Process class methods.c                 j    t          d           }|                    | |j        |j        z              d S r#   )r   test_class_coveragegetterssettersr'   nss     r,   test_coveragez$TestProcessObjectLeaks.test_coverageX   s4    t$$
tRZ"*%<=====r1   c                 D    |                      | j        j                   d S r#   )executeprocnamer'   s    r,   	test_namez TestProcessObjectLeaks.test_name\       TY^$$$$$r1   c                 D    |                      | j        j                   d S r#   )r>   r?   cmdlinerA   s    r,   test_cmdlinez#TestProcessObjectLeaks.test_cmdline`       TY&'''''r1   c                 D    |                      | j        j                   d S r#   )r>   r?   exerA   s    r,   test_exezTestProcessObjectLeaks.test_exed       TY]#####r1   c                 D    |                      | j        j                   d S r#   )r>   r?   ppidrA   s    r,   	test_ppidz TestProcessObjectLeaks.test_ppidh   rC   r1   z
POSIX onlyreasonc                 D    |                      | j        j                   d S r#   )r>   r?   uidsrA   s    r,   	test_uidsz TestProcessObjectLeaks.test_uidsl         	TY^$$$$$r1   c                 D    |                      | j        j                   d S r#   )r>   r?   gidsrA   s    r,   	test_gidsz TestProcessObjectLeaks.test_gidsq   rT   r1   c                 D    |                      | j        j                   d S r#   )r>   r?   statusrA   s    r,   test_statusz"TestProcessObjectLeaks.test_statusv       TY%&&&&&r1   c                 D    |                      | j        j                   d S r#   )r>   r?   nicerA   s    r,   	test_nicez TestProcessObjectLeaks.test_nicez   s    TY^$$$$$r1   c                 n     t                                                                 fd           d S )Nc                  8    j                                        S r#   )r?   r]   )nicenessr'   s   r,   <lambda>z6TestProcessObjectLeaks.test_nice_set.<locals>.<lambda>   s    TY^^H55 r1   )thisprocr]   r>   )r'   ra   s   `@r,   test_nice_setz$TestProcessObjectLeaks.test_nice_set}   s6    ==??5555566666r1   not supportedc                 D    |                      | j        j                   d S r#   )r>   r?   ionicerA   s    r,   test_ionicez"TestProcessObjectLeaks.test_ionice   r[   r1   c                 J    t           r4t                                                                fd           d S                       fd           t	          j        t          j        t          j	                    dd          } 
                    t          |           d S )Nc                  8     j                                       S r#   )r?   rg   )r'   values   r,   rb   z8TestProcessObjectLeaks.test_ionice_set.<locals>.<lambda>   s    !1!1%!8!8 r1   c                  L     j                             t          j                  S r#   )r?   rg   psutilIOPRIO_CLASS_NONErA   s   r,   rb   z8TestProcessObjectLeaks.test_ionice_set.<locals>.<lambda>   s    !1!1&2J!K!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888899999LLKKKKLLL#D$8")++r1MMCw,,,,,r1   c                 D    |                      | j        j                   d S r#   )r>   r?   io_countersrA   s    r,   test_io_countersz'TestProcessObjectLeaks.test_io_counters   !     	TY*+++++r1   zworthless on POSIXc                     t          j                                                     |                     | j        j                   d S r#   )rm   Processusernamer>   r?   rA   s    r,   test_usernamez$TestProcessObjectLeaks.test_username   s;     	!!###TY'(((((r1   c                 D    |                      | j        j                   d S r#   )r>   r?   create_timerA   s    r,   test_create_timez'TestProcessObjectLeaks.test_create_time       TY*+++++r1   )only_ifc                 D    |                      | j        j                   d S r#   )r>   r?   num_threadsrA   s    r,   test_num_threadsz'TestProcessObjectLeaks.test_num_threads   r{   r1   WINDOWS onlyc                 D    |                      | j        j                   d S r#   )r>   r?   num_handlesrA   s    r,   test_num_handlesz'TestProcessObjectLeaks.test_num_handles   r   r1   c                 D    |                      | j        j                   d S r#   )r>   r?   num_fdsrA   s    r,   test_num_fdsz#TestProcessObjectLeaks.test_num_fds   !     	TY&'''''r1   c                 D    |                      | j        j                   d S r#   )r>   r?   num_ctx_switchesrA   s    r,   test_num_ctx_switchesz,TestProcessObjectLeaks.test_num_ctx_switches       TY/00000r1   c                 D    |                      | j        j                   d S r#   )r>   r?   threadsrA   s    r,   test_threadsz#TestProcessObjectLeaks.test_threads   r   r1   c                 D    |                      | j        j                   d S r#   )r>   r?   	cpu_timesrA   s    r,   test_cpu_timesz%TestProcessObjectLeaks.test_cpu_times   s    TY()))))r1   c                 D    |                      | j        j                   d S r#   )r>   r?   cpu_numrA   s    r,   test_cpu_numz#TestProcessObjectLeaks.test_cpu_num   r   r1   c                 D    |                      | j        j                   d S r#   )r>   r?   memory_inforA   s    r,   test_memory_infoz'TestProcessObjectLeaks.test_memory_info   r   r1   c                 D    |                      | j        j                   d S r#   )r>   r?   memory_full_inforA   s    r,   test_memory_full_infoz,TestProcessObjectLeaks.test_memory_full_info   r   r1   c                 D    |                      | j        j                   d S r#   )r>   r?   terminalrA   s    r,   test_terminalz$TestProcessObjectLeaks.test_terminal   s!     	TY'(((((r1   c                 r    t           rt          n| j        }|                     | j        j        |           d S )Nr%   )r   r&   r%   r>   r?   resumer'   r%   s     r,   test_resumez"TestProcessObjectLeaks.test_resume   s3    "2		
TY%U33333r1   c                 D    |                      | j        j                   d S r#   )r>   r?   cwdrA   s    r,   test_cwdzTestProcessObjectLeaks.test_cwd   rK   r1   c                 D    |                      | j        j                   d S r#   )r>   r?   cpu_affinityrA   s    r,   test_cpu_affinityz(TestProcessObjectLeaks.test_cpu_affinity   s    TY+,,,,,r1   c                      t                                                                 fd                                t           fd           d S )Nc                  8    j                                        S r#   r?   r   )affinityr'   s   r,   rb   z>TestProcessObjectLeaks.test_cpu_affinity_set.<locals>.<lambda>   s    TY33H== r1   c                  :     j                             dg          S Nro   r   rA   s   r,   rb   z>TestProcessObjectLeaks.test_cpu_affinity_set.<locals>.<lambda>   s    ty/E/Erd/K/K r1   )rc   r   r>   ru   
ValueError)r'   r   s   `@r,   test_cpu_affinity_setz,TestProcessObjectLeaks.test_cpu_affinity_set   sZ    ((**=====>>>:'K'K'K'KLLLLLr1   c                     t          t                      d          5  |                     | j        j                   d d d            d S # 1 swxY w Y   d S )Nw)openr   r>   r?   
open_filesrA   s    r,   test_open_filesz&TestProcessObjectLeaks.test_open_files   s    *,,$$ 	/ 	/LL-...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s    A

AAc                 D    |                      | j        j                   d S r#   )r>   r?   memory_mapsrA   s    r,   test_memory_mapsz'TestProcessObjectLeaks.test_memory_maps   r{   r1   z
LINUX onlyc                 8                            fd           d S )Nc                  L     j                             t          j                  S r#   r?   rlimitrm   RLIMIT_NOFILErA   s   r,   rb   z4TestProcessObjectLeaks.test_rlimit.<locals>.<lambda>   s    TY--f.BCC r1   r>   rA   s   `r,   test_rlimitz"TestProcessObjectLeaks.test_rlimit   s'     	CCCCDDDDDr1   c                      t                               t          j                                        fd                                t          t          f fd           d S )Nc                  N    j                             t          j                   S r#   r   )limitr'   s   r,   rb   z8TestProcessObjectLeaks.test_rlimit_set.<locals>.<lambda>   s    TY--f.BEJJ r1   c                  8     j                             d          S r   )r?   r   rA   s   r,   rb   z8TestProcessObjectLeaks.test_rlimit_set.<locals>.<lambda>   s    $):J:J2:N:N r1   )rc   r   rm   r   r>   ru   rv   r   )r'   r   s   `@r,   test_rlimit_setz&TestProcessObjectLeaks.test_rlimit_set   sd      455JJJJJKKKGZ02N2N2N2NOOOOOr1   zworthless on WINDOWSc                      t                      5  t          rdnd                      fd           d d d            d S # 1 swxY w Y   d S )Ninetallc                  8    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 	B"-66DLL@@@@@AAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs   %AA
Ac                 D    |                      | j        j                   d S r#   )r>   r?   environrA   s    r,   test_environz#TestProcessObjectLeaks.test_environ   rG   r1   c                 2    |                      d            d S )Nc                  X    t                               t          j                              S r#   )rq   	proc_infors   rt   r2   r1   r,   rb   z7TestProcessObjectLeaks.test_proc_info.<locals>.<lambda>  s    T^^BIKK88 r1   r   rA   s    r,   test_proc_infoz%TestProcessObjectLeaks.test_proc_info  s    889999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   S   s-       ..D> > > % % % ( ( ( $ $ $ % % % [E	,77% %  87% [E	,77% %  87% ' ' '% % %7 7 7 [J??' ' @?' [J??- - @?- [00II, ,  JI, [&:;;) ) <;)
 , , , 7+++, , ,+ , [GN;;, , <;, [E	,77( (  87( 1 1 1 7+++( ( ,+ ( * * * [,,_EE( ( FE ( , , , 1 1 1 [E	,77) )  87)4 4 4 $ $ $ [,,_EE- - FE- [,,_EEM M FEM
 / / / [O+ODD, ,  ED, [E	,77[J??E E @? 87E [E	,77[J??P P @? 87P
  [(>??B B @? B [K@@( ( A@( [GN;;: : <;: : :r1   r5   c                        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        	                                 d S r#   )
super
setUpClassr   subprm   r}   pidr?   killwaitclsr$   s    r,   r   z%TestTerminatedProcessLeaks.setUpClass  s[     ??>#(,//r1   c                 p    t                                                       t          | j                   d S r#   )r   tearDownClassr   r   r   s    r,   r   z(TestTerminatedProcessLeaks.tearDownClass  s/    #(r1   c                 H    	  |             d S # t           j        $ r Y d S w xY wr#   )rm   NoSuchProcess)r'   r+   s     r,   callzTestTerminatedProcessLeaks.call  s;    	CEEEEE# 	 	 	DD	s   
 !!c                 D    |                      | j        j                   d S r#   )r>   r?   r   rA   s    r,   	test_killz$TestTerminatedProcessLeaks.test_kill$      LL(((((r1   c                 D    |                      | j        j                   d S r#   )r>   r?   r   rA   s    r,   test_terminatez)TestTerminatedProcessLeaks.test_terminate'  s    LL,-----r1   c                 D    |                      | j        j                   d S r#   )r>   r?   suspendrA   s    r,   test_suspendz'TestTerminatedProcessLeaks.test_suspend*  s    LL*+++++r1   c                 D    |                      | j        j                   d S r#   )r>   r?   r   rA   s    r,   r   z&TestTerminatedProcessLeaks.test_resume-  s    LL)*****r1   c                 D    |                      | j        j                   d S r#   )r>   r?   r   rA   s    r,   	test_waitz$TestTerminatedProcessLeaks.test_wait0  r   r1   c                 <      fd}                      |           d S )Nc                  p    	 t                                j        j                  S # t          $ r Y d S w xY wr#   )rq   r   r?   r   ProcessLookupErrorrA   s   r,   r   z7TestTerminatedProcessLeaks.test_proc_info.<locals>.call5  s@    >>$)-888)   DDs   #' 
55r   )r'   r   s   ` r,   r   z)TestTerminatedProcessLeaks.test_proc_info3  s6         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dS )TestProcessDualImplementationc                 2    |                      d            d S )Nc                  \    t                               t          j                    d          S )NTuse_pebrq   proc_cmdliners   rt   r2   r1   r,   rb   zETestProcessDualImplementation.test_cmdline_peb_true.<locals>.<lambda>A  s    T..ry{{D.II r1   r   rA   s    r,   test_cmdline_peb_truez3TestProcessDualImplementation.test_cmdline_peb_true@  s    IIJJJJJr1   c                 2    |                      d            d S )Nc                  \    t                               t          j                    d          S )NFr  r  r2   r1   r,   rb   zFTestProcessDualImplementation.test_cmdline_peb_false.<locals>.<lambda>D  s    T..ry{{E.JJ r1   r   rA   s    r,   test_cmdline_peb_falsez4TestProcessDualImplementation.test_cmdline_peb_falseC  s    JJKKKKKr1   N)r   r   r   r	  r  r2   r1   r,   r  r  >  s:        K K KL L L L 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                            eoed	          ej                            e d
	          d                                     Zej                            e d	          d             Zd Zej                            ed	          d             Zd Zd Zd Zej                            eoej                            d           d	           e            d                         Z e            d             Z e            ej                            e  d
	          d                         Z! e            ej                            eo ej"                    dk    d	          d                         Z#d Z$d Z% e            ej                            e& d
	          d                         Z' e            ej                            e( d
	          d                         Z) e            ej                            e* d
	          d                          Z+ e            d!             Z,d" Z-d# Z.erd$ Z/d% Z0d& Z1d' Z2d( Z3d)S d)S )*TestModuleFunctionsLeaksz&Test leaks of psutil module functions.c                 X    t                      }|                    | |j                   d S r#   )r   r7   r   r:   s     r,   r<   z&TestModuleFunctionsLeaks.test_coverageO  s+    
tRV,,,,,r1   c                 2    |                      d            d S )Nc                  ,    t          j        d          S )NTlogicalrm   	cpu_countr2   r1   r,   rb   z9TestModuleFunctionsLeaks.test_cpu_count.<locals>.<lambda>W  s    V-d;;; r1   r   rA   s    r,   test_cpu_countz'TestModuleFunctionsLeaks.test_cpu_countU  s    ;;<<<<<r1   c                 2    |                      d            d S )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_coresY  s    <<=====r1   c                 D    |                      t          j                   d S r#   )r>   rm   r   rA   s    r,   r   z'TestModuleFunctionsLeaks.test_cpu_times]      V%&&&&&r1   c                 2    |                      d            d S )Nc                  ,    t          j        d          S )NT)percpu)rm   r   r2   r1   r,   rb   z=TestModuleFunctionsLeaks.test_per_cpu_times.<locals>.<lambda>c  s    V-T::: r1   r   rA   s    r,   test_per_cpu_timesz+TestModuleFunctionsLeaks.test_per_cpu_timesa  s    ::;;;;;r1   c                 D    |                      t          j                   d S r#   )r>   rm   	cpu_statsrA   s    r,   test_cpu_statsz'TestModuleFunctionsLeaks.test_cpu_statse  r  r1   zskipped due to #1892rO   re   c                 D    |                      t          j                   d S r#   )r>   rm   cpu_freqrA   s    r,   test_cpu_freqz&TestModuleFunctionsLeaks.test_cpu_freqi  s    
 	V_%%%%%r1   r   c                 j    t          j                     |                     t           j                   d S r#   )rm   
getloadavgr>   rA   s    r,   test_getloadavgz(TestModuleFunctionsLeaks.test_getloadavgp  s,    V&'''''r1   c                 D    |                      t          j                   d S r#   )r>   rm   virtual_memoryrA   s    r,   test_virtual_memoryz,TestModuleFunctionsLeaks.test_virtual_memoryw  s    V*+++++r1   z&worthless on SUNOS (uses a subprocess)c                 D    |                      t          j                   d S r#   )r>   rm   swap_memoryrA   s    r,   test_swap_memoryz)TestModuleFunctionsLeaks.test_swap_memory{  s    V'(((((r1   c                 `    t           rt          n| j        }|                     d |           d S )Nc                  L    t          j        t          j                              S r#   )rm   
pid_existsrs   rt   r2   r1   r,   rb   z:TestModuleFunctionsLeaks.test_pid_exists.<locals>.<lambda>  s    V.ry{{;; r1   r   r   r&   r%   r>   r   s     r,   test_pid_existsz(TestModuleFunctionsLeaks.test_pid_exists  s2    "2		
;;5IIIIIr1   c                 `    t           rt          n| j        }|                     d |           d S )Nc                  *    t          j        d          S )N.)rm   
disk_usager2   r1   r,   rb   z:TestModuleFunctionsLeaks.test_disk_usage.<locals>.<lambda>  s    V.s33 r1   r   r2  r   s     r,   test_disk_usagez(TestModuleFunctionsLeaks.test_disk_usage  s2    "2		
335AAAAAr1   c                 D    |                      t          j                   d S 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                 2    |                      d            d S )Nc                  ,    t          j        d          S NF)nowrap)rm   disk_io_countersr2   r1   r,   rb   z@TestModuleFunctionsLeaks.test_disk_io_counters.<locals>.<lambda>  s    V4EBBB r1   r   rA   s    r,   test_disk_io_countersz.TestModuleFunctionsLeaks.test_disk_io_counters  s      	BBCCCCCr1   c                 D    |                      t          j                   d S r#   )r>   rm   pidsrA   s    r,   	test_pidsz"TestModuleFunctionsLeaks.test_pids  s    V[!!!!!r1   c                 2    |                      d            d S )Nc                  ,    t          j        d          S r>  )rm   net_io_countersr2   r1   r,   rb   z?TestModuleFunctionsLeaks.test_net_io_counters.<locals>.<lambda>  s    V35AAA r1   r   rA   s    r,   test_net_io_countersz-TestModuleFunctionsLeaks.test_net_io_counters  s      	AABBBBBr1   r   zneed root accessc                     t          j        d           t                      5  |                     d            d d d            d S # 1 swxY w Y   d S )Nr   r   c                  ,    t          j        d          S )Nr   rJ  )rm   r   r2   r1   r,   rb   z?TestModuleFunctionsLeaks.test_net_connections.<locals>.<lambda>  s    !7U!C!C!C r1   )rm   r   r   r>   rA   s    r,   r   z-TestModuleFunctionsLeaks.test_net_connections  s     	E**** 	E 	ELLCCDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Es   AAAc                 h    t           rdn| j        }|                     t          j        |           d S )Ni @ )	tolerance)r   rM  r>   rm   net_if_addrs)r'   rM  s     r,   test_net_if_addrsz*TestModuleFunctionsLeaks.test_net_if_addrs  s1    !(<IIdn	V(I>>>>>r1   c                 D    |                      t          j                   d S r#   )r>   rm   net_if_statsrA   s    r,   test_net_if_statsz*TestModuleFunctionsLeaks.test_net_if_stats  s    V()))))r1   c                 D    |                      t          j                   d S r#   )r>   rm   sensors_batteryrA   s    r,   test_sensors_batteryz-TestModuleFunctionsLeaks.test_sensors_battery  s     	V+,,,,,r1   c                 D    |                      t          j                   d S r#   )r>   rm   sensors_temperaturesrA   s    r,   test_sensors_temperaturesz2TestModuleFunctionsLeaks.test_sensors_temperatures  s     	V011111r1   c                 D    |                      t          j                   d S r#   )r>   rm   sensors_fansrA   s    r,   test_sensors_fansz*TestModuleFunctionsLeaks.test_sensors_fans  s     	V()))))r1   c                 D    |                      t          j                   d S r#   )r>   rm   	boot_timerA   s    r,   test_boot_timez'TestModuleFunctionsLeaks.test_boot_time  r  r1   c                 D    |                      t          j                   d S r#   )r>   rm   usersrA   s    r,   
test_usersz#TestModuleFunctionsLeaks.test_users  s    V\"""""r1   c                 2    |                      d            d S )Nc                  *    t          j        d          S )NF)rm   
_set_debugr2   r1   r,   rb   z9TestModuleFunctionsLeaks.test_set_debug.<locals>.<lambda>  s    V.u55 r1   r   rA   s    r,   test_set_debugz'TestModuleFunctionsLeaks.test_set_debug  s    5566666r1   c                 D    |                      t          j                   d S r#   )r>   rq   winservice_enumeraterA   s    r,   test_win_service_iterz.TestModuleFunctionsLeaks.test_win_service_iter  s    LL233333r1   c                     d S r#   r2   rA   s    r,   test_win_service_getz-TestModuleFunctionsLeaks.test_win_service_get  s    Dr1   c                     t          t          j                                                              |                     fd           d S )Nc                  8    t                                          S r#   )rq   winservice_query_configr@   s   r,   rb   zFTestModuleFunctionsLeaks.test_win_service_get_config.<locals>.<lambda>      !=!=d!C!C r1   nextrm   win_service_iterr@   r>   r'   r@   s    @r,   test_win_service_get_configz4TestModuleFunctionsLeaks.test_win_service_get_config  G    /11227799DLLCCCCDDDDDr1   c                     t          t          j                                                              |                     fd           d S )Nc                  8    t                                          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                                                              |                     fd           d S )Nc                  8    t                                          S r#   )rq   winservice_query_descrrn  s   r,   rb   zKTestModuleFunctionsLeaks.test_win_service_get_description.<locals>.<lambda>  s    !<!<T!B!B r1   rp  rs  s    @r,    test_win_service_get_descriptionz9TestModuleFunctionsLeaks.test_win_service_get_description  sG    /11227799DLLBBBBCCCC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  L  s       00- - - = = = > > > ' ' ' < < < ' ' ' [)'2HII[L(AA& & BA JI & [GN;;( ( <;(, , , [&NOO) ) PO)J J JB B B- - - [7bgnn%6777D    D D 	 
D
 " " "
 [//HHC C IH C [2)")++"2;MNNE E ON E? ? ?
* * *
 [//HH- - IH - [44_MM2 2 NM 2 [,,_EE* * FE *
 ' ' '# # #7 7 7  D	4 	4 	4	 	 		E 	E 	E	E 	E 	E	D 	D 	D 	D 	D%D Dr1   r  )-r   r.   rs   rm   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   _psplatformrq   r}   rc   r&   r3   r5   r   r   r   r  r  r2   r1   r,   <module>r     sR        				                                                  ) ) ) ) ) ) % % % % % % $ $ $ $ $ $ # # # # # # ( ( ( ( ( ( , , , , , , ) ) ) ) ) ) - - - - - - # # # # # # , , , , , , ) ) ) ) ) ) 1 1 1 1 1 1 ' ' ' ' ' ' ' ' ' ' ' ' # # # # # # * * * * * *       . . . . . . & & & & & & ) ) ) ) ) ) " " " " " "6>	  8r: r: r: r: r:^ r: r: r:j3 3 3 3 3!7 3 3 3l K77L L L L LN L L 87LVD VD VD VD VD~ VD VD VD VD VDr1   