0irdZddlZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl Z ddl m Z ddl mZddl mZddl mZddl mZdd l mZdd l mZdd l mZdd l mZdd l mZddlmZddlmZddlmZddlmZddlmZddlmZGddeZGddeZGddeZ GddeZ!ejDddZ#GddeZ$y) zMiscellaneous tests.N)mock)WINDOWS)bcat)cat)debug) isfile_strict)memoize)memoize_when_activatedparse_environ_block) supports_ipv6 wrap_numbers)HAS_NET_IO_COUNTERS)PsutilTestCase)process_namespace)pytest) reload_module)system_namespacecjeZdZdZefdZdZdZdZdZ dZ dZ d Z d Z d Zd Zd ZdZdZy)TestSpecialMethodscXtjt5tjj j ddzdddtjtj5tjddzdddy#1swYNxYw#1swYyxYw)N) rraises OverflowErrorpsutil _psplatformcextcheck_pid_range NoSuchProcessProcessselfs G/opt/hc_python/lib64/python3.12/site-packages/psutil/tests/test_misc.pytest_check_pid_rangez'TestSpecialMethods.test_check_pid_range+sk ]]= )    # # 3 3AsF ;* ]]6// 0 NN1c6 "1 0* ) 0 0s-B2B B B)cJtj|jj}||}d|vsJd|j|vsJd|j d|j ddvsJd|vsJd|vsJ|j |j||}d|vsJd|vsJtjjtjd tjtj 5tj}||}d|j|vsJd |vsJd |vsJ dddtjjtjd tjtj 5tj}||}d|j|vsJd |vsJd |vsJ dddtjjtjd tjtj 5tj}||}d|j|vsJd |vsJ dddy#1swY9xYw#1swYxYw#1swYyxYw)Nzpsutil.Processzpid=zname=''zname=u'zstatus=z exitcode=zstatus='terminated'name side_effectzstatus='zombie'zname= terminated)rr" spawn_subprocpidr)replace terminatewaitrpatchobject ZombieProcessosgetpidr! AccessDenied)r$funcprs r%test_process__repr__z'TestSpecialMethods.test_process__repr__1sr NN4--/33 4 G1$$$aeeW~"""z#qyyH'EEEEA~~!###   G$)))a ZZ   NN ,,RYY[9  AQA!%%>Q& &&$) ))!# ## ZZ   NN ,,RYY[9  AQA!%%>Q& &&1$ $$!# ## ZZ   NN ++BIIK8  AQA!%%>Q& &&!# ##  )      s$ "b(((r?cttjddk(sJttjddddk(sJy)NAz=psutil.NoSuchProcess(pid=321, msg='process no longer exists')r)msgr)rIz5psutil.NoSuchProcess(pid=321, name='name', msg='msg'))rArr!r#s r%test_no_such_process__repr__z/TestSpecialMethods.test_no_such_process__repr__fsV %%c* +N O  O %%cEB CF G  Gr?cttjddk(sJttjddddk(sJy)NrHz"process no longer exists (pid=321)r)rIrJmsg (pid=321, name='name'))r=rr!r#s r%test_no_such_process__str__z.TestSpecialMethods.test_no_such_process__str__psR $$S) *3 4  4 $$Sv5A B+ ,  ,r?cttjddk(sJttjdddddk(sJy)NrHzGpsutil.ZombieProcess(pid=321, msg="PID still exists but it's a zombie")r)@foor)ppidrIz?psutil.ZombieProcess(pid=321, ppid=320, name='name', msg='foo'))rArr4r#s r%test_zombie_process__repr__z.TestSpecialMethods.test_zombie_process__repr__zsX %%c* +* *  * %%cSeL M   r?cttjddk(sJttjdddddk(sJy)NrHz,PID still exists but it's a zombie (pid=321)r)rPrQrRz$foo (pid=321, ppid=320, name='name'))r=rr4r#s r%test_zombie_process__str__z-TestSpecialMethods.test_zombie_process__str__sT $$S) *= >  > $$SvCUK L5 6  6r?cttjddk(sJttjddddk(sJy)NrHzpsutil.AccessDenied(pid=321)r)rIrJz4psutil.AccessDenied(pid=321, name='name', msg='msg'))rArr7r#s r%test_access_denied__repr__z-TestSpecialMethods.test_access_denied__repr__sLF'',-1OOOO $$Sv5A BE F  Fr?cttjddk(sJttjddddk(sJy)NrHz (pid=321)r)rIrJrM)r=rr7r#s r%test_access_denied__str__z,TestSpecialMethods.test_access_denied__str__sI6&&s+, ;;; ##Cf%@ A+ ,  ,r?cttjddk(sJttjddddk(sJy)Nz?psutil.TimeoutExpired(seconds=5, msg='timeout after 5 seconds')rHr)r.r)zUpsutil.TimeoutExpired(pid=321, name='name', seconds=5, msg='timeout after 5 seconds'))rArTimeoutExpiredr#s r%test_timeout_expired__repr__z/TestSpecialMethods.test_timeout_expired__repr__sV &&q) *    &&qc? @- -  -r?cttjddk(sJttjddddk(sJy)Nr\ztimeout after 5 secondsrHr)r]z.timeout after 5 seconds (pid=321, name='name'))r=rr^r#s r%test_timeout_expired__str__z.TestSpecialMethods.test_timeout_expired__str__sL6((+,0IIII %%aSv> ?? @  @r?ctj}tj}||k(sJd|_||k7sJ|dk7sJy)N)rrrQ)rr"_ident)r$p1p2s r%test_process__eq__z%TestSpecialMethods.test_process__eq__sC ^^  ^^ Rxx RxxU{{r?cttjtjh}t|dk(sJy)N)rr"len)r$ss r%test_process__hash__z'TestSpecialMethods.test_process__hash__s* ^^ v~~/ 01v{{r?N)__name__ __module__ __qualname__r&rAr;r>rCrFrKrNrTrVrXrZr_rarfrkr?r%rr*sS# )-*$X,8)          r?rc0eZdZdZdZdZdZdZdZy)TestMiscctt}|D]%}|dvr|jdr t|'tj D]}||vrJy#t$rm|tj vrXt t|}|Ys|j8d|jjvrtj|dcYcSYwxYw)N>testrtestsPermissionErrorProcessLookupError_ deprecatedz not in psutil.__all__) dirr startswith __import__ ImportError__all__getattr__doc__lowerrfail)r$ dir_psutilr)funs r% test__all__zTestMisc.test__all__s[ D??3' t$:NND:% %%### 6>>1%fd3;$KK3 ,CKK4E4E4G G#);;#'(*@ A$ s A-C AC  C cdjtjDcgc] }t|c}tjk(sJycc}w)N.)joinr version_infor= __version__)r$xs r% test_versionzTestMisc.test_versionsD HHf&9&9:&9c!f&9: ;!! "  ":sA cbtj}d|_d|jvsJy)N1rQ)rr"rQas_dict)r$r9s r%!test_process_as_dict_no_new_namesz*TestMisc.test_process_as_dict_no_new_namess) NN AIIK'''r?c .d}tj}|tjjt|}|j |j dD]:\}}|j t||5 |}||ddd<t}|j |j D]5\}}|dvr |j |5 |}||ddd7tjtjtjddd }t|tjsJ|j dk(sJ|j"dk(sJ|j$d k(sJtjtjtj&ddd d }t|tj&sJ|j dk(sJ|j(d k(sJ|j"dk(sJ|j$d k(sJtjtjtjd dd }t|tjsJ|j d k(sJ|j"dk(sJ|j$d k(sJtjtjtj*ddd}t|tj*sJ|j,dk(sJ|j dk(sJ|j"dk(sJy#tj$rYwxYw#1swYxYw#tj$rYwxYw#1swYxYw)Nctjtj|tj|}tj|}||k(sJyN)jsonloadsdumpspickle)retabs r%checkz*TestMisc.test_serialization..checks< JJtzz# ' S!A QA!8O8r?T) clear_cache)procr)>win_service_getwin_service_iter)r)ir)rI)r.r)rI*)r.r)rSrI{!)secondsr.r))rr"rritergetterssubTestr=rBrr7rrrr! isinstancer.r)rIr4rSr^r)r$rrnsrr)rrs r%test_serializationzTestMisc.test_serializations ~~ fnn&&() t $>IC3t948%C#J 98? ,IC>>4(%C#J )(- LL LL$$FF   !V11222uu}}vvuu~~ LL LL$$FO   !V11222uu}}vv||vvuu~~ LL LL,,6uM N !V00111uu||vvuu~~ LL LL%%bdH   !V22333yyBuu}}vvu||98"**)(s` M# M M#'N )M00N  M M#M  M##M- 0NN NN  N ctjjtjdtj 5}tj|j sJ dddtjjtjdtjd5}tj|j sJ dddtjjtjdt5}tjt5tjddd|j sJ dddtjjtjdtjd5}tjtj5tjddd|j sJ dddy#1swYxYw#1swY5xYw#1swYxYw#1swYxYw#1swYSxYw#1swYyxYw)N _get_identr*rh) rr2r3rr"r7calledr4 ValueErrorrrr!)r$meths r%test_ad_on_process_creationz$TestMisc.test_ad_on_process_creation@sZZ   NNLf6I6I  NN ;; ;  ZZ   NNLf6J6J16M  NN ;; ;  ZZ   NNLj z* +;; ;  ZZ   NNLf6J6J16M v334 5;; ;   '    +*  54  s_#G8.#HH(H=H$H6H*H68HHH HH'*H3 /H66H?c&tjdd5tjt5}t t ddddtjjvsJ dddy#1swY:xYw#1swYyxYw)Nzpsutil._psplatform.cext.versionz0.0.0 return_valuezversion conflict) rr2rrr|rrr=valuer)r$cms r%test_sanity_version_checkz"TestMisc.test_sanity_version_check]sm ZZ -G {+rf%,%RXX)<)<)>> >>   ,+  s"BA;/B;B BBN) rlrmrnrrrrrrror?r%rqrqs# &D ( L \:?r?rqcBeZdZdZeZd dZdZdZdZdZ dZ d Z y) TestMemoizeDecoratorcg|_yrcallsr#s r%setUpzTestMemoizeDecorator.setUpms  r?Nc*tdD]'}|}|jdifgk(sJ|!||k(r'JtdD]+}|d}|jdifdifgk(sJ|%||k(r+JtdD]2}|dd}|jdifdifdddifgk(sJ|,||k(r2Jt|jdk(sJ|j|}|||k(sJt|jdk(sJ|jd k(sJy) Nrrorhrhbarr My docstring.)rangerri cache_clearr)r$objexpected_retvalrwrs r% run_againstz TestMemoizeDecorator.run_againstrsMqA%C::2r(+ ++*o---  qAa&C::2r(T2J!77 77*o---  qAaQ-C::2r(T2Jqz8J!KK KK*o---  4::!### e  &/) ))4::!###{{o---r?cLtfd}||j|dy)Nc@jj||fyrrappendargskwargs baseclasss r%rQz/TestMemoizeDecorator.test_function..foos OO " "D&> 2r?rr)r r)r$rQrs @r% test_functionz"TestMemoizeDecorator.test_functions/       b1r?ctGfdd}||j|d|jdk(sJy)Nc"eZdZdZfdZdZy),TestMemoizeDecorator.test_class..Foorc@jj||fyrr)r$rrrs r%__init__z5TestMemoizeDecorator.test_class..Foo.__init__s&&f~6r?cy)Nrror#s r%rz0TestMemoizeDecorator.test_class..Foo.barsr?N)rlrmrnrrrrsr%Foors  7 r?rrr)r rrr$rrs @r% test_classzTestMemoizeDecorator.test_classsJ       d3uyy{b   r?cvtGdd}||usJt|t|k(sJt|dt|dk(sJt|ddt|ddk(sJt|dt|dk7sJy)NceZdZdZy)6TestMemoizeDecorator.test_class_singleton..Barcyrro)r$rrs r%rz?TestMemoizeDecorator.test_class_singleton..Bar.__init__sr?N)rlrmrnrror?r%Barrs r?rrhr)rQr)r id)r$rs r%test_class_singletonz)TestMemoizeDecorator.test_class_singletons     u~~#%yBsuI%%%#a&zRAZ'''#aQ- Bs1!}$5555#a&zRAZ'''r?cfGfdd}||j|jdy)Nc,eZdZeefdZy)3TestMemoizeDecorator.test_staticmethod..Fooc@jj||fyrrrs r%rz7TestMemoizeDecorator.test_staticmethod..Foo.bar&&f~6r?N)rlrmrn staticmethodr rrsr%rrs    r?rrrrrrs @r%test_staticmethodz&TestMemoizeDecorator.test_staticmethod-    B7r?cfGfdd}||j|jdy)Nc,eZdZeefdZy)2TestMemoizeDecorator.test_classmethod..Fooc@jj||fyrr)clsrrrs r%rz6TestMemoizeDecorator.test_classmethod..Foo.barrr?N)rlrmrn classmethodr rrsr%rrs    r?rrrrrs @r%test_classmethodz%TestMemoizeDecorator.test_classmethodrr?ctfd}gtdD]$}|}dif}||k(sJtdk(r$JtdD]%}|d}dif}||k(sJtdk(r%JtdD])}|dd}dddif}||k(sJtdk(r)J|j|}dif}||k(sJtd k(sJ|jd k(sJy) Nc.jd||fS)Foo docstring.Nr)rrrs r%rQz/TestMemoizeDecorator.test_original..foos LL &> !r?rrorhrrrrrr)r rrirr)r$rQrwrexpectedrs @r% test_originalz"TestMemoizeDecorator.test_originals&  "  " qA%CBxH(? "?u:? "?  qAa&CbzH(? "?u:? "?  qAaQ-Cuaj)H(? "?u:? "?  e8h5zQ{{....r?r) rlrmrnrtearDownrrrrrrrror?r%rrls1H.:2 ! ( 8 8#/r?rc0eZdZdZdZdZdZdZdZy)TestCommonModulecGfdd}|}g|j|jtdk(sJg|jj||j|jtdk(sJg|jj||j|jtdk(sJy)Nc"eZdZefdZy)9TestCommonModule.test_memoize_when_activated..Fooc(jdyrr)r$rs r%rQz=TestCommonModule.test_memoize_when_activated..Foo.foos T"r?N)rlrmrnr rQrsr%rrs # #$ #r?rrrh)rQricache_activatecache_deactivate)r$rfrs @r%test_memoize_when_activatedz,TestCommonModule.test_memoize_when_activateds # # E  5zQ Q  5zQ q!  5zQr?cd}td|ddik(sJtd|dd|ddik(sJtd|dd|dd ik(sJtd |dd|ddik(sJtd |ddik(sJtd |ddik(sJtd |ddik(sJy)Nc2tr|jS|Sr)rupper)rjs r%kz4TestCommonModule.test_parse_environ_block..ks '1779 .Q .r?za=1rrz a=1b=2r2za=1b=rEz a=1b=2c=3zxxxa=1z a=1=b=2za=1b=2r )r$rs r%test_parse_environ_blockz)TestCommonModule.test_parse_environ_blocks /#7+#}<<<">2 cFC cFC7    #=1afc1S625NNNN"#67 cFC cFC<    #<0QsVSMAAA"=1afc]BBB":.1S63-???r?ctrtjd5}d|_trJ dddtjdt5}trJ|j sJ dddtjdt j5}trJ|j sJ dddtjdt j5}trJ|j sJ dddytjt5t j t jt j} |jd|j dddy#1swYTxYw#1swY"xYw#1swYxYw#1swYyxYw#|jwxYw#1swYyxYw)Nzpsutil._common.socketFzpsutil._common.socket.socketr*z!psutil._common.socket.socket.bind)z::1r)r rr2has_ipv6OSErrorrsocketgaierrorrrAF_INET6 SOCK_STREAMbindclose)r$rjsocks r%test_supports_ipv6z#TestCommonModule.test_supports_ipv6#s[ ?34" (?**?5.G(?**xxx  .FOO(?**xxx  3"OO(?**xxx w'}}V__f6H6HI!IIj)JJL ('/54  JJL ('sSFF"F"+F.)3GF:.GFF"F+.F7:G  GGcztjjt}t |sJt tjj |rJt jdt5tjt5t |ddddddt jdt5t |rJ dddt jdd5t |rJ dddy#1swYrxYw#1swYvxYw#1swYPxYw#1swYyxYw)Nzpsutil._common.os.statr*zpsutil._common.stat.S_ISREGFr) r5pathabspath__file__rdirnamerr2rurrr FileNotFoundError)r$ this_files r%test_isfile_strictz#TestCommonModule.test_isfile_strictCsGGOOH- Y''' !;<<< ZZ0o Nw'i((OZZ $2C %Y/ /// ZZ5E J$Y/ ///K J ('O N  K Js<6D D DD%5D1 D DD"%D.1D:ctjjtjdd5t j tj5}tdtjjddddddj}|jdsJ|d|vsJtj!dd|vsJtjjtjdd5t j tj5}tt#ddddddd|j}d|vsJd |vsJtjjtjdd5t j tj5}t%d d }d |_t|dddddd|j}d |vsJd |vsJy#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swY`xYw#1swYdxYw) N PSUTIL_DEBUGThelloz psutil-debugz.pycz.pyzthis is an errorzignoring ValueErrorz'this is an error'rz no such filez/foo)rr2r3r_common contextlibredirect_stderrioStringIOrsysstderrflushgetvaluerzrr/rr filename)r$rrIexcs r% test_debugzTestCommonModule.test_debugQs ZZ  v~~~t D++BKKM:ag   ";Ejjl~~n-2s2-#~~.#555ZZ  v~~~t D++BKKM:aj!345;Ejjl$+++#s***ZZ  v~~~t D++BKKM:aa0% c ;E jjl$$$}}1;:E D;:E D;:E Dsk(H"*HH" (H;1H/H;!(I I(IH H""H,/H8 4H;;II IIc |j}t|d5}|jddddt|dk(sJt |dk(sJt j t5t|dzdddt j t5t |dzdddt|dzddk(sJt |dzddk(sJy#1swYxYw#1swYpxYw#1swYLxYw)NwrQsfooz-invalidr)fallback) get_testfnopenwriterrrrr)r$testfnrs r% test_cat_bcatzTestCommonModule.test_cat_bcatms" &# ! GGEN6{e###F|v%%% ]], - # $. ]], - *$ %.6J&75@@@FZ'%8EAAA . - - -s#C"0C. C:"C+.C7:DN) rlrmrnrr rrr,r4ror?r%rrs#4@*!@ 08 Br?rrQza b cceZdZdZeZdZdZdZdZdZ dZ dZ d Z d Z d Zd Zd Zej$j'e ddZy)TestWrapNumbersc,tjyr)rrr#s r%rzTestWrapNumbers.setUps  "r?cDdtdddi}t|d|k(sJyNdisk1r\disk_iontrr$inputs r%test_first_callzTestWrapNumbers.test_first_calls)"Q1+&E9-666r?cfdtdddi}t|d|k(sJt|d|k(sJyr9r<r>s r%test_input_hasnt_changedz(TestWrapNumbers.test_input_hasnt_changeds>"Q1+&E9-666E9-666r?cdtdddi}t|d|k(sJdtdddi}t|d|k(sJdtdddi}t|d|k(sJdtdddi}t|d|k(sJy) Nr:r\r; r<r>s r%test_increase_but_no_wrapz)TestWrapNumbers.test_increase_but_no_wraps"Q1+&E9-666"RR.)E9-666"RR.)E9-666"RR.)E9-666r?cdtdddi}t|d|k(sJdtdddi}t|ddtdddik(sJdtdddi}t|ddtdddik(sJdtdddi}t|ddtdddik(sJdtdddi}t|ddtddd ik(sJdtdddi}t|ddtddd ik(sJdtd ddi}t|ddtd dd ik(sJdtd ddi}t|ddtddd ik(sJdtd ddi}t|ddtddd ik(sJy) Nr:dr;rDnZrF2(r<r>s r% test_wrapzTestWrapNumbers.test_wraps"S#s+,E9-666"S#r*+E9-'2c3;L1MMMM"S#r*+E9-'2c3;L1MMMM"S#r*+E9-'2c3;L1MMMM"S#r*+E9-'2c3;L1MMMM"S#r*+E9-'2c3;L1MMMM"Rb/*E9-'2c3;L1MMMM"Rb/*E9-'2c3;L1MMMM"Rb/*E9-'2c3;L1MMMMr?cdtdddi}t|d|k(sJtdddtdddd}t|d|k(sJdtdddi}t|d|k(sJy)Nr:r\r;r:disk2r<r>s r%test_changing_keysz"TestWrapNumbers.test_changing_keyss"Q1+&E9-666Q1+1a <E9-666"Q1+&E9-666r?c`tdddtdddd}t|d|k(sJtdddtdddd}t|dtdddtddddk(sJdtdddi}t|d|k(sJtdddtdddd}t|d|k(sJtdddtdddd}t|d|k(sJtdddtdddd}t|dtdddtddddk(sJy)NrPrKrVr;rDrLr:r<r>s r%test_changing_keys_w_wrapz)TestWrapNumbers.test_changing_keys_w_wraps]RR.2c33DEE9-666RR.2c33CDE9-B^S#&2    "RR.)E9-666RR.2c33DEE9-666RR.2c33DEE9-666RR.2c33CDE9-B^S#&2    r?cddddd}t|d|k(sJt|d|k(sJddddd}t|d}|dd d k(sJy) N) i,#Rȷ) iritUiirrrrX) 6rei$iNrrHi) iU ii"rQii4iii\)nvme0n1 nvme0n1p1 nvme0n1p2 nvme0n1p3r;) rKr]r^r_r`rarbrcrdrhrir)r$douts r%test_real_datazTestWrapNumbers.test_real_datas|MBHL   Ay)Q...Ay)Q...NBHL   1i(9~a C'''r?cdtdddi}t|dtj}|dd|ik(sJ|ddiik(sJ|ddiik(sJy)Nr:r\r;rrhrr=r cache_infor$r?caches r%test_cache_first_callz%TestWrapNumbers.test_cache_first_callso"Q1+&UI&'')QxIu----QxIr?***QxIr?***r?cdtdddi}t|ddtdddi}t|dtj}|dd|ik(sJ|ddddddik(sJ|ddiik(sJy) Nr:r\r;rDrrh)r:r)r:rhr:rrrprrs r%test_cache_call_twicez%TestWrapNumbers.test_cache_call_twices"Q1+&UI&"RR.)UI&'')QxIu----Qx aqJ    QxIr?***r?cdtdddi}t|ddtdddi}t|dtj}|dd|ik(sJ|ddddddik(sJ|dddd hiik(sJd }dtdddi}t|dtj}|dd|ik(sJ|dtddd i}t|dtj}|dd|ik(sJ|dtddd i}t|dtj}|dd|ik(sJ|ddddd dik(sJ|dddd hiik(sJy)Nr:rKr;rDrrhrvrrwcjtj}|ddddddik(sJ|ddddhiik(sJy) Nrhr;rrKrvrr:rw)rrq)rss r%check_cache_infoz9TestWrapNumbers.test_cache_wrap..check_cache_infos\ ++-E8"#"#"%  8 Gl^+DEE EEr?rMrFrNrp)r$r?rsr{s r%test_cache_wrapzTestWrapNumbers.test_cache_wraps"S#s+,UI&"S#r*+UI&'')QxIu----Qx aqL    QxI,'@AAAA F"S#r*+UI&'')QxIu----"S#r*+UI&'')QxIu----"S#r*+UI&'')QxIu----Qx aqL    QxI,'@AAAAr?cdtdddi}t|dtdddtdddd}t|dtj}|dd|ik(sJ|ddddddik(sJ|d diik(sJy) Nr:r\r;rUrVrrhrvrrprrs r%test_cache_changing_keysz(TestWrapNumbers.test_cache_changing_keys:s"Q1+&UI&Q1+1a <UI&'')QxIu----Qx aqJ    QxIr?***r?cdtdddi}t|dt|dtjdtjiiifk(sJtjdtjdy)Nr:r\r;z?!?)r=rrrqr>s r%test_cache_clearz TestWrapNumbers.test_cache_clearFso"Q1+&UI&UI&  +&&(RRL888  +  'r?z not supported)reasonctjrtjstjdStjtjt j }|D]}d|vsJd|vrJtjjt j }|D]}d|vsJd|vrJtjjt j }|iiifk(sJy)Nzno disks or NICs availablezpsutil.disk_io_counterszpsutil.net_io_counters)rdisk_io_countersnet_io_countersrskiprrqr)r$cachesrss r%test_cache_clear_public_apisz,TestWrapNumbers.test_cache_clear_public_apisOs&&(0F0F0H;;;< <! ((*E,5 55+u4 44 ++-((*E+u4 44,E9 99 **,((*"b"%%%r?N)rlrmrnrrr@rBrIrSrYr[rnrtrxr|r~rrmarkskipifrrror?r%r6r6sz#H77 7N: 7 6(*+ +0Bd +( [[//H&I&r?r6)%r collectionsr"r$rr5rrr&unittestrrrpsutil._commonrrrrr r r r r psutil.testsrrrrrrrrqrr namedtupler=r6ror?r%rs   ("1.(','*&)QQra?~a?RD/>D/NEB~EBZ[E7+_&n_&r?