
    /h;                     l   d Z ddl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! 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)HAS_CPU_AFFINITY)HAS_CPU_FREQ)HAS_ENVIRON)
HAS_IONICE)HAS_MEMORY_MAPS)HAS_NET_IO_COUNTERS)HAS_PROC_CPU_NUM)HAS_PROC_IO_COUNTERS)
HAS_RLIMIT)HAS_SENSORS_BATTERY)HAS_SENSORS_FANS)HAS_SENSORS_TEMPERATURES)TestMemoryLeak)create_sockets)
get_testfn)process_namespace)pytest)skip_on_access_denied)spawn_testproc)system_namespace)	terminate   c                      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       M/var/www/html/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      )r/   s    r+   fewtimes_if_linuxr2   :   s    
   r0   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_coverage[   s4    t$$
tRZ"*%<=====r0   c                 D    |                      | j        j                   d S r"   )executeprocnamer&   s    r+   	test_namez TestProcessObjectLeaks.test_name_       TY^$$$$$r0   c                 D    |                      | j        j                   d S r"   )r=   r>   cmdliner@   s    r+   test_cmdlinez#TestProcessObjectLeaks.test_cmdlinec       TY&'''''r0   c                 D    |                      | j        j                   d S r"   )r=   r>   exer@   s    r+   test_exezTestProcessObjectLeaks.test_exeg       TY]#####r0   c                 D    |                      | j        j                   d S r"   )r=   r>   ppidr@   s    r+   	test_ppidz TestProcessObjectLeaks.test_ppidk   rB   r0   z
POSIX onlyreasonc                 D    |                      | j        j                   d S r"   )r=   r>   uidsr@   s    r+   	test_uidsz TestProcessObjectLeaks.test_uidso         	TY^$$$$$r0   c                 D    |                      | j        j                   d S r"   )r=   r>   gidsr@   s    r+   	test_gidsz TestProcessObjectLeaks.test_gidst   rS   r0   c                 D    |                      | j        j                   d S r"   )r=   r>   statusr@   s    r+   test_statusz"TestProcessObjectLeaks.test_statusy       TY%&&&&&r0   c                 D    |                      | j        j                   d S r"   )r=   r>   nicer@   s    r+   	test_nicez TestProcessObjectLeaks.test_nice}   s    TY^$$$$$r0   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 r0   )thisprocr\   r=   )r&   r`   s   `@r+   test_nice_setz$TestProcessObjectLeaks.test_nice_set   s6    ==??5555566666r0   not supportedc                 D    |                      | j        j                   d S r"   )r=   r>   ionicer@   s    r+   test_ionicez"TestProcessObjectLeaks.test_ionice   rZ   r0   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>   rf   )r&   values   r+   ra   z8TestProcessObjectLeaks.test_ionice_set.<locals>.<lambda>   s    !1!1%!8!8 r0   c                  L     j                             t          j                  S r"   )r>   rf   psutilIOPRIO_CLASS_NONEr@   s   r+   ra   z8TestProcessObjectLeaks.test_ionice_set.<locals>.<lambda>   s    !1!1&2J!K!K r0   r   )r   rb   rf   r=   r-   partialcextproc_ioprio_setosgetpidexecute_w_excOSError)r&   r*   rj   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,,,,,r0   c                 D    |                      | j        j                   d S r"   )r=   r>   io_countersr@   s    r+   test_io_countersz'TestProcessObjectLeaks.test_io_counters   !     	TY*+++++r0   zworthless on POSIXc                     t          j                                                     |                     | j        j                   d S r"   )rl   Processusernamer=   r>   r@   s    r+   test_usernamez$TestProcessObjectLeaks.test_username   s;     	!!###TY'(((((r0   c                 D    |                      | j        j                   d S r"   )r=   r>   create_timer@   s    r+   test_create_timez'TestProcessObjectLeaks.test_create_time       TY*+++++r0   )only_ifc                 D    |                      | j        j                   d S r"   )r=   r>   num_threadsr@   s    r+   test_num_threadsz'TestProcessObjectLeaks.test_num_threads   rz   r0   WINDOWS onlyc                 D    |                      | j        j                   d S r"   )r=   r>   num_handlesr@   s    r+   test_num_handlesz'TestProcessObjectLeaks.test_num_handles   r   r0   c                 D    |                      | j        j                   d S r"   )r=   r>   num_fdsr@   s    r+   test_num_fdsz#TestProcessObjectLeaks.test_num_fds   !     	TY&'''''r0   c                 D    |                      | j        j                   d S r"   )r=   r>   num_ctx_switchesr@   s    r+   test_num_ctx_switchesz,TestProcessObjectLeaks.test_num_ctx_switches       TY/00000r0   c                 D    |                      | j        j                   d S r"   )r=   r>   threadsr@   s    r+   test_threadsz#TestProcessObjectLeaks.test_threads   r   r0   c                 D    |                      | j        j                   d S r"   )r=   r>   	cpu_timesr@   s    r+   test_cpu_timesz%TestProcessObjectLeaks.test_cpu_times   s    TY()))))r0   c                 D    |                      | j        j                   d S r"   )r=   r>   cpu_numr@   s    r+   test_cpu_numz#TestProcessObjectLeaks.test_cpu_num   r   r0   c                 D    |                      | j        j                   d S r"   )r=   r>   memory_infor@   s    r+   test_memory_infoz'TestProcessObjectLeaks.test_memory_info   r   r0   c                 D    |                      | j        j                   d S r"   )r=   r>   memory_full_infor@   s    r+   test_memory_full_infoz,TestProcessObjectLeaks.test_memory_full_info   r   r0   c                 D    |                      | j        j                   d S r"   )r=   r>   terminalr@   s    r+   test_terminalz$TestProcessObjectLeaks.test_terminal   s!     	TY'(((((r0   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3r0   c                 D    |                      | j        j                   d S r"   )r=   r>   cwdr@   s    r+   test_cwdzTestProcessObjectLeaks.test_cwd   rJ   r0   c                 D    |                      | j        j                   d S r"   )r=   r>   cpu_affinityr@   s    r+   test_cpu_affinityz(TestProcessObjectLeaks.test_cpu_affinity   s    TY+,,,,,r0   c                      t                                                                 fd                                t           fd           d S )Nc                  8    j                                        S r"   r>   r   )affinityr&   s   r+   ra   z>TestProcessObjectLeaks.test_cpu_affinity_set.<locals>.<lambda>   s    TY33H== r0   c                  :     j                             dg          S Nrn   r   r@   s   r+   ra   z>TestProcessObjectLeaks.test_cpu_affinity_set.<locals>.<lambda>   s    ty/E/Erd/K/K r0   )rb   r   r=   rt   
ValueError)r&   r   s   `@r+   test_cpu_affinity_setz,TestProcessObjectLeaks.test_cpu_affinity_set   sZ    ((**=====>>>:'K'K'K'KLLLLLr0   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_filesr@   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_mapsr@   s    r+   test_memory_mapsz'TestProcessObjectLeaks.test_memory_maps   rz   r0   z
LINUX onlyc                 8                            fd           d S )Nc                  L     j                             t          j                  S r"   r>   rlimitrl   RLIMIT_NOFILEr@   s   r+   ra   z4TestProcessObjectLeaks.test_rlimit.<locals>.<lambda>   s    TY--f.BCC r0   r=   r@   s   `r+   test_rlimitz"TestProcessObjectLeaks.test_rlimit   s'     	CCCCDDDDDr0   c                      t                               t          j                                        fd                                t          t          f fd           d S )Nc                  N    j                             t          j                   S r"   r   )limitr&   s   r+   ra   z8TestProcessObjectLeaks.test_rlimit_set.<locals>.<lambda>   s    TY--f.BEJJ r0   c                  8     j                             d          S r   )r>   r   r@   s   r+   ra   z8TestProcessObjectLeaks.test_rlimit_set.<locals>.<lambda>   s    $):J:J2:N:N r0   )rb   r   rl   r   r=   rt   ru   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Or0   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+   ra   z=TestProcessObjectLeaks.test_net_connections.<locals>.<lambda>   s    !:!:4!@!@ r0   )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>   environr@   s    r+   test_environz#TestProcessObjectLeaks.test_environ  rF   r0   c                 2    |                      d            d S )Nc                  X    t                               t          j                              S r"   )rp   	proc_inforr   rs   r1   r0   r+   ra   z7TestProcessObjectLeaks.test_proc_info.<locals>.<lambda>  s    T^^BIKK88 r0   r   r@   s    r+   test_proc_infoz%TestProcessObjectLeaks.test_proc_info  s    8899999r0   N):__name__
__module____qualname____doc__rb   r>   r;   r2   rA   rE   rI   rM   r   markskipifr   rR   rV   rY   r]   rc   r   rg   rv   r   ry   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   r1   r0   r+   r4   r4   V   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;;: : <;: : :r0   r4   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   subprl   r|   pidr>   killwaitclsr#   s    r+   r   z%TestTerminatedProcessLeaks.setUpClass  s]    !##>#(,//r0   c                 p    t                                                       t          | j                   d S r"   )r   tearDownClassr   r   r   s    r+   r   z(TestTerminatedProcessLeaks.tearDownClass  s/    #(r0   c                 H    	  |             d S # t           j        $ r Y d S w xY wr"   )rl   NoSuchProcess)r&   r*   s     r+   callzTestTerminatedProcessLeaks.call  s;    	CEEEEE# 	 	 	DD	s   
 !!c                 D    |                      | j        j                   d S r"   )r=   r>   r   r@   s    r+   	test_killz$TestTerminatedProcessLeaks.test_kill'      LL(((((r0   c                 D    |                      | j        j                   d S r"   )r=   r>   r   r@   s    r+   test_terminatez)TestTerminatedProcessLeaks.test_terminate*  s    LL,-----r0   c                 D    |                      | j        j                   d S r"   )r=   r>   suspendr@   s    r+   test_suspendz'TestTerminatedProcessLeaks.test_suspend-  s    LL*+++++r0   c                 D    |                      | j        j                   d S r"   )r=   r>   r   r@   s    r+   r   z&TestTerminatedProcessLeaks.test_resume0  s    LL)*****r0   c                 D    |                      | j        j                   d S r"   )r=   r>   r   r@   s    r+   	test_waitz$TestTerminatedProcessLeaks.test_wait3  r   r0   c                 <      fd}                      |           d S )Nc                  p    	 t                                j        j                  S # t          $ r Y d S w xY wr"   )rp   r   r>   r   ProcessLookupErrorr@   s   r+   r   z7TestTerminatedProcessLeaks.test_proc_info.<locals>.call8  s@    >>$)-888)   DDs   #' 
55r   )r&   r   s   ` r+   r   z)TestTerminatedProcessLeaks.test_proc_info6  s6         LLr0   )r   r   r   r   classmethodr   r   r   r   r   r   r   r   r   r   __classcell__)r#   s   @r+   r   r     s              [     [    	) 	) 	)	. 	. 	.	, 	, 	,	+ 	+ 	+	) 	) 	)	 	 	 	 	 	 	#   r0   r   r   rN   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rp   proc_cmdlinerr   rs   r1   r0   r+   ra   zETestProcessDualImplementation.test_cmdline_peb_true.<locals>.<lambda>D  s    T..ry{{D.II r0   r   r@   s    r+   test_cmdline_peb_truez3TestProcessDualImplementation.test_cmdline_peb_trueC  s    IIJJJJJr0   c                 2    |                      d            d S )Nc                  \    t                               t          j                    d          S )NFr  r  r1   r0   r+   ra   zFTestProcessDualImplementation.test_cmdline_peb_false.<locals>.<lambda>G  s    T..ry{{E.JJ r0   r   r@   s    r+   test_cmdline_peb_falsez4TestProcessDualImplementation.test_cmdline_peb_falseF  s    JJKKKKKr0   N)r   r   r   r  r  r1   r0   r+   r  r  A  s:        K K KL L L L Lr0   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j                    dk    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% Z0d& Z1d' Z2d( Z3d) Z4d*S d*S )+TestModuleFunctionsLeaksz&Test leaks of psutil module functions.c                 X    t                      }|                    | |j                   d S r"   )r   r6   r   r9   s     r+   r;   z&TestModuleFunctionsLeaks.test_coverageR  s+    
tRV,,,,,r0   c                 2    |                      d            d S )Nc                  ,    t          j        d          S )NTlogicalrl   	cpu_countr1   r0   r+   ra   z9TestModuleFunctionsLeaks.test_cpu_count.<locals>.<lambda>Z  s    V-d;;; r0   r   r@   s    r+   test_cpu_countz'TestModuleFunctionsLeaks.test_cpu_countX  s    ;;<<<<<r0   c                 2    |                      d            d S )Nc                  ,    t          j        d          S )NFr  r  r1   r0   r+   ra   z?TestModuleFunctionsLeaks.test_cpu_count_cores.<locals>.<lambda>^  s    V-e<<< r0   r   r@   s    r+   test_cpu_count_coresz-TestModuleFunctionsLeaks.test_cpu_count_cores\  s    <<=====r0   c                 D    |                      t          j                   d S r"   )r=   rl   r   r@   s    r+   r   z'TestModuleFunctionsLeaks.test_cpu_times`      V%&&&&&r0   c                 2    |                      d            d S )Nc                  ,    t          j        d          S )NT)percpu)rl   r   r1   r0   r+   ra   z=TestModuleFunctionsLeaks.test_per_cpu_times.<locals>.<lambda>f  s    V-T::: r0   r   r@   s    r+   test_per_cpu_timesz+TestModuleFunctionsLeaks.test_per_cpu_timesd  s    ::;;;;;r0   c                 D    |                      t          j                   d S r"   )r=   rl   	cpu_statsr@   s    r+   test_cpu_statsz'TestModuleFunctionsLeaks.test_cpu_statsh  r  r0   arm64zskipped due to #1892rN   rd   c                 D    |                      t          j                   d S r"   )r=   rl   cpu_freqr@   s    r+   test_cpu_freqz&TestModuleFunctionsLeaks.test_cpu_freql  s     	V_%%%%%r0   r   c                 j    t          j                     |                     t           j                   d S r"   )rl   
getloadavgr=   r@   s    r+   test_getloadavgz(TestModuleFunctionsLeaks.test_getloadavgu  s,    V&'''''r0   c                 D    |                      t          j                   d S r"   )r=   rl   virtual_memoryr@   s    r+   test_virtual_memoryz,TestModuleFunctionsLeaks.test_virtual_memory|  s    V*+++++r0   z&worthless on SUNOS (uses a subprocess)c                 D    |                      t          j                   d S r"   )r=   rl   swap_memoryr@   s    r+   test_swap_memoryz)TestModuleFunctionsLeaks.test_swap_memory  s    V'(((((r0   c                 `    t           rt          n| j        }|                     d |           d S )Nc                  L    t          j        t          j                              S r"   )rl   
pid_existsrr   rs   r1   r0   r+   ra   z:TestModuleFunctionsLeaks.test_pid_exists.<locals>.<lambda>  s    V.ry{{;; r0   r   r   r%   r$   r=   r   s     r+   test_pid_existsz(TestModuleFunctionsLeaks.test_pid_exists  s2    "2		
;;5IIIIIr0   c                 `    t           rt          n| j        }|                     d |           d S )Nc                  *    t          j        d          S )N.)rl   
disk_usager1   r0   r+   ra   z:TestModuleFunctionsLeaks.test_disk_usage.<locals>.<lambda>  s    V.s33 r0   r   r2  r   s     r+   test_disk_usagez(TestModuleFunctionsLeaks.test_disk_usage  s2    "2		
335AAAAAr0   c                 D    |                      t          j                   d S r"   )r=   rl   disk_partitionsr@   s    r+   test_disk_partitionsz-TestModuleFunctionsLeaks.test_disk_partitions  s    V+,,,,,r0   z/proc/diskstatsz3/proc/diskstats not available on this Linux versionc                 2    |                      d            d S )Nc                  ,    t          j        d          S NF)nowrap)rl   disk_io_countersr1   r0   r+   ra   z@TestModuleFunctionsLeaks.test_disk_io_counters.<locals>.<lambda>  s    V4EBBB r0   r   r@   s    r+   test_disk_io_countersz.TestModuleFunctionsLeaks.test_disk_io_counters  s      	BBCCCCCr0   c                 D    |                      t          j                   d S r"   )r=   rl   pidsr@   s    r+   	test_pidsz"TestModuleFunctionsLeaks.test_pids  s    V[!!!!!r0   c                 2    |                      d            d S )Nc                  ,    t          j        d          S r>  )rl   net_io_countersr1   r0   r+   ra   z?TestModuleFunctionsLeaks.test_net_io_counters.<locals>.<lambda>  s    V35AAA r0   r   r@   s    r+   test_net_io_countersz-TestModuleFunctionsLeaks.test_net_io_counters  s      	AABBBBBr0   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  )rl   r   r1   r0   r+   ra   z?TestModuleFunctionsLeaks.test_net_connections.<locals>.<lambda>  s    !7U!C!C!C r0   )rl   r   r   r=   r@   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=   rl   net_if_addrs)r&   rM  s     r+   test_net_if_addrsz*TestModuleFunctionsLeaks.test_net_if_addrs  s1    !(<IIdn	V(I>>>>>r0   c                 D    |                      t          j                   d S r"   )r=   rl   net_if_statsr@   s    r+   test_net_if_statsz*TestModuleFunctionsLeaks.test_net_if_stats  s    V()))))r0   c                 D    |                      t          j                   d S r"   )r=   rl   sensors_batteryr@   s    r+   test_sensors_batteryz-TestModuleFunctionsLeaks.test_sensors_battery  s     	V+,,,,,r0   c                 D    |                      t          j                   d S r"   )r=   rl   sensors_temperaturesr@   s    r+   test_sensors_temperaturesz2TestModuleFunctionsLeaks.test_sensors_temperatures  s     	V011111r0   c                 D    |                      t          j                   d S r"   )r=   rl   sensors_fansr@   s    r+   test_sensors_fansz*TestModuleFunctionsLeaks.test_sensors_fans  s     	V()))))r0   c                 D    |                      t          j                   d S r"   )r=   rl   	boot_timer@   s    r+   test_boot_timez'TestModuleFunctionsLeaks.test_boot_time  r  r0   c                 D    |                      t          j                   d S r"   )r=   rl   usersr@   s    r+   
test_usersz#TestModuleFunctionsLeaks.test_users  s    V\"""""r0   c                 2    |                      d            d S )Nc                  *    t          j        d          S )NF)rl   
_set_debugr1   r0   r+   ra   z9TestModuleFunctionsLeaks.test_set_debug.<locals>.<lambda>  s    V.u55 r0   r   r@   s    r+   test_set_debugz'TestModuleFunctionsLeaks.test_set_debug  s    5566666r0   c                 D    |                      t          j                   d S r"   )r=   rp   winservice_enumerater@   s    r+   test_win_service_iterz.TestModuleFunctionsLeaks.test_win_service_iter  s    LL233333r0   c                     d S r"   r1   r@   s    r+   test_win_service_getz-TestModuleFunctionsLeaks.test_win_service_get  s    Dr0   c                     t          t          j                                                              |                     fd           d S )Nc                  8    t                                          S r"   )rp   winservice_query_configr?   s   r+   ra   zFTestModuleFunctionsLeaks.test_win_service_get_config.<locals>.<lambda>      !=!=d!C!C r0   nextrl   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Dr0   c                     t          t          j                                                              |                     fd           d S )Nc                  8    t                                          S r"   )rp   winservice_query_statusrn  s   r+   ra   zFTestModuleFunctionsLeaks.test_win_service_get_status.<locals>.<lambda>  ro  r0   rp  rs  s    @r+   test_win_service_get_statusz4TestModuleFunctionsLeaks.test_win_service_get_status  ru  r0   c                     t          t          j                                                              |                     fd           d S )Nc                  8    t                                          S r"   )rp   winservice_query_descrrn  s   r+   ra   zKTestModuleFunctionsLeaks.test_win_service_get_description.<locals>.<lambda>  s    !<!<T!B!B r0   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Cr0   N)5r   r   r   r   r;   r2   r  r  r   r  r!  r   r   r   r   platformmachiner
   r%  r   r(  r+  r   r.  r3  r8  r;  r   rr   pathexistsrA  rD  r   rH  getuidr   rO  rR  r   rU  r   rX  r   r[  r^  ra  re  rh  rj  rt  ry  r}  r1   r0   r+   r  r  O  s       00- - - = = = > > > ' ' ' < < < ' ' ' [/"("$$/8N    [L(AA& & BA  & [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r0   r  ).r   r-   rr   r~  rl   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   _psplatformrp   r|   rb   r%   r2   r4   r   r   r   r  r  r1   r0   r+   <module>r     sW        				                                           ) ) ) ) ) ) % % % % % % $ $ $ $ $ $ # # # # # # ( ( ( ( ( ( , , , , , , ) ) ) ) ) ) - - - - - - # # # # # # , , , , , , ) ) ) ) ) ) 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XD XD XD XD XD~ XD XD XD XD XDr0   