3 öLÖj�“ãœ@sf edkredƒ‚ddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z!ddl"Z"ddl#m$Z$yddl%Z%ddl&Z&Wnek �r>dZ%dZ&YnXy ddl'Z(Wnek �rfdZ(YnXy ddl)Z)Wnek �rŽdZ)YnXy ddl*Z*Wnek �r¶dZ*YnXy ddl+Z+Wnek �rÞdZ+YnXy ddl,Z,Wnek �rdZ,YnXy ddl-Z-Wnek �r.dZ-YnXy ddl.Z.Wnek �rVdZ.YnXdddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;dd?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dag\Z/Gdbd „d e0ƒZ1Gdcd „d e1ƒZ2Gddd „d e1ƒZ3Gded„dej4ƒZ5ej6�dgdgdh„ƒZ7�dhfdjœdkd„Z8dldm„Z9dndo„Z:dpd<„Z;dqd=„ZdZ?dZ@daAdaBdZCdiZDdaEdtd„ZFdud„ZGdvd„ZHdwdx„ZIejjJdyƒ�r*�didzd{„ZKd|d}„ZLd~d„ZMd€d�„ZNd‚dƒ„ZOnejPZLejQZMd„d�„ZNd…dƒ„ZOd†d„ZPd‡dˆ„ZQd‰d„ZRdŠd‹„ZSdŒd„ZTd�dŽ„ZUd�d"„ZV�djd�d#„ZWd‘d’„ZXd“d$„ZYd”d%„ZZd•d&„Z[�dkd–d'„Z\d—Z]d˜Z^ej_ej`fd™dI„Zae]fdšdJ„Zbd›dL„Zcdœd�„ZdedƒZedždŸ„Zf�dnZg�dqZhejiejjkd£ƒjJd¤ƒd¥ƒZlejie)d¦ƒZmejie*d§ƒZnejie+d¨ƒZoejie,d©ƒZpejjJdªƒZqejrd«ƒZsesdk �otesdkZtejd¬k�r’et�rŒd­nd®ZundZuejvdªk�r¨d¯Zwnd°Zwd±jxewejyƒƒZwdZzxL�drD]BZ{yej|ej}e{ƒƒe{k�rèe~‚Wne~k �rYnXe{ZzP�qÈWewd½Zejd¾k�r6ddl€Z€e€j�d¿eƒZej‚ƒZƒdZ„ejvdÀk�r¢ej…ƒjdÁk�räewdÂZ„ye„j†eƒƒWne‡k �rŠYnXeˆdÃe„eƒfƒdZ„nBejd¾k�räydÄj‰eƒƒWn&eŠk �râewdÅj‰eƒdƃZ„YnXdZ‹xF�dsD]�d?„Zøejùe”e�d@ƒ�dAƒZú�dB�dC„Zû�dD�dE„ZüG�dFdO„dOejýjþƒZÿG�dGdZ„dZe¤ƒ�Zd�a�dHd „�Z�dId1„�Zd�a�dJ�dK„�Z�dLd:„�Z�dM�dN„�Z�dOd!„�Zf�dPœ�dQd>„�Z dfff�dRd?„�Z G�dSd\„d\ƒ�Z �dT�dU„�Z �dV�dW„�Z ff�dX�dY„�Zgf�dZd`„�Zd�a�d[dF„�Zej6�d\�d]„ƒ�Z�d^da„�ZG�d_�d`„�d`ƒ�ZG�da�db„�dbƒ�Zej6�dc�dd„ƒ�Z�de�df„�ZdS(�z test.supportz.support must be imported from the test packageéNé)Úget_test_runnerÚ PIPE_MAX_SIZEÚverboseÚ max_memuseÚ use_resourcesÚfailfastÚErrorÚ TestFailedÚ TestDidNotRunÚResourceDeniedÚ import_moduleÚimport_fresh_moduleÚ CleanImportÚunloadÚforgetÚrecord_original_stdoutÚget_original_stdoutÚcaptured_stdoutÚcaptured_stdinÚcaptured_stderrÚTESTFNÚSAVEDCWDÚunlinkÚrmtreeÚtemp_cwdÚfindfileÚcreate_empty_fileÚ can_symlinkÚfs_is_case_insensitiveÚis_resource_enabledÚrequiresÚrequires_freebsd_versionÚrequires_linux_versionÚrequires_mac_verÚrequires_hashdigestÚcheck_syntax_errorÚTransientResourceÚtime_outÚsocket_peer_resetÚioerror_peer_resetÚtransient_internetÚBasicTestRunnerÚ run_unittestÚ run_doctestÚskip_unless_symlinkÚ requires_gzipÚ requires_bz2Ú requires_lzmaÚ bigmemtestÚbigaddrspacetestÚ cpython_onlyÚ get_attributeÚrequires_IEEE_754Úskip_unless_xattrÚ requires_zlibÚanticipate_failureÚload_package_testsÚdetect_api_mismatchÚ check__all__Úrequires_android_levelÚrequires_multiprocessing_queueÚ is_jythonÚ is_androidÚcheck_impl_detailÚ unix_shellÚsetswitchintervalÚHOSTÚ IPV6_ENABLEDÚfind_unused_portÚ bind_portÚopen_urlresourceÚbind_unix_socketÚ temp_umaskÚ reap_childrenÚ TestHandlerÚthreading_setupÚthreading_cleanupÚ reap_threadsÚ start_threadsÚcheck_warningsÚcheck_no_resource_warningÚEnvironmentVarGuardÚrun_with_localeÚ swap_itemÚ swap_attrÚMatcherÚ set_memlimitÚSuppressCrashReportÚsortdictÚ run_with_tzÚPGOÚmissing_compiler_executableÚfd_countc@s eZdZdS)r N)Ú__name__Ú __module__Ú __qualname__©rcrcú-/usr/lib64/python3.6/test/support/__init__.pyr |sc@s eZdZdS)r N)r`rarbrcrcrcrdr sc@s eZdZdS)r N)r`rarbrcrcrcrdr ‚sc@s eZdZdS)r N)r`rarbrcrcrcrdr …sTc cs8|r.tjƒ�tjddtƒdVWdQRXndVdS)NÚignorez.+ (module|package))ÚwarningsÚcatch_warningsÚfilterwarningsÚDeprecationWarning)rercrcrdÚ_ignore_deprecated_imports�s  rjF)Ú required_oncCsft|ƒ�Ty tj|ƒStk rV}z&tjjt|ƒƒr8‚tj t |ƒƒ‚WYdd}~XnXWdQRXdS)N) rjÚ importlibr Ú ImportErrorÚsysÚplatformÚ startswithÚtupleÚunittestÚSkipTestÚstr)ÚnameÚ deprecatedrkÚmsgrcrcrdr �s  cCs^|tjkrt|ƒtj|=x>ttjƒD]0}||ks@|j|dƒr&tj|||<tj|=q&WdS)NÚ.)rnÚmodulesÚ __import__Úlistrp)ruÚ orig_modulesÚmodnamercrcrdÚ_save_and_remove_module¯s r~c Cs>d}ytj|||<Wntk r.d}YnXdtj|<|S)NTF)rnryÚKeyError)rur|ZsavedrcrcrdÚ_save_and_block_module½s  r€cCs|r tjSdd„S)NcSs|S)Nrc)ÚfrcrcrdÚÓsz$anticipate_failure..)rrZexpectedFailure)Z conditionrcrcrdr:ËscCsF|dkr d}tjjtjjtjjtƒƒƒ}|j|||d�}|j|ƒ|S)Nztest*)Z start_dirZ top_level_dirÚpattern)ÚosÚpathÚdirnameÚ__file__ZdiscoverZaddTests)Zpkg_dirÚloaderZstandard_testsrƒZtop_dirZ package_testsrcrcrdr;Õs c CsÊt|ƒ�¸i}g}t||ƒzfyHx|D]}t||ƒq&Wx |D]}t||ƒs>|j|ƒq>Wtj|ƒ}Wntk r~d}YnXWdx|jƒD]\} } | tj | <qŽWx|D] } tj | =qªWX|SQRXdS)N) rjr~r€Úappendrlr rmÚitemsrnry) ruZfreshZblockedrvr|Znames_to_removeZ fresh_nameZ blocked_nameZ fresh_moduleZ orig_nameÚmoduleZname_to_removercrcrdrés$      c Cs>yt||ƒ}Wn&tk r4tjd||fƒ‚YnX|SdS)Nzobject %r has no attribute %r)ÚgetattrÚAttributeErrorrrrs)ÚobjruZ attributercrcrdr6s cCs|adS)N)Ú_original_stdout)Ústdoutrcrcrdr0scCs tptjS)N)r�rnr�rcrcrcrdr4sc Cs&y tj|=Wntk r YnXdS)N)rnryr)rurcrcrdr7s cGsny||ŽStk rh}zDtdkrHtd|jj|fƒtd|j|fƒtj|tjƒ||ŽSd}~XnXdS)Néz%s: %sz re-run %s%r) ÚOSErrorrÚprintÚ __class__r`r„ÚchmodÚstatÚS_IRWXU)r…ÚfuncÚargsÚerrrcrcrdÚ _force_run=sr›ÚwincCs„||ƒ|r|}ntjj|ƒ\}}|p(d}d}x<|dkrjtj|ƒ}|rJ|n||ksVdStj|ƒ|d9}q0Wtjd|tdd�dS)Nrxgü©ñÒMbP?gð?r‘z)tests may fail, delete still pending for é)Ú stacklevel) r„r…ÚsplitÚlistdirÚtimeÚsleeprfÚwarnÚRuntimeWarning)r˜ÚpathnameÚwaitallr†ruÚtimeoutÚLrcrcrdÚ_waitforHs     r©cCsttj|ƒdS)N)r©r„r)ÚfilenamercrcrdÚ_unlinkisr«cCsttj|ƒdS)N)r©r„Úrmdir)r†rcrcrdÚ_rmdirlsr­cs,‡fdd„‰tˆ|dd�tdd„|ƒdS)Ncs®x¨t|tj|ƒD]–}tjj||ƒ}ytj|ƒj}Wn<tk rn}z td||ft j d�d}WYdd}~XnXt j |ƒr˜t ˆ|dd�t|tj|ƒqt|tj|ƒqWdS)Nz-support.rmtree(): os.lstat(%r) failed with %s)ÚfilerT)r¦)r›r„r r…ÚjoinÚlstatÚst_moder’r“rnÚ __stderr__r–ÚS_ISDIRr©r¬r)r…ruÚfullnameÚmodeÚexc)Ú _rmtree_innerrcrdr·ps   z_rmtree.._rmtree_innerT)r¦cSst|tj|ƒS)N)r›r„r¬)Úprcrcrdr‚sz_rmtree..)r©)r…rc)r·rdÚ_rmtreeos r¹c Cs^y ddl}Wntk r Yn:X|jt|ƒdƒ}|jjj||t|ƒƒ}|rZ|d|…S|S)Nrr‘)ÚctypesrmZcreate_unicode_bufferÚlenÚwindllÚkernel32ZGetLongPathNameW)r…rºÚbufferZlengthrcrcrdÚ _longpath�s    r¿c sFytj|ƒdStk r"YnX‡fdd„‰ˆ|ƒtj|ƒdS)Nc s„x~t|tj|ƒD]l}tjj||ƒ}ytj|ƒj}Wntk rJd}YnXtj |ƒrnˆ|ƒt|tj |ƒqt|tj |ƒqWdS)Nr) r›r„r r…r¯r°r±r’r–r³r¬r)r…rur´rµ)r·rcrdr·™s  z_rmtree.._rmtree_inner)Úshutilrr’r„r¬)r…rc)r·rdr¹’s  cCs|S)Nrc)r…rcrcrdr¿¨sc Cs*y t|ƒWnttfk r$YnXdS)N)r«ÚFileNotFoundErrorÚNotADirectoryError)rªrcrcrdr«s c Cs&y t|ƒWntk r YnXdS)N)r­rÁ)r†rcrcrdr¬±s r¬c Cs&y t|ƒWntk r YnXdS)N)r¹rÁ)r…rcrcrdr·s cCsBtjj|ƒ}tjjtjj|ƒƒ}tjj||dƒ}tj||ƒ|S)NÚc) rlÚutilÚcache_from_sourcer„r…r†Úabspathr¯Úrename)ÚsourceZpyc_fileZup_oneZ legacy_pycrcrcrdÚmake_legacy_pyc½s   rÉcCs\t|ƒxNtjD]D}tjj||dƒ}t|dƒx dD]}ttjj||d�ƒq8WqWdS)Nz.pyrÃÚrr‘)Ú optimization)rÊrr‘) rrnr…r„r¯rrlrÄrÅ)r}r†rÈÚoptrcrcrdrÊs    csüttdƒrtjSd}tjjdƒr¾ddl‰ddl‰d}d}G‡fdd„dˆjƒ}ˆj j }|j ƒ}|sjˆj ƒ‚|ƒ}ˆj jƒ}|j||ˆj|ƒˆj|ƒˆj|ƒƒ}|sªˆj ƒ‚t|j|@ƒs¼d}n˜tjdk�rVdd lm} m‰m} m} dd lm} | j| d ƒƒ} | jƒdk�rd }nFG‡fd d„d| ƒ}|ƒ}| |ƒ}| j|ƒdk�sR| j|ƒdk�rVd}|�sèy.ddlm}|ƒ}|jƒ|j ƒ|j!ƒWn\t"k �ræ}z>t#|ƒ}t$|ƒdk�rÄ|dd…d}dj%t&|ƒj'|ƒ}WYdd}~XnX|t_(| t_tjS)NÚresultrœrrcs.eZdZd”jjfd”jjfd”jjfgZdS)z*_is_gui_available..USEROBJECTFLAGSZfInheritZ fReservedÚdwFlagsN)r`rarbÚwintypesZBOOLÚDWORDÚ_fields_rc)rºrcrdÚUSEROBJECTFLAGSås  rÒz,gui not available (WSF_VISIBLE flag not set)Údarwin)ÚcdllÚc_intÚpointerÚ Structure)Ú find_libraryZApplicationServicesz0gui tests cannot run without OS X window managercseZdZd”fd”fgZdS)z._is_gui_available..ProcessSerialNumberZ highLongOfPSNZ lowLongOfPSNN)r`rarbrÑrc)rÕrcrdÚProcessSerialNumbersrÙz#cannot run without OS X gui process)ÚTké2z [...]zTk unavailable due to {}: {}))ÚhasattrÚ_is_gui_availablerÍrnrorprºZctypes.wintypesr×r¼Zuser32ZGetProcessWindowStationZWinErrorrÏrÐZGetUserObjectInformationWZbyrefZsizeofÚboolrÎrÔrÕrÖZ ctypes.utilrØZ LoadLibraryZCGMainDisplayIDZGetCurrentProcessZSetFrontProcessZtkinterrÚZwithdrawÚupdateZdestroyÚ Exceptionrtr»ÚformatÚtyper`Úreason)rãZ UOI_FLAGSZ WSF_VISIBLErÒZdllÚhZuofZneededÚresrÔrÖr×rØZ app_servicesrÙZpsnZpsn_prÚÚrootÚeZ err_stringrc)rÕrºrdrÝÚsh         rÝcCstdkp|tkS)N)r)Úresourcercrcrdr $scCs>t|ƒs |dkrd|}t|ƒ‚|dkr:tƒ r:ttjƒ‚dS)Nz"Use of the %r resource not enabledÚgui)r r rÝrã)rèrwrcrcrdr!,s cs‡‡fdd„}|S)Ncs$tjˆƒ‡‡‡fdd„ƒ}ˆ|_|S)Nc s„tjƒˆkrztjƒjddƒd}yttt|jdƒƒƒ}Wntk rLYn.X|ˆkrzdjtt ˆƒƒ}t j dˆ||fƒ‚ˆ||ŽS)Nú-rrrxz(%s version %s or higher required, not %s) roÚsystemÚreleaserŸrqÚmapÚintÚ ValueErrorr¯rtrrrs)r™ÚkwÚ version_txtÚversionÚmin_version_txt)r˜Ú min_versionÚsysnamercrdÚwrapper=s z:_requires_unix_version..decorator..wrapper)Ú functoolsÚwrapsrô)r˜rö)rôrõ)r˜rdÚ decorator<sz)_requires_unix_version..decoratorrc)rõrôrùrc)rôrõrdÚ_requires_unix_version5srúcGs td|ƒS)NZFreeBSD)rú)rôrcrcrdr"PscGs td|ƒS)NZLinux)rú)rôrcrcrdr#Yscs‡fdd„}|S)Ncs"tjˆƒ‡‡fdd„ƒ}ˆ|_|S)Nc sxtjdkrntjƒd}yttt|jdƒƒƒ}Wntk rBYn,X|ˆkrndjtt ˆƒƒ}t j d||fƒ‚ˆ||ŽS)NrÓrrxz&Mac OS X %s or higher required, not %s) rnroZmac_verrqrírîrŸrïr¯rtrrrs)r™rðrñròró)r˜rôrcrdröjs   z4requires_mac_ver..decorator..wrapper)r÷rørô)r˜rö)rô)r˜rdrùisz#requires_mac_ver..decoratorrc)rôrùrc)rôrdr$bs cs‡‡fdd„}|S)Ncstjˆƒ‡‡‡fdd„ƒ}|S)Nc sXy&ˆrtdk rtjˆƒn tjˆƒWn&tk rLtjdˆ›d�ƒ‚YnXˆ||ŽS)Nz hash digest 'z' is not available.)Ú_hashlibÚnewÚhashlibrïrrrs)r™Úkwargs)Ú digestnamer˜Úopensslrcrdrö‹s  z7requires_hashdigest..decorator..wrapper)r÷rø)r˜rö)rÿr)r˜rdrùŠs z&requires_hashdigest..decoratorrc)rÿrrùrc)rÿrrdr%}s z 127.0.0.1z::1cCs"tj||ƒ}t|ƒ}|jƒ~|S)N)ÚsocketrHÚclose)ÚfamilyZsocktypeZtempsockÚportrcrcrdrG s 8 c Cs¸|jtjkrš|jtjkršttdƒr>|jtjtjƒdkr>t dƒ‚ttdƒr~y |jtjtj ƒdkrft dƒ‚Wnt k r|YnXttdƒrš|j tjtj dƒ|j|dfƒ|jƒd}|S)NÚ SO_REUSEADDRrzHtests should never set the SO_REUSEADDR socket option on TCP/IP sockets!Ú SO_REUSEPORTzHtests should never set the SO_REUSEPORT socket option on TCP/IP sockets!ÚSO_EXCLUSIVEADDRUSEr)rrÚAF_INETrâÚ SOCK_STREAMrÜZ getsockoptZ SOL_SOCKETrr rr’Z setsockoptrÚbindZ getsockname)ÚsockÚhostrrcrcrdrHÞs     c Cs:y|j|ƒWn&tk r4|jƒtjdƒ‚YnXdS)Nzcannot bind AF_UNIX sockets)r ÚPermissionErrorrrrrs)r ZaddrrcrcrdrJs cCsZtjrVd}z.dec)r÷rø)r�rrc)r�rdÚsystem_must_validate_certs rr�iéZdoubleZIEEEztest requires IEEE 754 doublesz requires zlibz requires gzipz requires bz2z requires lzmaÚjavaÚANDROID_API_LEVELÚwin32z/system/bin/shz/bin/shz$testz@testz {}_{}_tmpõæõİõÅ�õφõКõ×�õØŒõتõà¸�õ õ€u -àòɘÅ�ÄŸrÓZNFDÚntr‘u-å…±Å�â™¡Í£í²€ztWARNING: The filename %r CAN be encoded by the filesystem encoding (%s). Unicode filename tests may not be effectiveóÿs-ÿÚsurrogateescapeóçwðó®Õí²€óí´€ó�˜rêccsžd}|dkr&tjƒ}d}tjj|ƒ}nBytj|ƒd}Wn.tk rf|sN‚tjd|t dd�YnX|rttj ƒ}z |VWd|r˜|tj ƒkr˜t |ƒXdS)NFTz+tests may fail, unable to create temp dir: é)rž) ÚtempfileÚmkdtempr„r…ÚrealpathÚmkdirr’rfr£r¤Úgetpidr)r…ÚquietZ dir_createdÚpidrcrcrdÚtemp_dirãs&   r1ccsftjƒ}ytj|ƒWn.tk rD|s,‚tjd|tdd�YnXztjƒVWdtj|ƒXdS)Nz)tests may fail, unable to change CWD to: r))rž)r„ÚgetcwdÚchdirr’rfr£r¤)r…r/Z saved_dirrcrcrdÚ change_cwd s  r4Útempcwdccs:t||d��$}t||d�� }|VWdQRXWdQRXdS)N)r…r/)r/)r1r4)rur/Z temp_pathZcwd_dirrcrcrdr$sÚumaskc cs&tj|ƒ}z dVWdtj|ƒXdS)N)r„r6)r6ZoldmaskrcrcrdrK8s  ÚdatacCsbtjj|ƒr|S|dk r&tjj||ƒ}tgtj}x*|D]"}tjj||ƒ}tjj|ƒr8|Sq8W|S)N)r„r…Úisabsr¯Ú TEST_HOME_DIRrnÚexists)rªZsubdirr…ZdnÚfnrcrcrdrIs    cCs(tj|tjtjBtjBƒ}tj|ƒdS)N)r„ÚopenÚO_WRONLYÚO_CREATÚO_TRUNCr)rªÚfdrcrcrdr[scCs,t|jƒƒ}dd„|Dƒ}dj|ƒ}d|S)NcSsg|] }d|‘qS)z%r: %rrc)Ú.0Zpairrcrcrdú cszsortdict..z, z{%s})ÚsortedrŠr¯)ÚdictrŠZ reprpairsZ withcommasrcrcrdr[`s  c Cs*ttdƒ}z|jƒS|jƒttƒXdS)NÚwb)r<rÚfilenorr)r®rcrcrdÚ make_bad_fdgs  rG)ÚlinenoÚoffsetc Csp|jtƒ�}t|ddƒWdQRX|j}|j|jƒ|dk rJ|j|j|ƒ|j|jƒ|dk rl|j|j|ƒdS)Nz Úexec)Ú assertRaisesÚ SyntaxErrorÚcompileZ exceptionZassertIsNotNonerHÚ assertEqualrI)ÚtestcaseZ statementrHrIÚcmršrcrcrdr&ss   c sVddl}ddl}ˆjddƒ‰|jj|ƒdjdƒd}tjjt |ƒ}‡‡‡fdd„}tjj |ƒr|||ƒ}|dk rt|St |ƒt dƒt rštd |tƒd �|jjƒ}tr´|jjdƒ|j|d d�}trâ|jjdƒd krâtj|d�}zBt|dƒ�.} |jƒ} x| �r| j| ƒ|jƒ} �qúWWdQRXWd|jƒX||ƒ}|dk �rF|Std|ƒ‚dS)NrÚcheckr‘ú/rcs>t|fˆžˆŽ}ˆdkr|Sˆ|ƒr2|jdƒ|S|jƒdS)Nr)r<Úseekr)r;r�)r™rQrðrcrdÚcheck_valid_file‡s z*open_urlresource..check_valid_fileZurlfetchz fetching %s ...)r®úAccept-EncodingÚgzipé)r§zContent-Encoding)ZfileobjrEzinvalid resource %réÿÿÿÿ)rUrV)Zurllib.requestZ urllib.parseÚpopÚparseZurlparserŸr„r…r¯Ú TEST_DATA_DIRr:rr!rr“rZrequestZ build_openerrVZ addheadersr‰r<ZheadersÚgetZGzipFileÚreadÚwriterr ) Zurlr™rðÚurllibrªr;rTr�ÚopenerÚoutÚsrc)r™rQrðrdrI~s<         c@s0eZdZdd„Zdd„Zedd„ƒZdd„Zd S) ÚWarningsRecordercCs||_d|_dS)Nr)Ú _warningsÚ_last)ÚselfZ warnings_listrcrcrdÚ__init__´szWarningsRecorder.__init__cCsDt|jƒ|jkr t|jd|ƒS|tjjkr0dStd||fƒ‚dS)Nrz%r has no attribute %rrX)r»rdrerŒrfÚWarningMessageÚ_WARNING_DETAILSr�)rfÚattrrcrcrdÚ __getattr__¸s  zWarningsRecorder.__getattr__cCs|j|jd…S)N)rdre)rfrcrcrdrf¿szWarningsRecorder.warningscCst|jƒ|_dS)N)r»rdre)rfrcrcrdÚresetÃszWarningsRecorder.resetN)r`rarbrgrkÚpropertyrfrlrcrcrcrdrc°s rcc cs tjdƒ}|jjdƒ}|r"|jƒtjdd�� }tjdjdƒt |ƒVWdQRXt |ƒ}g}xz|D]r\}}d} xH|dd…D]8}|j } t j |t| ƒt jƒr€t| j|ƒr€d} |j|ƒq€W| rf| rf|j||jfƒqfW|rðtd|d ƒ‚|�rtd |d ƒ‚dS) Nr‘Z__warningregistry__T)ÚrecordrfÚalwaysFzunhandled warning %srz)filter (%r, %s) did not catch any warning)rnÚ _getframeÚ f_globalsr\ÚclearrfrgryÚ simplefilterrcr{ÚmessageÚreÚmatchrtÚIÚ issubclassr”Úremover‰r`ÚAssertionError) Úfiltersr/ÚframeÚregistryÚwZreraiseZmissingrwÚcatÚseenZwarningrcrcrdÚ_filterwarningsÇs0    r�cOs.|jdƒ}|s$dtff}|dkr$d}t||ƒS)Nr/rÊT)r\ÚWarningr�)r{rþr/rcrcrdrRîs   rÊc csHtjdd��&}tjd||d�dV|r.tƒWdQRX|j|gƒdS)NT)rnro)rtÚcategory)rfrgrhÚ gc_collectrN)rOrtrƒZforce_gcÚwarnsrcrcrdÚcheck_no_warningssr†c csBtjdd�� }tjdtd�dVtƒWdQRX|j|gƒdS)NT)rnro)rƒ)rfrgrhÚResourceWarningr„rN)rOr…rcrcrdrSs c@s$eZdZdd„Zdd„Zdd„ZdS)rcGsNtjjƒ|_x<|D]4}|tjkrtj|}|j|kr>tj|j=tj|=qWdS)N)rnryÚcopyÚoriginal_modulesr`)rfZ module_namesZ module_namer‹rcrcrdrg?s      zCleanImport.__init__cCs|S)Nrc)rfrcrcrdÚ __enter__LszCleanImport.__enter__cGstjj|jƒdS)N)rnryrßr‰)rfÚ ignore_excrcrcrdÚ__exit__OszCleanImport.__exit__N)r`rarbrgrŠrŒrcrcrcrdr3s  c@sdeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dS)rTcCstj|_i|_dS)N)r„ÚenvironÚ_environÚ_changed)rfrcrcrdrgXszEnvironmentVarGuard.__init__cCs |j|S)N)rŽ)rfÚenvvarrcrcrdÚ __getitem__\szEnvironmentVarGuard.__getitem__cCs*||jkr|jj|ƒ|j|<||j|<dS)N)r�rŽr\)rfr�ÚvaluercrcrdÚ __setitem___s zEnvironmentVarGuard.__setitem__cCs2||jkr|jj|ƒ|j|<||jkr.|j|=dS)N)r�rŽr\)rfr�rcrcrdÚ __delitem__es  zEnvironmentVarGuard.__delitem__cCs |jjƒS)N)rŽÚkeys)rfrcrcrdr•lszEnvironmentVarGuard.keyscCs t|jƒS)N)ÚiterrŽ)rfrcrcrdÚ__iter__oszEnvironmentVarGuard.__iter__cCs t|jƒS)N)r»rŽ)rfrcrcrdÚ__len__rszEnvironmentVarGuard.__len__cCs |||<dS)Nrc)rfr�r’rcrcrdÚsetuszEnvironmentVarGuard.setcCs ||=dS)Nrc)rfr�rcrcrdÚunsetxszEnvironmentVarGuard.unsetcCs|S)Nrc)rfrcrcrdrŠ{szEnvironmentVarGuard.__enter__cGsJx<|jjƒD].\}}|dkr0||jkr:|j|=q ||j|<q W|jt_dS)N)r�rŠrŽr„r�)rfr‹ÚkÚvrcrcrdrŒ~s   zEnvironmentVarGuard.__exit__N)r`rarbrgr‘r“r”r•r—r˜r™ršrŠrŒrcrcrcrdrTSsc@s$eZdZdd„Zdd„Zdd„ZdS)Ú DirsOnSysPathcGs(tjdd…|_tj|_tjj|ƒdS)N)rnr…Úoriginal_valueÚoriginal_objectÚextend)rfÚpathsrcrcrdrg”szDirsOnSysPath.__init__cCs|S)Nrc)rfrcrcrdrŠ™szDirsOnSysPath.__enter__cGs|jt_|jtjdd…<dS)N)rŸrnr…rž)rfr‹rcrcrdrŒœszDirsOnSysPath.__exit__N)r`rarbrgrŠrŒrcrcrcrdr�ˆs r�c@s&eZdZdd„Zdd„Zddd„ZdS) r'cKs||_||_dS)N)r¶Úattrs)rfr¶rþrcrcrdrg¦szTransientResource.__init__cCs|S)Nrc)rfrcrcrdrŠªszTransientResource.__enter__NcCsT|dk rPt|j|ƒrPx:|jjƒD]$\}}t||ƒs4Pt||ƒ|kr Pq Wtdƒ‚dS)Nz%an optional resource is not available)rxr¶r¢rŠrÜrŒr )rfZtype_r’Ú tracebackrjZ attr_valuercrcrdrŒ­s zTransientResource.__exit__)NNN)r`rarbrgrŠrŒrcrcrcrdr'¡s)Úerrnog>@)r§Úerrnosc #spd d!d"d#d$d%g}d'd)d+d-d.g}td|ƒ‰|‰g‰ˆsRdd„|Dƒ‰dd„|Dƒ‰‡‡‡fdd„}tjƒ}zôy|dk r€tj|ƒdVWnÒtjk �rÎ}z&tr¸tjj ˆj ddƒˆ|‚WYdd}~XnŽt k �rZ}zpx^|j }t |ƒdk�rt |dt ƒ�r|d}n*t |ƒdk�r8t |dt ƒ�r8|d}nP�qâW||ƒ‚WYdd}~XnXWdtj|ƒXdS)/NÚ ECONNREFUSEDéoÚ ECONNRESETéhÚ EHOSTUNREACHéqÚ ENETUNREACHéeÚ ETIMEDOUTénÚ EADDRNOTAVAILécÚ EAI_AGAINr)ÚEAI_FAILr�Ú EAI_NONAMEr‘Ú EAI_NODATAéÚ WSANO_DATAéü*zResource %r is not availablecSsg|]\}}tt||ƒ‘qSrc)rŒr¤)rAruÚnumrcrcrdrBÝsz&transient_internet..cSsg|]\}}tt||ƒ‘qSrc)rŒr)rArur¹rcrcrdrBßscs¬t|ddƒ}t|tjƒsˆt|tjƒr,|ˆksˆt|tjjƒrTd|jkoNdknsˆt|tjj ƒr€d|j ksˆd|j ksˆd|j ksˆ|ˆkr¨t s¢t j jˆjddƒˆ|‚dS) Nr¤iôiWÚConnectionRefusedErrorÚ TimeoutErrorÚEOFErrorrÚ )rŒÚ isinstancerr§Zgaierrorr_ÚerrorZ HTTPErrorÚcodeZURLErrorrãrrnÚstderrr^r™)ršÚn)Úcaptured_errnosÚdeniedÚ gai_errnosrcrdÚ filter_errorâs     z(transient_internet..filter_errorrr½r)r¦r§)r¨r©)rªr«)r¬r­)r®r¯)r°r±éýÿÿÿ)r²rÇéüÿÿÿ)r³rÈéþÿÿÿ)r´rÉéûÿÿÿ)rµrÊ)r·r¸)r rZgetdefaulttimeoutZsetdefaulttimeoutÚnntplibZNNTPTemporaryErrorrrnrÁr^r™r’r»r¾) Z resource_namer§r¥Zdefault_errnosZdefault_gai_errnosrÆZ old_timeoutršÚarc)rÃrÄrÅrdr+ÂsP     c csFddl}tt|ƒ}tt||jƒƒztt|ƒVWdtt||ƒXdS)Nr)ÚiorŒrnÚsetattrÚStringIO)Z stream_namerÍZ orig_stdoutrcrcrdÚcaptured_outputs  rÐcCstdƒS)Nr�)rÐrcrcrcrdrscCstdƒS)NrÁ)rÐrcrcrcrdr%scCstdƒS)NÚstdin)rÐrcrcrcrdr.s cCs*tjƒtrtjdƒtjƒtjƒdS)Ngš™™™™™¹?)ÚgcZcollectr@r¡r¢rcrcrcrdr„;s  r„c cs.tjƒ}tjƒz dVWd|r(tjƒXdS)N)rÒÚ isenabledÚdisableÚenable)Zhave_gcrcrcrdÚ disable_gcKs  rÖcCs:tjdƒp d}d}x|jƒD]}|jdƒr|}qW|dkS)NÚ PY_CFLAGSrÊz-Oú-O0ú-Og)rÊrØrÙ)Ú sysconfigÚget_config_varrŸrp)ZcflagsZ final_optrÌrcrcrdÚpython_is_optimizedVs  rÜZnPZ0nÚgettotalrefcountZ2PZ0PrÂcCstjt|tƒS)N)ÚstructÚcalcsizeÚ_headerÚ_align)ÚfmtrcrcrdÚ calcobjsizegsrãcCstjt|tƒS)N)rÞrßÚ_vheaderrá)rârcrcrdÚ calcvobjsizejsråéé cCspddl}tj|ƒ}t|ƒtkr(|jt@sBt|ƒtkrLt|ƒjt@rL||j7}dt|ƒ||f}|j|||ƒdS)Nrz&wrong size for %s: got %d, expected %d) Ú _testcapirnÚ getsizeofrâÚ __flags__Ú_TPFLAGS_HEAPTYPEÚ_TPFLAGS_HAVE_GCZSIZEOF_PYGC_HEADrN)ÚtestÚoÚsizerèrÍrwrcrcrdÚ check_sizeofqs  rðcs‡‡fdd„}|S)Ncs$‡‡‡fdd„}ˆj|_ˆj|_|S)Ncsžy ddl}t|ˆƒ}|j|ƒ}Wn(tk r6‚YnBd}}Yn0Xx,ˆD]$}y|j||ƒPWqPYqPXqPWz ˆ||ŽS|r˜|r˜|j||ƒXdS)Nr)ÚlocalerŒÚ setlocaler�)r™ÚkwdsrñrƒZ orig_localeÚloc)Úcatstrr˜ÚlocalesrcrdÚinner‚s$     z1run_with_locale..decorator..inner)r`Ú__doc__)r˜r÷)rõrö)r˜rdrù�sz"run_with_locale..decoratorrc)rõrörùrc)rõrördrU€scs‡fdd„}|S)Ncs"‡‡fdd„}ˆj|_ˆj|_|S)NcsŠy tj}Wntk r(tjdƒ‚YnXdtjkr@tjd}nd}ˆtjd<|ƒz ˆ||ŽS|dkrrtjd=n |tjd<tjƒXdS)Nztzset requiredZTZ)r¡Útzsetr�rrrsr„r�)r™rórùZorig_tz)r˜Útzrcrdr÷¦s       z-run_with_tz..decorator..inner)r`rø)r˜r÷)rú)r˜rdrù¥szrun_with_tz..decoratorrc)rúrùrc)rúrdr\¤s cCs”dttdtdœ}tjd|tjtjBƒ}|dkr>td|fƒ‚tt|j dƒƒ||j dƒj ƒƒ}|a |t krrt }|t dkrŒtd|fƒ‚|adS)Ni)r›ÚmÚgÚtz(\d+(\.\d+)?) (K|M|G|T)b?$zInvalid memory limit %rrr)z$Memory limit %r too low to be useful)Ú_1MÚ_1GrurvÚ IGNORECASEÚVERBOSErïrîÚfloatÚgroupÚlowerÚreal_max_memuseÚMAX_Py_ssize_tÚ_2Gr)ÚlimitZsizesrûZmemlimitrcrcrdrYÎs $ c@s$eZdZdd„Zdd„Zdd„ZdS)Ú_MemoryWatchdogcCsdjtjƒd�|_d|_dS)Nz/proc/{pid}/statm)r0F)rár„r.ÚprocfileÚstarted)rfrcrcrdrgèsz_MemoryWatchdog.__init__cCs‚yt|jdƒ}Wn<tk rL}z tjdj|ƒtƒtjj ƒdSd}~XnXt dƒ}t j tj |g|t jd�|_|jƒd|_dS)NÚrz!/proc not available for stats: {}zmemory_watchdog.py)rÑrÁT)r<r r’rfr£rár¤rnrÁÚflushrÚ subprocessÚPopenÚ executableZDEVNULLÚ mem_watchdogrr )rfr�rçZwatchdog_scriptrcrcrdÚstartìs   z_MemoryWatchdog.startcCs|jr|jjƒ|jjƒdS)N)r rZ terminateÚwait)rfrcrcrdÚstopûs z_MemoryWatchdog.stopN)r`rarbrgrrrcrcrcrdr ãsr cs‡‡‡fdd„}|S)Ncs ‡‡‡fdd„‰ˆˆ_ˆˆ_ˆS)Nc sžˆj}ˆj}tsd}n|}ts$ˆ rFt||krFtjd||dƒ‚tr|tr|tƒtdj||dd�ƒtƒ}|j ƒnd}z ˆ||ƒS|r˜|j ƒXdS) Niz'not enough memory: %.1fG minimum neededir)z* ... expected peak memory use: {peak:.1f}G)Zpeaki@i@) rïÚmemuserrrrsrr“rár rr)rfrïrÚmaxsizeZwatchdog)Údry_runr�rörcrdrös*    z.bigmemtest..decorator..wrapper)rïr)r�)rrrï)r�rördrùszbigmemtest..decoratorrc)rïrrrùrc)rrrïrdr3s !cs‡fdd„}|S)NcsDttkr8td kr$td kr$tjdƒ‚q@tjdtd ƒ‚nˆ|ƒSdS) Nr‘é?réz-not enough memory: try a 32-bit build insteadz'not enough memory: %.1fG minimum neededir)llÿÿÿÿli@)rrrrrs)rf)r�rcrdrö3sz!bigaddrspacetest..wrapperrc)r�rörc)r�rdr41s c@seZdZdd„ZdS)r,cCstjƒ}||ƒ|S)N)rrZ TestResult)rfrírÍrcrcrdÚrunDszBasicTestRunner.runN)r`rarbrrcrcrcrdr,CscCs|S)Nrc)rŽrcrcrdÚ_idIsrcCs<|dkrtƒ rtjtjƒSt|ƒr(tStjdj|ƒƒSdS)Nrézresource {0!r} is not enabled)rÝrrÚskiprãr rrá)rèrcrcrdÚrequires_resourceLs  rcCs&trt|krtjd|tfƒStSdS)Nz%s at Android API level %d)rAÚ_ANDROID_API_LEVELrrrr)Úlevelrãrcrcrdr>Ts  cCstdd�|ƒS)NT)Úcpython)Ú impl_detail)rírcrcrdr5[scKsVtf|ŽrtS|dkrLt|ƒ\}}|r,d}nd}t|jƒƒ}|jdj|ƒƒ}tj|ƒS)Nz*implementation detail not available on {0}z%implementation detail specific to {0}z or ) rBrÚ _parse_guardsrCr•rár¯rrr)rwÚguardsZ guardnamesÚdefaultrcrcrdr!as   r!c CsTtdkr:ddl}y|jƒdaWntk r8daYnXd}trF|Stj|ƒ|ƒS)NrTFz6requires a functioning shared semaphore implementation)Ú_have_mp_queueÚmultiprocessingZQueuermrrr)rír&rwrcrcrdr?os cCs*|sddidfSt|jƒƒd}|| fS)Nr TFr)r{Úvalues)r#Zis_truercrcrdr"~s r"cKs t|ƒ\}}|jtjƒjƒ|ƒS)N)r"r\roZpython_implementationr)r#r$rcrcrdrBˆs cs,ttdƒsˆStjˆƒ‡fdd„ƒ}|SdS)NÚgettracec s.tjƒ}ztjdƒˆ||ŽStj|ƒXdS)N)rnr(Úsettrace)r™rþZoriginal_trace)r˜rcrdrö˜s   zno_tracing..wrapper)rÜrnr÷rø)r˜rörc)r˜rdÚ no_tracing“s r*cCs tt|ƒƒS)N)r*r5)rírcrcrdÚ refcount_test£sr+cCsRg}xB|jD]8}t|tjƒr2t||ƒ|j|ƒq ||ƒr |j|ƒq W||_dS)N)Z_testsr¾rrÚ TestSuiteÚ _filter_suiter‰)ÚsuiteZpredZnewtestsrírcrcrdr-®s    r-cCs®ttjttdk d�}|j|ƒ}tdk r4tj|jƒƒ|js>t ‚|j ƒsªt |j ƒdkrl|j rl|j dd}n6t |j ƒdkr’|j r’|j dd}nd}ts¢|d7}t|ƒ‚dS)N)Ú verbosityZcapture_outputrrzmultiple errors occurredz!; run in verbose mode for details)rrnr�rÚjunit_xml_listrr‰Zget_xml_elementZtestsRunr Z wasSuccessfulr»ÚerrorsZfailuresr )r.ZrunnerrÍršrcrcrdÚ _run_suiteºs"  r2cCstdkr dSt|jƒƒSdS)NT)Ú_match_test_funcÚid)rírcrcrdÚ match_test×sr5cCsd|kotjd|ƒ S)Nrxz[?*\[\]])ruÚsearch)rƒrcrcrdÚ_is_full_match_testßsr7csr|tkr dS|sd}f}nHttt|ƒƒr4t|ƒj}n.djttj|ƒƒ}t j |ƒj ‰‡fdd„}|}t |ƒa|a dS)Nú|cs$ˆ|ƒr dSttˆ|jdƒƒƒSdS)NTrx)ÚanyrírŸ)Ztest_id)Ú regex_matchrcrdÚmatch_test_regexþsz)set_match_tests..match_test_regex)Ú_match_test_patternsÚallrír7r™Ú __contains__r¯ÚfnmatchÚ translaterurMrvrqr3)Zpatternsr˜Zregexr;rc)r:rdÚset_match_testsés   rAcGs”tjtjf}tjƒ}xh|D]`}t|tƒrT|tjkrJ|jtjtj|ƒƒqzt dƒ‚qt||ƒrj|j|ƒq|jtj |ƒƒqWt |t ƒt |ƒdS)Nz)str arguments must be keys in sys.modules)rrr,ZTestCaser¾rtrnryZaddTestZ findTestCasesrïZ makeSuiter-r5r2)ÚclassesZ valid_typesr.Úclsrcrcrdr-s        cCsdS)NrcrcrcrcrdÚ_check_docstrings(srDÚWITH_DOC_STRINGSztest requires docstringscCs`ddl}|dkrt}nd}|j|||d�\}}|rBtd||fƒ‚trXtd|j|fƒ||fS)Nr)rÚ optionflagsz%d of %d doctests failedz,doctest (%s) ... %d tests with zero failures)ÚdoctestrZtestmodr r“r`)r‹r/rFrGr�rýrcrcrdr.9scCs tjjƒfS)N)rnryrˆrcrcrcrdÚ modules_setupTsrHcCs:dd„tjjƒDƒ}tjjƒtjj|ƒtjj|ƒdS)NcSs"g|]\}}|jdƒr||f‘qS)z encodings.)rp)rAr›rœrcrcrdrB[sz#modules_cleanup..)rnryrŠrrrß)Z oldmodulesZ encodingsrcrcrdÚmodules_cleanupWs  rIcCs"trtjƒtjjƒfSdffSdS)Nr)Ú_threadÚ_countÚ threadingÚ _danglingrˆrcrcrcrdrNzscGsJtsdSd}x8t|ƒD],}tjƒtjf}||kr2PtjdƒtƒqWdS)Nédg{®Gáz„?)rJÚrangerKrLrMr¡r¢r„)Zoriginal_valuesZ _MAX_COUNTÚcountr'rcrcrdrO€s cs"tsˆStjˆƒ‡fdd„ƒ}|S)Nc stƒ}zˆ|ŽSt|ŽXdS)N)rNrO)r™Úkey)r˜rcrdrù”szreap_threads..decorator)rJr÷rø)r˜rùrc)r˜rdrPŒsçN@ccs–tjƒ}z dVWdtjƒ}||}xjtjƒ}||kr8Ptjƒ|kr|tjƒ|}d||›d|d›d|›d|›d� }t|ƒ‚tjdƒtƒq&WXdS)Nz!wait_threads() failed to cleanup z threads after z.1fz seconds (count: z , old count: ú)g{®Gáz„?)rJrKr¡Z monotonicrzr¢r„)r§Z old_countZ start_timeZdeadlinerPZdtrwrcrcrdÚwait_threads_exitžs   $ rTc CsZttdƒrVd}xFy2tj|tjƒ\}}|dkr.Ptd|tjd�WqPYqXqWdS)NÚwaitpidrrz2Warning -- reap_children() reaped child process %s)r®rX)rÜr„rUÚWNOHANGr“rnrÁ)Z any_processr0ZstatusrcrcrdrLÁs ccs*t|ƒ}g}zZy$x|D]}|jƒ|j|ƒqWWn*trVtdt|ƒt|ƒfƒ‚YnXdVWdzˆ|rt|ƒtjƒ}}xltddƒD]^}|d7}x$|D]}|jt |tjƒdƒƒqžWdd„|Dƒ}|sÒPtrŒtdt|ƒ|fƒqŒWWdd d„|Dƒ}|�r"t j t j ƒtd t|ƒƒ‚XXdS) Nz/Can't start %d threads, only %d threads startedrré<g{®Gáz„?cSsg|]}|jƒr|‘qSrc)ÚisAlive)rArýrcrcrdrBîsz!start_threads..z7Unable to join %d threads during a period of %d minutescSsg|]}|jƒr|‘qSrc)rX)rArýrcrcrdrBõszUnable to join %d threads)r{rr‰rr“r»r¡rOr¯ÚmaxÚ faulthandlerZdump_tracebackrnr�rz)ZthreadsZunlockr rýZendtimeZ starttimer§rcrcrdrQÖs>     c csnt||ƒrtt|ƒƒtt|ƒƒ}|r(|t|ƒ8}tdd„|Dƒƒ}|S)Ncss(|] }|jdƒ s|jdƒr|VqdS)Ú_Ú__N)rpÚendswith)rArûrcrcrdú é sz&detect_api_mismatch..)r™rx)Zref_apiZ other_apireZ missing_itemsrcrcrdr<ß s  cCs |dkr|jf}nt|tƒr"|f}t|ƒ}xbt|ƒD]V}|jdƒs4||krLq4t||ƒ}t|ddƒ|ks€t|dƒ r4t|tj ƒ r4|j |ƒq4W|j |j |ƒdS)Nrƒra) r`r¾rtr™rxrprŒrÜÚtypesÚ ModuleTypeÚaddZassertCountEqualÚ__all__)Z test_caser‹Zname_of_moduleZextraZ blacklistZexpectedrurŽrcrcrdr=î s)    c@s$eZdZdZdZdd„Zdd„ZdS)rZNc Csrtjjdƒrºddl}|jj|_d}|jj|ƒ|_|jj|j|Bƒyddl }|j Wnt t fk rlYnLXi|_ xø|j|j|jgD].}|j ||jƒ}|j||jƒ}||f|j |<q†Wn´tdk �r y*tjtjƒ|_tjtjd|jdfƒWnttfk �rYnXtjdk�rndddd g}tj|tjtjd �}|�|jƒd} WdQRX| jƒd k�rntd d dd�|S)Nrœrr‘rrÓz/usr/bin/defaultsr]zcom.apple.CrashReporterZ DialogType)r�rÁs developerz:this test triggers the Crash Reporter, that is intentionalrÊT)Úendr ) rnrorprºr¼r½Ú_k32Ú SetErrorModeÚ old_valueÚmsvcrtÚCrtSetReportModer�rmÚ old_modesÚCRT_WARNÚ CRT_ERRORÚ CRT_ASSERTZCRTDBG_MODE_FILEÚCrtSetReportFileZCRTDBG_FILE_STDERRrèZ getrlimitÚ RLIMIT_COREÚ setrlimitrïr’rrÚPIPEZ communicaterar“) rfrºZSEM_NOGPFAULTERRORBOXr�Ú report_typeÚold_modeÚold_fileÚcmdÚprocr�rcrcrdrŠ2 sN        zSuppressCrashReport.__enter__c Gs¦|jdkrdStjjdƒrl|jj|jƒ|jr¢ddl}xj|jjƒD]$\}\}}|j ||ƒ|j ||ƒqBWn6t dk r¢yt j t j |jƒWnttfk r YnXdS)Nrœr)rŽrnrorprŒr�r‘r�rŠr�r•rèr—r–rïr’)rfr‹r�r™ršr›rcrcrdrŒs s   zSuppressCrashReport.__exit__)r`rarbrŽr‘rŠrŒrcrcrcrdrZ) sAc srtˆˆƒd‰yˆjˆ‰Wn$ttfk r@tˆˆdƒ‰YnXd‰‡‡‡‡fdd„}|j|ƒtˆˆ|ƒdS)NFTcs ˆrtˆˆˆƒn tˆˆƒdS)N)rÎr[rc)Ú attr_is_localÚ attr_nameÚobject_to_patchrŽrcrdÚcleanupž szpatch..cleanup)rŒrjr�rZ addCleanuprÎ)Z test_instancer rŸZ new_valuer¡rc)ržrŸr rŽrdÚpatchˆ s  r¢c CsFy ddl}Wntk r YnX|jƒr4tjdƒ‚ddl}|j|ƒS)NrzUrun_in_subinterp() cannot be used if tracemalloc module is tracing memory allocations)Ú tracemallocrmZ is_tracingrrrsrèÚrun_in_subinterp)rÀr£rèrcrcrdr¤ª s  r¤csHG‡‡fdd„d|ƒ}d‰|||Žƒ‰|jttˆƒtƒ|jˆƒdS)NcseZdZ‡‡fdd„ZdS)z%check_free_after_iterating..Ac s*d‰y tˆƒWntk r$YnXdS)NT)ÚnextÚ StopIteration)rf)ÚdoneÚitrcrdÚ__del__À s  z-check_free_after_iterating..A.__del__N)r`rarbr©rc)r§r¨rcrdÚA¿ srªF)rKr¦r¥r„Z assertTrue)rír–rCr™rªrc)r§r¨rdÚcheck_free_after_iterating¾ s   r«cCs|ddlm}m}m}|jƒ}|j|ƒxP|jD]F}|r@||kr@q.t||ƒ}|rPn |dkrZq.|j|dƒdkr.|dSq.WdS)Nr)Ú ccompilerrÚÚspawn) Z distutilsr¬rÚr­Z new_compilerZcustomize_compilerZ executablesrŒZfind_executable)Z cmd_namesr¬rÚr­Zcompilerrurœrcrcrdr^Ñ s     cCs@d}tr6||kr6tdkr.tjddgƒjƒdkatr6|}tj|ƒS)Ngñh㈵øä>Zgetpropzro.kernel.qemuó1)rAÚ_is_android_emulatorrZ check_outputrarnrD)ZintervalZminimum_intervalrcrcrdrDë s c cs>tjjƒ}tjƒ}ztjƒdVWd|r8tj|dd�XdS)NT)r®Z all_threads)rnr²rFrZÚ is_enabledrÔrÕ)r@r°rcrcrdÚdisable_faulthandlerù s  r±c /Cs€tjjd ƒr8ytjdƒ}t|ƒdStk r6YnXd}ttdƒrjytjdƒ}Wnt k rhYnXd}tjdkrÒyd dl }|j Wnt t fk r¢Yn0Xi}x(|j|j|jfD]}|j |d ƒ||<qºWzpd }xft|ƒD]Z}ytj|ƒ}Wn4t k �r(}z|jtjk�r‚WYdd}~XqâXtj|ƒ|d7}qâWWd|dk �rzx*|j|j|jfD]}|j |||ƒ�q`WX|S) NÚlinuxÚfreebsdz /proc/self/fdréÚsysconfÚ SC_OPEN_MAXrr)r²r³)rnrorpr„r r»rÁrÜrµr’r�r�r�rmr’r“r”rOÚdupr¤ZEBADFr) ÚnamesZMAXFDr‘r�r™rPr@Zfd2rçrcrcrdr_ sP          c@s$eZdZdd„Zdd„Zdd„ZdS)Ú SaveSignalsc Csjddl}||_ttd|jƒƒ|_x>dD]6}yt||ƒ}Wntk rNw&YnX|jj|ƒq&Wi|_dS)NrrÚSIGKILLÚSIGSTOP)rºr») Úsignalr{rOÚNSIGÚsignalsrŒr�ryrf)rfr¼ZsignameÚsignumrcrcrdrgM s zSaveSignals.__init__cCs4x.|jD]$}|jj|ƒ}|dkr"q||j|<qWdS)N)r¾r¼Ú getsignalrf)rfr¿ÚhandlerrcrcrdÚsaveZ s   zSaveSignals.savecCs*x$|jjƒD]\}}|jj||ƒq WdS)N)rfrŠr¼)rfr¿rÁrcrcrdÚrestoref szSaveSignals.restoreN)r`rarbrgrÂrÃrcrcrcrdr¹D s   r¹c@s$eZdZdd„Zdd„Zdd„ZdS)ÚFakePathcCs ||_dS)N)r…)rfr…rcrcrdrgn szFakePath.__init__cCsd|j›d�S)Nz )r…)rfrcrcrdÚ__repr__q szFakePath.__repr__cCs6t|jtƒs$t|jtƒr,t|jtƒr,|j‚n|jSdS)N)r¾r…Ú BaseExceptionrârx)rfrcrcrdÚ __fspath__t s    zFakePath.__fspath__N)r`rarbrgrÆrÈrcrcrcrdrÄk srÄc cs.tjƒ}ztj|ƒdVWdtj|ƒXdS)N)rnÚget_int_max_str_digitsÚset_int_max_str_digits)Z max_digitsZcurrentrcrcrdÚadjust_int_max_str_digits| s   rËcCsdd„tddƒDƒdgS)NcSsg|] }t|ƒ‘qSrc)Úchr)rArÃrcrcrdrB‹ sz)control_characters_c0..ré ú)rOrcrcrcrdÚcontrol_characters_c0‡ srÏ)T)F)F)N)Nii@i@i@ii) rrrrrrrrrr r!)r%r#r&r'r()NF)F)r5F)N)Fi@ii)T)N)Nr)rR)N(r`rmÚcollections.abcÚ collectionsÚ contextlibZdatetimer¤rZr?r÷rÒrýrlÚimportlib.utilrÍZlogging.handlersrerËr„rorurÀrr–rÞrrnrÚr*r¡r‡rrZ urllib.errorr_rfZ testresultrrJrLZmultiprocessing.processr&ÚzlibrVÚbz2ZlzmarèrûrŠràr r r rsr Úcontextmanagerrjr r~r€r:r;rr6rrrrr0rr�rrrr›rpr©r«r­r¹r¿rr¬rrÉrrÝr r!rúr"r#r$r%rErrr rGrHrJrrFrrZ SOCK_MAX_SIZEZ skipUnlessrÚ __getformat__r7r9r0r1r2r@rÛrrArCrurrár.Z FS_NONASCIIÚ characterÚfsdecodeÚfsencodeÚ UnicodeErrorZTESTFN_UNICODEZ unicodedataÚ normalizeÚgetfilesystemencodingZTESTFN_ENCODINGZTESTFN_UNENCODABLEZgetwindowsversionÚencodeÚUnicodeEncodeErrorr“ÚdecodeÚUnicodeDecodeErrorZTESTFN_UNDECODABLEZTESTFN_NONASCIIr2rr]r}r1r4rrÜrKr…r†rÆr‡ZTEST_SUPPORT_DIRr9r¯r[rrr[rGr&rIÚobjectrcr�rRr‚r†rSrÚabcÚMutableMappingrTr�r'r’r®r(r¨r)r*r+rÐrrrr„rÖrÜràrárärãrårìrërðrUr\rþrÿrZ_4GrrrYr r3r4r,rrr>r5r!r%r?r"rBr*r+r-r2r3r<r5r7rAr-rDZMISSING_C_DOCSTRINGSrøZHAVE_DOCSTRINGSZrequires_docstringsr.rHrIZenvironment_alteredrNrOrPrTrLrQrWrVrbZskipIfZrequires_type_collectingrcrdrfrgrMrXrrrr/rzr|r8r~rr<r=rZr¢r¤r«r^r¯rDr±r_r¹rÄrËrÏrcrcrcrdÚsÔ                      2   !  J    > %                 %      2 ' 5M           $ # 0           (        " #   "    :_"  ;'