o
    g                    @   sn  	 e d kr	edddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlmZ zddlmZ W n eyN   dZY nw g dZdZejd	krbd
ejv rbdZnejdkridZdZdZdZG dd deZG dd deZG dd deZG dd deZG dd dejZdd Zdd Z dd Z!dZ"dZ#da$da%dZ&d Z'da(d!d" Z)d#d$ Z*d%d& Z+d'd( Z,d)d* Z-dd+d,Z.d-d. Z/d/d0 Z0d1d2 Z1d3d4 Z2d5d6 Z3d7Z4d8Z5e6e78d99d:d;Z:dd=d>Z;dd@dAZ<d dCdDZ=ddFdGZ>e6edHZ?ej9dIZ@eAedJZBejdKvr$eBr!dLndMZCndZCdNZDd ZEd ZFejGHejGIeJZKejGHeKZLejGMeLdOZNdPdQ ZOddRdSZPdTdU ZQddddWdXdYZRdZd[ ZSejTd\d] ZUd^d_ ZVd`da ZWdbdc ZXddde ZYejTdfdg ZZdhdi Z[djZ\dkZ]eAedlrdme\ Z\dnZ]e\do Z^dpdq Z_drds Z`dtZaduZbdvdw Zcdxdy Zddzd{ Zed|Zfd}ef Zgd~eg Zhdeg ZiejjZkdd ZlG dd dZmdddZndd ZoG dd dZpdd Zqdd Zrdd ZsdddZtdd Zudd Zvdd Zwdd Zxdd Zydd Zzda{da|da}dd Z~dd ZdddZdd Zdd Zdd Zev o1ejd	ko1ed Zejduo:e Ze6edZdddZdd Zd add ZejTdd ZejTdd Zdd Zdd ZG dd deZdadd ZG dd dZdd ZddĜddƄZ		ÐdddȄZdddʄZG dd̄ d̃Zdd΄ ZddЄ Zddd҄Zg fddԄZdaddք ZejTdd؄ ZG ddڄ dڃZdd܄ ZG ddބ dރZe ZG dd dZe ZejG dd dZe ZejG dd dZe Zdd ZejjZdd ZG dd dZddddZdd ZejTd	ddZdd ZdededefddZdeddfddZdS (
  ztest.supportz.support must be imported from the test package    N   )get_test_runner)unicode_legacy_string)@PIPE_MAX_SIZEverbose
max_memuseuse_resourcesfailfastError
TestFailedTestDidNotRunResourceDeniedrecord_original_stdoutget_original_stdoutcaptured_stdoutcaptured_stdincaptured_stderris_resource_enabledrequiresrequires_freebsd_versionrequires_linux_versionrequires_mac_vercheck_syntax_errorBasicTestRunnerrun_unittestrun_doctestrequires_gziprequires_bz2requires_lzma
bigmemtestbigaddrspacetestcpython_onlyget_attributerequires_IEEE_754requires_zlibanticipate_failureload_package_testsdetect_api_mismatchcheck__all__skip_if_buggy_ucrt_strfptimecheck_disallow_instantiation	is_jython
is_androidcheck_impl_detail
unix_shellsetswitchintervalopen_urlresourcereap_childrenrun_with_locale	swap_itemfindfile	swap_attrMatcherset_memlimitSuppressCrashReportsortdictrun_with_tzPGOmissing_compiler_executable	ALWAYS_EQNEVER_EQLARGESTSMALLESTLOOPBACK_TIMEOUTINTERNET_TIMEOUTSHORT_TIMEOUTLONG_TIMEOUTg      @win32z 32 bit (ARM)
   vxworksg      N@g      >@g     r@c                   @      e Zd ZdS )r
   N__name__
__module____qualname__ rM   rM   K/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/test/support/__init__.pyr
   g       r
   c                   @   rH   )r   NrI   rM   rM   rM   rN   r   j   rO   r   c                       s&   e Zd Z	  fddZdd Z  ZS )TestFailedWithDetailsc                    s&   || _ || _|| _t ||| d S N)msgerrorsfailuressuper__init__)selfrR   rS   rT   	__class__rM   rN   rV   o   s   zTestFailedWithDetails.__init__c                 C   s   | j S rQ   )rR   rW   rM   rM   rN   __str__u   s   zTestFailedWithDetails.__str__)rJ   rK   rL   rV   r[   __classcell__rM   rM   rX   rN   rP   m   s    rP   c                   @   rH   )r   NrI   rM   rM   rM   rN   r   x   rO   r   c                   @   rH   )r   NrI   rM   rM   rM   rN   r   {   rO   r   c                 C   s   	 | rt jS dd S )Nc                 S      | S rQ   rM   frM   rM   rN   <lambda>   s    z$anticipate_failure.<locals>.<lambda>)unittestZexpectedFailure)Z	conditionrM   rM   rN   r%      s   r%   c                 C   sH   	 |d u rd}t jt jt jt}|j| ||d}|| |S )Nztest*)Z	start_dirZtop_level_dirpattern)ospathdirname__file__ZdiscoverZaddTests)Zpkg_dirloaderZstandard_testsrb   Ztop_dirZpackage_testsrM   rM   rN   r&      s   

r&   c                 C   s4   	 zt | |}W |S  ty   td| |f w )Nzobject %r has no attribute %r)getattrAttributeErrorra   SkipTest)objnameZ	attributerM   rM   rN   r"      s   r"   Fc                 C   s   | a d S rQ   )_original_stdout)stdoutrM   rM   rN   r      s   r   c                   C   s
   t ptjS rQ   )rm   sysrn   rM   rM   rM   rN   r         
r   c              
   G   st   z|| W S  t y9 } z(tdkr$td|jj|f  td|j|f  t| tj || W  Y d }~S d }~ww )N   z%s: %szre-run %s%r)	OSErrorr   printrY   rJ   rc   chmodstatS_IRWXU)rd   funcargserrrM   rM   rN   
_force_run   s   
rz   c               
      s  t tdrtjS dd l} d }tjdr|  rd}ntjdrpdd ldd ld}d}G fdddj	}j
j}| }|sF | }j }||||||}	|	sf t|j|@ sod}nHtjd	krdd
lm}
m m}m	} ddlm} |
|d}| dkrd}n!G  fddd|}| }||}||dk s||dk rd}|szddlm} | }|   |!  |"  W n- t#y } z!t$|}t%|dkr|d d d }d&t'|j(|}W Y d }~nd }~ww |t_)| t_tjS )Nresultr   winz(gui is not available on Windows IoT Corer   c                       s.   e Zd Zd jjfd jjfd jjfgZdS )z*_is_gui_available.<locals>.USEROBJECTFLAGSZfInheritZ	fReserveddwFlagsN)rJ   rK   rL   wintypesZBOOLDWORD_fields_rM   )ctypesrM   rN   USEROBJECTFLAGS   s
    


r   z,gui not available (WSF_VISIBLE flag not set)darwin)cdllc_intpointer	Structure)find_libraryZApplicationServicesz0gui tests cannot run without OS X window managerc                       s   e Zd Zd fd fgZdS )z._is_gui_available.<locals>.ProcessSerialNumberZhighLongOfPSNZlowLongOfPSNN)rJ   rK   rL   r   rM   )r   rM   rN   ProcessSerialNumber   s    r   z#cannot run without OS X gui process)Tk2   z [...]zTk unavailable due to {}: {})*hasattr_is_gui_availabler{   platformro   
startswithZwin32_is_iotr   Zctypes.wintypesr   ZwindllZuser32ZGetProcessWindowStationZWinErrorr~   r   ZGetUserObjectInformationWZbyrefZsizeofboolr}   r   r   r   Zctypes.utilr   ZLoadLibraryZCGMainDisplayIDZGetCurrentProcessZSetFrontProcesstkinterr   ZwithdrawupdateZdestroy	ExceptionstrlenformattyperJ   reason)r   r   Z	UOI_FLAGSZWSF_VISIBLEr   dllhZuofZneededresr   r   r   r   Zapp_servicesr   ZpsnZpsn_pr   rooteZ
err_stringrM   )r   r   rN   r      sz   


r   c                 C   s   	 t d u p| t v S rQ   )r   resourcerM   rM   rN   r     s   r   c                 C   sB   	 t | s|d u rd|  }t|| dkrt sttjd S d S )Nz"Use of the %r resource not enabledgui)r   r   r   r   )r   rR   rM   rM   rN   r     s   
r   c                 C   s   	 dd l }dtt|}| ddd }| | kr:zttt|d}W n t	y4   d}Y nw ||k }nd}t
||  d| d| S )Nr   .-r   Fz	 version z or higher required, not )r   joinmapr   releasesplitsystemtupleint
ValueErrorra   ZskipIf)sysnamemin_versionr   min_version_txtversion_txtversionskiprM   rM   rN   _requires_unix_version(  s$   
r   c                  G      	 t d| S )NZFreeBSDr   r   rM   rM   rN   r   C     
r   c                  G   r   )NZLinuxr   r   rM   rM   rN   r   L  r   r   c                        	  fdd}|S )Nc                    s"   t   fdd}|_|S )Nc                     s   t jdkr:dd l}| d }zttt|d}W n	 ty$   Y nw |k r:dtt	}t
d||f  | i |S )Nr   r   r   z&Mac OS X %s or higher required, not %s)ro   r   Zmac_verr   r   r   r   r   r   r   ra   rj   )rx   kwr   r   r   r   )rw   r   rM   rN   wrapper]  s    
z4requires_mac_ver.<locals>.decorator.<locals>.wrapper)	functoolswrapsr   rw   r   r   rw   rN   	decorator\  s   z#requires_mac_ver.<locals>.decoratorrM   )r   r   rM   r   rN   r   U  s   r   c                    s   	 t   fdd}|S )Nc               
      sF   z
 | i | W d S  t y" } zdt|v rtd d }~ww )NZCERTIFICATE_VERIFY_FAILEDz.system does not contain necessary certificates)rr   r   ra   rj   )rx   kwargsr   r^   rM   rN   dect  s   
z&system_must_validate_cert.<locals>.dec)r   r   )r_   r   rM   r^   rN   system_must_validate_certr  s   r   i @ i  ZdoubleZIEEEztest requires IEEE 754 doublesrequires zlibc                 C   0   zdd l }W n ty   d }Y nw t|| S Nr   )zlibImportErrorra   
skipUnless)r   r   rM   rM   rN   r$        r$   requires gzipc                 C   r   r   )gzipr   ra   r   )r   r   rM   rM   rN   r     r   r   requires bz2c                 C   r   r   )bz2r   ra   r   )r   r   rM   rM   rN   r     r   r   requires lzmac                 C   r   r   )lzmar   ra   r   )r   r   rM   rM   rN   r     r   r   zrequires legacy Unicode C APIjavagetandroidapilevel)rE   rG   z/system/bin/shz/bin/shzhttp://www.pythontest.netdatac                 C   sZ   	 t jdkrd S dd l}d}|  d}| \}}t||d t| td|  d S )Nr   r   z NOTICE z may generate "malloc can't allocate region"
warnings on macOS systems. This behavior is known. Do not
report a bug unless tests are also failing. See bpo-40928.r   )ro   r   shutilget_terminal_sizers   center)Z	test_namer   rR   ZdetailZpadding_rM   rM   rN   darwin_malloc_err_warning  s   

r   c                 C   sd   	 t j| r	| S |d urt j|| } tgtj }|D ]}t j|| }t j|r/|  S q| S rQ   )rc   rd   isabsr   TEST_HOME_DIRro   exists)filenameZsubdirrd   dnfnrM   rM   rN   r4     s   r4   c                 C   s.   	 t |  }dd |D }d|}d| S )Nc                 S   s   g | ]}d | qS )z%r: %rrM   ).0ZpairrM   rM   rN   
<listcomp>  s    zsortdict.<locals>.<listcomp>z, z{%s})sorteditemsr   )dictr   Z	reprpairsZ
withcommasrM   rM   rN   r9     s
   
r9    )linenooffsetc                C   s   |  t|}t|dd W d    n1 sw   Y  |j}| |j |d ur0| |j| | |j |d urC| |j| d S d S )Nz<test string>exec)assertRaisesRegexSyntaxErrorcompile	exceptionZassertIsNotNoner   assertEqualr   )testcaseZ	statementZerrtextr   r   cmry   rM   rM   rN   r     s   r   c                    s  dd l }dd l}ddlm} zdd l}W n ty   d }Y nw dd |j| d 	dd }t
jt|} fdd	}t
j|rV||}	|	d urR|	S || td
 tretd|  t d |j }
|rr|
jd |
j| td}	|r|	jddkr|j|	d}	z,t|d}|	 }|r|| |	 }|sW d    n1 sw   Y  W |	  n|	  w ||}	|	d ur|	S td| )Nr   r   )unlinkcheckrq   /c                    sD   t | g R i }d u r|S |r|d |S |  d S r   )openseekclose)r   r_   rx   r   r   rM   rN   check_valid_file  s   
z*open_urlresource.<locals>.check_valid_fileZurlfetchz	fetching %s ...file)zAccept-Encodingr   timeoutzContent-Encodingr   )fileobjwbzinvalid resource %r) Zurllib.requesturllib.parse	os_helperr   r   r   popparseurlparser   rc   rd   r   TEST_DATA_DIRr   r   r   rs   r   ZrequestZbuild_openerZ
addheadersappendr   rB   ZheadersgetZGzipFilereadwriter   r   )urlrx   r   urllibr   r   r   r   r   r_   openeroutsrM   r   rN   r0     sP   	

r0   c              
   c   sT    	 dd l }tt| }tt| |  ztt| V  W tt| | d S tt| | w r   )iorh   ro   setattrStringIO)Zstream_namer
  Zorig_stdoutrM   rM   rN   captured_output>  s   
r  c                   C   
   	 t dS )Nrn   r  rM   rM   rM   rN   r   J     r   c                   C   r  )Nstderrr  rM   rM   rM   rN   r   S  r  r   c                   C   r  )Nstdinr  rM   rM   rM   rN   r   \  s   	r   c                  C   s4   	 dd l } |   trtd |   |   d S )Nr   皙?)gcZcollectr+   timesleep)r  rM   rM   rN   
gc_collecti  s   	
r  c                  c   sH    dd l } |  }|   zd V  W |r|   d S d S |r#|   w w r   )r  	isenableddisableenable)r  Zhave_gcrM   rM   rN   
disable_gcz  s   
r  c                  C   s8   	 t dpd} d}|  D ]	}|dr|}q|dvS )NZ	PY_CFLAGSr   z-O)r   z-O0z-Og)	sysconfigget_config_varr   r   )ZcflagsZ	final_optoptrM   rM   rN   python_is_optimized  s   
r  ZnPZ0nZ
getobjectsZ2PZ0Pnc                 C      dd l }|t|  t S r   )structcalcsize_header_alignfmtr"  rM   rM   rN   calcobjsize     r(  c                 C   r!  r   )r"  r#  _vheaderr%  r&  rM   rM   rN   calcvobjsize  r)  r+  i @  i   c                 C   sp   dd l }t|}t|tkr|jt@ s!t|tkr&t|jt@ r&||j7 }dt|||f }| ||| d S )Nr   z&wrong size for %s: got %d, expected %d)	_testinternalcapiro   	getsizeofr   	__flags___TPFLAGS_HEAPTYPE_TPFLAGS_HAVE_GCZSIZEOF_PYGC_HEADr   )testosizer,  r{   rR   rM   rM   rN   check_sizeof  s   


r4  c                    s    fdd}|S )Nc                    s$    fdd} j |_  j|_|S )Nc               
      s   zdd l }t| }||}W n ty       d  }}Y nD ]}z	||| W  q4   Y q#z| i |W |rG|rH||| S S S |rT|rU||| w w w r   )localerh   	setlocaleri   )rx   kwdsr5  categoryZorig_localeZloc)catstrrw   localesrM   rN   inner  s*   
z1run_with_locale.<locals>.decorator.<locals>.innerrJ   __doc__rw   r;  r9  r:  r   rN   r     s   z"run_with_locale.<locals>.decoratorrM   )r9  r:  r   rM   r?  rN   r2     s   r2   c                    s    fdd}|S )Nc                    s"    fdd} j |_  j|_|S )Nc               	      s   zt j}W n ty   tdw dtjv rtjd }nd }tjd< |  z | i |W |d u r8tjd= n|tjd< t   S |d u rKtjd= n|tjd< t   w )Nztzset requiredZTZ)r  tzsetri   ra   rj   rc   environ)rx   r7  r@  Zorig_tz)rw   tzrM   rN   r;    s(   









z-run_with_tz.<locals>.decorator.<locals>.innerr<  r>  rB  r   rN   r     s   zrun_with_tz.<locals>.decoratorrM   )rB  r   rM   rC  rN   r:     s   r:   i      rq      c                 C   s   dt tdt d}td| tjtjB }|d u rtd| f tt|	d||	d
   }|a|tkr9t}|td k rFtd| f |ad S )NrD  )kmgtz(\d+(\.\d+)?) (K|M|G|T)b?$zInvalid memory limit %rr      z$Memory limit %r too low to be useful)_1M_1Grematch
IGNORECASEVERBOSEr   r   floatgrouplowerreal_max_memuseMAX_Py_ssize_t_2Gr   )limitZsizesrG  memlimitrM   rM   rN   r7      s"   
$r7   c                   @   &   e Zd Z	 dd Zdd Zdd ZdS )_MemoryWatchdogc                 C   s   dj t d| _d| _d S )Nz/proc/{pid}/statm)pidF)r   rc   getpidprocfilestartedrZ   rM   rM   rN   rV     s   
z_MemoryWatchdog.__init__c              
   C   s   dd l }zt| jd}W n! ty- } z|d|t tj	  W Y d }~d S d }~ww dd l
}| td}|jtj|g||jd| _W d    n1 sPw   Y  d| _d S )Nr   rz!/proc not available for stats: {}zmemory_watchdog.py)r  r  T)warningsr   r]  rr   warnr   RuntimeWarningro   r  flush
subprocessr4   Popen
executableDEVNULLmem_watchdogr^  )rW   r`  r_   r   rd  Zwatchdog_scriptrM   rM   rN   start  s(   


z_MemoryWatchdog.startc                 C   s"   | j r| j  | j  d S d S rQ   )r^  rh  	terminatewaitrZ   rM   rM   rN   stop0  s   
z_MemoryWatchdog.stopN)rJ   rK   rL   rV   ri  rl  rM   rM   rM   rN   rZ    s
    rZ  Tc                    s   	  fdd}|S )Nc                    s     fdd_ _S )Nc                    s   j }j}tsd}n|}ts s"t|| k r"td|| d  tr=tr=t  tdj|| d d t }|	  nd }z| |W |rL|
  S S |rT|
  w w )Ni  'not enough memory: %.1fG minimum needed   @z* ... expected peak memory use: {peak:.1f}G)Zpeak)r3  memuserT  ra   rj   r   rs   r   rZ  ri  rl  )rW   r3  ro  maxsizeZwatchdog)dry_runr_   r   rM   rN   r   D  s8   





z.bigmemtest.<locals>.decorator.<locals>.wrapper)r3  ro  r^   rq  ro  r3  r_   r   rN   r   C  s   zbigmemtest.<locals>.decoratorrM   )r3  ro  rq  r   rM   rr  rN   r   6  s   !r   c                    r   )Nc                    s<   t tk rtdkrt dkrtdtdtd   | S )Nl    l        z-not enough memory: try a 32-bit build insteadrm  rn  )r   rU  ra   rj   rZ   r^   rM   rN   r   h  s   z!bigaddrspacetest.<locals>.wrapperrM   rs  rM   r^   rN   r    f  s   r    c                   @   s   e Zd Zdd ZdS )r   c                 C   s   t  }|| |S rQ   )ra   Z
TestResult)rW   r1  r{   rM   rM   rN   runy     zBasicTestRunner.runN)rJ   rK   rL   rt  rM   rM   rM   rN   r   x  s    r   c                 C   r]   rQ   rM   )rk   rM   rM   rN   _id~     rv  c                 C   s6   | dkrt  stt jS t| rtS td| S )Nr   zresource {0!r} is not enabled)r   ra   r   r   r   rv  r   r   rM   rM   rN   requires_resource  s
   rx  c                 C   s   	 t dd| S )NT)cpython)impl_detailr1  rM   rM   rN   r!     s   r!   c                 K   sZ   t di |r	tS | d u r(t|\}}|rd} nd} t| }| d|} t| S )Nz*implementation detail not available on {0}z%implementation detail specific to {0}z or rM   )	r-   rv  _parse_guardsr   keysr   r   ra   r   )rR   guardsZ
guardnamesdefaultrM   rM   rN   rz    s   
rz  c                 C   s*   | sddidfS t |  d }| | fS )Nry  TFr   )listvalues)r~  Zis_truerM   rM   rN   r|    s   
r|  c                  K   s   	 t | \} }| tjj|S rQ   )r|  r  ro   implementationrl   )r~  r  rM   rM   rN   r-     s   r-   c                    s*   	 t tds S t  fdd}|S )Ngettracec               	      s:   t  }zt d   | i |W t | S t | w rQ   )ro   r  settrace)rx   r   Zoriginal_tracer   rM   rN   r     s
   
zno_tracing.<locals>.wrapper)r   ro   r   r   r   rM   r   rN   
no_tracing  s   
r  c                 C   s   	 t t| S rQ   )r  r!   r{  rM   rM   rN   refcount_test  s   r  c                 C   sP   	 g }| j D ]}t|tjrt|| || q||r"|| q|| _ d S rQ   )Z_tests
isinstancera   	TestSuite_filter_suiter  )suiteZpredZnewtestsr1  rM   rM   rN   r    s   



r  c                 C   s   	 t tjttd ud}|| }td urt|  |js#|j	s#t
| sit|jdkr9|js9|jd d }nt|jdkrK|jsK|jd d }nd}tsS|d7 }dd |jD }dd |jD }t|||d S )	N)	verbositycapture_outputr   r   zmultiple errors occurredz!; run in verbose mode for detailsc                 S      g | ]
\}}t ||fqS rM   r   r   ZtcZexc_strrM   rM   rN   r         z_run_suite.<locals>.<listcomp>c                 S   r  rM   r  r  rM   rM   rN   r     r  )r   ro   rn   r   junit_xml_listrt  r  Zget_xml_elementZtestsRunZskippedr   ZwasSuccessfulr   rS   rT   rP   )r  Zrunnerr{   ry   rS   rT   rM   rM   rN   
_run_suite  s*   
r  c                 C   s   t d u rdS t |  S NT)_match_test_funcidr{  rM   rM   rN   
match_test  s   r  c                 C   s   d| v o
t d|  S )Nr   z[?*\[\]])rM  search)rb   rM   rM   rN   _is_full_match_test  s   r  c                    s   | d u rd} |d u rd}d   | t krt| \}  |tkr$t|\}t| a t|a d us4d ur? fdd}|ad S d S )NrM   c                    s*   d}d} r
 | }r| }|o| S NTFrM   )test_idacceptignoreZaccept_funcZignore_funcrM   rN   match_function   s   
z'set_match_tests.<locals>.match_function)_accept_test_patterns_compile_match_function_ignore_test_patternsr   r  )Zaccept_patternsignore_patternsr  rM   r  rN   set_match_tests  s   	r  c                    sr   | s
d }d} | |fS t tt| rt| j}| |fS dd l}dt|j| }t	|j
  fdd}|}| |fS )NrM   r   |c                    s     | rdS t t | dS )NTr   )anyr   r   )r  Zregex_matchrM   rN   match_test_regex<  s   z1_compile_match_function.<locals>.match_test_regex)allr   r  set__contains__fnmatchr   	translaterM  r   rN  )patternsrw   r  Zregexr  rM   r  rN   r  ,  s   
r  c                  G   s   	 t jt jf}t  }| D ]/}t|tr)|tjv r%|t tj|  qt	dt||r4|| q|t 
| qt|t t| d S )Nz)str arguments must be keys in sys.modules)ra   r  ZTestCaser  r   ro   modulesZaddTestZfindTestCasesr   Z	makeSuiter  r  r  )ZclassesZvalid_typesr  clsrM   rM   rN   r   L  s   



r   c                   C      d S rQ   rM   rM   rM   rM   rN   _check_docstringsc  rw  r  ZWITH_DOC_STRINGSztest requires docstringsc                 C   sb   	 dd l }|d u rt}nd }|j| ||d\}}|r"td||f tr-td| j|f  ||fS )Nr   )r   optionflagsz%d of %d doctests failedz,doctest (%s) ... %d tests with zero failures)doctestr   testmodr   rs   rJ   )moduler  r  r  r_   rI  rM   rM   rN   r   t  s   r   c                 C   s(   |   D ]}td| tjdd qd S )NzWarning -- T)r   rc  )
splitlinesrs   ro   
__stderr__)rR   linerM   rM   rN   print_warning  s   r  c                  C   sh   	 t tdrt tdsd S 	 ztdtj\} }W n
 ty#   Y d S w | dkr*d S td|   daq)NwaitpidWNOHANGTr   r   z%reap_children() reaped child process )r   rc   r  r  rr   r  environment_altered)r[  statusrM   rM   rN   r1     s   r1   c              
   c   s    	 t | |r&t| |}t| || z|V  W t| || d S t| || w t| || zd V  W t | |r=t| | d S d S t | |rJt| | w w rQ   )r   rh   r  delattr)rk   attrnew_valreal_valrM   rM   rN   r5     s    


r5   c              	   c   st    	 || v r| | }|| |< z
|V  W || |< d S || |< w || |< zd V  W || v r0| |= d S d S || v r9| |= w rQ   rM   )rk   itemr  r  rM   rM   rN   r3     s   
r3   c                  C      	 dd l } |  S r   )rd  _args_from_interpreter_flagsrd  rM   rM   rN   args_from_interpreter_flags     r  c                  C   r  r   )rd  "_optim_args_from_interpreter_flagsr  rM   rM   rN   !optim_args_from_interpreter_flags  r  r  c                   @   s    e Zd ZdZdd Zdd ZdS )r6   )rR   messagec                 K   s>   	 d}|D ]}|| }| |}| |||sd} |S q|S r  )r  match_value)rW   dr   r{   rF  vdvrM   rM   rN   matches	  s   
zMatcher.matchesc                 C   sN   	 t |t |krd}|S t |tus|| jvr||k}|S ||dk}|S )NFr   )r   r   _partial_matchesfind)rW   rF  r  r  r{   rM   rM   rN   r    s   zMatcher.match_valueN)rJ   rK   rL   r  r  r  rM   rM   rM   rN   r6     s    r6   c                 C   sZ   	 dd l }td u r"tjdkr | d dkr t jdkr dandatr+t	d| S | S )	Nr   rE   r   cp65001r   TFz!buggy MSVC UCRT strptime/strftime)
r5  _buggy_ucrtro   r   Zgetdefaultlocaler  	localtimetm_zonera   r   )r1  r5  rM   rM   rN   r)   (  s   	
r)   c                   @   sf   e Zd Z	 dddZdd Zejdkrdd Zdd	 Zd
d Zdd Z	ddddZ
ddddZdS )PythonSymlinkNc                 C   sL   ddl m} |ptj|| _g | _tjtj	| _
g | _d | _|   d S )Nr   )TESTFN)r   r  rc   rd   abspathlink_linkedrealpathro   rf  real
_also_link_env_platform_specific)rW   r  r  rM   rM   rN   rV   ?  s   zPythonSymlink.__init__c                 C   r  rQ   rM   rZ   rM   rM   rN   r  K  rw  z PythonSymlink._platform_specificrE   c              
   C   s  dd l }dd l}tj| jrtj| js|d| _|tj	}tj
|}tj
| j}| j|tj|tj|f | tj||dD ]}| j|tj|tj|f qMdd tjD | _tj
| j| jd< tdrtj
tj| jd< d S d S )Nr   zvcruntime*.dllc                 S   s   i | ]
}|  t|qS rM   )upperrc   getenv)r   rF  rM   rM   rN   
<dictcomp>e  r  z4PythonSymlink._platform_specific.<locals>.<dictcomp>Z
PYTHONHOMETZ
PYTHONPATH)glob_winapirc   rd   lexistsr  r   ZGetModuleFileNamero   Z	dllhandlere   r  r  r  r   basenameescaperA  r  r  Zis_python_buildrf   )rW   r  r  r   Zsrc_dirZdest_dirZruntimerM   rM   rN   r  O  s*   
c                 C   sJ   t | j| j | j| j | jD ]\}}t || | j| q| S rQ   )rc   symlinkr  r  r  r  r  )rW   r  r  rM   rM   rN   	__enter__j  s   zPythonSymlink.__enter__c                 C   sV   | j D ]%}zt| W q ty( } ztrtd|| W Y d }~qd }~ww d S )Nzfailed to clean up {}: {})r  rc   removeIOErrorr   rs   r   )rW   exc_type	exc_valueexc_tbr  exrM   rM   rN   __exit__r  s   
zPythonSymlink.__exit__c           	      C   sx   dd l }|g|}|j||j|j|d}| }|j|kr:tr2tt|d  tt|d tj	d t
d|j|S )Nr   )rn   r  envr   r   z'unexpected return code: {0} (0x{0:08X}))rd  re  PIPEcommunicate
returncoder   rs   reprro   r  RuntimeErrorr   )	rW   Zpythonrx   r  r  rd  cmdpr_  rM   rM   rN   _callz  s   



zPythonSymlink._callr   )r  c                G   s   |  | j|d |S rQ   )r  r  rW   r  rx   rM   rM   rN   	call_real  s   zPythonSymlink.call_realc                G   s   |  | j|| j|S rQ   )r  r  r  r  rM   rM   rN   	call_link  s   zPythonSymlink.call_linkrQ   )rJ   rK   rL   rV   r  ro   r   r  r  r  r  r  rM   rM   rM   rN   r  =  s    

r  c                 C   s&   	 t  pt}d}|r| S t|| S )Nz#Not run for (non-extended) PGO task)r;   PGO_EXTENDEDra   r   )r1  okrR   rM   rM   rN   skip_if_pgo_task  s   
r  rM   )r  c                C   s@   	 t t| t t| }|r|t |8 }t dd |D }|S )Nc                 s   s(    | ]}| d r|dr|V  qdS )r   __N)r   endswith)r   rG  rM   rM   rN   	<genexpr>  s    z&detect_api_mismatch.<locals>.<genexpr>)r  dir)Zref_apiZ	other_apir  Zmissing_itemsrM   rM   rN   r'     s   r'   c                 C   s   	 |d u r
|j f}nt|tr|f}t|}t|D ])}|ds%||v r&qt||}t|dd |v s>t|dsCt|tj	sC|
| q| |j| d S )Nr   rK   )rJ   r  r   r  r  r   rh   r   types
ModuleTypeaddZassertCountEqual__all__)Z	test_caser  Zname_of_moduleextraZnot_exportedZexpectedrl   rk   rM   rM   rN   r(     s$   '




r(   c                 C   s   zdd l }W n
 ty   Y d S w ||j|jB |jB |jB  t|drG|j|j	|j
fD ]}| r@|||j |||j q-||d q-d S d S )Nr   CrtSetReportMode)msvcrtr   SetErrorModeZSEM_FAILCRITICALERRORSZSEM_NOALIGNMENTFAULTEXCEPTSEM_NOGPFAULTERRORBOXZSEM_NOOPENFILEERRORBOXr   CRT_WARN	CRT_ERROR
CRT_ASSERTr	  CRTDBG_MODE_FILECrtSetReportFileCRTDBG_FILE_STDERR)r   r
  rG  rM   rM   rN   suppress_msvcrt_asserts  s(   
r  c                   @   s&   e Zd Z	 dZdZdd Zdd ZdS )r8   Nc           
   	   C   s  	 t jdrPzdd l}W n
 ty   Y d S w | | _|| j|jB  t	|drNi | _
|j|j|jfD ]}|||j}|||j}||f| j
|< q6| S z	dd l}|| _W n tye   d | _Y nw | jd urz| j| jj| _| j| jjd| jd f W n ttfy   Y nw t jdkrdd l}g d}|j||j|jd}| | d }	W d    n1 sw   Y  |	 dkrtd	d
dd | S )Nr|   r   r	  r   r   )z/usr/bin/defaultsr  zcom.apple.CrashReporterZ
DialogType)rn   r  s	   developerz:this test triggers the Crash Reporter, that is intentionalr   T)endrc  )ro   r   r   r
  r   ZGetErrorMode	old_valuer  r  r   	old_modesr  r  r  r	  r  r  r  r   Z	getrlimitRLIMIT_CORE	setrlimitr   rr   rd  re  r  r  striprs   )
rW   r
  report_typeold_modeold_filer   rd  r  procrn   rM   rM   rN   r    sj   

#



zSuppressCrashReport.__enter__c              	   G   s   	 | j d u rd S tjdr7dd l}|| j  | jr3| j D ]\}\}}||| |	|| q d S d S | j
d urVz| j
| j
j| j  W d S  ttfyU   Y d S w d S )Nr|   r   )r  ro   r   r   r
  r  r  r   r	  r  r   r  r  r   rr   )rW   Z
ignore_excr
  r  r  r  rM   rM   rN   r  @  s&   

zSuppressCrashReport.__exit__)rJ   rK   rL   r  r  r  r  rM   rM   rM   rN   r8     s    Br8   c              	      sr   	 t  d zj W n ttfy    t d Y nw d  fdd}| | t| d S )NFTc                      s"    r
t  d S t d S rQ   )r  r  rM   Zattr_is_local	attr_nameobject_to_patchr  rM   rN   cleanupk  s   zpatch.<locals>.cleanup)rh   __dict__ri   KeyErrorZ
addCleanupr  )Ztest_instancer   r  Z	new_valuer!  rM   r  rN   patchU  s   
	
r$  c                 C   sF   	 zdd l }W n	 ty   Y n
w | rtddd l}|| S )Nr   zUrun_in_subinterp() cannot be used if tracemalloc module is tracing memory allocations)tracemallocr   
is_tracingra   rj   	_testcapirun_in_subinterp)coder%  r'  rM   rM   rN   r(  w  s   

r(  c                    sH   G  fddd|}d ||| |  tt t  |   d S )Nc                       s   e Zd Z fddZdS )z%check_free_after_iterating.<locals>.Ac                    s(   d zt  W d S  ty   Y d S w r  )nextStopIterationrZ   doneitrM   rN   __del__  s   z-check_free_after_iterating.<locals>.A.__del__N)rJ   rK   rL   r/  rM   r,  rM   rN   A  s    r0  F)ZassertRaisesr+  r*  r  Z
assertTrue)r1  iterr  rx   r0  rM   r,  rN   check_free_after_iterating  s   	r2  c                 C   s   	 ddl m}m}m}m} | }|| |jdkr-z|  W n |j	y,   Y dS w |j
D ]#}| r9|| vr9q0t||}| rAn|sDq0||d d u rS|d   S q0d S )Nr   )	ccompilerr  spawnrS   Zmsvc)Z	distutilsr3  r  r4  rS   Znew_compilerZcustomize_compilerZcompiler_typeZ
initializeZDistutilsPlatformErrorZexecutablesrh   Zfind_executable)Z	cmd_namesr3  r  r4  rS   Zcompilerrl   r  rM   rM   rN   r<     s*   	



r<   c                 C   sH   d}t r| |k rtd u rdd l}|ddg dkatr|} t| S )Ngh㈵>r   Zgetpropzro.kernel.qemu   1)r,   _is_android_emulatorrd  check_outputr  ro   r/   )intervalZminimum_intervalrd  rM   rM   rN   r/     s   
r/   c               
   c   s^    dd l } tj }|  }z|   d V  W |r"| j|dd d S d S |r.| j|dd w w )Nr   T)r   Zall_threads)faulthandlerro   r  fileno
is_enabledr  r  )r9  fdr;  rM   rM   rN   disable_faulthandler  s   
r=  c                   @   rY  )SaveSignalsc              	   C   sZ   dd l }|| _ | | _dD ]}zt||}W n	 ty    Y qw | j| qi | _d S )Nr   )SIGKILLSIGSTOP)signalvalid_signalssignalsrh   ri   r  handlers)rW   rA  signamesignumrM   rM   rN   rV     s   

zSaveSignals.__init__c                 C   s0   | j D ]}| j|}|d u rq|| j|< qd S rQ   )rC  rA  	getsignalrD  rW   rF  handlerrM   rM   rN   save  s   
zSaveSignals.savec                 C   s&   | j  D ]\}}| j|| qd S rQ   )rD  r   rA  rH  rM   rM   rN   restore  s   zSaveSignals.restoreN)rJ   rK   rL   rV   rJ  rK  rM   rM   rM   rN   r>    s
    r>  c                  C   s   dd l } | jS r   )r'  ZWITH_PYMALLOC)r'  rM   rM   rN   with_pymalloc  s   rL  c                   @      e Zd Z	 dd Zdd ZdS )
_ALWAYS_EQc                 C      dS r  rM   rW   otherrM   rM   rN   __eq__  rw  z_ALWAYS_EQ.__eq__c                 C   rO  NFrM   rP  rM   rM   rN   __ne__  rw  z_ALWAYS_EQ.__ne__N)rJ   rK   rL   rR  rT  rM   rM   rM   rN   rN    s    rN  c                   @   rY  )	_NEVER_EQc                 C   rO  rS  rM   rP  rM   rM   rN   rR    rw  z_NEVER_EQ.__eq__c                 C   rO  r  rM   rP  rM   rM   rN   rT    rw  z_NEVER_EQ.__ne__c                 C   rO  )Nr   rM   rZ   rM   rM   rN   __hash__  rw  z_NEVER_EQ.__hash__N)rJ   rK   rL   rR  rT  rV  rM   rM   rM   rN   rU    s
    rU  c                   @   rM  )_LARGESTc                 C   
   t |tS rQ   )r  rW  rP  rM   rM   rN   rR  )  rp   z_LARGEST.__eq__c                 C   rO  rS  rM   rP  rM   rM   rN   __lt__+  rw  z_LARGEST.__lt__N)rJ   rK   rL   rR  rY  rM   rM   rM   rN   rW  $      rW  c                   @   rM  )	_SMALLESTc                 C   rX  rQ   )r  r[  rP  rM   rM   rN   rR  5  rp   z_SMALLEST.__eq__c                 C   rO  rS  rM   rP  rM   rM   rN   __gt__7  rw  z_SMALLEST.__gt__N)rJ   rK   rL   rR  r\  rM   rM   rM   rN   r[  0  rZ  r[  c                  C   s   	 dd l } | jjS r   )Zasyncio.eventseventsZ_event_loop_policy)ZasynciorM   rM   rN   maybe_get_event_loop_policy<  s   r^  c                 C   s   | |}}dd l }| K}| d }t|d|_||}|d | | }|| }	||	 }
||
 }||d  |d | |  |	d|	   }t|t| fW  d    S 1 s[w   Y  d S )Nr   rq      r   )decimalZlocalcontext
bit_lengthmaxZprecZDecimalrQ  sqrt)ZnbinsZnballsr   rF  r`  ctxbitsr   Zp1emptyZ	meanemptyZoccupiedZ
collisionsvarrM   rM   rN   collision_statsI  s   


($rg  c                   @   s.   e Zd Z	 dd Zdd Zdd Zdd Zd	S )
catch_unraisable_exceptionc                 C   s   d | _ d | _d S rQ   )
unraisable	_old_hookrZ   rM   rM   rN   rV     s   
z#catch_unraisable_exception.__init__c                 C   s
   || _ d S rQ   )ri  )rW   ri  rM   rM   rN   _hook  s   
z catch_unraisable_exception._hookc                 C   s   t j| _| jt _| S rQ   )ro   unraisablehookrj  rk  rZ   rM   rM   rN   r    ru  z$catch_unraisable_exception.__enter__c                 G   s   | j t_| `d S rQ   )rj  ro   rl  ri  )rW   exc_inforM   rM   rN   r    s   z#catch_unraisable_exception.__exit__N)rJ   rK   rL   rV   rk  r  r  rM   rM   rM   rN   rh  k  s    rh  r   c                C   s$  	 t jdkrcdd l}|d u rt}t }d}d}	 t | t j\}}|dkr'qkt | }	|	tkrVzt | |j	 t | d W n	 t
yI   Y nw td|  d|	dd	t|d
 |}t| qt | d\}}t |}
|
|krtd|  d|
 d| d|| krtd| d|  d S )Nntr   gMbP?r  Tzprocess z is still running after z.1fz secondsrq   z exited with code z, but exit code z is expectedzpid z != pid )rc   rl   rA  rC   r  	monotonicr  r  killr?  rr   AssertionErrorminr  waitstatus_to_exitcode)r[  exitcoder   rA  t0r  Z	max_sleepZpid2r  ZdtZ	exitcode2rM   rM   rN   wait_process  sF   






rv  c               
   C   sh   	 ddl m}  | d | d}tjdkr2z	|jd d W d S  ty1 } ztd|d }~ww d S )Nr   )import_module_multiprocessingzmultiprocessing.synchronizelinux)rd  z broken multiprocessing SemLock: )Zimport_helperrw  ro   r   Lockrr   ra   rj   )rw  synchronizeexcrM   rM   rN   *skip_if_broken_multiprocessing_synchronize  s   
r}  K   c              	   c   s8    t  }zt |  d V  W t | d S t | w rQ   )ro   getrecursionlimitsetrecursionlimit)Z	max_depthZoriginal_depthrM   rM   rN   infinite_recursion  s   
r  c                 O   s^   	 |j }|j}|dkr| d| }n| }dt| d}| jt||g|R i | d S )Nbuiltinsr   zcannot create 'z' instances)rK   rJ   rM  r  r   	TypeError)r   tprx   r7  modrl   qualnamerR   rM   rM   rN   r*     s    r*   r  likereturnc                C   s,   t  }tjdt| |dt| d d |S )Nr  
(?#support))r8  r  r  )objectr`  filterwarningsDeprecationWarningr  )r  r  tokenrM   rM   rN   ignore_deprecations_from  s   r  tokensc            	      G   s   | st dg }tdd | D }tjD ]-\}}}}}|dkr7|tu r7t|tjr-|j}n|p0d}|	|r7q|
|||||f qtj|krT|tjd d < t  d S d S )Nz<Provide token or tokens returned by ignore_deprecations_fromc                 s   s     | ]}d t | dV  qdS )r  r  N)r  )r   r  rM   rM   rN   r    s    z-clear_ignored_deprecations.<locals>.<genexpr>r  r   )r   r   r`  filtersr  r  rM  Patternrb   r  r  _filters_mutated)	r  Znew_filtersr  actionr  r8  r  r   rR   rM   rM   rN   clear_ignored_deprecations	  s    

r  rQ   )r   )r   )r   )r   )r   )T)NNr   )NrM   rM   )F)rM   )r~  )rJ   r   
contextlibr   rc   rM  ru   ro   r  r  r  ra   r`  Z
testresultr   r'  r   r  rA   r   r   rB   rC   rD   r   r
   r   rP   r   rj   r   r%   r&   r"   r   r   r   rT  r  r	   rm   r   r   rz   r   r   r   r   r   r   r   r   r   ZSOCK_MAX_SIZEr   rQ  __getformat__r   r#   r$   r   r   r   Zrequires_legacy_unicode_capir+   r   r,   r.   ZTEST_HTTP_URLr;   r  rd   re   r  rf   ZTEST_SUPPORT_DIRr   r   r   r   r4   r9   r   r0   contextmanagerr  r   r   r   r  r  r  r$  r%  r*  r(  r+  r0  r/  r4  r2   r:   rK  rL  rV  Z_4Grp  rU  r7   rZ  r   r    r   rv  rx  r!   rz  r|  r-   r  r  r  r  r  r  r  r  r  r  r  r   r  r  ZMISSING_C_DOCSTRINGSr=  ZHAVE_DOCSTRINGSZrequires_docstringsr   r  r  r1   r5   r3   r  r  r  r6   r  r)   r  r  r'   r(   r  r8   r$  r(  r2  r<   r6  r/   r=  r>  rL  rN  r=   rU  r>   total_orderingrW  r?   r[  r@   r^  	hash_infowidthZ	NHASHBITSrg  rh  rv  r}  r  r*   r   r  r  rM   rM   rM   rN   <module>   s   ,

	M
			



7
		

$#!0


! 


"R;`" 
'			",4	