+
    VN÷hú:  ã                   ót  € R t ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIH	t	 ^ RIH
t
 ^ RIHt ^ R	IHt ^ R
IHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIH t  ^ RIH!t! ]PD                  PF                  t#]PH                  ! 4       t%^t&R t' ! R R ]4      t( ! R! R"](4      t)]PT                  PW                  ]
'       * R#R$7       ! R% R&]4      4       t, ! R' R(]4      t-R# ))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)Ú	terminatec                 ó   € R p V # )zkDecorator for those Linux functions which are implemented in pure
Python, and which we want to run faster.
c                 óF   a € \         P                  ! S 4      V 3R  l4       pV# )c                 óî   <€ \         '       dI   V P                  P                  p \        V P                  n        S! V .VO5/ VB W0P                  n        # S! V .VO5/ VB #   Y0P                  n        i ; i©N)r   Ú	__class__ÚtimesÚ	FEW_TIMES)ÚselfÚargsÚkwargsÚbeforeÚfuns   &*, €Ú</usr/lib/python3/dist-packages/psutil/tests/test_memleaks.pyÚwrapperÚ5fewtimes_if_linux.<locals>.decorator.<locals>.wrapper>   sg   ø€ ç‹uØŸ™×-Ñ-�ð2Ü+4�D—N‘NÔ(Ù˜tÐ5 dÒ5¨fÑ5à+1—N‘NÕ(á˜4Ð1 $Ò1¨&Ñ1Ð1øð ,2—N‘NÕ(ús   ¥ A" Á"A4)Ú	functoolsÚwraps)r)   r+   s   f r*   Ú	decoratorÚ$fewtimes_if_linux.<locals>.decorator=   s%   ø€ Ü	�Š˜Ó	ô		2ó 
ð		2ð ˆó    © )r/   s    r*   Úfewtimes_if_linuxr3   8   s   € ò
ð Ðr1   c                   óœ  a € ] tR t^Tt o Rt]tR t]! 4       R 4       t	]! 4       R 4       t
]! 4       R 4       t]! 4       R 4       t]P                  P                  ]'       * RR7      ]! 4       R	 4       4       t]P                  P                  ]'       * RR7      ]! 4       R
 4       4       t]! 4       R 4       tR tR t]P                  P                  ]'       * RR7      R 4       t]P                  P                  ]'       * RR7      R 4       t]P                  P                  ]'       * RR7      ]! 4       R 4       4       t]P                  P                  ]RR7      R 4       t]! 4       R 4       t]! 4       ]! ]R7      R 4       4       t]P                  P                  ] '       * RR7      R 4       t!]P                  P                  ]'       * RR7      ]! 4       R 4       4       t"]! 4       R 4       t#]! 4       ]! ]R7      R 4       4       t$]! 4       R 4       t%]! 4       ]P                  P                  ]&'       * RR7      R 4       4       t']! 4       R 4       t(]! 4       R 4       t)]P                  P                  ]'       * RR7      ]! 4       R  4       4       t*R! t+]! 4       R" 4       t,]P                  P                  ]-'       * RR7      R# 4       t.]P                  P                  ]-'       * RR7      R$ 4       t/]! 4       R% 4       t0]P                  P                  ]1'       * RR7      ]! 4       R& 4       4       t2]P                  P                  ]3'       * R'R7      ]P                  P                  ]4'       * RR7      R( 4       4       t5]P                  P                  ]3'       * R'R7      ]P                  P                  ]4'       * RR7      R) 4       4       t6]! 4       ]P                  P                  ] R*R7      R+ 4       4       t7]P                  P                  ]8'       * RR7      R, 4       t9]P                  P                  ] '       * RR7      R- 4       t:R.t;V t<R/# )0ÚTestProcessObjectLeaksz$Test leaks of Process class methods.c                ót   € \        R 4      pVP                  WP                  VP                  ,           4       R # r!   )r   Útest_class_coverageÚgettersÚsetters©r%   Únss   & r*   Útest_coverageÚ$TestProcessObjectLeaks.test_coverageY   s'   € Ü˜tÓ$ˆØ
×Ñ˜t§Z¡Z°"·*±*Õ%<Ö=r1   c                óP   € V P                  V P                  P                  4       R # r!   )ÚexecuteÚprocÚname©r%   s   &r*   Ú	test_nameÚ TestProcessObjectLeaks.test_name]   ó   € à�‰�T—Y‘Y—^‘^Ö$r1   c                óP   € V P                  V P                  P                  4       R # r!   )r?   r@   ÚcmdlinerB   s   &r*   Útest_cmdlineÚ#TestProcessObjectLeaks.test_cmdlinea   ó   € à�‰�T—Y‘Y×&Ñ&Ö'r1   c                óP   € V P                  V P                  P                  4       R # r!   )r?   r@   ÚexerB   s   &r*   Útest_exeÚTestProcessObjectLeaks.test_exee   ó   € à�‰�T—Y‘Y—]‘]Ö#r1   c                óP   € V P                  V P                  P                  4       R # r!   )r?   r@   ÚppidrB   s   &r*   Ú	test_ppidÚ TestProcessObjectLeaks.test_ppidi   rE   r1   z
POSIX only©Úreasonc                óP   € V P                  V P                  P                  4       R # r!   )r?   r@   ÚuidsrB   s   &r*   Ú	test_uidsÚ TestProcessObjectLeaks.test_uidsm   ó   € ð 	�‰�T—Y‘Y—^‘^Ö$r1   c                óP   € V P                  V P                  P                  4       R # r!   )r?   r@   ÚgidsrB   s   &r*   Ú	test_gidsÚ TestProcessObjectLeaks.test_gidsr   rZ   r1   c                óP   € V P                  V P                  P                  4       R # r!   )r?   r@   ÚstatusrB   s   &r*   Útest_statusÚ"TestProcessObjectLeaks.test_statusw   ó   € à�‰�T—Y‘Y×%Ñ%Ö&r1   c                óP   € V P                  V P                  P                  4       R # r!   )r?   r@   ÚnicerB   s   &r*   Ú	test_niceÚ TestProcessObjectLeaks.test_nice{   s   € Ø�‰�T—Y‘Y—^‘^Ö$r1   c                ó^   a a€ \         P                  4       oS P                  VV 3R  l4       R# )c                  ó:   <€ SP                   P                  S 4      # r!   )r@   re   )Únicenessr%   s   €€r*   Ú<lambda>Ú6TestProcessObjectLeaks.test_nice_set.<locals>.<lambda>€   s   ø€ ˜TŸY™YŸ^™^¨HÔ5r1   N)Úthisprocre   r?   )r%   rj   s   f@r*   Útest_nice_setÚ$TestProcessObjectLeaks.test_nice_set~   s   ù€ Ü—=‘=“?ˆØ�‰Õ5Ö6r1   únot supportedc                óP   € V P                  V P                  P                  4       R # r!   )r?   r@   ÚionicerB   s   &r*   Útest_ioniceÚ"TestProcessObjectLeaks.test_ionice‚   rc   r1   c                óD  a a€ \         '       d-   \        P                  4       oS P                  V V3R  l4       R# S P                  V 3R l4       \        P
                  ! \        P                  \        P                  ! 4       R^ 4      pS P                  \        V4       R# )c                  ó:   <€ S P                   P                  S4      # r!   )r@   rr   )r%   Úvalues   €€r*   rk   Ú8TestProcessObjectLeaks.test_ionice_set.<locals>.<lambda>Š   s   ø€  §¡×!1Ñ!1°%Ô!8r1   c                  óV   <€ S P                   P                  \        P                  4      # r!   )r@   rr   ÚpsutilÚIOPRIO_CLASS_NONErB   s   €r*   rk   rx   Œ   s   ø€  §¡×!1Ñ!1´&×2JÑ2JÔ!Kr1   Néÿÿÿÿ)r   rm   rr   r?   r-   ÚpartialÚcextÚproc_ioprio_setÚosÚgetpidÚexecute_w_excÚOSError)r%   r)   rw   s   f @r*   Útest_ionice_setÚ&TestProcessObjectLeaks.test_ionice_set†   s`   ù€ ç‹7Ü—O‘OÓ%ˆEØ�L‰LÕ8Ö9à�L‰LÔKÔLÜ×#Ò#¤D×$8Ñ$8¼"¿)º)»+ÀrÈ1ÓMˆCØ×Ñœw¨Ö,r1   c                óP   € V P                  V P                  P                  4       R # r!   )r?   r@   Úio_countersrB   s   &r*   Útest_io_countersÚ'TestProcessObjectLeaks.test_io_counters�   ó   € ð 	�‰�T—Y‘Y×*Ñ*Ö+r1   zworthless on POSIXc                ó–   € \         P                  ! 4       P                  4        V P                  V P                  P                  4       R # r!   )rz   ÚProcessÚusernamer?   r@   rB   s   &r*   Útest_usernameÚ$TestProcessObjectLeaks.test_username•   s-   € ô 	�ŠÓ×!Ñ!Ô#Ø�‰�T—Y‘Y×'Ñ'Ö(r1   c                óP   € V P                  V P                  P                  4       R # r!   )r?   r@   Úcreate_timerB   s   &r*   Útest_create_timeÚ'TestProcessObjectLeaks.test_create_time›   ó   € à�‰�T—Y‘Y×*Ñ*Ö+r1   )Úonly_ifc                óP   € V P                  V P                  P                  4       R # r!   )r?   r@   Únum_threadsrB   s   &r*   Útest_num_threadsÚ'TestProcessObjectLeaks.test_num_threadsŸ   rŠ   r1   úWINDOWS onlyc                óP   € V P                  V P                  P                  4       R # r!   )r?   r@   Únum_handlesrB   s   &r*   Útest_num_handlesÚ'TestProcessObjectLeaks.test_num_handles¤   r”   r1   c                óP   € V P                  V P                  P                  4       R # r!   )r?   r@   Únum_fdsrB   s   &r*   Útest_num_fdsÚ#TestProcessObjectLeaks.test_num_fds¨   ó   € ð 	�‰�T—Y‘Y×&Ñ&Ö'r1   c                óP   € V P                  V P                  P                  4       R # r!   )r?   r@   Únum_ctx_switchesrB   s   &r*   Útest_num_ctx_switchesÚ,TestProcessObjectLeaks.test_num_ctx_switches­   ó   € à�‰�T—Y‘Y×/Ñ/Ö0r1   c                óP   € V P                  V P                  P                  4       R # r!   )r?   r@   ÚthreadsrB   s   &r*   Útest_threadsÚ#TestProcessObjectLeaks.test_threads±   r£   r1   c                óP   € V P                  V P                  P                  4       R # r!   )r?   r@   Ú	cpu_timesrB   s   &r*   Útest_cpu_timesÚ%TestProcessObjectLeaks.test_cpu_times¶   s   € à�‰�T—Y‘Y×(Ñ(Ö)r1   c                óP   € V P                  V P                  P                  4       R # r!   )r?   r@   Úcpu_numrB   s   &r*   Útest_cpu_numÚ#TestProcessObjectLeaks.test_cpu_numº   r£   r1   c                óP   € V P                  V P                  P                  4       R # r!   )r?   r@   Úmemory_inforB   s   &r*   Útest_memory_infoÚ'TestProcessObjectLeaks.test_memory_info¿   r”   r1   c                óP   € V P                  V P                  P                  4       R # r!   )r?   r@   Úmemory_full_inforB   s   &r*   Útest_memory_full_infoÚ,TestProcessObjectLeaks.test_memory_full_infoÃ   r¨   r1   c                óP   € V P                  V P                  P                  4       R # r!   )r?   r@   ÚterminalrB   s   &r*   Útest_terminalÚ$TestProcessObjectLeaks.test_terminalÇ   s   € ð 	�‰�T—Y‘Y×'Ñ'Ö(r1   c                ó�   € \         '       d   \        MV P                  pV P                  V P                  P
                  VR 7       R# )©r#   N)r   r$   r#   r?   r@   Úresume©r%   r#   s   & r*   Útest_resumeÚ"TestProcessObjectLeaks.test_resumeÌ   s+   € ß"›U•	¨¯
©
ˆØ�‰�T—Y‘Y×%Ñ%¨UˆÖ3r1   c                óP   € V P                  V P                  P                  4       R # r!   )r?   r@   ÚcwdrB   s   &r*   Útest_cwdÚTestProcessObjectLeaks.test_cwdÐ   rO   r1   c                óP   € V P                  V P                  P                  4       R # r!   )r?   r@   Úcpu_affinityrB   s   &r*   Útest_cpu_affinityÚ(TestProcessObjectLeaks.test_cpu_affinityÔ   s   € à�‰�T—Y‘Y×+Ñ+Ö,r1   c                ó’   a a€ \         P                  4       oS P                  VV 3R  l4       S P                  \        V 3R l4       R# )c                  ó:   <€ SP                   P                  S 4      # r!   ©r@   rÌ   )Úaffinityr%   s   €€r*   rk   Ú>TestProcessObjectLeaks.test_cpu_affinity_set.<locals>.<lambda>Û   s   ø€ ˜TŸY™Y×3Ñ3°HÔ=r1   c                  ó<   <€ S P                   P                  R.4      # ©é   r|   rÑ   rB   s   €r*   rk   rÓ   Ü   s   ø€ ¨t¯y©y×/EÑ/EÀrÀdÔ/Kr1   N)rm   rÌ   r?   r‚   Ú
ValueError)r%   rÒ   s   f@r*   Útest_cpu_affinity_setÚ,TestProcessObjectLeaks.test_cpu_affinity_setØ   s/   ù€ ä×(Ñ(Ó*ˆØ�‰Õ=Ô>Ø×Ñœ:Ô'KÖLr1   c                óÂ   € \        \        4       R 4      ;_uu_ 4        V P                  V P                  P                  4       RRR4       R#   + '       g   i     R# ; i)ÚwN)Úopenr   r?   r@   Ú
open_filesrB   s   &r*   Útest_open_filesÚ&TestProcessObjectLeaks.test_open_filesÞ   s6   € ä”*“, ×$Õ$Ø�L‰L˜Ÿ™×-Ñ-Ô.÷ %×$×$Ò$ús   �&AÁA	c                óP   € V P                  V P                  P                  4       R # r!   )r?   r@   Úmemory_mapsrB   s   &r*   Útest_memory_mapsÚ'TestProcessObjectLeaks.test_memory_mapsã   rŠ   r1   z
LINUX onlyc                ó2   a € S P                  V 3R  l4       R# )c                  óV   <€ S P                   P                  \        P                  4      # r!   ©r@   Úrlimitrz   ÚRLIMIT_NOFILErB   s   €r*   rk   Ú4TestProcessObjectLeaks.test_rlimit.<locals>.<lambda>ë   s   ø€ ˜TŸY™Y×-Ñ-¬f×.BÑ.BÔCr1   N©r?   rB   s   fr*   Útest_rlimitÚ"TestProcessObjectLeaks.test_rlimitè   s   ø€ ð 	�‰ÔCÖDr1   c                ó¼   a a€ \         P                  \        P                  4      oS P	                  VV 3R  l4       S P                  \        \        3V 3R l4       R# )c                  óX   <€ SP                   P                  \        P                  S 4      # r!   ræ   )Úlimitr%   s   €€r*   rk   Ú8TestProcessObjectLeaks.test_rlimit_set.<locals>.<lambda>ñ   s   ø€ ˜TŸY™Y×-Ñ-¬f×.BÑ.BÀEÔJr1   c                  ó:   <€ S P                   P                  R4      # rÕ   )r@   rç   rB   s   €r*   rk   rð   ò   s   ø€ ¸$¿)¹)×:JÑ:JÈ2Ô:Nr1   N)rm   rç   rz   rè   r?   r‚   rƒ   r×   )r%   rï   s   f@r*   Útest_rlimit_setÚ&TestProcessObjectLeaks.test_rlimit_setí   s<   ù€ ô —‘¤× 4Ñ 4Ó5ˆØ�‰ÕJÔKØ×ÑœG¤ZÐ0Ô2NÖOr1   zworthless on WINDOWSc                ó´   a a€ \        4       ;_uu_ 4        \        '       d   R MRoS P                  VV 3R l4       RRR4       R#   + '       g   i     R# ; i)ÚinetÚallc                  ó:   <€ SP                   P                  S 4      # r!   )r@   Únet_connections)Úkindr%   s   €€r*   rk   Ú=TestProcessObjectLeaks.test_net_connections.<locals>.<lambda>þ   s   ø€  §¡×!:Ñ!:¸4Ô!@r1   N)r   r   r?   )r%   rù   s   f@r*   Útest_net_connectionsÚ+TestProcessObjectLeaks.test_net_connectionsô   s5   ù€ ô ×Õß"›U‘6¨ˆDØ�L‰LÕ@ÔA÷ ××Òús   •'AÁA	c                óP   € V P                  V P                  P                  4       R # r!   )r?   r@   ÚenvironrB   s   &r*   Útest_environÚ#TestProcessObjectLeaks.test_environ   rJ   r1   c                ó*   € V P                  R  4       R# )c                  óR   € \         P                  \        P                  ! 4       4      # r!   )r~   Ú	proc_infor€   r�   r2   r1   r*   rk   Ú7TestProcessObjectLeaks.test_proc_info.<locals>.<lambda>  s   € œTŸ^™^¬B¯IªI«KÔ8r1   Nrê   rB   s   &r*   Útest_proc_infoÚ%TestProcessObjectLeaks.test_proc_info  s   € à�‰Ñ8Ö9r1   r2   N)=Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rm   r@   r<   r3   rC   rH   rM   rR   r   ÚmarkÚskipifr   rX   r]   ra   rf   rn   r   rs   r„   r   rˆ   rŽ   r’   r   r   r˜   r   r�   r¡   r¦   r«   r¯   r   r³   r·   r»   r¿   rÅ   rÉ   r	   rÍ   rØ   rÞ   r   râ   r   r   rë   rò   rû   r   rÿ   r  Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @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                   ó    a a€ ] tR tRt oRt]V 3R l4       t]V 3R l4       tR t]	'       d   R t
R tR tR	 tR
 tR tRtVtV ;t# RtVtV ;t# )ÚTestTerminatedProcessLeaksi	  záRepeat 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                ó  <€ \         SV `  4        \        4       V n        \        P
                  ! V P                  P                  4      V n        V P                  P                  4        V P                  P                  4        R # r!   )
ÚsuperÚ
setUpClassr   Úsubprz   rŒ   Úpidr@   ÚkillÚwait©Úclsr"   s   &€r*   r  Ú%TestTerminatedProcessLeaks.setUpClass  sI   ø€ ä‰ÑÔÜ “?ˆŒÜ—>’> #§(¡(§,¡,Ó/ˆŒØ�‰�‰ŒØ�‰�‰Žr1   c                óN   <€ \         SV `  4        \        V P                  4       R # r!   )r  ÚtearDownClassr   r  r  s   &€r*   r  Ú(TestTerminatedProcessLeaks.tearDownClass  s   ø€ ä‰ÑÔÜ�#—(‘(Ör1   c                óN   €  V! 4        R #   \         P                   d     R # i ; ir!   )rz   ÚNoSuchProcess)r%   r)   s   &&r*   ÚcallÚTestTerminatedProcessLeaks.call  s$   € ð	ÙŽEøÜ×#Ñ#ô 	Úð	ús   ‚ ‹$£$c                óP   € V P                  V P                  P                  4       R # r!   )r?   r@   r  rB   s   &r*   Ú	test_killÚ$TestTerminatedProcessLeaks.test_kill%  ó   € Ø�L‰L˜Ÿ™Ÿ™Ö(r1   c                óP   € V P                  V P                  P                  4       R # r!   )r?   r@   r   rB   s   &r*   Útest_terminateÚ)TestTerminatedProcessLeaks.test_terminate(  s   € Ø�L‰L˜Ÿ™×,Ñ,Ö-r1   c                óP   € V P                  V P                  P                  4       R # r!   )r?   r@   ÚsuspendrB   s   &r*   Útest_suspendÚ'TestTerminatedProcessLeaks.test_suspend+  s   € Ø�L‰L˜Ÿ™×*Ñ*Ö+r1   c                óP   € V P                  V P                  P                  4       R # r!   )r?   r@   rÃ   rB   s   &r*   rÅ   Ú&TestTerminatedProcessLeaks.test_resume.  s   € Ø�L‰L˜Ÿ™×)Ñ)Ö*r1   c                óP   € V P                  V P                  P                  4       R # r!   )r?   r@   r  rB   s   &r*   Ú	test_waitÚ$TestTerminatedProcessLeaks.test_wait1  r(  r1   c                ó6   a € V 3R  lpS P                  V4       R# )c                  ó|   <€  \         P                  S P                  P                  4      #   \         d     R # i ; ir!   )r~   r  r@   r  ÚProcessLookupErrorrB   s   €r*   r#  Ú7TestTerminatedProcessLeaks.test_proc_info.<locals>.call6  s1   ø€ ðÜŸ>™>¨$¯)©)¯-©-Ó8Ð8øÜ)ô Úðús   ƒ(, ¬;º;Nrê   )r%   r#  s   f r*   r  Ú)TestTerminatedProcessLeaks.test_proc_info4  s   ø€ õð �L‰L˜Ör1   r2   )r  r  r	  r
  r  Úclassmethodr  r  r#  r   r&  r*  r.  rÅ   r3  r  r  r  Ú__classcell__)r"   r  s   @@r*   r  r  	  sd   ù‡ € ñð ôó ðð ôó ðò÷ ò	)ò	.ò	,ò	+ò	)÷	ò 	÷# r1   r  rš   rT   c                   ó,   a € ] tR tRt o R tR tRtV tR# )ÚTestProcessDualImplementationi?  c                ó*   € V P                  R  4       R# )c                  óV   € \         P                  \        P                  ! 4       R R7      # )T©Úuse_peb©r~   Úproc_cmdliner€   r�   r2   r1   r*   rk   ÚETestProcessDualImplementation.test_cmdline_peb_true.<locals>.<lambda>B  s   € œT×.Ñ.¬r¯yªy«{ÀDÐ.ÔIr1   Nrê   rB   s   &r*   Útest_cmdline_peb_trueÚ3TestProcessDualImplementation.test_cmdline_peb_trueA  s   € Ø�‰ÑIÖJr1   c                ó*   € V P                  R  4       R# )c                  óV   € \         P                  \        P                  ! 4       R R7      # )Fr@  rB  r2   r1   r*   rk   ÚFTestProcessDualImplementation.test_cmdline_peb_false.<locals>.<lambda>E  s   € œT×.Ñ.¬r¯yªy«{ÀEÐ.ÔJr1   Nrê   rB   s   &r*   Útest_cmdline_peb_falseÚ4TestProcessDualImplementation.test_cmdline_peb_falseD  s   € Ø�‰ÑJÖKr1   r2   N)r  r  r	  r
  rE  rJ  r  r  r  s   @r*   r=  r=  ?  s   ø‡ € òK÷Lð Lr1   r=  c                   ód  a € ] tR tRt o RtR t]! 4       R 4       t]! 4       R 4       t]! 4       R 4       t	]! 4       R 4       t
]! 4       R 4       t]! 4       ]P                  P                  ];'       d    ]R	R
7      ]P                  P                  ]'       * RR
7      R 4       4       4       t]P                  P                  ]'       * RR
7      R 4       tR t]P                  P                  ]RR
7      R 4       tR tR tR t]P                  P                  ];'       d!    ]P:                  P=                  R4      '       * RR
7      ]! 4       R 4       4       t]! 4       R 4       t ]! 4       ]P                  P                  ]!'       * RR
7      R 4       4       t"]! 4       ]P                  P                  ];'       d    ]PF                  ! 4       ^ 8g  RR
7      R 4       4       t$R t%R t&]! 4       ]P                  P                  ]''       * RR
7      R 4       4       t(]! 4       ]P                  P                  ])'       * RR
7      R 4       4       t*]! 4       ]P                  P                  ]+'       * RR
7      R  4       4       t,]! 4       R! 4       t-R" t.R# t/]'       d   R$ t0R% t1R& t2R' t3R( t4R)t5V t6R*# R)t5V t6R*# )+ÚTestModuleFunctionsLeaksiM  z&Test leaks of psutil module functions.c                óP   € \        4       pVP                  WP                  4       R # r!   )r   r7   rö   r:   s   & r*   r<   Ú&TestModuleFunctionsLeaks.test_coverageP  s   € ÜÓˆØ
×Ñ˜t§V¡VÖ,r1   c                ó*   € V P                  R  4       R# )c                  ó0   € \         P                  ! R R7      # )T©Úlogical©rz   Ú	cpu_countr2   r1   r*   rk   Ú9TestModuleFunctionsLeaks.test_cpu_count.<locals>.<lambda>X  s   € œV×-Ò-°dÕ;r1   Nrê   rB   s   &r*   Útest_cpu_countÚ'TestModuleFunctionsLeaks.test_cpu_countV  s   € à�‰Ñ;Ö<r1   c                ó*   € V P                  R  4       R# )c                  ó0   € \         P                  ! R R7      # )FrR  rT  r2   r1   r*   rk   Ú?TestModuleFunctionsLeaks.test_cpu_count_cores.<locals>.<lambda>\  s   € œV×-Ò-°eÕ<r1   Nrê   rB   s   &r*   Útest_cpu_count_coresÚ-TestModuleFunctionsLeaks.test_cpu_count_coresZ  s   € à�‰Ñ<Ö=r1   c                óD   € V P                  \        P                  4       R # r!   )r?   rz   r®   rB   s   &r*   r¯   Ú'TestModuleFunctionsLeaks.test_cpu_times^  ó   € à�‰”V×%Ñ%Ö&r1   c                ó*   € V P                  R  4       R# )c                  ó0   € \         P                  ! R R7      # )T)Úpercpu)rz   r®   r2   r1   r*   rk   Ú=TestModuleFunctionsLeaks.test_per_cpu_times.<locals>.<lambda>d  s   € œV×-Ò-°TÕ:r1   Nrê   rB   s   &r*   Útest_per_cpu_timesÚ+TestModuleFunctionsLeaks.test_per_cpu_timesb  s   € à�‰Ñ:Ö;r1   c                óD   € V P                  \        P                  4       R # r!   )r?   rz   Ú	cpu_statsrB   s   &r*   Útest_cpu_statsÚ'TestModuleFunctionsLeaks.test_cpu_statsf  r`  r1   zskipped due to #1892rT   rp   c                óD   € V P                  \        P                  4       R # r!   )r?   rz   Úcpu_freqrB   s   &r*   Útest_cpu_freqÚ&TestModuleFunctionsLeaks.test_cpu_freqj  s   € ð
 	�‰”V—_‘_Ö%r1   rš   c                ón   € \         P                  ! 4        V P                  \         P                  4       R # r!   )rz   Ú
getloadavgr?   rB   s   &r*   Útest_getloadavgÚ(TestModuleFunctionsLeaks.test_getloadavgq  s    € ä×ÒÔØ�‰”V×&Ñ&Ö'r1   c                óD   € V P                  \        P                  4       R # r!   )r?   rz   Úvirtual_memoryrB   s   &r*   Útest_virtual_memoryÚ,TestModuleFunctionsLeaks.test_virtual_memoryx  s   € Ø�‰”V×*Ñ*Ö+r1   z&worthless on SUNOS (uses a subprocess)c                óD   € V P                  \        P                  4       R # r!   )r?   rz   Úswap_memoryrB   s   &r*   Útest_swap_memoryÚ)TestModuleFunctionsLeaks.test_swap_memory|  s   € à�‰”V×'Ñ'Ö(r1   c                ój   € \         '       d   \        MV P                  pV P                  R  VR7       R# )c                  óT   € \         P                  ! \        P                  ! 4       4      # r!   )rz   Ú
pid_existsr€   r�   r2   r1   r*   rk   Ú:TestModuleFunctionsLeaks.test_pid_exists.<locals>.<lambda>‚  s   € œV×.Ò.¬r¯yªy«{Ô;r1   rÂ   N©r   r$   r#   r?   rÄ   s   & r*   Útest_pid_existsÚ(TestModuleFunctionsLeaks.test_pid_exists€  s"   € ß"›U•	¨¯
©
ˆØ�‰Ñ;À5ˆÖIr1   c                ój   € \         '       d   \        MV P                  pV P                  R  VR7       R# )c                  ó.   € \         P                  ! R 4      # )Ú.)rz   Ú
disk_usager2   r1   r*   rk   Ú:TestModuleFunctionsLeaks.test_disk_usage.<locals>.<lambda>ˆ  s   € œV×.Ò.¨sÔ3r1   rÂ   Nr  rÄ   s   & r*   Útest_disk_usageÚ(TestModuleFunctionsLeaks.test_disk_usage†  s"   € ß"›U•	¨¯
©
ˆØ�‰Ñ3¸5ˆÖAr1   c                óD   € V P                  \        P                  4       R # r!   )r?   rz   Údisk_partitionsrB   s   &r*   Útest_disk_partitionsÚ-TestModuleFunctionsLeaks.test_disk_partitionsŠ  s   € Ø�‰”V×+Ñ+Ö,r1   z/proc/diskstatsz3/proc/diskstats not available on this Linux versionc                ó*   € V P                  R  4       R# )c                  ó0   € \         P                  ! R R7      # ©F)Únowrap)rz   Údisk_io_countersr2   r1   r*   rk   Ú@TestModuleFunctionsLeaks.test_disk_io_counters.<locals>.<lambda>“  s   € œV×4Ò4¸EÕBr1   Nrê   rB   s   &r*   Útest_disk_io_countersÚ.TestModuleFunctionsLeaks.test_disk_io_counters�  s   € ð 	�‰ÑBÖCr1   c                óD   € V P                  \        P                  4       R # r!   )r?   rz   ÚpidsrB   s   &r*   Ú	test_pidsÚ"TestModuleFunctionsLeaks.test_pids—  s   € à�‰”V—[‘[Ö!r1   c                ó*   € V P                  R  4       R# )c                  ó0   € \         P                  ! R R7      # r�  )rz   Únet_io_countersr2   r1   r*   rk   Ú?TestModuleFunctionsLeaks.test_net_io_counters.<locals>.<lambda>   s   € œV×3Ò3¸5ÕAr1   Nrê   rB   s   &r*   Útest_net_io_countersÚ-TestModuleFunctionsLeaks.test_net_io_counters�  s   € ð 	�‰ÑAÖBr1   zneed root accessc                ó¶   € \         P                  ! R R7       \        4       ;_uu_ 4        V P                  R 4       RRR4       R#   + '       g   i     R# ; i)rö   ©rù   c                  ó0   € \         P                  ! R R7      # )rö   r   )rz   rø   r2   r1   r*   rk   Ú?TestModuleFunctionsLeaks.test_net_connections.<locals>.<lambda>¨  s   € ¤×!7Ò!7¸UÕ!Cr1   N)rz   rø   r   r?   rB   s   &r*   rû   Ú-TestModuleFunctionsLeaks.test_net_connections¢  s7   € ô 	×Ò EÕ*Ü×ÕØ�L‰LÑCÔD÷ ××Òús   ªAÁA	c                ó|   € \         '       d   RMV P                  pV P                  \        P                  VR7       R# )éP   )Ú	toleranceNi @ )r   r¦  r?   rz   Únet_if_addrs)r%   r¦  s   & r*   Útest_net_if_addrsÚ*TestModuleFunctionsLeaks.test_net_if_addrsª  s'   € ç!(£‘I¨d¯n©nˆ	Ø�‰”V×(Ñ(°IˆÖ>r1   c                óD   € V P                  \        P                  4       R # r!   )r?   rz   Únet_if_statsrB   s   &r*   Útest_net_if_statsÚ*TestModuleFunctionsLeaks.test_net_if_stats¯  s   € Ø�‰”V×(Ñ(Ö)r1   c                óD   € V P                  \        P                  4       R # r!   )r?   rz   Úsensors_batteryrB   s   &r*   Útest_sensors_batteryÚ-TestModuleFunctionsLeaks.test_sensors_battery´  s   € ð 	�‰”V×+Ñ+Ö,r1   c                óD   € V P                  \        P                  4       R # r!   )r?   rz   Úsensors_temperaturesrB   s   &r*   Útest_sensors_temperaturesÚ2TestModuleFunctionsLeaks.test_sensors_temperatures¹  s   € ð 	�‰”V×0Ñ0Ö1r1   c                óD   € V P                  \        P                  4       R # r!   )r?   rz   Úsensors_fansrB   s   &r*   Útest_sensors_fansÚ*TestModuleFunctionsLeaks.test_sensors_fans¾  s   € ð 	�‰”V×(Ñ(Ö)r1   c                óD   € V P                  \        P                  4       R # r!   )r?   rz   Ú	boot_timerB   s   &r*   Útest_boot_timeÚ'TestModuleFunctionsLeaks.test_boot_timeÅ  r`  r1   c                óD   € V P                  \        P                  4       R # r!   )r?   rz   ÚusersrB   s   &r*   Ú
test_usersÚ#TestModuleFunctionsLeaks.test_usersÉ  s   € Ø�‰”V—\‘\Ö"r1   c                ó*   € V P                  R  4       R# )c                  ó.   € \         P                  ! R 4      # )F)rz   Ú
_set_debugr2   r1   r*   rk   Ú9TestModuleFunctionsLeaks.test_set_debug.<locals>.<lambda>Í  s   € œV×.Ò.¨uÔ5r1   Nrê   rB   s   &r*   Útest_set_debugÚ'TestModuleFunctionsLeaks.test_set_debugÌ  s   € Ø�‰Ñ5Ö6r1   c                óD   € V P                  \        P                  4       R # r!   )r?   r~   Úwinservice_enumeraterB   s   &r*   Útest_win_service_iterÚ.TestModuleFunctionsLeaks.test_win_service_iterÓ  s   € Ø�L‰Lœ×2Ñ2Ö3r1   c                ó   € R # r!   r2   rB   s   &r*   Útest_win_service_getÚ-TestModuleFunctionsLeaks.test_win_service_getÖ  s   € Ùr1   c                óŠ   a€ \        \        P                  ! 4       4      P                  4       oV P	                  V3R  l4       R# )c                  ó.   <€ \         P                  S 4      # r!   )r~   Úwinservice_query_config©rA   s   €r*   rk   ÚFTestModuleFunctionsLeaks.test_win_service_get_config.<locals>.<lambda>Û  ó   ø€ ¤×!=Ñ!=¸dÔ!Cr1   N©Únextrz   Úwin_service_iterrA   r?   ©r%   rA   s   &@r*   Útest_win_service_get_configÚ4TestModuleFunctionsLeaks.test_win_service_get_configÙ  ó,   ø€ Üœ×/Ò/Ó1Ó2×7Ñ7Ó9ˆDØ�L‰LÔCÖDr1   c                óŠ   a€ \        \        P                  ! 4       4      P                  4       oV P	                  V3R  l4       R# )c                  ó.   <€ \         P                  S 4      # r!   )r~   Úwinservice_query_statusrÒ  s   €r*   rk   ÚFTestModuleFunctionsLeaks.test_win_service_get_status.<locals>.<lambda>ß  rÔ  r1   NrÕ  rØ  s   &@r*   Útest_win_service_get_statusÚ4TestModuleFunctionsLeaks.test_win_service_get_statusÝ  rÛ  r1   c                óŠ   a€ \        \        P                  ! 4       4      P                  4       oV P	                  V3R  l4       R# )c                  ó.   <€ \         P                  S 4      # r!   )r~   Úwinservice_query_descrrÒ  s   €r*   rk   ÚKTestModuleFunctionsLeaks.test_win_service_get_description.<locals>.<lambda>ã  s   ø€ ¤×!<Ñ!<¸TÔ!Br1   NrÕ  rØ  s   &@r*   Ú test_win_service_get_descriptionÚ9TestModuleFunctionsLeaks.test_win_service_get_descriptioná  s,   ø€ Üœ×/Ò/Ó1Ó2×7Ñ7Ó9ˆDØ�L‰LÔBÖCr1   r2   N)7r  r  r	  r
  r  r<   r3   rW  r\  r¯   re  ri  r   r  r  r   r   r
   rm  r   rq  ru  r   ry  r€  r‡  r‹  r   r€   ÚpathÚexistsr“  r—  r   r�  Úgetuidrû   r¨  r¬  r   r°  r   r´  r   r¸  r¼  rÀ  rÆ  rÊ  rÍ  rÙ  rà  ræ  r  r  r  s   @r*   rM  rM  M  s7  ø‡ € Ù0ò-ñ Óñ=ó ð=ñ Óñ>ó ð>ñ Óñ'ó ð'ñ Óñ<ó ð<ñ Óñ'ó ð'ñ Óà‡[�[×Ñ˜×)Ð) 'Ð2HÐÓIØ‡[�[×Ñ˜LÔ(°ÐÓAñ&ó Bó Jó ð&ð ‡[�[×Ñ˜Gœ¨NÐÓ;ñ(ó <ð(ò,ð ‡[�[×Ñ˜Ð&NÐÓOñ)ó Pð)òJòBò-ð ‡[�[×ÑØ×7Ð7�b—g‘g—n‘nÐ%6Ó7Ô7ØDð ó ñ ÓñDó ó	ð
Dñ
 Óñ"ó ð"ñ
 ÓØ‡[�[×ÑÐ/Ô/¸ÐÓHñCó Ió ðCñ ÓØ‡[�[×Ñ˜×2Ð2 "§)¢)£+°Ñ"2Ð;MÐÓNñEó Oó ðEò?ò
*ñ
 ÓØ‡[�[×ÑÐ/Ô/¸ÐÓHñ-ó Ió ð-ñ ÓØ‡[�[×ÑÐ4Ô4¸_ÐÓMñ2ó Nó ð2ñ ÓØ‡[�[×ÑÐ,Ô,°_ÐÓEñ*ó Fó ð*ñ
 Óñ'ó ð'ò#ò7÷ ò	4ò	ò	Eò	E÷	Dð 	Dõ% r1   rM  ).r  r-   r€   rz   Ú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   Ú_psplatformr~   rŒ   rm   r$   r3   r5   r  r  r  r=  rM  r2   r1   r*   Ú<module>rî     sô   ðñó Û 	ã Û Ý Ý Ý Ý Ý Ý Ý  Ý )Ý %Ý $Ý #Ý (Ý ,Ý )Ý -Ý #Ý ,Ý )Ý 1Ý 'Ý 'Ý #Ý *Ý Ý .Ý &Ý )Ý "à×Ñ×Ñ€Ø�>Š>Ó€Ø€	òô8r:˜^ô r:ôj3Ð!7ô 3ðl ‡�×Ñ˜”K¨ÐÓ7ôL Nó Ló 8ðLôVD˜~ö VDr1   