§ x<ˆjfçãóö —dZddlmZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlmZddlmZddlmZddlZddlm Z ddlm!Z!dd lm"Z"dd lm#Z#dd lm$Z$dd lm%Z%dd l&m'Z'ddl&m(Z(ddl&m)Z)ddl&m*Z*ddl+m,Z,ddl+m-Z-ddl+m.Z.ddl+m/Z/ddl+m0Z0ddl+m1Z1ddl+m2Z2ddl+m3Z3 ddlm4Z4nF#e5$r>ej6¦«5ej7d¦«ddl4Z4ddd¦«n #1swxYwYYnwxYwej8dkrddl9Z9ndZ9e#rddl:m;Z;gd¢Zde j?vZ@d e j?vpd!e j?vZAe@peAZBd"e j?vZCejDd#kZEe(d$„¦«ZFe"reF¦«d%kZGeF¦«d&kZHnd'ZGd'ZHd(ZId)ZJd*ZKd+ZLeBreId,zZIeLd,zZLeJd-zZJeKd,zZKe jMd.krd/e jN¦«zZOnd0e jN¦«zZOe1d1¦«ZPe,rd2 Qd3d4¦«ZRnd5ZRejS¦« T¦«d6vZUe jV We jV Xe jV YeZ¦«d7d7¦«¦«Z[e j? \d8e jV Xe[d9¦«¦«Z]e jV We jV YeZ¦«¦«Z^e#oe$ Z_e`ejad:¦«Zbe`ed;¦«Zce`ed<¦«Zde`ejad=¦«Zee`ejad>¦«Zfe`ejad?¦«Zge`ed@¦«Zhe`ejadA¦«Zie`ejadB¦«Zje`ejadC¦«Zke`edD¦«Zl eloemejn¦«¦«Zon #ep$rd'ZoYnwxYwe`edE¦«Zqe`edF¦«Zre`ejadG¦«Zse"se oe jt¦«dkZudH„Zvev¦«\ZwZxeye jzdI¦«Z{ej|e{j}¦«dJ„e~e¦«D¦«Ze€edKe�¦«¦«Z‚eƒ¦«Z„eƒ¦«Z…GdL„dMej†¦«Z‡dN„Zˆeˆd‰dO„¦«Z‰eˆdP„¦«ZŠdQ„Z‹eˆdR„¦«ZŒeˆdS„¦«Z�ejŽeLfdT„Z�dŠdU„Z�dV„Z‘dW„Z’GdX„dYe�¦«Z“e“ej”deLdZ¬[¦«d\„¦«Z•e“e.e–fdeLdZ¬[¦«d‹d^„¦«Z—e“e–deLdZ¬[¦«d_„¦«Z˜d`„Z™da„Zšej›db„¦«Zœd‰dc„Z�dŒde„ZžGdf„dgejŸ¦«ZŸeŸe_ŸGdh„dieŸ¦«Z ej¡e>dj¦«Gdk„dle ¦«¦«Z¢dm„Z£dn„Z¤Gdo„dp¦«Z¥Gdq„dr¦«Z¦ds„Z§eIfdt„Z¨d‰du„Z©d‰dv„Zªd�dx„Z«eedfdy„Z¬ejfdz„Z­dŽd|„Z®d}„Z¯ej›d~„¦«Z°d„Z±d€„Z²d�„Z³d‚„Z´dƒ„Zµd„„Z¶e#rej›d�d…„¦«Z·nej›d�d†„¦«Z·ej|d‡„¦«Z¸e#rejejŽdˆ„¦«dSdS)�z Test utilities. é)Úprint_functionN)ÚAF_INET)ÚAF_INET6)Ú SOCK_STREAM)ÚAIX)ÚLINUX)ÚMACOS)ÚPOSIX)ÚSUNOS)ÚWINDOWS)Ú bytes2human)Úmemoize)Ú print_color)Ú supports_ipv6)ÚPY3)ÚFileExistsError)ÚFileNotFoundError)Úrange)Úsuper)Úu)Úunicode)Úwhich)ÚmockÚignore©éé)Úwait_pid)EÚAPPVEYORÚDEVNULLÚGLOBAL_TIMEOUTÚTOLERANCE_SYS_MEMÚ NO_RETRIESÚPYPYÚ PYTHON_EXEÚPYTHON_EXE_ENVÚROOT_DIRÚ SCRIPTS_DIRÚ TESTFN_PREFIXÚUNICODE_SUFFIXÚINVALID_UNICODE_SUFFIXÚ CI_TESTINGÚVALID_PROC_STATUSESÚTOLERANCE_DISK_USAGEÚIS_64BITÚHAS_CPU_AFFINITYÚ HAS_CPU_FREQÚ HAS_ENVIRONÚHAS_PROC_IO_COUNTERSÚ HAS_IONICEÚHAS_MEMORY_MAPSÚHAS_PROC_CPU_NUMÚ HAS_RLIMITÚHAS_SENSORS_BATTERYÚ HAS_BATTERYÚHAS_SENSORS_FANSÚHAS_SENSORS_TEMPERATURESÚ MACOS_11PLUSÚ MACOS_12PLUSÚCOVERAGEÚpyrunÚ terminateÚ reap_childrenÚspawn_testprocÚ spawn_zombieÚspawn_children_pairÚ ThreadTaskÚunittestÚskip_on_access_deniedÚskip_on_not_implementedÚretry_on_failureÚTestMemoryLeakÚPsutilTestCaseÚprocess_namespaceÚsystem_namespaceÚ print_sysinfoÚchdirÚ safe_rmpathÚ create_exeÚ get_testfnÚ get_winverÚkernel_versionÚ call_untilÚ wait_for_pidÚ wait_for_fileÚcheck_net_addressÚ get_free_portÚ bind_socketÚbind_unix_socketÚtcp_socketpairÚunix_socketpairÚcreate_socketsÚ reload_moduleÚimport_module_by_pathÚwarnÚcopyload_shared_libÚ is_namedtupleÚ__pypy__rÚGITHUB_ACTIONSÚ CIBUILDWHEELÚ COVERAGE_RUNlcó†—tj¦«d}ttt| d¦«dd…¦«¦«}|dkrdt jtj dddgdd id ¬ ¦«}ttt| d¦«dd…¦«¦«}|S) Nrú.é)é éz-sSú-cz-import platform; print(platform.mac_ver()[0])ÚSYSTEM_VERSION_COMPATÚ0T)ÚenvÚuniversal_newlines) ÚplatformÚmac_verÚtupleÚmapÚintÚsplitÚ subprocessÚ check_outputÚsysÚ executable)Ú version_strÚversions úi/builddir/build/BUILD/cloudlinux-venv-1.0.12/venv/lib64/python3.11/site-packages/psutil/tests/__init__.pyÚ macos_versionr„s¼€åÔ"Ñ$Ô$ QÔ'€KÝ•C�˜[×.Ò.¨sÑ3Ô3°B°Q°BÔ7Ñ8Ô8Ñ9Ô9€GØ�(ÒÐõ!Ô-å”ØØØ?ð  ð )¨#Ð.Ø#ð  ñ  ô  ˆ õ��C ×!2Ò!2°3Ñ!7Ô!7¸¸¸Ô!;Ñ<Ô<Ñ=Ô=ˆØ €Nó)rké)é rFrkiPi érrÚjavaz $psutil-%s-z @psutil-%s-u-ƒőősfÀ€Úutf8Úsurrogateescapeuf)Úasciizus-asciiz..ÚPSUTIL_SCRIPTS_DIRÚscriptsÚ cpu_affinityÚcpu_freqÚ getloadavgÚenvironÚioniceÚ memory_mapsÚnet_io_countersÚcpu_numÚ io_countersÚrlimitÚsensors_batteryÚ sensors_fansÚsensors_temperaturesÚthreadscó—d„}tj ¦«}ttdd¦«}t r%tjdkr|�tj|d<||fStrtj|fStr·|tj¦«pŒ|tj   tj¦«¦«pZ|tdtjdd…z¦«¦«p-|tj¦« ¦«¦«}|st!d¦«‚||fStj   tj¦«}tj  |¦«s J|¦«‚||fS)Ncó„— tj|dgtjtj¬¦«|S#t$rYdSwxYw)Nz-V)ÚstdoutÚstderr)rxÚ check_callÚPIPEÚ Exception)Úexes r~Úattemptz_get_py_exe..attemptæs_€ð Ý Ô !Ø�d� ¥J¤O½J¼Oð Mñ Mô Mð Mð ˆJøõð ð ð Ø�4�4ð øøøs ‚-1± ?¾?Ú_base_executable)réÚ__PYVENV_LAUNCHER__z python%s.%srjz"can't find python exe real abspath)Úosr�ÚcopyÚgetattrrzr Ú version_infor{rer ÚpathÚrealpathrÚpsutilÚProcessrŸÚ ValueErrorÚexists)r rpÚbaserŸs r~Ú _get_py_exer¯åsx€ðððõ Œ*�/Š/Ñ Ô €Cõ •3Ð*¨DÑ 1Ô 1€DÝð•3Ô# vÒ-Ð-°$Ð2Bõ&)¤^ˆÐ !Ñ"Ø�SˆyÐÝ ðÝŒ~˜sÐ"Ð"Ý ð à ˆG•C”NÑ #Ô #ð ,Ø ˆG•B”G×$Ò$¥S¤^Ñ4Ô4Ñ 5Ô 5ð ,à ˆG•E˜-­#Ô*:¸2¸A¸2Ô*>Ñ>Ñ?Ô?Ñ @Ô @ð ,ð ˆG•F”NÑ$Ô$×(Ò(Ñ*Ô*Ñ +Ô +ð ð ð CÝÐAÑBÔBÐ BØ�CˆxˆåŒg×Ò�sœ~Ñ.Ô.ˆÝŒw�~Š~˜cÑ"Ô"Ð'Ð' CÑ'Ô'Ð"Ø�Cˆxˆr€zr+cób—g|],}| d¦«¯tt|¦«‘Œ-S)ÚSTATUS_©Ú startswithr¦rª©Ú.0Úxs r~ú r·sB€ð3ð3ð3¨aØŸ,š, yÑ1Ô1ð3•w�v qÑ)Ô)ð3ð3ð3r€ÚAF_UNIXcóF‡—eZdZdZˆfd„Zd„Zd„Zd„Zd„Zd„Z d„Z ˆxZ S) rEz6A thread task which does nothing expect staying alive.có”•—t¦« ¦«d|_d|_t j¦«|_dS)NFçü©ñÒMbP?)rÚ__init__Ú_runningÚ _intervalÚ threadingÚEventÚ_flag)ÚselfÚ __class__s €r~r¼zThreadTask.__init__!s:ø€Ý ‰Œ×ÒÑÔÐØˆŒ ؈ŒÝ”_Ñ&Ô&ˆŒ ˆ ˆ r€cóN—|jj}d||jt|¦«fzS)Nz<%s running=%s at %#x>)rÃÚ__name__r½Úid)rÂÚnames r~Ú__repr__zThreadTask.__repr__'s&€ØŒ~Ô&ˆØ'¨4°´ÅÀ4ÁÄÐ*IÑIÐIr€có.—| ¦«|S©N)Ústart©rÂs r~Ú __enter__zThreadTask.__enter__+s€Ø � Š ‰ Œ ˆ ؈ r€có.—| ¦«dSrÊ)Ústop)rÂÚargsÚkwargss r~Ú__exit__zThreadTask.__exit__/s€Ø � Š ‰ Œ ˆ ˆ ˆ r€có¢—|jrtd¦«‚tj |¦«|j ¦«dS)zStart thread and keep it running until an explicit stop() request. Polls for shutdown every 'timeout' seconds. zalready startedN)r½r¬r¿ÚThreadrËrÁÚwaitrÌs r~rËzThreadTask.start2sL€ð Œ=ð 0ÝÐ.Ñ/Ô/Ð /ÝÔ×Ò˜tÑ$Ô$Ð$Ø Œ �ŠÑÔÐÐÐr€có˜—d|_|j ¦«|jr"tj|j¦«|j° dSdS)NT)r½rÁÚsetÚtimeÚsleepr¾rÌs r~ÚrunzThreadTask.run;sW€ØˆŒ Ø Œ �ŠÑÔÐØŒmð 'Ý ŒJ�t”~Ñ &Ô &Ð &ðŒmð 'ð 'ð 'ð 'ð 'r€cóh—|jstd¦«‚d|_| ¦«dS)z8Stop thread execution and and waits until it is stopped.zalready stoppedFN)r½r¬ÚjoinrÌs r~rÏzThreadTask.stopAs3€àŒ}ð 0ÝÐ.Ñ/Ô/Ð /؈Œ Ø � Š ‰ Œ ˆ ˆ ˆ r€) rÅÚ __module__Ú __qualname__Ú__doc__r¼rÈrÍrÒrËrÚrÏÚ __classcell__)rÃs@r~rErEs›ø€€€€€Ø@Ð@ð'ð'ð'ð'ð'ð JðJðJðððððððððð'ð'ð'ð ððððððr€rEcóF‡—tj‰¦«ˆfd„¦«}|S)NcóP•— ‰|i|¤ŽS#t$rt¦«‚wxYwrÊ)ržrA)rÐrÑÚfuns €r~Úwrapperz&_reap_children_on_err..wrapperOsDø€ð Ø�3˜Ð' Ð'Ð'Ð 'øÝð ð ð Ý ‰OŒOˆOØ ð øøøsƒ ‹%©Ú functoolsÚwraps)rãräs` r~Ú_reap_children_on_errrèNs8ø€Ý„_�SÑÔððððñÔðð €Nr€c óÖ—| dt¦«| dt¦«| dtj¦«¦«| dt¦«t rd}| d|¦«|€�t ¦«} t|¦«d|z}td |g}tj |fi|¤Ž}t  |¦«t|d d ¬ ¦«t|¦«nT#t|¦«wxYwtj |fi|¤Ž}t  |¦«t|j¦«|S) a~Creates a python subprocess which does nothing for 60 secs and return it as a subprocess.Popen instance. If "cmd" is specified that is used instead of python. By default stdin and stdout are redirected to /dev/null. It also attempts to make sure the process is in a reasonably initialized state. The process is registered for cleanup on reap_children(). ÚstdinršÚcwdrpéÚ creationflagsNz:from time import sleep;open(r'%s', 'w').close();sleep(60);rmT©ÚdeleteÚempty)Ú setdefaultr r¤Úgetcwdr&r rRrPr%rxÚPopenÚ_subprocesses_startedÚaddrWrVÚpid)ÚcmdÚkwdsÚCREATE_NO_WINDOWÚtestfnÚpylineÚsprocs r~rBrBYsd€ð ‡O‚O�G�WÑ%Ô%Ð%؇O‚O�H�gÑ&Ô&Ð&؇O‚O�E�2œ9™;œ;Ñ'Ô'Ð'؇O‚O�E�>Ñ*Ô*Ð*Ýð;ð%ÐØ �Š˜Ð)9Ñ:Ô:Ð:Ø €{Ý‘”ˆð Ý ˜Ñ Ô Ð ð"à$*ñ+ˆFõ˜t VÐ,ˆCÝÔ$ SÐ1Ð1¨DÐ1Ð1ˆEÝ !× %Ò % eÑ ,Ô ,Ð ,Ý ˜&¨°TÐ :Ñ :Ô :Ð :å ˜Ñ Ô Ð Ð ø�K˜Ñ Ô Ð Ð øøøåÔ  Ð-Ð-¨Ð-Ð-ˆÝ×!Ò! %Ñ(Ô(Ð(Ý�U”YÑÔÐØ €Ls Â)ADÄD&có‚—d}ttj¦«¬¦«} tjdtj |¦«›dt›d�¦«}trt|d¬¦«\}}nt|¦«\}}tj |j ¦«}tt|dd ¬ ¦«¦«}t |¦«tj |¦«}||ft#|¦«|�t#|¦«SS#t#|¦«|�t#|¦«wwxYw) aCreate a subprocess which creates another one as in: A (us) -> B (child) -> C (grandchild). Return a (child, grandchild) tuple. The 2 processes are fully initialized and will live for 60 secs and are registered for cleanup on reap_children(). N©Údirzl import subprocess, os, sys, time s = "import os, time;" s += "f = open('z�', 'w');" s += "f.write(str(os.getpid()));" s += "f.close();" s += "time.sleep(60);" p = subprocess.Popen([r'z.', '-c', s]) p.wait() r)ríTFrî)rRr¤ròÚtextwrapÚdedentr¨Úbasenamer%r r?rªr«rörvrWÚ _pids_startedrõrP)ÚtfilerúÚsÚsubpÚchildÚgrandchild_pidÚ grandchilds r~rDrD�s@€ð €EÝ �BœI™KœKÐ (Ñ (Ô (€FðÝ ŒOˆOõ”7×#Ò# FÑ+Ô+Ð+Ð+­Z¨Z¨Zð 9ñ :ô :ˆõ ð #Ý °Ð3Ñ3Ô3‰KˆD�%�%å ™(œ(‰KˆD�%Ý”˜tœxÑ(Ô(ˆÝ�]¨6¸$ÀeÐLÑLÔLÑMÔMˆÝ×Ò˜.Ñ)Ô)Ð)Ý”^ NÑ3Ô3ˆ Ø�zÐ"å�FÑÔÐØ Ð Ý ˜Ñ Ô Ð Ð ð øõ �FÑÔÐØ Ð Ý ˜Ñ Ô Ð Ð ð øøøs ¥CDÄ#D>có|—tjsJ‚t¦«}tjd|z¦«}d}t |¦«} | t¦«t|¦«\}}|  ¦«\}} tj |  ¦«gggt¦«t|  d¦«¦«}t |¦«tj|¦«}t#|jd¦«||f| ¦«| ¦«t)|¦«|�t)|¦«SS#| ¦«wxYw#| ¦«t)|¦«|�t)|¦«wwxYw)z±Create a zombie process and return a (parent, zombie) process tuple. In order to kill the zombie parent must be terminate()d first, then zombie must be wait()ed on. a import os, sys, time, socket, contextlib child_pid = os.fork() if child_pid > 0: time.sleep(3000) else: # this is the zombie process s = socket.socket(socket.AF_UNIX) with contextlib.closing(s): s.connect('%s') if sys.version_info < (3, ): pid = str(os.getpid()) else: pid = bytes(str(os.getpid()), 'ascii') s.sendall(pid) Nézret == psutil.STATUS_ZOMBIE)rªr rRrrr[Ú settimeoutr!r?ÚacceptÚselectÚfilenorvÚrecvrrõr«rUÚstatusÚcloserP) Ú unix_fileÚsrcrÚsockÚparentÚconnÚ_ÚzpidÚzombies r~rCrC¨s“€õ Œ<ÐЈ<Ý‘ ” €IÝ Œ/ð ðññ ô €Cð €EÝ ˜IÑ &Ô &€DðØ �Š�Ñ'Ô'Ð'ݘc™ œ ‰ ˆ�Ø—+’+‘-”-‰ˆˆað Ý ŒM˜4Ÿ;š;™=œ=˜/¨2¨rµ>Ñ BÔ BÐ BÝ�t—y’y ‘”Ñ'Ô'ˆDÝ × Ò ˜dÑ #Ô #Ð #Ý”^ DÑ)Ô)ˆFÝ �v”}Ð&CÑ DÔ DÐ DؘFÐ#à �JŠJ‰LŒLˆLà � Š ‰ Œ ˆ Ý�IÑÔÐØ Ð Ý ˜Ñ Ô Ð Ð ð øð �JŠJ‰LŒLˆLˆLøøøøà � Š ‰ Œ ˆ Ý�IÑÔÐØ Ð Ý ˜Ñ Ô Ð Ð ð øøøs&ÁAF BE+Ä!FÅ+FÆFÆ7F;c ó�—| dd¦«| dd¦«t¦«} t|d¦«5}| |¦«ddd¦«n #1swxYwYt t |jgfi|¤Ž}t|j¦«||fS#t$rt|¦«‚wxYw)z�Run python 'src' code string in a separate interpreter. Returns a subprocess.Popen instance and the test file where the source code was written. ršNr›Úwt) rñrRÚopenÚwriterBr%rÇrVröržrP)rrøÚsrcfileÚfrs r~r?r?Õs €ð  ‡O‚O�H˜dÑ#Ô#Ð#؇O‚O�H˜dÑ#Ô#Ð#݉lŒl€GðÝ �'˜4Ñ Ô ð  AØ �GŠG�C‰LŒLˆLð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å�z¨1¬6Ð2Ð;Ð;°dÐ;Ð;ˆÝ�T”XÑÔÐØ�gˆÐøÝ ðððÝ�GÑÔÐØ ðøøøs/¼B*Á A.Á" B*Á.A2Á2B*Á5A2Á63B*Â*Cc ó¬—trdnd}| dtj¦«| dtj¦«| dd¦«| d|¦«t |t ¦«rt j|¦«}tj|fi|¤Ž}t  |¦«tr|  t¬¦«\}}n|  ¦«\}}|jdkrt|¦«‚|rt!|¦«| d ¦«r |d d …}|S) zUrun cmd in a subprocess and return its output. raises RuntimeError on error. rìrršr›rqTrí©Útimeoutú Néÿÿÿÿ)r rñrxr�Ú isinstanceÚstrÚshlexrwrórôrõrÚ communicater!Ú returncodeÚ RuntimeErrorraÚendswith)r÷røÚflagsÚpršr›s r~Úshr/és:€õ !Ð 'ˆIˆI a€E؇O‚O�H�jœoÑ.Ô.Ð.؇O‚O�H�jœoÑ.Ô.Ð.؇O‚OÐ(¨$Ñ/Ô/Ð/؇O‚O�O UÑ+Ô+Ð+Ý�#•sÑÔðÝŒk˜#ÑÔˆÝÔ˜Ð%Ð% Ð%Ð%€AÝ×Ò˜aÑ Ô Ð Ý ð)ØŸš­~˜Ñ>Ô>‰ˆ��àŸš™œ‰ˆ�Ø„|�qÒÐݘ6Ñ"Ô"Ð"Ø ðÝ ˆV‰ Œ ˆ Ø ‡‚�tÑÔðØ˜˜˜”ˆØ €Mr€cóЇ‡‡ ‡ —d„Š d„Šˆˆˆ fd„}ˆˆˆ fd„Š ˆ fd„}d„}|} t|t¦«ry|||¦«t|tjtjf¦«r ||¦«t|t¦«r|n|j}t j|¦«r J|¦«‚St|tjtjf¦«ry‰ ||¦«t|tjtjf¦«r ||¦«t|t¦«r|n|j}t j|¦«r J|¦«‚St|tj¦«ry|||¦«t|tjtjf¦«r ||¦«t|t¦«r|n|j}t j|¦«r J|¦«‚Std|z¦«‚#t|tjtjf¦«r ||¦«t|t¦«r|n|j}t j|¦«r J|¦«‚wxYw)a˜Terminate a process and wait() for it. Process can be a PID or an instance of psutil.Process(), subprocess.Popen() or psutil.Popen(). If it's a subprocess.Popen() or psutil.Popen() instance also closes its stdin / stdout / stderr fds. PID is wait()ed even if the process is already gone (kills zombies). Does nothing if the process does not exist. Return process exit status. cóh—t|tj¦«rts| ¦«n| |¦«t r]t|tj¦«rE t j|j¦« |¦«S#t j $rYdSwxYwdSdSrÊ) r&rxrórrÕr rªr«röÚ NoSuchProcess)Úprocr#s r~rÕzterminate..waits¹€Ý �d�JÔ,Ñ -Ô -ð µcð Ø �IŠI‰KŒKˆKˆKà �IŠI�gÑ Ô Ð Ý ð •z $­ Ô(8Ñ9Ô9ð ð Ý”~ d¤hÑ/Ô/×4Ò4°WÑ=Ô=Ð=øÝÔ'ð ð ð Ø��ð øøøð  ð ð ð sÁ.+BÂB-Â,B-cóЗtrtr tj}tr/|tjkr| tj¦«| |¦«dSrÊ)r reÚsignalÚSIGKILLr Ú send_signalÚSIGCONT)r3Úsigs r~Úsendsigzterminate..sendsigs^€å ð !•^ð !Ý”.ˆCõ ð -�S�FœNÒ*Ð*Ø × Ò �Vœ^Ñ ,Ô ,Ð ,Ø ×Ò˜ÑÔÐÐÐr€c󸕗 ‰|‰¦«n@#t$r3}tr |jdkrn|jtjkr‚Yd}~nd}~wwxYw‰||¦«S)Né)ÚOSErrorr ÚwinerrorÚerrnoÚESRCH)r3r#Úerrr:r9rÕs €€€r~Úterm_subprocess_procz'terminate..term_subprocess_proc%s~ø€ð Ø ˆG�D˜#Ñ Ô Ð Ð øÝð ð ð Ýð ˜3œ<¨1Ò,Ð,ØØ”�eœkÒ)Ð)Øøøøøøøøøøð  øøøð ˆt�D˜'Ñ"Ô"Ð"sƒ � A š)AÁA cób•— ‰|‰¦«n#tj$rYnwxYw‰||¦«SrÊ)rªr2)r3r#r:r9rÕs €€€r~Úterm_psutil_procz#terminate..term_psutil_proc/sRø€ð Ø ˆG�D˜#Ñ Ô Ð Ð øÝÔ#ð ð ð Ø ˆDð øøøàˆt�D˜'Ñ"Ô"Ð"s ƒ �"¡"c󤕗 tj|¦«}‰||¦«S#tj$rtrt ||¦«cYSYdSwxYwrÊ)rªr«r2r r)rör#r3rDs €r~Úterm_pidzterminate..term_pid6syø€ð 3Ý”> #Ñ&Ô&ˆDð $Ð# D¨'Ñ2Ô2Ð 2øõ Ô#ð .ð .ð .åð .Ý  WÑ-Ô-Ð-Ð-Ð-ð .ð .ð .ð .øøøsƒ#£&AÁAcóÊ—|jr|j ¦«|jr|j ¦«|jr|j ¦«dSdSrÊ)ršrr›rê)r3s r~Ú flush_popenzterminate..flush_popen@sl€Ø Œ;ð Ø ŒK× Ò Ñ Ô Ð Ø Œ;ð Ø ŒK× Ò Ñ Ô Ð à Œ:ð Ø ŒJ× Ò Ñ Ô Ð Ð Ð ð ð r€z wrong type %r) r&rvrxrórªröÚ pid_existsr«Ú TypeError) Ú proc_or_pidr9Ú wait_timeoutrBrFrHr.rör:rDrÕs ` @@@r~r@r@sÌøøøø€ð ð ð ðððð#ð#ð#ð#ð#ð#ð#ð#ð#ð#ð#ð#ð#ð#ð3ð3ð3ð3ð3ðððð €Að /Ý �a�Ñ Ô ð 1Ø�8˜A˜|Ñ,Ô,õ �a�*Ô*­F¬LÐ9Ñ :Ô :ð Ø ˆK˜‰NŒNˆNݘa¥Ñ%Ô%Ð0ˆaˆa¨1¬5ˆÝÔ$ SÑ)Ô)Ð.Ð.¨3Ñ.Ô.Ð)Ð.õ˜�FœN­F¬LÐ9Ñ :Ô :ð 1Ø#Ð# A |Ñ4Ô4õ �a�*Ô*­F¬LÐ9Ñ :Ô :ð Ø ˆK˜‰NŒNˆNݘa¥Ñ%Ô%Ð0ˆaˆa¨1¬5ˆÝÔ$ SÑ)Ô)Ð.Ð.¨3Ñ.Ô.Ð)Ð.õ˜�:Ô+Ñ ,Ô ,ð 1Ø'Ð'¨¨<Ñ8Ô8õ �a�*Ô*­F¬LÐ9Ñ :Ô :ð Ø ˆK˜‰NŒNˆNݘa¥Ñ%Ô%Ð0ˆaˆa¨1¬5ˆÝÔ$ SÑ)Ô)Ð.Ð.¨3Ñ.Ô.Ð)Ð.õ ˜O¨aÑ/Ñ0Ô0Ð 0øå �a�*Ô*­F¬LÐ9Ñ :Ô :ð Ø ˆK˜‰NŒNˆNݘa¥Ñ%Ô%Ð0ˆaˆa¨1¬5ˆÝÔ$ SÑ)Ô)Ð.Ð.¨3Ñ.Ô.Ð)Ð)Ð)Ð)Ð)s¤ G6Â21G6Å%G6Ç$G6Ç6A/I%có—tj¦« |¬¦«}tr/t ¦«}t |¦«t°/t r/t  ¦«}t |¦«t °/|rf|D]}t |d¬¦«Œtj|t¬¦«\}}|D]1}td|z¦«t |tj ¬¦«Œ0dSdS)aTerminate and wait() any subprocess started by this test suite and any children currently running, ensuring that no processes stick around to hog resources. If recursive is True it also tries to terminate and wait() all grandchildren started by this process. ©Ú recursiveN)rLr"z0couldn't terminate process %r; attempting kill())r9) rªr«ÚchildrenrôÚpopr@rÚ wait_procsr!rar5r6)rOrPrrör.rÚalives r~rArAZs€õŒ~ÑÔ×(Ò(°9Ð(Ñ=Ô=€Hõ ðÝ$×(Ò(Ñ*Ô*ˆÝ�$‰Œˆõ ðõ ðÝ×ÒÑ!Ô!ˆÝ�#‰Œˆõ ðð ð-Øð ,ð ,ˆAÝ �a dÐ +Ñ +Ô +Ð +Ð +ÝÔ$ Xµ~ÐFÑFÔF‰ˆˆ5Øð -ð -ˆAÝ ÐCÀaÑGÑ HÔ HÐ HÝ �a�Vœ^Ð ,Ñ ,Ô ,Ð ,Ð ,ð -ð-ð -ð -r€cóÜ—tstd¦«‚d}tj¦«d}|D]"}| ¦«s|dkr||z }Œ"|st d|z¦«‚d}d}| d¦«}t|d¦«}t|¦«dkrt|d¦«}t|¦«dkrt|d¦«}|||fS) z"Return a tuple such as (2, 6, 36).z not POSIXÚrjrizcan't parse %rrér) r ÚNotImplementedErrorr¤ÚunameÚisdigitr¬rwrvÚlen)rrXÚcÚminorÚmicroÚnumsÚmajors r~rTrTsî€å ð/Ý! +Ñ.Ô.Ð.Ø €AÝ ŒH‰JŒJ�qŒM€EØ ððˆØ �9Š9‰;Œ;ð ˜!˜sš(˜(Ø �‰FˆAˆAà Ø ð3ÝÐ)¨EÑ1Ñ2Ô2Ð2Ø €EØ €EØ �7Š7�3‰<Œ<€DÝ ��Q”‰LŒL€EÝ ˆ4�y„y�A‚~€~Ý�D˜”G‘ ” ˆÝ ˆ4�y„y�A‚~€~Ý�D˜”G‘ ” ˆØ �5˜%Ð Ð r€có.—tstd¦«‚tj¦«}t |d¦«r |jpd}nBt jd|d¦«}|r#t|  d¦«¦«}nd}|d|d|fS)Nz not WINDOWSÚservice_pack_majorrz\s\d$rrV) r rWrzÚgetwindowsversionÚhasattrraÚreÚsearchrvÚgroup)ÚwvÚspÚrs r~rSrS—s–€Ý ð1Ý! -Ñ0Ô0Ð0Ý Ô Ñ Ô €B݈rÐ'Ñ(Ô(ðØ Ô "Ð ' aˆˆå ŒI�h  1¤Ñ &Ô &ˆØ ð Ý�Q—W’W˜Q‘Z”Z‘”ˆBˆBàˆBØ ˆqŒE�2�a”5˜"Ð Ðr€có6—eZdZdZeddddfd„Zd„Zd„Zd„ZdS)ÚretryzA retry decorator.Nr»cór—|r|rtd¦«‚||_||_||_||_||_dS)Nz/timeout and retries args are mutually exclusive)r¬Ú exceptionr#ÚretriesÚintervalÚlogfun)rÂrmr#rnrorps r~r¼zretry.__init__®sK€ð ð P�wð PÝÐNÑOÔOÐ OØ"ˆŒØˆŒ ؈Œ Ø ˆŒ ؈Œ ˆ ˆ r€c#ó K—|jrQtj¦«|jz}tj¦«|krdV—tj¦«|k°dSdS|jrt|j¦«D]}dV—ŒdS dV—ŒrÊ)r#rØrnr)rÂÚstop_atrs r~Ú__iter__zretry.__iter__½s¦èè€Ø Œ<ð Ý”i‘k”k D¤LÑ0ˆGÝ”)‘+”+ Ò'Ð'Ø���õ”)‘+”+ Ò'Ð'Ð'Ð'Ð'Ð'à Œ\ð ݘ4œ<Ñ(Ô(ð ð �Ø����ð ð ð Ø���ð r€cóJ—|j�tj|j¦«dSdSrÊ)rorØrÙrÌs r~rÙz retry.sleepÉs*€Ø Œ=Ð $Ý ŒJ�t”}Ñ %Ô %Ð %Ð %Ð %ð %Ð $r€cóX‡‡—tj‰¦«ˆˆfd„¦«}‰|_|S)NcóÌ•—d}‰D]U} ‰|i|¤ŽcS#‰j$r<}|}‰j�‰ |¦«‰ ¦«Yd}~ŒNd}~wwxYwtr|‚‚rÊ)rmrprÙr)rÐrÑÚexcrrãrÂs €€r~räzretry.__call__..wrapperÎs¡ø€àˆCØð ð �ðؘ3 Ð/¨Ð/Ð/Ð/Ð/Ð/øØ”~ðððØ�CØ”{Ð.ØŸ š  CÑ(Ô(Ð(Ø—J’J‘L”L�LØ�H�H�H�Høøøøð øøøõ ð Ø� às‰“ A�2AÁA)rærçÚ decorator)rÂrãräs`` r~Ú__call__zretry.__call__ÍsFøø€Ý Œ˜Ñ Ô ð ð ð ð ð ñ Ô ð ð$!ˆÔ؈r€) rÅrÝrÞrßržr¼rsrÙry©r€r~rkrk«sl€€€€€ØÐð%ØØØØð ð ð ð ð ð ð ð&ð&ð&ðððððr€rkr»)rmrpr#rocóh—tj|¦«trtjd¦«dSdS)z„Wait for pid to show up in the process list then return. Used in the test suite to give time the sub process to initialize. ç{®Gáz„?N)rªr«r rØrÙ)rös r~rVrVås<€õ  „N�3ÑÔÐÝðå Œ �4ÑÔÐÐÐððr€Tcó¬—t|d¦«5}| ¦«}ddd¦«n #1swxYwY|s|sJ‚|rt|¦«|S)z8Wait for a file to be written on disk with some content.ÚrbN)rÚreadrP)Úfnamerïrðr Údatas r~rWrWñsŸ€õ ˆe�TÑ Ô ð˜aØ�vŠv‰xŒxˆðððñôððððððøøøððððà ðØˆ ˆ ˆtØ ðÝ�EÑÔÐØ €Ks ‘2²6¹6có<—|¦«}t|¦«sJ‚|S)zVKeep calling function for timeout secs and exit if eval() expression is True. )Úeval)rãÚexprÚrets r~rUrUþs%€ð ˆ#‰%Œ%€CÝ �‰:Œ:ÐЈ:Ø €Jr€cóD—d„} tj|¦«}tj|j¦«r t jt j|¦«}nt jtj|¦«}tr |¦«dS||¦«dS#t$rYdSwxYw)z?Convenience function for removing temporary test files or dirs.có\—tj¦«tz}tj¦«|kry |¦«S#t$rYn7t$r+}|}t dt |¦«z¦«Yd}~nd}~wwxYwtjd¦«tj¦«|k°y|‚)Nz ignoring %sr|)rØr!rÚ WindowsErrorrar'rÙ)rãrrrrAs r~Ú retry_funzsafe_rmpath..retry_funsÄ€õ ”)‘+”+¥Ñ.ˆÝŒi‰kŒk˜GÒ#Ð#ð 1Ø�s‘u”u� øÝ$ð ð ð Ø�Ýð 1ð 1ð 1Ø�Ý�]¥c¨#¡h¤hÑ/Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0øøøøð 1øøøõ ŒJ�tÑ Ô Ð õŒi‰kŒk˜GÒ#Ð#ðˆ s´ >¾ A>Á A>Á!A9Á9A>N) r¤ÚstatÚS_ISDIRÚst_moderæÚpartialÚshutilÚrmtreeÚremover r)r¨r‰Ústrãs r~rPrPs«€ðððð"  Ý ŒW�T‰]Œ]ˆÝ Œ<˜œ Ñ #Ô #ð 5ÝÔ#¥F¤M°4Ñ8Ô8ˆCˆCåÔ#¥B¤I¨tÑ4Ô4ˆCÝ ð Ø ˆC‰EŒEˆEˆEˆEà ˆI�c‰NŒNˆNˆNˆNøÝ ð ð ð Ø ˆˆð øøøs…A=B B BÂBcóR— tj|¦«dS#t$rYdSwxYw)z.Convenience function for creating a directory.N)r¤Úmkdirrrþs r~Ú safe_mkdirr”/s:€ð Ý Œ�‰ Œ ˆ ˆ ˆ øÝ ð ð ð Ø ˆˆð øøøs ‚˜ &¥&c#ó¼K—tj¦«} tj|¦«dV—tj|¦«dS#tj|¦«wxYw)z@Context manager which temporarily changes the current directory.N)r¤ròrO)ÚdirnameÚcurdirs r~rOrO7s]èè€õŒY‰[Œ[€FðÝ Œ�ÑÔÐØ ˆˆˆå Œ�ÑÔÐÐÐø�Œ�ÑÔÐÐøøøs —AÁAcó —tj |¦«r J|¦«‚|�rtd¦«st jd¦«‚t |t¦«rtj d¦«}t |t¦«s J|¦«‚ttd¬¦«d¦«5}|  |¦«ddd¦«n #1swxYwY tjd|jd|g¦«t#|j¦«dS#t#|j¦«wxYwt%jt(|¦«t*r=tj|¦«}tj||jt,jz¦«dSdS) z1Creates an executable file in the given location.Úgcczgcc is not installedzŸ #include int main() { pause(); return 1; } z.c©ÚsuffixrNz-o)r¤r¨r­rrFÚSkipTestr&Úboolrrr'rrRrrxrœrÇrPrŽÚcopyfiler%r rŠÚchmodrŒÚS_IEXEC)ÚoutpathÚc_coder r‘s r~rQrQBs³€åŒw�~Š~˜gÑ&Ô&Ð/Ð/¨Ñ/Ô/Ð &Ø ñ9Ý�U‰|Œ|ð <ÝÔ#Ð$:Ñ;Ô;Ð ;Ý �f�dÑ #Ô #ð Ý”_ðñôˆFõ˜&¥#Ñ&Ô&Ð.Ð.¨Ñ.Ô.Ð&Ý •* DÐ)Ñ)Ô)¨4Ñ 0Ô 0ð °AØ �GŠG�F‰OŒOˆOð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð Ý Ô ! 5¨!¬&°$¸Ð"@Ñ AÔ AÐ Aå ˜œÑ Ô Ð Ð Ð ø�K˜œÑ Ô Ð Ð øøøõ Œ�  GÑ,Ô,Ð,Ý ð 9Ý”˜Ñ!Ô!ˆBÝ ŒH�W˜bœj­4¬<Ñ7Ñ 8Ô 8Ð 8Ð 8Ð 8ð 9ð 9sÂ6CÃCÃCÃ$DÄD-rUcóº— tjt||¬¦«}tj |¦«stj |¦«SŒ[)zîReturn an absolute pathname of a file or dir that did not exist at the time this call is made. Also schedule it for safe deletion at interpreter exit. It's technically racy but probably not really due to the time variant. T)Úprefixr›rÿ)ÚtempfileÚmktempr)r¤r¨r­r©)r›rÿrÇs r~rRrR`sN€ð *ÝŒ¥m¸FÈÐLÑLÔLˆÝŒw�~Š~˜dÑ#Ô#ð *Ý”7×#Ò# DÑ)Ô)Ð )ð*r€có|—eZdZd„Zeejd¦«s ejjZe sd„Z e j d„¦«Z dSdS)ÚTestCasecó€—|jj}| d¦«sd|z}|›d|jj›d|j›�S)Nzpsutil.z psutil.tests.ri)rÃrÝr³rÅÚ_testMethodName)rÂÚfqmods r~Ú__str__zTestCase.__str__usT€Ø”Ô)ˆØ×Ò  Ñ*Ô*ð ,Ø# eÑ+ˆEà ˆEˆE�4”>Ô*Ð*Ð*¨DÔ,@Ð,@ðBð Br€ÚassertRaisesRegexcó—dSrÊrzrÌs r~ÚrunTestzTestCase.runTestƒs€Ø ˆDr€c/óK—dV—dSrÊrz)rÂrÐÚkws r~ÚsubTestzTestCase.subTest†sèè€ð ˆEˆEˆEˆEˆEr€N)rÅrÝrÞr¬rcrFr¨ÚassertRaisesRegexpr­rr¯Ú contextlibÚcontextmanagerr²rzr€r~r¨r¨qs�€€€€€ðBðBðBð ˆ7�8Ô$Ð&9Ñ :Ô :ðAØ$Ô-Ô@Ðð ðð ð ð ð Ô "ð ð ñ #Ô "ð ð ð ð ðr€r¨có8—eZdZdZd d„Zd„Zd„Zd„Zd„Zd „Z dS) rKzUTest class providing auto-cleanup wrappers on top of process test utilities. rUNcó^—t||¬¦«}| t|¦«|S)N)r›rÿ)rRÚ addCleanuprP)rÂr›rÿr€s r~rRzPsutilTestCase.get_testfn•s-€Ý &¨cÐ2Ñ2Ô2ˆØ �Š�  UÑ+Ô+Ð+؈ r€cóT—t|i|¤Ž}| t|¦«|SrÊ)rBr¸r@)rÂrÐrørüs r~rBzPsutilTestCase.spawn_testprocšs-€Ý Ð-¨Ð-Ð-ˆØ �Š�  5Ñ)Ô)Ð)؈ r€có˜—t¦«\}}| t|¦«| t|¦«||fSrÊ)rDr¸r@)rÂÚchild1Úchild2s r~rDz"PsutilTestCase.spawn_children_pairŸsD€Ý,Ñ.Ô.‰ˆ�Ø �Š�  6Ñ*Ô*Ð*Ø �Š�  6Ñ*Ô*Ð*ؘÐÐr€có˜—t¦«\}}| t|¦«| t|¦«||fSrÊ)rCr¸r@)rÂrrs r~rCzPsutilTestCase.spawn_zombie¥sB€Ý%™œ‰ˆ�Ø �Š�  6Ñ*Ô*Ð*Ø �Š�  6Ñ*Ô*Ð*ؘÐÐr€có�—t|i|¤Ž\}}| t|¦«| t|¦«|SrÊ)r?r¸rPr@)rÂrÐrørürs r~r?zPsutilTestCase.pyrun«sE€Ý Ð-¨Ð-Ð-‰ˆˆwØ �Š�  WÑ-Ô-Ð-Ø �Š�  5Ñ)Ô)Ð)؈ r€có*—| tjtj|j¦«t |tjtjf¦«rh| ¦«rJ‚ | ¦«}td|z¦«‚#tj$rYnwxYw|  d¬¦«tj |j¦«rJ|j¦«‚|  |jtj ¦«¦«dS)Nz3Process.status() didn't raise exception (status=%s)rr")Ú assertRaisesrªr2r«rör&róÚ is_runningrÚAssertionErrorrÕrIÚ assertNotInÚpids)rÂr3rs r~ÚassertProcessGonez PsutilTestCase.assertProcessGone±s€Ø ×Ò�&Ô.µ´ÀÄÑIÔIÐIÝ �d�Vœ^­V¬\Ð:Ñ ;Ô ;ð !Ø—’Ñ(Ô(Ð (Ð (Ð(ð =ØŸš™œ�õ%ð&3Ø5;ñ&<ñ=ô=ð=øõÔ'ð ð ð Ø�ð øøøð �IŠI˜aˆIÑ Ô Ð ÝÔ$ T¤XÑ.Ô.Ð8Ð8°´Ñ8Ô8Ð.Ø ×Ò˜œ¥6¤;¡=¤=Ñ1Ô1Ð1Ð1Ð1sÁ.BÂB&Â%B&©rUN) rÅrÝrÞrßrRrBrDrCr?rÅrzr€r~rKrK�s}€€€€€ððððððð ððð  ð ð ð  ð ð ð ððð 2ð 2ð 2ð 2ð 2r€rKzunreliable on PYPYcóæ—eZdZdZdZdZdZerdndZdZ e j ¦«Z e ejd¦«¦«Zed„¦«Zed „¦«Zd „Zd „Zd „Zd „Zd„Zd„Zd„Z dd„Zd„ZdS)rJaçTest framework class for detecting function memory leaks, typically functions implemented in C which forgot to free() memory from the heap. It does so by checking whether the process memory usage increased before and after calling the function many times. Note that this is hard (probably impossible) to do reliably, due to how the OS handles memory, the GC and so on (memory can even decrease!). In order to avoid false positives, in case of failure (mem > 0) we retry the test for up to 5 times, increasing call repetitions each time. If the memory keeps increasing then it's a failure. If available (Linux, OSX, Windows), USS memory is used for comparison, since it's supposed to be more precise, see: https://gmpy.dev/blog/2016/real-process-memory-and-environ-in-python If not, RSS memory is used. mallinfo() on Linux and _heapwalk() on Windows may give even more precision, but at the moment are not implemented. PyPy appears to be completely unstable for this framework, probably because of its JIT, so tests on PYPY are skipped. Usage: class TestLeaks(psutil.tests.TestMemoryLeak): def test_fun(self): self.execute(some_function) éÈrkrrƒTÚ PSUTIL_DEBUGcó.—tjd¦«dS)NF)rªÚ _set_debug©Úclss r~Ú setUpClasszTestMemoryLeak.setUpClassés€åÔ˜%Ñ Ô Ð Ð Ð r€có8—tj|j¦«dSrÊ)rªrËÚ_psutil_debug_origrÌs r~Ú tearDownClasszTestMemoryLeak.tearDownClassís€åÔ˜#Ô0Ñ1Ô1Ð1Ð1Ð1r€có`—|j ¦«}t|d|j¦«S)NÚuss)Ú _thisprocÚmemory_full_infor¦Úrss)rÂÚmems r~Ú_get_memzTestMemoryLeak._get_memñs+€ðŒn×-Ò-Ñ/Ô/ˆÝ�s˜E 3¤7Ñ+Ô+Ð+r€cót—tr|j ¦«S|j ¦«SrÊ)r rÔÚnum_fdsÚ num_handlesrÌs r~Ú _get_num_fdszTestMemoryLeak._get_num_fds÷s2€Ý ð 0Ø”>×)Ò)Ñ+Ô+Ð +à”>×-Ò-Ñ/Ô/Ð /r€cóP—|jrt|dtj¬¦«dSdS)NÚyellow)ÚcolorÚfile)Úverboserrzr›)rÂÚmsgs r~Ú_logzTestMemoryLeak._logýs3€Ø Œ<ð >Ý ˜ 8µ#´*Ð =Ñ =Ô =Ð =Ð =Ð =ð >ð >r€có<—| ¦«}| |¦«| ¦«}||z }|dkr| d|z¦«‚|dkr5trdnd}|dkr|dz }|›d|›d|›�}| |¦«‚d S) z»Makes sure num_fds() (POSIX) or num_handles() (Windows) does not increase after calling a function. Used to discover forgotten close(2) and CloseHandle syscalls. rzHnegative diff %r (gc probably collected a resource from a previous test)ÚfdÚhandlerVrz unclosed z after calling N)rÜÚcallÚfailr )rÂrãÚbeforeÚafterÚdiffÚtype_râs r~Ú _check_fdszTestMemoryLeak._check_fdssÄ€ð ×"Ò"Ñ$Ô$ˆØ � Š �#‰ŒˆØ×!Ò!Ñ#Ô#ˆØ�v‰~ˆØ �!Š8ˆ8Ø—)’)ð=Ø?CñDñEôEð Eà �!Š8ˆ8Ý!Ð/�D�D xˆEØ�aŠxˆxؘ‘ �Ø7;°t°t¸U¸U¸UÀCÀCÐHˆCØ—)’)˜C‘.”.Ð ð ˆ8r€cóF—tjd¬¦«| ¦«}t|¦«D]}| |¦«}~~Œtjd¬¦«| ¦«}| tjg¦«||z }|S)z€Get 2 distinct memory samples, before and after having called fun repeatedly, and return the memory difference. rV)Ú generation)ÚgcÚcollectrØrrçÚ assertEqualÚgarbage)rÂrãÚtimesÚmem1r¶r…Úmem2rës r~Ú _call_ntimeszTestMemoryLeak._call_ntimess•€õ Œ ˜aÐ Ñ Ô Ð Ø�}Š}‰ŒˆÝ�u‘”ð ð ˆAØ—)’)˜C‘.”.ˆCØ�3�3Ý Œ ˜aÐ Ñ Ô Ð Ø�}Š}‰ŒˆØ ×Ò�œ RÑ(Ô(Ð(Ø�d‰{ˆØˆ r€c óî—g}d}|}td|dz¦«D]´}| ||¦«} d|›dt| ¦«›dt| |z ¦«›d|›�} | | ¦«| |kp| |k} | r|dkr| | ¦«dS|dkrt ¦«| | ¦«||z }| }Œµ| d |¦«¦«‚)NrrVzRun #z : extra-mem=z , per-call=z, calls=z. )rr÷r ÚappendrãÚprintrèrÜ) rÂrãrôrnÚ toleranceÚmessagesÚprev_memÚincreaseÚidxr×râÚsuccesss r~Ú _check_memzTestMemoryLeak._check_mem#s€ØˆØˆØˆÝ˜˜G a™KÑ(Ô(ð ð ˆCØ×#Ò# C¨Ñ/Ô/ˆCˆCà��•[ Ñ%Ô%Ð%Ð%¥{°3¸±;Ñ'?Ô'?Ð'?Ð'?ÀÀðHˆCà �OŠO˜CÑ Ô Ð Ø˜YÒ&Ð9¨#°ª/ˆGØð ؘ’7�7Ø—I’I˜c‘N”N�NØ��à˜!’8�8Ý‘G”G�GØ— ’ ˜#‘”�ؘÑ!�Ø��Ø�iŠi˜Ÿ š  (Ñ+Ô+Ñ,Ô,Ð,r€có—|¦«SrÊrz)rÂrãs r~rçzTestMemoryLeak.call;s €Øˆs‰uŒuˆ r€NcóÆ—|�|n|j}|�|n|j}|�|n|j}|�|n|j} |dks Jd¦«‚|dks Jd¦«‚|dks Jd¦«‚|dks Jd¦«‚n.#t$r!}t t |¦«¦«‚d}~wwxYw| ||¦«| |¦«|  ||||¬¦«dS) zTest a callable.NrVztimes must be >= 1rzwarmup_times must be >= 0zretries must be >= 0ztolerance must be >= 0)rôrnrû) rôÚ warmup_timesrnrûrÂr¬r'r÷rír)rÂrãrôrrnrûrAs r~ÚexecutezTestMemoryLeak.execute>s#€ðÐ*��°´ ˆØ'3Ð'?�|�|ØÔ"ð à$Ð0�'�'°d´lˆØ!*Ð!6�I�I¸D¼Nˆ ð 'ؘA’:�:�:Ð3‘:”:�:Ø 1Ò$Ð$Ð$Ð&AÑ$Ô$Ð$ؘa’<�<�<Ð!7‘<”<�<Ø ’>�>�>Ð#;‘>”>�>�>øÝð 'ð 'ð 'Ý�S ™XœXÑ&Ô&Ð &øøøøð 'øøøð ×Ò˜#˜|Ñ,Ô,Ð,Ø �Š˜ÑÔÐØ �Š˜ 5°'ÀYˆÑOÔOÐOÐOÐOs®AA/Á/ BÁ9BÂBc ó6‡‡‡—ˆˆˆfd„}‰j|fi|¤ŽdS)znConvenience method to test a callable while making sure it raises an exception on every call. có4•—‰ ‰‰¦«dSrÊ)rÀ)rwrãrÂs€€€r~rçz*TestMemoryLeak.execute_w_exc..callVsø€Ø × Ò ˜c 3Ñ 'Ô 'Ð 'Ð 'Ð 'r€N)r)rÂrwrãrÑrçs``` r~Ú execute_w_exczTestMemoryLeak.execute_w_excRsJøøø€ð (ð (ð (ð (ð (ð (ð (𠈌 �TÐ$Ð$˜VÐ$Ð$Ð$Ð$Ð$r€)NNNN)rÅrÝrÞrßrôrrûr,rnrárªr«rÔr�r¤ÚgetenvrÐÚ classmethodrÎrÑrØrÜrãrír÷rrçrrrzr€r~rJrJÁs;€€€€€ððð< €EØ€LØ€IØÐ%ˆbˆb A€GØ€GØ�”Ñ Ô €Iؘ˜i˜bœi¨Ñ7Ô7Ñ8Ô8Ðàð!ð!ñ„[ð!ðð2ð2ñ„[ð2ð,ð,ð,ð 0ð0ð0ð >ð>ð>ð!ð!ð!ð& ð ð ð-ð-ð-ð0ðððCGØðPðPðPðPð(%ð%ð%ð%ð%r€rJcó —ddl}ddl}ddl}ddl}ddl} ddl}n#t $rd}YnwxYw ddl}n#t $rd}YnwxYw| ¦«}tj r"td¦«rtd¦«|d<nÝtj r dtj¦«dz|d<n±tjrydd t%t&tj¦«¦«¦«z|d<t+td¦«r$|dxxd tj¦«zz cc<n,tj¦«›dtj¦«›�|d<d  t3tj¦«¦«tj¦«gz¦«|d <tjrtj¦«d |d <d  tj¦«tj¦«tj ¦«g¦«|d <tC|dd¦«|d<|�|dxxd|j"zz cc<tjrqtd¦«r=tddg¦«}t'|¦« #d¦«d|d<nd|d<tj$¦«d} | r| |d<tKj&¦«|d<| '¦«} | d›d | d›�|d<|j (tj)¦«¦« *d¦«|d<|j +¦« *d¦«|d<| ,¦«|d<tZj. /d¦«|d<t[j0¦«|d<tb|d <tj2¦«|d!<t[j3¦«|d"<tj4¦«|d#<d$tkd%„tj6¦«D¦«¦«z|d&<tj7¦«} tq| j9¦«›d'tu| j;¦«›d(tu| j<¦«›�|d)<tj=¦«} tq| j9¦«›d'tu| j;¦«›d(tu| j<¦«›�|d*<t}tj?¦«¦«|d+<tj@¦« A¦«} |  Bd,d¦«| C| ¦«|d-<t‰d.tJjE¬/¦«| F¦«D])\}}t‰|d0zd1›d|›�tJjE¬/¦«Œ*t‰d.tJjE¬/¦«tJjG H¦«dS)2NrÚ lsb_releasezlsb_release -d -sÚOSz Darwin %szWindows ú Ú win32_editionz, ÚarchrjÚkernelÚpythonÚ __version__z not installedÚpipz (wheel=%s)r™z --versionr$rVÚglibcz fs-encodingÚlangz%Y-%m-%d %H:%M:%Sz boot-timerØÚuserú~ÚhomerëÚpyexeÚhostnameÚPIDÚcpusz%.1f%%, %.1f%%, %.1f%%có@—g|]}|tj¦«z dz‘ŒS)éd)rªÚ cpu_countr´s r~r·z!print_sysinfo..£s+€ÐIÐIÐI°ˆq•6Ô#Ñ%Ô%Ñ%¨Ñ+ÐIÐIÐIr€Úloadavgz%, used=z, total=ÚmemoryÚswaprÄr�r3zF======================================================================©ràú:Ú17)IÚ collectionsÚdatetimeÚgetpassÚlocaleÚpprintrÚ ImportErrorÚwheelÚ OrderedDictrªrrr/ÚOSXrrrsr rÜrur'Ú win32_verrcrÚsystemr}ÚlistÚ architectureÚmachiner rXÚpython_implementationÚpython_versionÚpython_compilerr¦rrwÚlibc_verrzÚgetfilesystemencodingÚ getlocaleÚ fromtimestampÚ boot_timeÚstrftimeÚnowÚgetuserr¤r¨Ú expanduserròr%ÚnodeÚgetpidr rtrŒÚvirtual_memoryrvÚpercentr ÚusedÚtotalÚ swap_memoryrZrÄr«Úas_dictrQÚpformatrúr›ÚitemsršÚflush)r'r(r)r*r+rr-ÚinfoÚoutrrr×r#ÚpinfoÚkÚvs r~rNrN\s€ØÐÐÐØ€O€O€OØ€N€N€NØ€M€M€MØ€M€M€MðØˆ ˆ ˆ ˆ øÝ ðððØˆˆˆðøøøð؈ ˆ ˆ ˆ øÝ ðððØˆˆˆðøøøð × "Ò "Ñ $Ô $€Dõ„|ð G�˜mÑ,Ô,ð GÝÐ+Ñ,Ô,ˆˆT‰ ˆ Ý ŒðGØ ¥8Ô#3Ñ#5Ô#5°aÔ#8Ñ8ˆˆT‰ ˆ Ý ŒðGØ #§(¢(Ý ••XÔ'Ñ)Ô)Ñ *Ô *ñ#,ô#,ñ,ˆˆT‰ å •8˜_Ñ -Ô -ð :Ø �ˆJˆJŒJ˜$¥Ô!7Ñ!9Ô!9Ñ9Ñ 9ˆJˆJ‰Jøå (¤Ñ 1Ô 1Ð 1Ð 1µ8Ô3CÑ3EÔ3EÐ3EÐFˆˆT‰ Ø—9’9Ý �XÔ "Ñ $Ô $Ñ%Ô%­Ô)9Ñ);Ô);Ð(<Ñ<ñ>ô>€Dˆ�Lå „|ð-Ý!œÑ)Ô)¨!Ô,ˆˆX‰ð—Y’YÝÔ&Ñ(Ô(ÝÔÑ!Ô!ÝÔ Ñ"Ô"ð $ñ%ô%€Dˆ�Nõ˜#˜}¨oÑ>Ô>€Dˆ�KØ ÐØ ˆUˆ ˆ Œ �} uÔ'8Ñ8Ñ8ˆ ˆ ‰ õ„|ðÝ �‰<Œ<ð *Ý�e˜[Ð)Ñ*Ô*ˆCݘc™(œ(Ÿ.š.¨Ñ.Ô.¨qÔ1ˆD�‰KˆKà)ˆD�‰KÝ Ô Ñ Ô  Ô "ˆØ ð ØˆD�‰MõÔ3Ñ5Ô5€DˆÑØ × Ò Ñ Ô €DØ# Aœw˜w˜w¨¨Q¬¨Ð0€Dˆ�LØ Ô)×7Ò7ÝÔÑÔñôß$šHÐ%8Ñ9Ô9ð ˆÑàÔ$×(Ò(Ñ*Ô*×3Ò3Ð4GÑHÔH€Dˆ�LØ—?’?Ñ$Ô$€Dˆ�LÝ”7×%Ò% cÑ*Ô*€Dˆ�LÝ”)‘+”+€Dˆ�KÝ€Dˆ�MÝ”}‘”€DˆÑÝ”)‘+”+€Dˆ�KõÔ#Ñ%Ô%€Dˆ�LØ.Ý ÐIÐIµVÔ5FÑ5HÔ5HÐIÑIÔIÑJÔJñL€Dˆ�Oå Ô Ñ !Ô !€Cå ˆCŒKÑÔÐÐ�+ c¤hÑ/Ô/Ð/Ð/µ¸S¼YÑ1GÔ1GÐ1GðI€Dˆ�Nå Ô Ñ Ô €Då ˆDŒLÑÔÐÐ�; t¤yÑ1Ô1Ð1Ð1µ;¸t¼zÑ3JÔ3JÐ3JðL€Dˆ�Lå•v”{‘}”}Ñ%Ô%€Dˆ�LÝ ŒNÑ Ô × $Ò $Ñ &Ô &€EØ ‡I‚Iˆm˜TÑ"Ô"Ð"Ø—>’> %Ñ(Ô(€Dˆ�Lå ˆ(�œÐ$Ñ$Ô$Ð$Ø— ’ ‘ ” ð:ð:‰ˆˆ1Ý ˜A ™G˜G˜G˜G Q QÐ'­c¬jÐ9Ñ9Ô9Ð9Ð9Ý ˆ(�œÐ$Ñ$Ô$Ð$Ý„J×ÒÑÔÐÐÐs–› *©*®3³ AÁAcóà—tj¦«}t|d¦«r| ¦«St|d¦«r&t j| ¦«¦«SdS)Nr‘rŠr)rªr«rcr‘ÚrandomÚchoicerŠ)r.s r~Ú_get_eligible_cpurT¶s`€ÝŒÑÔ€A݈q�)ÑÔð/Ø�yŠy‰{Œ{ÐÝ ��NÑ #Ô #ð/ÝŒ}˜QŸ^š^Ñ-Ô-Ñ.Ô.Ð.Ø ˆ1r€có°—eZdZdZddifddifgZddifddddifd difd difd difd difd difddifddifg Zddifddddifddifddifddifddifddifddifddifddifddifddifddifd difd!difd"difd#difgZer$ed$difgz Zed%difgz Zed&difgz Zed'difgz Zer ed(difgz Ze r ed)difgz Ze red*e j fifgz Ze r ed+difgz Zer ed,difgz Zer ed-difgz Zer ed.difgz Zer ed/dd0d1ifgz ZgZer eddifgz Znede jfifgz Ze red*e j d2fifgz Ze r"ered)e jd3fifgz Zned)e jfifgz Ze red+e¦«gfifgz Zd4ejfifd5difd6difd7difd8difgZered4ejfifgz Zed4ejfifgz ZeezezezZd9„Zd?d:„Zd;„Z e!d<„¦«Z"e!d=„¦«Z#d>S)@rLaA container that lists all Process class method names + some reasonable parameters to be called with. Utility methods (parent(), children(), ...) are excluded. >>> ns = process_namespace(psutil.Process()) >>> for fun, name in ns.iter(ns.getters): ... fun() Ú cpu_percentrzÚmemory_percentrHrPrOTrÁÚmemory_info_exÚoneshotrÚparentsrörÕ©rÚcmdlineÚ connectionsÚkindÚallÚ cpu_timesÚ create_timerërŸrÕÚ memory_inforÇÚniceÚnum_ctx_switchesÚ num_threadsÚ open_filesÚppidrr—ÚusernameÚuidsÚgidsÚterminalrÚr’rŽr“rŠr‘r�rÛr�ÚgroupedF)r irr7ÚsuspendÚresumer@Úkillcó—||_dSrÊ)Ú_proc)rÂr3s r~r¼zprocess_namespace.__init__s €ØˆŒ ˆ ˆ r€c#óîK—t|¦«}tj|¦«|D]L\}}}|r| ¦«t |j|¦«}t j|g|¢Ri|¤Ž}||fV—ŒMdS©z_Given a list of tuples yields a set of (fun, fun_name) tuples in random order. N)r2rRÚshuffleÚ clear_cacher¦rqrær�)rÂÚlsruÚfun_namerÐrørãs r~Úiterzprocess_namespace.iter!s¡èè€õ�"‰XŒXˆÝŒ�rÑÔÐØ$&ð "ð "Ñ ˆH�d˜DØð #Ø× Ò Ñ"Ô"Ð"ݘ$œ* hÑ/Ô/ˆCÝÔ# CÐ7¨$Ð7Ð7Ð7°$Ð7Ð7ˆCؘ�/Ð !Ð !Ð !Ð !ð  "ð "r€cóR—|j |jjd¬¦«dS)z&Clear the cache of a Process instance.T)Ú _ignore_nspN)rqÚ_initrörÌs r~ruzprocess_namespace.clear_cache.s'€à Œ ×Ò˜œœ°TÐÑ:Ô:Ð:Ð:Ð:r€có„—|D]<\}}}d|z}t||¦«s!|jj›d|›d�}t|¦«‚Œ=dS)z}Given a TestCase instance and a list of tuples checks that the class defines the required test method names. Útest_z class should define a 'z' methodN)rcrÃrÅÚAttributeError)rÍÚ test_classrvrwrÚ meth_namerâs r~Útest_class_coveragez%process_namespace.test_class_coverage2sn€ð !ð *ð *‰NˆH�a˜Ø (Ñ*ˆIݘ: yÑ1Ô1ð *àÔ(Ô1Ð1Ð1°9°9°9ð>�å$ SÑ)Ô)Ð)ð *ð *ð *r€có—td„|jD¦«¦«}td„|jD¦«¦«}td„ttj¦«D¦«¦«}||z|z }|rt d|z¦«‚dS)Ncó—g|] }|d‘Œ Sr[rzr´s r~r·z*process_namespace.test..@s€Ð*Ð*Ð*˜Q�A�a”DÐ*Ð*Ð*r€có—g|] }|d‘Œ Sr[rzr´s r~r·z*process_namespace.test..As€Ð1Ð1Ð1 �q˜”tÐ1Ð1Ð1r€có*—g|]}|ddk¯|‘ŒS)rrrzr´s r~r·z*process_namespace.test..Bs!€ÐCÐCÐC˜1°q¸´t¸s²{°{�Q°{°{°{r€z!uncovered Process class names: %r)r×r_Úignoredrÿrªr«r¬)rÍÚthisr†ÚklassÚleftouts r~Útestzprocess_namespace.test>s›€åÐ*Ð* #¤'Ð*Ñ*Ô*Ñ+Ô+ˆÝÐ1Ð1 S¤[Ð1Ñ1Ô1Ñ2Ô2ˆÝÐCÐC¥¥F¤NÑ 3Ô 3ÐCÑCÔCÑDÔDˆØ˜'‘> UÑ*ˆØ ð LÝÐ@À7ÑJÑKÔKÐ Kð Lð Lr€N)T)$rÅrÝrÞrßÚutilsr†Úgettersr r3r4r7rªÚ RLIMIT_NOFILEr0r6r2r r5ÚsettersÚNORMAL_PRIORITY_CLASSrÚIOPRIO_CLASS_NONEÚ IOPRIO_NORMALrTr5ÚSIGTERMÚkillersÚ CTRL_C_EVENTÚCTRL_BREAK_EVENTr_r¼rxrur r�rŠrzr€r~rLrL¿su€€€€€ðð𠘘BÐØ ˜2˜rÐ"ð €Eð �B˜ÐØ �R˜+ tÐ,Ð-Ø �r˜2ÐØ ˜2˜rÐ"Ø �B˜ÐØ �2�rÐØ �B˜ÐØ ��BˆØ �˜Ðð €Gð �B˜ÐØ ˜˜V U˜OÐ,Ø �b˜"ÐØ ˜˜BÐØ ��BˆØ ��BˆØ ˜R Ð$Ø ˜˜BÐØ ��RÐØ ��RÐØ ˜R Ð$Ø ˜˜BÐØ �r˜2ÐØ ��RÐØ �2�rÐØ �B˜ÐØ �R˜Ðð#€Gð& ð)Ø�V˜R Ð$Ð%Ñ%ˆØ�V˜R Ð$Ð%Ñ%ˆØ�Z  RÐ(Ð)Ñ)ˆØ�Y  BÐ'Ð(Ñ(ˆØð-Ø�] B¨Ð+Ð,Ñ,ˆØð(Ø�X˜r 2Ð&Ð'Ñ'ˆØð>Ø�X Ô 4Ð7¸Ð<Ð=Ñ=ˆØð.Ø�^ R¨Ð,Ð-Ñ-ˆØð)Ø�Y  BÐ'Ð(Ñ(ˆØð)Ø�Y  BÐ'Ð(Ñ(ˆØð-Ø�] B¨Ð+Ð,Ñ,ˆØð=Ø�] B¨°EÐ(:Ð;Ð<Ñ<ˆà€GØ ðDØ�V˜U BÐ'Ð(Ñ(ˆˆà�V˜fÔ:Ð=¸rÐBÐCÑCˆØðJØ�X Ô 4°lÐCÀRÐHÐIÑIˆØðBØ ð BØ ˜ FÔ$<¸aÐ#@À"ÐEÐFÑ FˆGˆGà ˜ FÔ$8Ð#;¸RÐ@ÐAÑ AˆGØðEØ�^Ð'8Ð'8Ñ':Ô':Ð&;Ð%>ÀÐCÐDÑDˆð ˜œÐ*¨BÐ/Ø �B˜ÐØ �2�rÐØ �b˜"ÐØ ��RÐð €GððFØ�] VÔ%8Ð$;¸RÐ@ÐAÑAˆØ�] VÔ%<Ð$?ÀÐDÐEÑEˆà �'‰/˜GÑ # gÑ -€Cðððð "ð "ð "ð "ð;ð;ð;ðð *ð *ñ„[ð *ððLðLñ„[ðLðLðLr€rLcó—eZdZdZddifddddifddddifddifd dd difd dd difd dd difd dddifdej¦«fifddddifddifddifddddifdej¦«fifddifddifddifddifgZer eddd difgz Ze r eddifgz Ze r eddifgz Ze r eddifgz Ze r eddifgz Ze red difgz Zed!d"ifgz Zd#difd$ej¦«gfifd%difd&difgZeZed'„¦«ZejZd(S))rMzÝA container that lists all the module-level, system-related APIs. Utilities such as cpu_percent() are excluded. Usage: >>> ns = system_namespace >>> for fun, name in ns.iter(ns.getters): ... fun() r<rzr ÚlogicalFTÚ cpu_statsr`ÚpercpuÚdisk_io_countersÚperdiskÚdisk_partitionsr_Ú disk_usageÚnet_connectionsr^Ú net_if_addrsÚ net_if_statsr�ÚpernicrIrÄrGÚusersrCr‹rŒr–r•r”Úwin_service_iterÚwin_service_get)ÚalgÚ process_iterrRrVÚcpu_times_percentc#óÂK—t|¦«}tj|¦«|D]6\}}}tt|¦«}t j|g|¢Ri|¤Ž}||fV—Œ7dSrs)r2rRrtr¦rªrær�)rvrwrÐrørãs r~rxzsystem_namespace.iter{s…èè€õ �"‰XŒXˆÝŒ�rÑÔÐØ$&ð "ð "Ñ ˆH�d˜DÝ�& (Ñ+Ô+ˆCÝÔ# CÐ7¨$Ð7Ð7Ð7°$Ð7Ð7ˆCؘ�/Ð !Ð !Ð !Ð !ð "ð "r€N)rÅrÝrÞrßr¤ròrBrŒr1ÚHAS_GETLOADAVGr;r:r8r rªr«r†r_Ú staticmethodrxrLr�rzr€r~rMrMHsD€€€€€ððð �b˜"ÐØ �b˜9 eÐ,Ð-Ø �b˜9 dÐ+Ð,Ø �b˜"ÐØ �b˜8 UÐ+Ð,Ø �b˜8 TÐ*Ð+Ø ˜R )¨TÐ!2Ð3Ø ˜B ¨  Ð.Ø ˜ ˜œ ™ œ �¨Ð+Ø ˜B ¨ Ð0Ø ˜˜RÐ Ø ˜˜RÐ Ø ˜B ¨4Ð 0Ð1Ø ˜ ˜œ ™ œ �¨Ð+Ø ��RÐØ ˜˜BÐØ �"�bÐØ ˜2˜rÐ"ð%€Gð(ð8Ø�Z  h°Ð%5Ð6Ð7Ñ7ˆØð,Ø�\ 2 rÐ*Ð+Ñ+ˆØð6ØÐ+¨R°Ð4Ð5Ñ5ˆØð.Ø�^ R¨Ð,Ð-Ñ-ˆØð1ØÐ&¨¨BÐ/Ð0Ñ0ˆØð8ØÐ'¨¨RÐ0Ð1Ñ1ˆØÐ&¨ °2Ð6Ð7Ñ7ˆð ˜˜RÐ Ø ˜˜œÑ)Ô)Ð*Ð-¨rÐ2Ø ˜˜BÐØ ˜b "Ð%ð €Gð €Càð "ð "ñ„\ð "ð,Ô?ÐÐÐr€rMcóP—tj|¦«s J|¦«‚d|_|S)zA decorator to mark a TestCase class. When running parallel tests, class' unit tests will be run serially (1 process). T)ÚinspectÚisclassÚ _serialrun)rˆs r~Ú serialrunr¯Šs/€õ Œ?˜5Ñ !Ô !Ð(Ð( 5Ñ(Ô(Ð !Ø€EÔØ €Lr€có8—d„}ttd||¬¦«S)zZDecorator which runs a test function and retries N times before actually failing. cóB—td|ztj¬¦«dS)Nz %r, retryingr$)rúrzr›)rws r~rpz retry_on_failure..logfun˜s"€Ý ˆn˜sÑ"­¬Ð4Ñ4Ô4Ð4Ð4Ð4r€N)rmr#rnrp)rkrÂ)rnrps r~rIrI”s3€ð5ð5ð5õ �>°4ÀØð ñ ô ð r€có‡—ˆfd„}|S)z,Decorator to Ignore AccessDenied exceptions.cóJ•‡—tj‰¦«ˆˆfd„¦«}|S)Ncón•— ‰|i|¤ŽS#tj$r‰�‰s‚tjd¦«‚wxYw)Nzraises AccessDenied)rªÚ AccessDeniedrFrœ)rÐrÑrãÚonly_ifs €€r~räz9skip_on_access_denied..decorator..wrapper¢s^ø€ð ?Ø�s˜DÐ+ FÐ+Ð+Ð+øÝÔ&ð ?ð ?ð ?ØÐ&Ø"ðØÝÔ'Ð(=Ñ>Ô>Ð>ð  ?øøøsƒ ‹)4rå©rãrär¶s` €r~rxz(skip_on_access_denied..decorator¡s>øø€Ý Œ˜Ñ Ô ð ?ð ?ð ?ð ?ð ?ñ Ô ð ?ðˆr€rz©r¶rxs` r~rGrGŸs$ø€ð ð ð ð ð ð Ðr€có‡—ˆfd„}|S)z3Decorator to Ignore NotImplementedError exceptions.cóJ•‡—tj‰¦«ˆˆfd„¦«}|S)Ncóx•— ‰|i|¤ŽS#t$r$‰�‰s‚d‰jz}tj|¦«‚wxYw)Nz4%r was skipped because it raised NotImplementedError)rWrÅrFrœ)rÐrÑrârãr¶s €€r~räz;skip_on_not_implemented..decorator..wrapper²siø€ð -Ø�s˜DÐ+ FÐ+Ð+Ð+øÝ&ð -ð -ð -ØÐ&Ø"ðØØLØœ ñ%�åÔ'¨Ñ,Ô,Ð,ð  -øøøsƒ ‹.9rår·s` €r~rxz*skip_on_not_implemented..decorator±s>øø€Ý Œ˜Ñ Ô ð -ð -ð -ð -ð -ñ Ô ð -ðˆr€rzr¸s` r~rHrH¯s$ø€ð ð ð ð ð ð Ðr€ú 127.0.0.1cóâ—tjtj¦«¦«5}| |df¦«| ¦«dcddd¦«S#1swxYwYdS)z6Return an unused TCP port. Subject to race conditions.rrVN)r´ÚclosingÚsocketÚbindÚ getsockname)Úhostrs r~rYrYÇs¤€å Ô �FœM™OœOÑ ,Ô ,ð%°Ø � Š �4˜�)ÑÔÐØ×ÒÑ!Ô! !Ô$ð%ð%ð%ð%ñ%ô%ð%ð%ð%ð%ð%ð%øøøð%ð%ð%ð%ð%ð%s¦1A$Á$A(Á+A(có†—|€|ttfvrd}tj||¦«} tjdvr+| tjtjd¦«| |¦«|tj kr|  d¦«|S#t$r|  ¦«‚wxYw)zBinds a generic socket.N©rUr)ÚntÚcygwinrVrƒ) rrr¿r¤rÇÚ setsockoptÚ SOL_SOCKETÚ SO_REUSEADDRrÀrÚlistenržr)ÚfamilyÚtypeÚaddrrs r~rZrZÎs·€à €|˜¥7­HÐ"5Ð5Ð5ØˆÝ Œ=˜ Ñ &Ô &€Dð Ý Œ7Ð*Ð *Ð *Ø �OŠO�FÔ-­vÔ/BÀAÑ FÔ FÐ FØ � Š �$‰ŒˆØ •6Ô%Ò %Ð %Ø �KŠK˜‰NŒNˆN؈ øÝ ðððØ � Š ‰ Œ ˆ Ø ðøøøs «A4B  Ccóp—tjsJ‚tj |¦«r J|¦«‚t jt j|¦«} | |¦«|t jkr|  d¦«n##t$r|  ¦«‚wxYw|S)zBind a UNIX socket.rƒ) rªr r¤r¨r­r¿r¸rÀrrÊržr)rÇrÌrs r~r[r[ßs¨€å Œ<ÐЈ<ÝŒw�~Š~˜dÑ#Ô#Ð)Ð) TÑ)Ô)Ð #Ý Œ=�œ¨Ñ .Ô .€DðØ � Š �$‰ŒˆØ •6Ô%Ò %Ð %Ø �KŠK˜‰NŒNˆNøøÝ ðððØ � Š ‰ Œ ˆ Ø ðøøøð €Ks Á:B B3rÄcóF—tjtj|t¦«¦«5}| |¦«| d¦«| ¦«}tj|t¦«} | |¦«| ¦«} | ¦«\}}||kr||fcddd¦«S|  ¦«ŒB#t$r|  ¦«‚wxYw#1swxYwYdS)z^Build a pair of TCP sockets connected to each other. Return a (server, client) tuple. rƒTN) r´r¾r¿rrÀrÊrÁÚconnectr rr=)rËrÍÚllr[ÚcaddrÚas r~r\r\îsH€õ Ô �FœM¨&µ+Ñ>Ô>Ñ ?Ô ?ðÀ2Ø �Š�‰ Œ ˆ Ø � Š �!‰ Œ ˆ Ø�~Š~ÑÔˆÝ ŒM˜&¥+Ñ .Ô .ˆð Ø �IŠI�d‰OŒOˆOØ—M’M‘O”OˆEð ØŸ)š)™+œ+‘��4à˜5’=�=ؘq˜6ððððñôððð—’‘ ” � ð  øõ ð ð ð Ø �GŠG‰IŒIˆIØ ð øøøððððøøøððððððs+­ADÂA C3ÃC3Ã3 DÄDÄDÄDcó®—tjsJ‚dx}} t|tj¬¦«}| d¦«tjtjtj¦«}| d¦«| |¦«n;#t$r.|�|  ¦«|�|  ¦«‚wxYw||fS)zƒBuild a pair of UNIX sockets connected to each other through the same UNIX file name. Return a (server, client) tuple. N©rÌr) rªr r[r¿rÚ setblockingr¸rÐržr)rÇÚserverÚclients r~r]r]sÙ€õ Œ<ÐЈ<ØÐ€FˆVð Ý! $­VÔ-?Ð@Ñ@Ô@ˆØ×Ò˜1ÑÔÐÝ”�vœ~­vÔ/AÑBÔBˆØ×Ò˜1ÑÔÐØ�Š�tÑÔÐÐøå ðððØ Ð Ø �LŠL‰NŒNˆNØ Ð Ø �LŠL‰NŒNˆNØ ð øøøð �FÐ Ðs ”BBÂ8Cc#óªK—g}dx}} | ttjtj¦«¦«| ttjtj¦«¦«t ¦«rn| ttjtj¦«¦«| ttjtj¦«¦«trmtrft¦«}t¦«}t|¦«\}}t|tj¬¦«}|||fD]}| |¦«Œ|V—|D]}|  ¦«Œ||fD]}|�t|¦«ŒdS#|D]}|  ¦«Œ||fD]}|�t|¦«ŒwxYw)z1Open as many socket families / types as possible.NrÕ)rùrZr¿rrÚ SOCK_DGRAMrrr ÚHAS_CONNECTIONS_UNIXrRr]r[rrP)ÚsocksÚfname1Úfname2Ús1Ús2Ús3rr€s r~r^r^sÇèè€ð €EØÐ€FˆVð#Ø � Š •[¥¤µÔ1CÑDÔDÑEÔEÐEØ � Š •[¥¤µÔ1BÑCÔCÑDÔDÐDÝ ‰?Œ?ð JØ �LŠL�¥V¤_µfÔ6HÑIÔIÑ JÔ JÐ JØ �LŠL�¥V¤_µfÔ6GÑHÔHÑ IÔ IÐ IÝ ð Õ)ð Ý‘\”\ˆFÝ‘\”\ˆFÝ$ VÑ,Ô,‰FˆB�Ý! &­vÔ/@ÐAÑAÔAˆBؘ"˜b�\ð ð �Ø— ’ ˜Q‘”��؈ ˆ ˆ àð ð ˆAØ �GŠG‰IŒIˆIˆIؘfÐ%ð #ð #ˆEØÐ ݘEÑ"Ô"Ð"øð #ð #øðð ð ˆAØ �GŠG‰IŒIˆIˆIؘfÐ%ð #ð #ˆEØÐ ݘEÑ"Ô"Ð"øð #øøøs ŠE"FÆ3Gcóè—ddl}tr2tr+ts$t |tj¦«s J|¦«‚|t jkr‡d„| d¦«D¦«}t|¦«dks J|¦«‚|D]}d|cxkrdks nJ|¦«‚Œtst|¦«}|  |¦«dS|t j krLt |t¦«s J|¦«‚tst|¦«}| |¦«dS|tjkr!t#jd|¦«€ J|¦«‚dSt'd|z¦«‚) z[Check a net address validity. Supported families are IPv4, IPv6 and MAC addresses. rNcó,—g|]}t|¦«‘ŒSrz)rvr´s r~r·z%check_net_address..?s€Ð0Ð0Ð0˜1•�A‘”Ð0Ð0Ð0r€riréÿz([a-fA-F0-9]{2}[:|\-]?){6}zunknown family %r)Ú ipaddressÚenumrr$r&ÚIntEnumr¿rrwrZrÚ IPv4Addressrr'Ú IPv6AddressrªÚAF_LINKrdÚmatchr¬)rÍrËråÚoctsÚnums r~rXrX7sˆ€ðÐÐÐÝ ð8•ð8�Dð8ݘ&¥$¤,Ñ/Ô/Ð7Ð7°Ñ7Ô7Ð/Ø •”ÒÐØ0Ð0 § ¢ ¨3¡¤Ð0Ñ0Ô0ˆÝ�4‰yŒy˜AŠ~ˆ~ˆ~˜t‰~Œ~ˆ~Øð )ð )ˆCؘ�?�?’?�?˜s’?�?�?�?�? D‘?”?�?�?Ýð !ݘ4‘=”=ˆDØ×Ò˜dÑ#Ô#Ð#Ð#Ð#Ø •6”?Ò "Ð "ݘ$¥Ñ$Ô$Ð*Ð* dÑ*Ô*Ð$Ýð !ݘ4‘=”=ˆDØ×Ò˜dÑ#Ô#Ð#Ð#Ð#Ø •6”>Ò !Ð !ÝŒxÐ5°tÑ<Ô<ÐHÐHÈ$ÑHÔHÐHÐHÐHåÐ,¨vÑ5Ñ6Ô6Ð6r€có’—d„}d„}d„}d„}d„}||¦«||¦«||¦«||¦«||¦«dS)z*Check validity of a connection namedtuple.cóD—t|¦«dk}t|¦«dvsJt|¦«¦«‚|d|jksJ|j¦«‚|d|jksJ|j¦«‚|d|jksJ|j¦«‚|d|jksJ|j¦«‚|d|jksJ|j¦«‚|d|jksJ|j¦«‚|r |d |jksJ|j¦«‚dSdS) Nr¢)r<r¢rrVrjrrrƒr<)rZrårËrÌÚladdrÚraddrrrö)rÚhas_pids r~Ú check_ntuplez-check_connection_ntuple..check_ntupleSs5€Ý�d‘)”)˜q’.ˆÝ�4‰yŒy˜FÐ"Ð"Ð"¥C¨¡I¤IÑ"Ô"Ð"Ø�AŒw˜$œ'Ò!Ð!Ð! 4¤7Ñ!Ô!Ð!Ø�AŒw˜$œ+Ò%Ð%Ð% t¤{Ñ%Ô%Ð%Ø�AŒw˜$œ)Ò#Ð#Ð# T¤YÑ#Ô#Ð#Ø�AŒw˜$œ*Ò$Ð$Ð$ d¤jÑ$Ô$Ð$Ø�AŒw˜$œ*Ò$Ð$Ð$ d¤jÑ$Ô$Ð$Ø�AŒw˜$œ+Ò%Ð%Ð% t¤{Ñ%Ô%Ð%Ø ð 1ؘ”7˜dœhÒ&Ð&Ð&¨¬Ñ&Ô&Ð&ð 1ð 1Ø&Ð&r€cóØ—|jtttfvsJ|j¦«‚t�*t |jtj¦«s J|¦«‚n$t |jt¦«s J|¦«‚|jtkr¤tj|j|j ¦«}tj |¦«5 |  |j ddf¦«n2#tj$r }|jtjkr‚Yd}~nd}~wwxYwddd¦«dS#1swxYwYdS|jtkr$|jt$jksJ|j¦«‚dSdS)Nr)rËrrr¸rær&rçrvr¿rÌr´r¾rÀrðÚerrorr?Ú EADDRNOTAVAILrrªÚ CONN_NONE)rrrAs r~Ú check_familyz-check_connection_ntuple..check_family_s±€ØŒ{�w­µ'Ð:Ð:Ð:Ð:¸D¼KÑ:Ô:Ð:Ý Ð Ý˜dœk­4¬<Ñ8Ô8Ð >Ð >¸$Ñ >Ô >Ð8Ð >å˜dœk­3Ñ/Ô/Ð 5Ð 5°Ñ 5Ô 5Ð/Ø Œ;�'Ò !Ð !õ ” ˜dœk¨4¬9Ñ5Ô5ˆAÝÔ# AÑ&Ô&ð ð ðØ—F’F˜DœJ qœM¨1Ð-Ñ.Ô.Ð.Ð.øÝ”|ðððØ”y¥EÔ$7Ò7Ð7Øð8Ð7Ð7Ð7Ð7øøøøðøøøð ð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð ð Œ[�GÒ #Ð #Ø”;¥&Ô"2Ò2Ð2Ð2°D´KÑ2Ô2Ð2ð$Ð #Ø2Ð2s<ÃD'Ã"C(Ã'D'Ã(DÃ7DÄ D'ÄDÄD'Ä'D+Ä.D+cóÈ—ttdt¦«¦«}|jtjtj|fvsJ|j¦«‚t �*t|jt j¦«s J|¦«‚n$t|jt¦«s J|¦«‚|jtjkr$|j tj ksJ|j ¦«‚dSdS)NÚSOCK_SEQPACKET) r¦r¿ÚobjectrÌrrÚrær&rçrvrrªr÷)rrús r~Ú check_typez+check_connection_ntuple..check_typetsÛ€å ¥Ð)9½6¹8¼8ÑDÔDˆØŒy�VÔ/µÔ1BØ+ð-ð-ð-ð-Ø.2¬iñ-ô-ð-å Рݘdœi­¬Ñ6Ô6Ð <Ð <¸Ñ <Ô <Ð6Ð <å˜dœi­Ñ-Ô-Ð 3Ð 3¨tÑ 3Ô 3Ð-Ø Œ9�Ô)Ò )Ð )Ø”;¥&Ô"2Ò2Ð2Ð2°D´KÑ2Ô2Ð2ð *Ð )Ø2Ð2r€có—|j|jfD]ö}|jttfvr£t |t ¦«sJt|¦«¦«‚|sŒFt |jt¦«sJt|j¦«¦«‚d|jcxkrdksnJ|j¦«‚t|j |j¦«Œº|jtkr,t |t¦«sJt|¦«¦«‚Œ÷dS)Nriÿÿ)rðrñrËrrr&rtrÌÚportrvrXÚipr¸r')rrÍs r~Ú check_addrsz,check_connection_ntuple..check_addrs€s€à”Z ¤Ð,ð 9ð 9ˆDØŒ{�w­Ð1Ð1Ð1Ý! $­Ñ.Ô.Ð:Ð:µ°T± ´ Ñ:Ô:Ð.ØðØÝ! $¤)­SÑ1Ô1ÐBÐBµ4¸¼ ±?´?ÑBÔBÐ1ؘDœIÐ.Ð.Ò.Ð.¨Ò.Ð.Ð.Ð.Ð.°´ Ñ.Ô.Ð.Ý! $¤'¨4¬;Ñ7Ô7Ð7Ð7Ø”¥Ò'Ð'Ý! $­Ñ,Ô,Ð8Ð8­d°4©j¬jÑ8Ô8Ð,øð 9ð 9r€có¢—t|jt¦«sJ|j¦«‚d„tt¦«D¦«}|j|vsJ|j¦«‚|jt tfvr6|jtkr&|jtj ksJ|j¦«‚dS|jtj ksJ|j¦«‚dS)Ncób—g|],}| d¦«¯tt|¦«‘Œ-S)ÚCONN_r²r´s r~r·zAcheck_connection_ntuple..check_status..�sB€ð,ð,ð,¨Ø—\’\ 'Ñ*Ô*ð,•'�& !Ñ$Ô$ð,ð,ð,r€) r&rr'rÿrªrËrrrÌrr÷)rÚvalidss r~Ú check_statusz-check_connection_ntuple..check_status�s΀ݘ$œ+¥sÑ+Ô+Ð8Ð8¨T¬[Ñ8Ô8Ð+ð,ð,­cµ&©k¬kð,ñ,ô,ˆàŒ{˜fÐ$Ð$Ð$ d¤kÑ$Ô$Ð$Ø Œ;�7¥HÐ-Ð -Ð -°$´)½{Ò2JÐ2JØ”;¥&Ô"2Ò2Ð2Ð2°D´KÑ2Ô2Ð2Ð2Ð2à”;¥&Ô"2Ò2Ð2Ð2°D´KÑ2Ô2Ð2Ð2Ð2r€Nrz)rrórørürrs r~Úcheck_connection_ntuplerQs®€ð 1ð 1ð 1ð@ð@ð@ð* @ð @ð @ð 9ð 9ð 9ð@ð@ð@ð€L�ÑÔÐØ€L�ÑÔÐØ€JˆtÑÔÐØ€K�ÑÔÐØ€L�ÑÔÐÐÐr€có¸— ddl}t|d¦«st‚ | |¦«S#t$rddl}| |¦«cYSwxYw)z,Backport of importlib.reload of Python 3.3+.rNÚreload)Ú importlibrcr,rÚimp)Úmoduler r s r~r_r_£s„€ð(ØÐÐÐÝ�y (Ñ+Ô+ð ÝÐ ð ð ×Ò Ñ'Ô'Ð'øõ ð"ð"ð"؈ ˆ ˆ Ø�zŠz˜&Ñ!Ô!Ð!Ð!Ð!ð"øøøs‚3³#AÁAcó—tj tj |¦«¦«d}tjddkrddl}| ||¦«Stjdd…dkr$ddlm }|||¦«  ¦«Sddl }|j   ||¦«}|j  |¦«}|j |¦«|S)Nrrjr)ÚSourceFileLoader)r¤r¨Úsplitextrrzr§r Ú load_sourceÚimportlib.machineryr Ú load_moduleÚimportlib.utilÚutilÚspec_from_file_locationÚmodule_from_specÚloaderÚ exec_module)r¨rÇr r r ÚspecÚmods r~r`r`°s÷€Ý Œ7× Ò �BœG×,Ò,¨TÑ2Ô2Ñ 3Ô 3°AÔ 6€DÝ Ô˜Ô˜aÒÐØˆ ˆ ˆ Ø�Š˜t TÑ*Ô*Ð*Ý Ô ˜"˜1˜"Ô  Ò 'Ð 'Ø8Ð8Ð8Ð8Ð8Ð8ØÐ  dÑ+Ô+×7Ò7Ñ9Ô9Ð9àÐÐÐØŒ~×5Ò5°d¸DÑAÔAˆØŒn×-Ò-¨dÑ3Ô3ˆØ Œ ×Ò Ñ$Ô$Ð$؈ r€có>—tj|td¬¦«dS)zRaise a warning msg.rj)Ú stacklevelN)ÚwarningsraÚ UserWarning)râs r~raraÅs€å „M�#•{¨qÐ1Ñ1Ô1Ð1Ð1Ð1r€cóü—t|¦«}|j}t|¦«dks|dtkrdSt |dd¦«}t |t¦«sdSt d„|D¦«¦«S)z-Check if object is an instance of namedtuple.rVrFÚ_fieldsNc3óFK—|]}t|¦«tkV—ŒdSrÊ)rÌr')rµÚns r~ú z is_namedtuple..Ós,èè€Ð)Ð) !�t�A‰wŒw�#Š~Ð)Ð)Ð)Ð)Ð)Ð)r€)rÌÚ __bases__rZrtr¦r&r_)r¶ÚtÚbr s r~rcrcÊsy€å ˆQ‰Œ€AØ Œ €AÝ ˆ1�v„v�‚{€{�a˜”d�e’m�m؈uÝ��9˜dÑ#Ô#€AÝ �a�Ñ Ô ð؈uÝ Ð)Ð) qÐ)Ñ)Ô)Ñ )Ô )Ð)r€c#ó|‡‡K—trdndŠdŠt|‰z¬¦«}ˆˆfd„tj¦« ¦«D¦«}t j|¦«}tj||¦« tj |¦«|V—t|¦«dS#t|¦«wxYw)zÂCtx manager which picks up a random shared CO lib used by this process, copies it in another location and loads it in memory via ctypes. Return the new absolutized path. Úpypyrz.soršcó°•—g|]R}tj |j¦«d‰kr"‰|j ¦«v¯K|j‘ŒSS)rV)r¤r¨rÚlower)rµr¶rŸÚexts €€r~r·z'copyload_shared_lib..às[ø€ð'ð'ð'˜1Ý”× Ò  ¤Ñ(Ô(¨Ô+¨sÒ2Ð2Ø�q”v—|’|‘~”~Ð%Ð%ð”à%Ð%Ð%r€N) r$rRrªr«r�rRrSrŽržÚctypesÚCDLLrP)r›ÚdstÚlibsrrŸr*s @@r~rbrb×sÚøøèè€õ Ð*ˆfˆf (ˆØˆÝ ¨¡ Ð-Ñ-Ô-ˆð'ð'ð'ð'ð'¥¤Ñ 0Ô 0× <Ò <Ñ >Ô >ð'ñ'ô'ˆõŒm˜DÑ!Ô!ˆÝŒ˜˜SÑ!Ô!Ð!ð Ý ŒK˜Ñ Ô Ð ØˆIˆIˆIå ˜Ñ Ô Ð Ð Ð ø�K˜Ñ Ô Ð Ð øøøs ÂB*Â*B;c#ó‡ K—ddlm}ddlm}dŠ t|‰ z¬¦«}ˆ fd„t j¦« ¦«D¦«}tr1|s/d„t j¦« ¦«D¦«}tj |¦«}tj ||¦«d} tj |¦«}|V—|�Ctj jj}|jg|_||j¦«}|dkr |¦«t'|¦«dS#|�Ctj jj}|jg|_||j¦«}|dkr |¦«t'|¦«wxYw) zÖCtx manager which picks up a random shared DLL lib used by this process, copies it in another location and loads it in memory via ctypes. Return the new absolutized, normcased path. r)ÚWinError)Úwintypesz.dllršcó•—g|]ˆ}|j ¦« ‰¦«rZdtj |j¦« ¦«vr"d|j ¦«v¯�|j‘Œ‰S)rÚwow64)r¨r)r,r¤r)rµr¶r*s €r~r·z'copyload_shared_lib..ös„ø€ð/ð/ð/˜1Ø”— ’ ‘”×'Ò'¨Ñ,Ô,ð/à�BœG×,Ò,¨Q¬VÑ4Ô4×:Ò:Ñ<Ô<Ð<Ð<ؘqœvŸ|š|™~œ~Ð-Ð-ð”ð.Ð-Ð-r€cóŒ—g|]A}dtj |j¦« ¦«v¯:|j‘ŒBS)r')r¤r¨rr)r´s r~r·z'copyload_shared_lib..ûsO€ð@ð@ð@˜qØ�bœg×.Ò.¨q¬vÑ6Ô6×<Ò<Ñ>Ô>Ð>Ð>ð”FØ>Ð>Ð>r€N)r+r0r1rRrªr«r�r$rRrSrŽržÚWinDLLÚwindllÚkernel32Ú FreeLibraryÚHMODULEÚargtypesÚ_handlerP) r›r0r1r-r.rÚcfiler8r…r*s @r~rbrbësÆøèè€ð $Ð#Ð#Ð#Ð#Ð#Ø#Ð#Ð#Ð#Ð#Ð#؈ݠ¨¡ Ð-Ñ-Ô-ˆð/ð/ð/ð/¥¤Ñ 0Ô 0× <Ò <Ñ >Ô >ð/ñ/ô/ˆõ ð @˜ð @ð@ð@¥F¤NÑ$4Ô$4×$@Ò$@Ñ$BÔ$Bð@ñ@ô@ˆDåŒm˜DÑ!Ô!ˆÝŒ˜˜SÑ!Ô!Ð!؈ð Ý”M #Ñ&Ô&ˆE؈IˆIˆIðÐ Ý$œmÔ4Ô@� Ø(0Ô(8Ð'9� Ô$Ø!�k %¤-Ñ0Ô0�ؘ!’8�8Ø�H‘J”J�JÝ ˜Ñ Ô Ð Ð Ð øð Ð Ý$œmÔ4Ô@� Ø(0Ô(8Ð'9� Ô$Ø!�k %¤-Ñ0Ô0�ؘ!’8�8Ø�H‘J”J�JÝ ˜Ñ Ô Ð Ð øøøs Â:D(Ä(AE>có&—td¬¦«dS)NTrN)rArzr€r~Úcleanup_test_procsr>s€å˜DÐ!Ñ!Ô!Ð!Ð!Ð!r€có*—tj|¦«SrÊ)rzÚexit)r9Úframes r~úrB"s€µS´X¸c±]´]€r€rÊ)F)TFrÆ)r¼)rÄ)rU)¹rßÚ __future__rÚatexitr´r+r?rærðr¬r¤rrrRrdrr(rŽr5r¿rŠrxrzr¥rr¿rØrFrrrrrªrrr r r r Úpsutil._commonr rrrÚpsutil._compatrrrrrrrrrr,Úcatch_warningsÚ simplefilterr§ræÚpsutil._psposixrÚ__all__Úbuiltin_module_namesr$r�rrer,r>Úmaxsizer/rr<r=r#r"r.r!rÇrBr)r*Údecoder+r9r)ÚASCII_FSr¨r©rÜr–Ú__file__r'Úgetr(ÚHERErÛrcr«r0r1r©r2r4r5ÚHAS_NET_IO_COUNTERSr6r3r7r8r�r”r9ržr:r;Ú HAS_THREADSÚgetuidÚ SKIP_SYSCONSr¯r%r&rÚdevnullr Úregisterrrÿr-r¦rûr¸r×rôrrÔrErèrBrDrCr?r/r’r@rArTrSrkr2rVrÂrWrUrPr”rµrOrQrRr¨rKÚskipIfrJrNrTrLrMr¯rIrGrHrYrZr[r\r]r^rXrr_r`rarcrbr>rzr€r~úrYs? ðððð&Ð%Ð%Ð%Ð%Ð%à € € € ØÐÐÐØ € € € Ø € € € ØÐÐÐØ € € € Ø€€€Ø € € € Ø€€€Ø € € € Ø € € € Ø € € € Ø € € € Ø € € € Ø € € € Ø € € € Ø € € € ØÐÐÐØ € € € Ø€€€Ø€€€ØÐÐÐØ € € € Ø€€€Ø€€€ØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐà € € € ØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØ&Ð&Ð&Ð&Ð&Ð&Ø"Ð"Ð"Ð"Ð"Ð"Ø&Ð&Ð&Ð&Ð&Ð&Ø(Ð(Ð(Ð(Ð(Ð(ØÐÐÐÐÐØ*Ð*Ð*Ð*Ð*Ð*Ø,Ð,Ð,Ð,Ð,Ð,Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ØÐÐÐÐÐØ"Ð"Ð"Ð"Ð"Ð"Ø Ð Ð Ð Ð Ð ðØÐÐÐÐÐÐøØðððØ ˆÔ Ñ "Ô "ðð؈ԘhÑ'Ô'Ð'؈ ˆ ˆ ðððñôððððððøøøððððøøðøøøð Ô�vÒÐØ€K€K€K€Kà €Dàð)Ø(Ð(Ð(Ð(Ð(Ð(ð" ð" ð" €ðV�SÔ-Ð-€à ˜œÐ #€Ø! R¤ZÐ/ÐO°>ÀRÄZÐ3O€Ø Ð '˜€ Ø ˜RœZÐ '€à Œ;˜Ò €ð ððñ „ðð( ðØ �=‘?”? XÒ-€LØ �=‘?”? gÒ-€L€Là€LØ€Lð € à#ÐØ'Ðà€à ðØ�!�O€JØ�aÑ€NؘÑÐØ˜AÑÐð „7ˆfÒÐà! I B¤I¡K¤KÑ/€M€Mà! I B¤I¡K¤KÑ/€MØ��9‘”€àð)Ø)×0Ò0°Ð9JÑKÔKÐÐà(ÐØ $ˆ3Ô $Ñ &Ô &× ,Ò ,Ñ .Ô .Ð2GÐ G€ð Œ7× Ò Ø„G‡L‚L�”—’ Ñ*Ô*¨D°$Ñ7Ô7ñ 9ô 9€àŒj�nŠnØØ„G‡L‚L�˜9Ñ%Ô%ñô€ ð „w×Ò˜œŸš¨Ñ1Ô1Ñ2Ô2€ðÐ* U ÐØ�7˜6œ>¨>Ñ:Ô:ÐØˆw�v˜zÑ*Ô*€ Ø�˜ Ñ.Ô.€Øˆg�f”n iÑ0Ô0€ Ø ˆW�V”^ XÑ .Ô .€ Ø�'˜&œ.¨-Ñ8Ô8€Ø�g˜fÐ&7Ñ8Ô8ÐØ�7˜6œ>¨9Ñ5Ô5ÐØ�w˜vœ~¨}Ñ=Ô=ÐØ ˆW�V”^ XÑ .Ô .€ Ø�g˜fÐ&7Ñ8Ô8ÐðØ%ÐH¨$¨$Ð/E¨vÔ/EÑ/GÔ/GÑ*HÔ*H€K€KøØðððØ€K€K€Kðøøøà�7˜6 >Ñ2Ô2ÐØ"˜7 6Ð+AÑBÔBÐØˆg�f”n iÑ0Ô0€ Ø� ˜Ð2 ) "¤)¡+¤+°Ò"2€ ð %ð%ð%ðP)˜[™]œ]Ñ€ ˆNØ ˆ$ˆrŒz˜4Ñ Ô €Ø€„�” ÑÔÐð3ð3°3°3°v±;´;ð3ñ3ô3Ðà ˆ'�&˜) V V¡X¤XÑ .Ô .€à˜™œÐØ�‘”€ ð(ð(ð(ð(ð(�Ô!ñ(ô(ð(ð`ðððð$ð$ð$ñÔð$ðNð#ð#ñÔð#ðL*ð*ð*ðZððñÔðð&ððñÔðð6 &œ~¸NðR/ðR/ðR/ðR/ðj-ð-ð-ð-ðJ!ð!ð!ð0 ð ð ð(7ð7ð7ð7ð7ˆFñ7ô7ð7ðt€�Ô%¨d¸NØðñôððñôðð€Ð# ^Ð4¸Tبð/ñ/ô/ðððñ/ô/ðð€�¨°nØðñôððñôðð ð ð ðB ð ð ð ÔððñÔðð9ð9ð9ð9ð< *ð *ð *ð *ð"ððððˆxÔ ñôðð8€Ôð.2ð.2ð.2ð.2ð.2�Xñ.2ô.2ð.2ðb€„�Ð+Ñ,Ô,ðW%ðW%ðW%ðW%ðW%�^ñW%ôW%ñ-Ô,ðW%ðtWðWðWðt ð ð ðFLðFLðFLðFLðFLñFLôFLðFLðR?@ð?@ð?@ð?@ð?@ñ?@ô?@ð?@ðDððð(ð ð ð ð ð ð ð ð ð ðððð0%ð%ð%ð%ð [°tððððð"!'Ô 2ð ð ð ð ððððð.ððð. Ôð#ð#ñÔð#ð47ð7ð7ð4JðJðJðd (ð (ð (ð ð ð ð*2ð2ð2ð *ð *ð *ð ð9ØÔðððñÔððð&Ôð#ð#ð#ñÔð#ðX„ð"ð"ñ„ð"ð ðDØ€F„M�&”.Ð"BÐ"BÑCÔCÐCÐCÐCðDðDsHÃ0C7Ã7D:Ä D,Ä D:Ä,D0 Ä0D:Ä3D0 Ä4D:Ä9D:Î;OÏO ÏO