
    z%imK                       	 e d k7  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ZddlZddlZddlZddlmZ g dZdZe
j*                  dk(  rd	e
j,                  v rd
Zne
j*                  dk(  rd
ZdZdZdZej4                  j7                  ej4                  j9                  e            Zej4                  j7                  e      Zej4                  j7                  e      Z ej4                  j7                  e       Z! G d de"      Z# G d de#      Z$ G d de$      Z% G d de#      Z& G d dejN                        Z(d Z)d Z*d Z+dZ,dZ-da.da/dZ0dZ1da2d Z3d Z4d Z5d  Z6d! Z7dd"Z8d# Z9d$ Z:d% Z;d& Z<dd'Z=dddd(d)Z>ddddd(d*Z?d+ Z@d,ZAd-ZB ej                  eDj                  d.      j                  d/      d0      ZGdd1ZHdd2ZIdd3ZJdd4ZKd5 ZLdd6ZMd7 ZNe
j*                  j                  d8      ZO ePe
d9      ZQe
j*                  d:vreQrd;nd<ZRndZRe
j*                  d=k(  ZSe
j*                  d>k(  ZT ePed?      xr eS xr eT ZUd@ ZVeS xr eT ZWdA ZXeS xr eT ZYddBdCZZdZ[e
j*                  dk7  r	  ej                  dD      dDk7  Z[dEZ^dZ_dZ`ej4                  j                  edF      ZbdG ZcddHZddI ZedJefdKegefehf   fdLZiddddMdNZjdO Zkej                  dP        ZmdQ ZndR ZodS ZpdT Zqej                  dU        ZrdV ZsdWZtdXZu ePe
dY      rdZetz   Ztd[Zuetd\z   Zvd] Zwd^ Zxd_Zyd`Zzda Z{ej                  db        Z|dc Z}ddZ~dee~z  Zdfez  Zdgez  Ze
j                  Zdh Z G di dj      ZddlZdm Zdn Zdo Zdp ZddqZdr Zds Zdt Zdu Zdv Zdw Zdx Z ej&                  dky       G dz d{             Zd| Zdadadad} Zd~ ZddZd Zd Zd Z e       xr% e
j*                  dk7  xr  ej>                  d       ZejB                  duxr e Z ej                  ed      ZddZd Zd Ze
jN                  e_        dad Zej                  d        Zej                  d        Zd Zd Z G d deh      Zdad Z G d d      Zd ZdddZ	 	 ddZddZ G d d      Zd Zej                  d        Zd ZdddZd ZddZg fdZdad Zd Zej                  d        Z G d d      Zd Z G d d      Z eū       Z G d d      Z eǫ       Zej                   G d d             Z eʫ       Zej                   G d d             Z e̫       Zd Ze
j                  j                  Zd Z G d d      ZdddZd Zd Zd Zd Zej                  d        ZddZdefdefdKehfdZdehdKdfdZd Zej                  d        Zej                  dÄ        Z ePe
dī      Zdń ZddkdƜdǄZddddkdʜd˄Zej                  d̄        ZdZdZ ej                   ePedϫ      xr   ej                         j                  dk(  dѫ      Zy# e]$ r Y w xY w)ztest.supportz.support must be imported from the test package    N   )get_test_runner)Q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run_unittestrun_doctestrequires_gziprequires_bz2requires_lzma
bigmemtestbigaddrspacetestcpython_onlyget_attributerequires_IEEE_754requires_zlibhas_fork_supportrequires_forkhas_subprocess_supportrequires_subprocesshas_socket_supportrequires_working_socketanticipate_failureload_package_testsdetect_api_mismatchcheck__all__skip_if_buggy_ucrt_strfptimecheck_disallow_instantiationcheck_sanitizerskip_if_sanitizerrequires_limited_apirequires_specialization	is_jython
is_androidis_emscriptenis_wasicheck_impl_detail
unix_shellsetswitchintervalget_pagesizeopen_urlresourcereap_childrenrun_with_locale	swap_itemfindfileinfinite_recursion	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_TIMEOUTPy_DEBUGEXCEEDS_RECURSION_LIMITC_RECURSION_LIMITskip_on_s390xg      @win32z 32 bit (ARM)
   vxworksg      N@g      >@g     r@c                       e Zd Zy)r
   N__name__
__module____qualname__     I/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/support/__init__.pyr
   r
   u   s    4r_   r
   c                   ,     e Zd Z	 dd fd
Zd Z xZS )r   Nstatsc                B    || _         || _        t        |   |g|  y N)msgrc   super__init__)selfrf   rc   args	__class__s       r`   rh   zTestFailed.__init__z   s#    
$t$r_   c                     | j                   S re   )rf   ri   s    r`   __str__zTestFailed.__str__   s    xxr_   )r[   r\   r]   rh   rn   __classcell__rk   s   @r`   r   r   x   s    )- %
r_   r   c                         e Zd Z	  fdZ xZS )TestFailedWithDetailsc                 H    || _         || _        t        |   ||||       y )Nrb   )errorsfailuresrg   rh   )ri   rf   rt   ru   rc   rk   s        r`   rh   zTestFailedWithDetails.__init__   s'     fhe<r_   )r[   r\   r]   rh   ro   rp   s   @r`   rr   rr      s    = =r_   rr   c                       e Zd Zy)r   NrZ   r^   r_   r`   r   r      s    (r_   r   c                       e Zd Zy)r   NrZ   r^   r_   r`   r   r      s    r_   r   c                 .    	 | rt         j                  S d S )Nc                     | S re   r^   )fs    r`   <lambda>z$anticipate_failure.<locals>.<lambda>   s    Q r_   )unittestexpectedFailure)	conditions    r`   r*   r*      s    
 '''r_   c                 f    	 |d}t         }|j                  | ||      }|j                  |       |S )Nztest*)	start_dirtop_level_dirpattern)
STDLIB_DIRdiscoveraddTests)pkg_dirloaderstandard_testsr   top_dirpackage_testss         r`   r+   r+      sI     GOOg29,3 $ 5M M*r_   c                 r    	 	 t        | |      }|S # t        $ r t        j                  d| d|      w xY w)Nzobject z has no attribute )getattrAttributeErrorr|   SkipTest)objname	attributes      r`   r!   r!      sG    IC&	   O3 MNNOs    %6Fc                     | a y re   )_original_stdout)stdouts    r`   r   r      s    r_   c                  2    t         xs t        j                  S re   )r   sysr   r^   r_   r`   r   r      s    )szz)r_   c                    	  || S # t         $ r3}t        dk\  r$t        |j                  j                  d|        d }~wt
        $ rz}t        dk\  r>t        |j                  j                  d|       t        d|j                  |       t        j                  | t        j                          || cY d }~S d }~ww xY w)N   : zre-run )
FileNotFoundErrorr   printrk   r[   OSErroroschmodstatS_IRWXU)pathfuncrj   errs       r`   
_force_runr      s    T{ a<cmm44c:; a<cmm44c:;4==$78
t||$T{s%    	C.>C
A/B?9C?Cc            	         t        t        d      rt        j                  S dd l} d }t        j                  j                  d      r| j                         rd}nt        j                  j                  d      rdd ldd ld}d} G fddj                        }j                  j                  }|j                         }|sj                          |       }j                  j                         }|j!                  ||j#                  |      j%                  |      j#                  |            }	|	sj                         t'        |j(                  |z        sd}nt        j                  d	k(  rdd
lm}
mm}m	} ddlm} |
j5                   |d            }|j7                         dk(  rd}nF G fdd|      } |       } ||      }|j9                  |      dk  s|j;                  |      dk  rd}|s>	 ddlm}  |       }|jA                          |jC                          |jE                          |t        _)        | t        _        t        j                  S # tF        $ rP}tI        |      }tK        |      dkD  r|d d dz   }djM                  tO        |      jP                  |      }Y d }~{d }~ww xY w)Nresultr   winz(gui is not available on Windows IoT Corer   c                       e Zd ZdW  j                  j                  fdW  j                  j                  fdW  j                  j
                  fgZy)*_is_gui_available.<locals>.USEROBJECTFLAGSfInherit	fReserveddwFlagsN)r[   r\   r]   wintypesBOOLDWORD_fields_)ctypess   r`   USEROBJECTFLAGSr      s@    #V__%9%9:$foo&:&:;"FOO$9$9:<Hr_   r   z,gui not available (WSF_VISIBLE flag not set)darwin)cdllc_intpointer	Structure)find_libraryApplicationServicesz0gui tests cannot run without OS X window managerc                   "    e Zd ZdW  fdW  fgZy)._is_gui_available.<locals>.ProcessSerialNumberhighLongOfPSNlowLongOfPSNN)r[   r\   r]   r   )r   s   r`   ProcessSerialNumberr     s    ,e4+U35r_   r   z#cannot run without OS X gui process)Tk2   z [...]zTk unavailable due to {}: {})*hasattr_is_gui_availabler   platformr   
startswithwin32_is_iotr   ctypes.wintypesr   windlluser32GetProcessWindowStationWinErrorr   r   GetUserObjectInformationWbyrefsizeofboolr   r   r   r   ctypes.utilr   LoadLibraryCGMainDisplayIDGetCurrentProcessSetFrontProcesstkinterr   withdrawupdatedestroy	Exceptionstrlenformattyper[   reason)r   r   	UOI_FLAGSWSF_VISIBLEr   dllhuofneededresr   r   r   r   app_servicesr   psnpsn_pr   roote
err_stringr   r   s                         @@r`   r   r      s\    (+ '''F
||u%(*?*?*A;		 	 	' 			<f.. 	< mm""'')//##&&(++ALLMM#LL 	"
 //##CKK+-.CF		! 	;:,''5J(KL'')Q.GF5i 5 &'CCLE11%81<//6:> 	G"4DMMOKKMLLN  &#)z###  	GQJ:#'_x7
3::47;K;K;EGF		Gs   =I% %	J>.AJ99J>c                 (    	 t         d u xs | t         v S re   )r   resources    r`   r   r   +  s    
 D =H$==r_   c                     	 t        |       s|d| z  }t        |      | dv rt        st        d      | dk(  r$t               st        t        j                        y y )Nz"Use of the %r resource not enabled>   networkurlfetchzNo socket supportgui)r   r   r(   r   r   )r   rf   s     r`   r   r   3  sg    Jx(;6ACS!!**3E0115!2!4.5566 "5r_   c                 v   	 dd l }dj                  t        t        |            }|j	                         j                  dd      d   }|j                         | k(  r/	 t        t        t        |j                  d                  }||k  }nd}t        j                  ||  d| d|       S # t        $ r d}Y +w xY w)Nr   .-r   Fz	 version  or higher required, not )r   joinmapr   releasesplitsystemtupleint
ValueErrorr|   skipIf)sysnamemin_versionr   min_version_txtversion_txtversionskips          r`   _requires_unix_versionr  >  s     hhs345O""$**3215KG#	)C[%6%6s%;<=G [(D??)9_--F-	   	D	s   (B* *B87B8c                      	 t        d|       S )NFreeBSDr  r   s    r`   r   r   Y  s     ")[99r_   c                      	 t        d|       S )NLinuxr  r	  s    r`   r   r   b  s     "';77r_   c                       	  fd}|S )Nc                 T     t        j                          fd       }|_        |S )Nc                  V   t         j                  dk(  rdd l}|j                         d   }	 t        t	        t
        |j                  d                  }|k  r:dj                  t	        t                    }t        j                  d|d|       | i |S # t        $ r Y w xY w)Nr   r   r   z	Mac OS X r   )r   r   mac_verr   r   r   r   r   r   r|   r   r   )rj   kwr   r  r  r  r   r   s         r`   wrapperz4requires_mac_ver.<locals>.decorator.<locals>.wrappers  s    ||x'&..03	>#C[->->s-C$DEG ,*-((3sK3H*I&//.=> > $$$ " s   (B 	B('B()	functoolswrapsr   )r   r  r   s   ` r`   	decoratorz#requires_mac_ver.<locals>.decoratorr  s-    			% 
	% *r_   r^   )r   r  s   ` r`   r   r   k  s    & r_   c                     	 | sd} 	 t        j                         j                         dk(  }t        j                  ||       S # t        t        f$ r*}t        j                  d| dt               d}Y d }~Jd }~ww xY w)Nznot suitable for buildbotsbuildbotzgetpass.getuser() failed r   F)
getpassgetuserlowerKeyErrorEnvironmentErrorwarningswarnRuntimeWarningr|   r   )r   
isbuildbotr   s      r`   skip_if_buildbotr     st    >-__&,,.*<
 ??:v.. &' 1#a8.I
s   %A A; A66A;addressmemoryubc                     	 | s|s|st        d      t        j                  d      xs d}t        j                  d      xs d}d|v xs d|v }d|v xs d|v }d	|v xs d
|v }|xr |xs | xr |xs |xr |S )Nz3At least one of address, memory, or ub must be TrueCFLAGS CONFIG_ARGSz-fsanitize=memoryz--with-memory-sanitizerz-fsanitize=addressz--with-address-sanitizerz-fsanitize=undefinedz#--with-undefined-behavior-sanitizer)r   	sysconfigget_config_var)r"  r#  r$  _cflags_config_argsmemory_sanitizeraddress_sanitizerub_sanitizers           r`   r0   r0     s    CvNOO &&x06BG++M:@bLw& 	2!\1 
 	' 	3"l2 
 	') 	>-= 
 
	$$ 			&&			r_   c                T    	 | sd} t        |||      }t        j                  ||       S )Nz"not working with sanitizers activer!  )r0   r|   r   )r   r"  r#  r$  r  s        r`   r1   r1     s,    H576bAD??4((r_   c                 D     	 t        j                          fd       }|S )Nc                      	  | i | y # t         $ r(}dt        |      v rt        j                  d       d }~ww xY w)NCERTIFICATE_VERIFY_FAILEDz.system does not contain necessary certificates)r   r   r|   r   )rj   kwargsr   rz   s      r`   decz&system_must_validate_cert.<locals>.dec  sO    	tv 	*c!f4'' )A B B		s    	=#8=)r  r  )rz   r5  s   ` r`   system_must_validate_certr6    s(    ?__Q  Jr_   i @ i  doubleIEEEztest requires IEEE 754 doublesc                 Z    	 dd l }t        j                  ||       S # t        $ r d }Y #w xY wNr   )zlibImportErrorr|   
skipUnless)r   r;  s     r`   r#   r#     5     tV,,      **c                 Z    	 dd l }t        j                  ||       S # t        $ r d }Y #w xY wr:  )gzipr<  r|   r=  )r   rA  s     r`   r   r     r>  r?  c                 Z    	 dd l }t        j                  ||       S # t        $ r d }Y #w xY wr:  )bz2r<  r|   r=  )r   rC  s     r`   r   r     s5     sF++  r?  c                 Z    	 dd l }t        j                  ||       S # t        $ r d }Y #w xY wr:  )lzmar<  r|   r=  )r   rE  s     r`   r   r     r>  r?  c                      	 dd l } | j	                         }t        |d          S # t        $ r t        j                  d      w xY w)Nr   _testinternalcapi requiredcode_debug_ranges)_testinternalcapir<  r|   r   
get_configr   )rI  configs     r`   has_no_debug_rangesrL    sQ    >  ))+FF./000  > <==>s	   % Ac                 >    t        j                  t               |       S re   )r|   r   rL  )r   s    r`   requires_debug_rangesrN    s    ??.0&99r_   c                  ^    	 ddl m}  t        j                  | d      S # t        $ r d } Y #w xY w)Nr   unicode_legacy_stringzrequires legacy Unicode C API)	_testcapirQ  r<  r|   r=  rP  s    r`   requires_legacy_unicode_capirS    s>    %3 4>@ @  % $%s    ,,javagetandroidapilevel)rV   rX   z/system/bin/shz/bin/sh
emscriptenwasiforkc                  6    t        j                  t        d      S )Nzrequires working os.fork())r|   r=  r$   r^   r_   r`   r%   r%     s    /1MNNr_   c                  8    	 t        j                  t        d      S )Nzrequires subprocess support)r|   r=  r&   r^   r_   r`   r'   r'     s    =57TUUr_   )modulec                 x    	 d}| rt         st        j                  |      y t        j                  t         |      S )Nzrequires socket support)r(   r|   r   r=  )r[  rf   s     r`   r)   r)   #  s@     $C!##C(( " ""#5s;;r_   z%4Yzhttp://www.pythontest.netdatac                     	 t         j                  dk7  ry dd l}d}|  d}|j                         \  }}t	        |j                  |d             t	        |       t	        d|z         y )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 https://github.com/python/cpython/issues/85100r   )r   r   shutilget_terminal_sizer   center)	test_namer_  rf   detailpadding_s         r`   darwin_malloc_err_warningrf  H  sk    
||x
C C CF
 ))+JGQ	#**Wc
"#	&M	#-r_   c                 R   	 t         j                  j                  |       r| S | t         j                  j                  ||       } t        gt
        j                  z   }|D ]E  }t         j                  j                  ||       }t         j                  j                  |      sC|c S  | S re   )r   r   isabsr   TEST_HOME_DIRr   exists)filenamesubdirr   dnfns        r`   r@   r@   [  s     
ww}}X77<<1?SXX%D )WW\\"h'77>>"by) Or_   c                     	 t        | j                               }|D cg c]  }d|z  	 }}dj                  |      }d|z  S c c}w )Nz%r: %rz, z{%s})sorteditemsr   )dictrq  pair	reprpairs
withcommass        r`   rF   rF   n  sJ    +4::< E-23TD3I39%JJ 4s   Acodereturnc                 J    	 i }t        t        j                  |       |       |S re   )exectextwrapdedent)rv  nss     r`   run_coder}  v  s"    R	B	#Ir_   )linenooffsetc                r   | j                  t        |      5 }t        |dd       d d d        j                  }| j	                  |j
                         || j                  |j
                  |       | j	                  |j                         || j                  |j                  |       y y # 1 sw Y   xY w)Nz<test string>ry  )assertRaisesRegexSyntaxErrorcompile	exceptionassertIsNotNoner~  assertEqualr  )testcase	statementerrtextr~  r  cmr   s          r`   r   r   }  s    		#	#K	9 4R	?F34
,,CSZZ(SZZ0SZZ(SZZ0 4 4s   B--B6c                    dd l }dd l}ddlm} 	 dd l}j                  dd       |j                  j                  |       d   j                  d      d   }t        j                  j                  t        |      }fd}t        j                  j                  |      r ||      }	|	|	S  ||       t        d	       t         rt#        d
| z  t%                      |j&                  j)                         }
|r|
j*                  j-                  d       |
j/                  | t0              }	|r0|	j2                  j5                  d      dk(  r|j7                  |	      }		 t/        |d      5 }|	j9                         }|r$|j;                  |       |	j9                         }|r$d d d        |	j=                           ||      }	|	|	S t?        d|z        # t
        $ r d }Y w xY w# 1 sw Y   ExY w# |	j=                          w xY w)Nr   r   )unlinkcheckr   /c                     t        | gi }|S  |      r|j                  d       |S |j                          y r:  )openseekclose)rn  rz   rj   r  r  s     r`   check_valid_filez*open_urlresource.<locals>.check_valid_file  sA    !d!b!=H1XFF1IH		r_   r   z	fetching %s ...file)zAccept-EncodingrA  timeoutzContent-EncodingrA  )fileobjwbzinvalid resource %r) urllib.requesturllib.parse	os_helperr  rA  r<  popparseurlparser   r   r   r   TEST_DATA_DIRrj  r   r   r   r   requestbuild_opener
addheadersappendr  rO   headersgetGzipFilereadwriter  r   )urlrj   r  urllibr  rA  rk  rn  r  rz   openeroutsr  s    ``          @r`   r<   r<     s   '! FF7D!E||$$S)!,2237;H	mX	.B 
ww~~bR =Hr
 Z!C'.A.CD^^((*F  !<=C!12A		01V;MM!M$"d^ 	sA		!FFH 	 	
	A}
*R/
00_  H	 	 	
	s5   G !G4 -6G($G4 G%$G%(G1-G4 4Hc              #      K   	 dd l }t        t        |       }t        t        | |j	                                	 t        t        |        t        t        | |       y # t        t        | |       w xY wwr:  )ior   r   setattrStringIO)stream_namer  orig_stdouts      r`   captured_outputr    sW     O#{+KCbkkm,/c;''[+.[+.s   5A2A 
A2A//A2c                      	 t        d      S )Nr   r  r^   r_   r`   r   r          8$$r_   c                      	 t        d      S )Nstderrr  r^   r_   r`   r   r     r  r_   c                      	 t        d      S )Nstdinr  r^   r_   r`   r   r     s     7##r_   c                  n    	 dd l } | j                          | j                          | j                          y r:  )gccollect)r  s    r`   
gc_collectr    s'     JJLJJLJJLr_   c               #      K   dd l } | j                         }| j                          	 d  |r| j                          y y # |r| j                          w w xY wwr:  )r  	isenableddisableenable)r  have_gcs     r`   
disable_gcr    sG     llnGJJLIIK 7IIK s   %AA  A AAc                      	 t        j                  d      xs d} d}| j                         D ]  }|j                  d      s|} |dvS )N	PY_CFLAGSr'  z-O)r'  z-O0z-Og)r)  r*  r   r   )cflags	final_optopts      r`   python_is_optimizedr    sS    6%%k28bFI||~ >>$I ...r_   nP0n
getobjects2P0Pnc                 H    dd l }|j                  t        | z   t        z         S r:  )structcalcsize_header_alignfmtr  s     r`   calcobjsizer    s    ??7S=6122r_   c                 H    dd l }|j                  t        | z   t        z         S r:  )r  r  _vheaderr  r  s     r`   calcvobjsizer    s    ??8c>F233r_   i @  i   c                    	 dd l }t	        j
                  |      }t        |      t        k(  r|j                  t        z  s.t        |      t        k7  r+t        |      j                  t        z  r||j                  z  }dt        |      ||fz  }| j                  |||       y # t        $ r t        j                  d      w xY w)Nr   rG  z&wrong size for %s: got %d, expected %d)rI  r<  r|   r   r   	getsizeofr   	__flags___TPFLAGS_HEAPTYPE_TPFLAGS_HAVE_GCSIZEOF_PYGC_HEADr  )testosizerI  r   rf   s         r`   check_sizeofr  #  s    >  ]]1F	aDq{{->>
q'T/Q 1 14D D!222
2Aw%&CVT3'  > <==>s   B" "Cc              '   2  K   	 dd l }t        ||       }|j                  |      }|D ]  }	 |j                  ||        n 	 	 d  |r|r|j                  |       y y y #  Y <xY w# t        $ r   d x}}Y 6xY w# |r|r|j                  |       w w w xY wwr:  )localer   	setlocaler   )catstrlocalesr  categoryorig_localelocs         r`   r>   r>   5  s     66*&&x0  	C  3/	4kX{3 "6  $## kX{3 "6sI   B!A& BABA: BA#!B&A75B:BBc                       fd}|S )Nc                 Z      fd} j                   |_          j                  |_        |S )Nc                     	 t         j                  }dt
        j                  v rt
        j                  d   }nd }t
        j                  d<    |        	  | i ||t
        j                  d= n|t
        j                  d<   t        j                          S # t        $ r t        j                  d      w xY w# |t
        j                  d= n|t
        j                  d<   t        j                          w xY w)Nztzset requiredTZ)timetzsetr   r|   r   r   environ)rj   kwdsr  orig_tzr   tzs       r`   innerz-run_with_tz.<locals>.decorator.<locals>.innerU  s    :

 rzz!**T*!BJJtGT*T*?

4('.BJJt$

# " :''(899: ?

4('.BJJt$

s   B B; B8;=C8)r[   __doc__)r   r  r  s   ` r`   r  zrun_with_tz.<locals>.decoratorT  s%    	, r_   r^   )r  r  s   ` r`   rG   rG   S  s    4 r_   i      r      c                    dt         t        dt        z  d}t        j                  d| t        j                  t        j
                  z        }|t        d|       t        t        |j                  d            ||j                  d      j                            z        }|a|t        kD  rt        }|t        dz
  k  rt        d| d      |ay )	Nr  )kmgtz(\d+(\.\d+)?) (K|M|G|T)b?$zInvalid memory limit r      zMemory limit z too low to be useful)_1M_1Grematch
IGNORECASEVERBOSEr   r   floatgroupr  real_max_memuseMAX_Py_ssize_t_2Gr   )limitsizesr  memlimits       r`   rD   rD   }  s     #X	E 	.+	-Aye=>>5$uQWWQZ-=-=-?'@@AHO. !#'5JKKJr_   c                        e Zd Z	 d Zd Zd Zy)_MemoryWatchdogc                 d    dj                  t        j                               | _        d| _        y )Nz/proc/{pid}/statm)pidF)r   r   getpidprocfilestartedrm   s    r`   rh   z_MemoryWatchdog.__init__  s$    +22ryy{2Cr_   c                    dd l }	 t        | j                  d      }dd l
}|5  t        d      }|j                  t        j                  |g||j                        | _        d d d        d| _        y # t        $ rN} |j                  dj                  |      t               t        j                  j                          Y d }~y d }~ww xY w# 1 sw Y   d| _        y xY w)Nr   rz!/proc not available for stats: {}zmemory_watchdog.py)r  r  T)r  r  r  r   r  r   r  r   r  flush
subprocessr@   Popen
executableDEVNULLmem_watchdogr  )ri   r  rz   r   r  watchdog_scripts         r`   startz_MemoryWatchdog.start  s    	T]]C(A 	 	L&';<O * 0 0#../1R788B8J8J !1 !LD	L
   	HMM=DDQG(*JJ			L
 s#   A1 ?C1	C:ACCCc                     | j                   r5| j                  j                          | j                  j                          y y re   )r  r!  	terminatewaitrm   s    r`   stopz_MemoryWatchdog.stop  s2    <<'')""$ r_   N)r[   r\   r]   rh   r#  r'  r^   r_   r`   r  r    s    $%r_   r  Tc                      	  fd}|S )Nc                 6      fd_         _        S )Nc                    j                   }j                  }t        sd}n|}t        ss*t        ||z  k  rt        j                  d||z  dz  z        t        rLt
        rFt                t        dj                  ||z  dz               t               }|j                          nd }	  | |      |r|j                          S S # |r|j                          w w xY w)Ni  'not enough memory: %.1fG minimum needed   @z* ... expected peak memory use: {peak:.1f}G)peak)r  memuser  r|   r   r   r   r   r  r#  r'  )ri   r  r.  maxsizewatchdogdry_runrz   r  s        r`   r  z.bigmemtest.<locals>.decorator.<locals>.wrapper  s    <<D^^F" #g&66''=f}	245 5 7Bv4&=I#>v?A*, $w'MMO 8MMO s   ,C C)r  r.  )rz   r  r1  r.  r  s   `@r`   r  zbigmemtest.<locals>.decorator  s    	$: r_   r^   )r  r.  r1  r  s   ``` r`   r   r     s     B r_   c                      	  fd}|S )Nc                     t         t        k  rFt        dk\  rt         dk\  rt        j                  d      t        j                  dt        dz  z         |       S )Nl    l        z-not enough memory: try a 32-bit build insteadr+  r,  )r   r  r|   r   )ri   rz   s    r`   r  z!bigaddrspacetest.<locals>.wrapper  sb    &*zU/B''CE E ''=%356 6 T7Nr_   r^   )rz   r  s   ` r`   r   r     s    :
 Nr_   c                     | S re   r^   )r   s    r`   _idr5    s    Jr_   c                     | dk(  r-t               s#t        j                  t         j                        S t	        |       rt
        S t        j                  dj                  |             S )Nr   zresource {0!r} is not enabled)r   r|   r  r   r   r5  r   r   s    r`   requires_resourcer7    sN    5!2!4}}.55668$
}}<CCHMNNr_   c                 (    	  t        d      |       S )NT)cpython)impl_detailr  s    r`   r    r       s     %;t$T**r_   c                     t        di |rt        S | Nt        |      \  }}|rd} nd} t        |j	                               }| j                  dj                  |            } t        j                  |       S )Nz*implementation detail not available on {0}z%implementation detail specific to {0}z or r^   )	r8   r5  _parse_guardsrp  keysr   r   r|   r  )rf   guards
guardnamesdefaults       r`   r:  r:    sj    "6"

{+F3
G>C9CJOO-.
jjZ01==r_   c                 T    | sddidfS t        | j                               d   }| | fS )Nr9  TFr   )listvalues)r?  is_trues     r`   r=  r=    s7    D!5))6==?#A&GK  r_   c                  t    	 t        |       \  } }| j                  t        j                  j                  |      S re   )r=  r  r   implementationr   )r?  rA  s     r`   r8   r8     s4     $F+OFG::c((--w77r_   c                 h     	 t        t        d      s S t        j                          fd       }|S )Ngettracec                      t        j                         }	 t        j                  d         | i |t        j                  |       S # t        j                  |       w xY wre   )r   rI  settrace)rj   r4  original_tracer   s      r`   r  zno_tracing.<locals>.wrapper-  sE     \\^N-T"T,V,^,^,s   A	 	A )r   r   r  r  )r   r  s   ` r`   
no_tracingrM  (  s7    O3
#			- 
	- r_   c                 ,    	 t        t        |             S re   )rM  r    r;  s    r`   refcount_testrO  8  s     l4())r_   c                     	 dd l } t        j                  |j
                  d      |       S # t        $ r  t        j                  d      |       cY S w xY w)Nr   zneeds _testcapi modulezneeds Limited API support)rR  r<  r|   r  r=  LIMITED_API_AVAILABLE)r  rR  s     r`   r2   r2   C  sa    =F8'')DFFJL L  =6x}}56t<<=s   , $AAc                 V     t        j                  t        j                  d      |       S )Nzrequires specialization)r|   r=  opcodeENABLE_SPECIALIZATIONr;  s    r`   r3   r3   K  s1    A8$$&?AAEG Gr_   c                     	 g }| j                   D ]T  }t        |t        j                        rt	        ||       |j                  |       ; ||      sD|j                  |       V || _         y re   )_tests
isinstancer|   	TestSuite_filter_suiter  )suiteprednewtestsr  s       r`   rY  rY  O  s_    HH &dH../$%OOD!Dz%& ELr_   )slotsc                   ^    e Zd ZU dZeed<   dZeed<   dZeed<   ed        Z	ed        Z
d Zy)		TestStatsr   	tests_runru   skippedc                 |    t        | j                  t        | j                        t        | j                              S re   )r_  testsRunr   ru   ra  )r   s    r`   from_unittestzTestStats.from_unittesta  s-    V__-V^^,. 	.r_   c                 B    t        | j                  | j                        S re   )r_  	attemptedfailed)resultss    r`   from_doctestzTestStats.from_doctestg  s    ** ) 	)r_   c                     | xj                   |j                   z  c_         | xj                  |j                  z  c_        | xj                  |j                  z  c_        y re   )r`  ru   ra  )ri   rc   s     r`   
accumulatezTestStats.accumulatel  s8    %//)'%r_   N)r[   r\   r]   r`  r   __annotations__ru   ra  staticmethodrd  ri  rk  r^   r_   r`   r_  r_  [  sK    IsHcGS. .
 ) )&r_   r_  c                 6   	 t        t        j                  t        t        d u      }|j                  |       }t        #t        j                  |j                                |j                  s|j                  s|j                  st        |j                         st        j                  |      }t        |j                        dk(  r|j                   s|j                  d   d   }nDt        |j                         dk(  r|j                  s|j                   d   d   }nd}t        s|dz  }|j                  D cg c]  \  }}t#        |      |f }}}|j                   D cg c]  \  }}t#        |      |f }}}t%        ||||      |S c c}}w c c}}w )N)	verbositycapture_outputr   r   zmultiple errors occurredz!; run in verbose mode for detailsrb   )r   r   r   r   junit_xml_listrunr  get_xml_elementrc  ra  rt   r   wasSuccessfulr_  rd  r   ru   r   rr   )	rZ  runnerr   rc   r   tcexc_strrt   ru   s	            r`   
_run_suiterx  r  sP   <SZZ'.-;4-GJF ZZF!f4467??6>>&--!''/v}}"6??--"1%C!Q&v}}//!$Q'C,CC#FFC8>FW3r7G$FF:@//J;2wSWg&JJ#CGGM GJs   ;F$Fc                 B    t         yt        | j                               S NT)_match_test_funcidr;  s    r`   
match_testr}    s    	**r_   c                 <    d| v xr t        j                  d|        S )Nr   z[?*\[\]])r  search)r   s    r`   _is_full_match_testr    s!     7NERYY{G%D!DEr_   c                     | d} |d}d x| t         k7  rt        |       \  } |t        k7  rt        |      \  }t        |       a t        |      a	fd}|ay y )Nr^   c                 B    d}d}r |       }r |       }|xr | S NTFr^   )test_idacceptignoreaccept_funcignore_funcs      r`   match_functionz'set_match_tests.<locals>.match_function  s4    FF$W-$W-(&j(r_   )_accept_test_patterns_compile_match_function_ignore_test_patternsr   r{  )accept_patternsignore_patternsr  r  r  s      @@r`   set_match_testsr    s      $$K+//'>'O$//'>'O$ "/2!/2+"9	) * #:r_   c                 "   | sd }d} | |fS t        t        t        |             rt        |       j                  }| |fS dd l}dj                  t        |j                  |             }t        j                  |      j                  fd}|}| |fS )Nr^   r   |c                 ^     |       ryt        t        | j                  d                  S )NTr   )anyr   r   )r  regex_matchs    r`   match_test_regexz1_compile_match_function.<locals>.match_test_regex  s-    7# 
 3{GMM#,>?@@r_   )allr   r  set__contains__fnmatchr   	translater  r  r  )patternsr   r  regexr  r  s        @r`   r  r    s    2 T>1 
S$h/	0 8}))* T>' 	W..9: jj'--		A  T>r_   c                     	 t         j                  t         j                  f}t        j                         }t        j                         }| D ]  }t	        |t
              rO|t        j                  v r2|j                  |j                  t        j                  |                Wt        d      t	        ||      r|j                  |       |j                  |j                  |              t        |t               t        |      S )Nz)str arguments must be keys in sys.modules)r|   rX  TestCase
TestLoaderrW  r   r   modulesaddTestloadTestsFromModuler   loadTestsFromTestCaserY  r}  rx  )classesvalid_typesr   rZ  clss        r`   r   r     s    ;%%x'8'89K  "F E 	=c3ckk!f88S9IJK !LMM[)MM#MM&66s;<	= %$er_   c                       y re   r^   r^   r_   r`   _check_docstringsr    s    6r_   WITH_DOC_STRINGSztest requires docstringsc                 2   	 dd l }|t        }nd }|j                  | ||      }|j                  r<t        j                  |      }t        |j                   d|j                   d|      t        r$t        d| j                  |j                  fz         |S )Nr   )r   optionflagsz of z doctests failedrb   z,doctest (%s) ... %d tests with zero failures)
doctestr   testmodrg  r_  ri  r   rf  r   r[   )r[  ro  r  r  rh  rc   s         r`   r   r     s     		oof%.)4  6G ~~&&w/GNN+40A0A/B C+ ,$& 	& < 1 123 	4Nr_   c                      t         j                  t         j                  j                          t         j                  t         j                  j                          y y re   )r   r   r  r  r^   r_   r`   flush_std_streamsr  0  s;    
zz


zz

 r_   c                     t                t        j                  }| j                         D ]  }t	        d| |        |j                          y )NzWarning -- r  )r  print_warningorig_stderr
splitlinesr   r  )rf   streamlines      r`   r  r  7  sC    &&F  1D6"01
LLNr_   c                      	 t        t        d      rt        t        d      sy t        sy 	 	 t        j                  dt        j                        \  } }| dk(  ry t        d|         da?# t
        $ r Y y w xY w)NwaitpidWNOHANGTr  r   z%reap_children() reaped child process )r   r   r&   r  r  r   r  environment_altered)r  statuss     r`   r=   r=   L  s     B	"wr9'=# 	**R4KC !8=cUCD"   		s   'A* *	A65A6c              #   4  K   	 t        | |      r,t        | |      }t        | ||       	 | t        | ||       y t        | ||       	 d  t        | |      rt        | |       y y # t        | ||       w xY w# t        | |      rt        | |       w w xY wwre   )r   r   r  delattr)r   attrnew_valreal_vals       r`   rB   rB   j  s      sD3%T7#	)NCx(T7#	#sD!T" " Cx( sD!T" "s3   'BA( B
A: B(A77B:BBc              #      K   	 || v r| |   }|| |<   	 | || |<   y || |<   	 d  || v r| |= y y # || |<   w xY w# || v r| |= w w xY wwre   r^   )r   itemr  r  s       r`   r?   r?     s      s{t9D		!N CID		s{I  !CI s{I s+   A0 A: 	A7A
AAc                  ,    	 dd l } | j                         S r:  )r  _args_from_interpreter_flagsr  s    r`   args_from_interpreter_flagsr    s    22244r_   c                  ,    	 dd l } | j                         S r:  )r  "_optim_args_from_interpreter_flagsr  s    r`   !optim_args_from_interpreter_flagsr    s    +88::r_   c                       e Zd ZdZd Zd Zy)rC   )rf   messagec                 v    	 d}|D ]0  }||   }|j                  |      }| j                  |||      r-d} |S  |S r  )r  match_value)ri   dr4  r   r   vdvs          r`   matcheszMatcher.matches  sY    	  	Aq	AqB##Ar1-	 r_   c                     	 t        |      t        |      k7  rd}|S t        |      t        us|| j                  vr||k(  }|S |j                  |      dk\  }|S )NFr   )r   r   _partial_matchesfind)ri   r   r  r  r   s        r`   r  zMatcher.match_value  sh    	 7d2hF
 	 "XS AT-B-B$B2gF  WWQZ1_Fr_   N)r[   r\   r]   r  r  r  r^   r_   r`   rC   rC     s    )"
r_   rC   c                     	 dd l }t        Lt        j                  dk(  r7|j	                         dk(  r$t        j                         j                  dk(  rdandat        r t        j                  d      |       S | S )Nr   rV   cp65001r'  TFz!buggy MSVC UCRT strptime/strftime)
r  _buggy_ucrtr   r   getencodingr  	localtimetm_zoner|   r  )r  r  s     r`   r.   r.     sn     <<7"""$	1 ((B.KKGR=8==<=dC\X\\r_   c                   l    e Zd Z	 ddZej
                  dk(  rd Znd Zd Zd Zd Z	d	d
dZ
d	d
dZy)PythonSymlinkNc                    ddl m} |xs t        j                  j	                  |      | _        g | _        t        j                  j                  t        j                        | _
        g | _        d | _        | j                          y )Nr   )TESTFN)r  r  r   r   abspathlink_linkedrealpathr   r  real
_also_link_env_platform_specific)ri   r  r  s      r`   rh   zPythonSymlink.__init__  sY    %3BGGOOF3	GG$$S^^4		!r_   rV   c           
         dd l }dd l}t        j                  j	                  | j
                        r?t        j                  j                  | j
                        s|j                  d      | _        |j                  t        j                        }t        j                  j                  |      }t        j                  j                  | j                        }| j                  j                  |t        j                  j                  |t        j                  j                  |            f       |j                  t        j                  j                  |j!                  |      d            D ]Z  }| j                  j                  |t        j                  j                  |t        j                  j                  |            f       \ t        j"                  D ci c]&  }|j%                         t        j&                  |      ( c}| _        t        j                  j                  | j
                        | j(                  d<   t+        j,                         rt.        | j(                  d<   y y c c}w )Nr   zvcruntime*.dll
PYTHONHOME
PYTHONPATH)glob_winapir   r   lexistsr  rj  GetModuleFileNamer   	dllhandledirnamer  r  r  r   basenameescaper  uppergetenvr  r)  is_python_buildr   )ri   r  r  r   src_dirdest_dirruntimer   s           r`   r  z PythonSymlink._platform_specific  s   wwtyy)"''..2K $55a8	++CMM:Cggooc*Gwwtyy1HOO""Xrww'7'7'<=$   99RWW\\$++g2FHX%YZ &&GGLL277+;+;G+DE(  ;=**EQBIIaL0EDI&(ggoodii&@DIIl#((**4		,' + Fs   +I/c                      y re   r^   rm   s    r`   r  z PythonSymlink._platform_specific      r_   c                 .   t        j                  | j                  | j                         | j                  j                  | j                         | j                  D ]6  \  }}t        j                  ||       | j                  j                  |       8 | S re   )r   symlinkr  r  r  r  r  )ri   r  r  s      r`   	__enter__zPythonSymlink.__enter__  sl    


499dii(DII&// 	&JD$JJtT"LL%	& r_   c                     | j                   D ]  }	 t        j                  |        y # t        $ r+}t        rt        dj                  ||             Y d }~Kd }~ww xY w)Nzfailed to clean up {}: {})r  r   removeIOErrorr   r   r   )ri   exc_type	exc_valueexc_tbr  exs         r`   __exit__zPythonSymlink.__exit__"  sV    LL 	HDH		$	H  H5<<T2FGHs   )	A!AAc                 x   dd l }|g|}|j                  ||j                  |j                  |      }|j                         }|j                  |k7  rht
        r>t        t        |d                t        t        |d         t        j                         t        dj                  |j                              |S )Nr   )r   r  envr   r  z'unexpected return code: {0} (0x{0:08X}))r  r  PIPEcommunicate
returncoder   r   reprr   r  RuntimeErrorr   )	ri   pythonrj   r  r  r  cmdpr  s	            r`   _callzPythonSymlink._call*  s    ooS$.OO  >MMO<<:%d1Q4j!d1Q4jszz29@@NP Pr_   r   )r  c                >    | j                  | j                  |d |      S re   )r  r  ri   r  rj   s      r`   	call_realzPythonSymlink.call_real8  s    zz$))T4<<r_   c                R    | j                  | j                  || j                  |      S re   )r  r  r  r  s      r`   	call_linkzPythonSymlink.call_link;  s    zz$))T499jAAr_   re   )r[   r\   r]   rh   r   r   r  r  r  r  r  r  r^   r_   r`   r  r    sG    =
" ||w	56	H +, = +, Br_   r  c                 d    	 t          xs t        }d}|r| S  t        j                  |      |       S )Nz#Not run for (non-extended) PGO task)rH   PGO_EXTENDEDr|   r  )r  okrf   s      r`   skip_if_pgo_taskr  ?  s4    E	 LB
/C43-8==-d33r_   r^   )r  c                    	 t        t        |             t        t        |            z
  }|r|t        |      z  }t        d |D              }|S )Nc              3   d   K   | ](  }|j                  d       r|j                  d      r| * yw)re  __N)r   endswith).0r  s     r`   	<genexpr>z&detect_api_mismatch.<locals>.<genexpr>P  s0      Fa ||C0AJJt4D  Fs   .0)r  dir)ref_api	other_apir  missing_itemss       r`   r,   r,   F  sU     G%C	N(;;MV$ F= F FMr_   c                    	 ||j                   f}nt        |t              r|f}t        |      }t	        |      D ]l  }|j                  d      s||v rt        ||      }t        |dd       |v s(t        |d      rAt        |t        j                        r\|j                  |       n | j                  |j                  |       y )Nre  r\   )r[   rW  r   r  r  r   r   r   types
ModuleTypeaddassertCountEqual__all__)	test_caser[  name_of_moduleextranot_exportedexpectedr   r   s           r`   r-   r-   U  s    %N  //,	NC	((+5zHF ??34<#7fd#Ct,>S,/U%5%56LL v~~x8r_   c                    	 dd l }|j                  |j                  |j                  z  |j
                  z  |j                  z         t        |d      rv|j                  |j                  |j                  fD ]O  }| r9|j                  ||j                         |j                  ||j                         >|j                  |d       Q y y # t        $ r Y y w xY w)Nr   CrtSetReportMode)msvcrtr<  SetErrorModeSEM_FAILCRITICALERRORSSEM_NOALIGNMENTFAULTEXCEPTSEM_NOGPFAULTERRORBOXSEM_NOOPENFILEERRORBOXr   CRT_WARN	CRT_ERROR
CRT_ASSERTr.  CRTDBG_MODE_FILECrtSetReportFileCRTDBG_FILE_STDERR)r   r/  r  s      r`   suppress_msvcrt_assertsr;    s     55 ;;< 667 !778 9 v)*//6#3#3V5F5FG 	.A''6+B+BC''6+D+DE''1-	. +  s   C 	CCc                   "    e Zd Z	 dZdZd Zd Zy)rE   Nc                    	 t         j                  j                  d      r	 dd l}|j                         | _        |j                  | j                  |j                  z         t        |d      rxi | _
        |j                  |j                  |j                  fD ]K  }|j                  ||j                        }|j!                  ||j"                        }||f| j                  |<   M | S 	 dd l}|| _        | j$                  t	 | j$                  j'                  | j$                  j(                        | _        | j$                  j+                  | j$                  j(                  d| j                  d   f       t         j                  dk(  rodd l}g d}|j3                  ||j4                  |j4                        }|5  |j7                         d   }	d d d        	j9                         dk(  rt;        d	d
d       | S # t        $ r Y y w xY w# t        $ r d | _        Y &w xY w# t,        t.        f$ r Y w xY w# 1 sw Y   gxY w)Nr   r   r.  r   r   )z/usr/bin/defaultsr  zcom.apple.CrashReporter
DialogType)r   r  s	   developerz:this test triggers the Crash Reporter, that is intentionalr'  T)endr  )r   r   r   r/  r<  GetErrorMode	old_valuer0  r3  r   	old_modesr5  r6  r7  r.  r8  r9  r:  r   	getrlimitRLIMIT_CORE	setrlimitr   r   r  r  r  r  stripr   )
ri   r/  report_typeold_modeold_filer   r  r  procr   s
             r`   r  zSuppressCrashReport.__enter__  s.   	 <<""5) $002DN1M1M MN v12!#$*OO$*$4$4$*$5$5$7 EK  &66{"33 5H%66{"55 7H2:H2DDNN;/ET A% ( }}(%)]]%<%<T]]=V=V%WDNMM++DMM,E,E-.q0A,BD
 ||x'!@!''/9/9 ( @  3!--/2F3<<>\1 057tE k  0  % $% #G,  3 3sB   G9 *H A3H :H49	HHHHH10H14H=c                    	 | j                   y t        j                  j                  d      rvdd l}|j                  | j                          | j                  rJ| j                  j                         D ],  \  }\  }}|j                  ||       |j                  ||       . y y | j                  <	 | j                  j                  | j                  j                  | j                          y y # t        t        f$ r Y y w xY w)Nr   r   )rA  r   r   r   r/  r0  rB  rq  r.  r9  r   rE  rD  r   r   )ri   
ignore_excr/  rG  rH  rI  s         r`   r  zSuppressCrashReport.__exit__  s    O>>!<<""5)/~~9=9M9M9O C5K!5(H++KB++KBC 
 }}(MM++DMM,E,Et~~V ) #G, s   1:C- -C?>C?)r[   r\   r]   rA  rB  r  r  r^   r_   r`   rE   rE     s    
 II@Dr_   rE   c                     	 t               d	 j                     dfd}| j	                  |       t        |       y # t        t        f$ r t        d       Y Ew xY w)NFTc                  >     rt               y t               y re   )r  r  )attr_is_local	attr_nameobject_to_patchrA  s   r`   cleanupzpatch.<locals>.cleanup  s    OY	:OY/r_   )r   __dict__r   r  
addCleanupr  )test_instancerQ  rP  	new_valuerR  rO  rA  s    ``  @@r`   patchrW    s~     OY' M#,,Y7	 0 W% OY	2 H% >OY=	>s   A A,+A,c              #   @   K   	 	 | d d  }d  || d d  y # | d d  w xY wwre   r^   )origsaveds     r`   
patch_listr[  '  s,     7QQ%Qs   	 c                 B    	 t                dd l}|j                  |       S r:  )_check_tracemallocrR  run_in_subinterp)rv  rR  s     r`   r^  r^  1  s#     %%d++r_   )own_gilc                \    	 t                dd l}|	|rdnd|d<    |j                  | fi |S )Nr   r   r   gil)r]  rR  run_in_subinterp_with_config)rv  r_  rK  rR  s       r`   rb  rb  ;  s=     $!u1911$A&AAr_   c                  v    	 dd l } | j                         rt        j                  d      y # t        $ r Y y w xY w)Nr   zUrun_in_subinterp() cannot be used if tracemalloc module is tracing memory allocations)tracemalloc
is_tracingr|   r   r<  )rd  s    r`   r]  r]  H  sI    ; !!### %: ; ; $  s   , 	88c                      G fdd|      }d | ||       | j                  t        t               t                | j	                         y )Nc                       e Zd Z fdZy)%check_free_after_iterating.<locals>.Ac                 @    d	 t               y # t        $ r Y y w xY wrz  )nextStopIteration)ri   doneits    r`   __del__z-check_free_after_iterating.<locals>.A.__del__X  s&    DR  s    	N)r[   r\   r]   rn  )rl  rm  s   r`   Arh  W  s    	r_   ro  F)assertRaisesrk  rj  r  
assertTrue)r  iterr  rj   ro  rl  rm  s        @@r`   check_free_after_iteratingrs  V  sF    C  D	ahBmT2.LOODr_   c                 ^   	 ddl m}m}m} ddlm} |j                         } |j                  |       |j                  dk(  r	 |j                          |j                  D ]6  }| r|| vr
t        ||      }| rn|s|j                  |d         1|d   c S  y # |j                  $ r Y yw xY w)Nr   )	ccompilerr)  spawn)rt   msvc)setuptools._distutilsru  r)  rv  
setuptoolsrt   new_compilercustomize_compilercompiler_type
initializePlatformErrorexecutablesr   find_executable)	cmd_namesru  r)  rv  rt   compilerr   r  s           r`   rI   rI   i  s     BA!%%'H I  *'	! $$ 
Y.h%   Q(0q6M
 ## 		s   B B,+B,c                     d}t         r;| |k  r6t        (dd l}|j                  ddg      j	                         dk(  at        r|} t        j                  |       S )Ngh㈵>r   getpropzro.kernel.qemu   1)r5   _is_android_emulatorr  check_outputrF  r   r:   )intervalminimum_intervalr  s      r`   r:   r:     s`     h!11'$.$;$; )+;<%>>Ceg%N 'H  **r_   c                      	 	 t        j                  d      } | S # t        t        f$ r3 	 t        j                  d      } Y | S # t        t        f$ r d} Y Y | S w xY ww xY w)NSC_PAGESIZESC_PAGE_SIZEi   )r   sysconfr   r   )	page_sizes    r`   r;   r;     sr    &JJ}-	  ' 	

>2I  N+ 	I	s&    AAAAAAc               #      K   dd l } t        j                  j                         }| j	                         }	 | j                          d  |r| j                  |d       y y # |r| j                  |d       w w xY ww)Nr   T)r  all_threads)faulthandlerr   
__stderr__fileno
is_enabledr  r  )r  fdr  s      r`   disable_faulthandlerr    su     
 
			 B((*J;RT: :RT: s   3A<A! 
A<!A99A<c                        e Zd Z	 d Zd Zd Zy)SaveSignalsc                     dd l }|| _         |j                         | _        dD ]*  }	 t        ||      }| j                  j                  |       , i | _        y # t        $ r Y @w xY w)Nr   )SIGKILLSIGSTOP)signalvalid_signalssignalsr   r   r  handlers)ri   r  signamesignums       r`   rh   zSaveSignals.__init__  sm    ++-- 	(G 1 LL'	(  " s   A	A$#A$c                     | j                   D ]/  }| j                  j                  |      }|!|| j                  |<   1 y re   )r  r  	getsignalr  ri   r  handlers      r`   savezSaveSignals.save  sA    ll 		,Fkk++F3G $+DMM&!		,r_   c                     | j                   j                         D ]!  \  }}| j                  j                  ||       # y re   )r  rq  r  r  s      r`   restorezSaveSignals.restore  s6    #}}224 	0OFGKKvw/	0r_   N)r[   r\   r]   rh   r  r  r^   r_   r`   r  r    s    
,0r_   r  c                  "    dd l } | j                  S r:  )rR  WITH_PYMALLOC)rR  s    r`   with_pymallocr    s    """r_   c                       e Zd Z	 d Zd Zy)
_ALWAYS_EQc                      yrz  r^   ri   others     r`   __eq__z_ALWAYS_EQ.__eq__      r_   c                      yNFr^   r  s     r`   __ne__z_ALWAYS_EQ.__ne__      r_   N)r[   r\   r]   r  r  r^   r_   r`   r  r    s    r_   r  c                        e Zd Z	 d Zd Zd Zy)	_NEVER_EQc                      yr  r^   r  s     r`   r  z_NEVER_EQ.__eq__  r  r_   c                      yrz  r^   r  s     r`   r  z_NEVER_EQ.__ne__  r  r_   c                      y)Nr   r^   rm   s    r`   __hash__z_NEVER_EQ.__hash__  s    r_   N)r[   r\   r]   r  r  r  r^   r_   r`   r  r    s    r_   r  c                       e Zd Z	 d Zd Zy)_LARGESTc                 "    t        |t              S re   )rW  r  r  s     r`   r  z_LARGEST.__eq__  s    %**r_   c                      yr  r^   r  s     r`   __lt__z_LARGEST.__lt__  r  r_   N)r[   r\   r]   r  r  r^   r_   r`   r  r    s    +r_   r  c                       e Zd Z	 d Zd Zy)	_SMALLESTc                 "    t        |t              S re   )rW  r  r  s     r`   r  z_SMALLEST.__eq__  s    %++r_   c                      yr  r^   r  s     r`   __gt__z_SMALLEST.__gt__  r  r_   N)r[   r\   r]   r  r  r^   r_   r`   r  r    s    ,r_   r  c                  8    	 dd l } | j                  j                  S r:  )asyncio.eventsevents_event_loop_policy)asyncios    r`   maybe_get_event_loop_policyr    s    N>>,,,r_   c                 ~   | |}}dd l }|j                         5 }|j                         dz  }t        |d      |_        |j                  |      }|dz
  |z  |z  }||z  }	||	z
  }
||
z
  }||dz
  z  |dz
  |z  |z  z  |	d|	z
  z  z   }t        |      t        |j                               fcd d d        S # 1 sw Y   y xY w)Nr   r      r   )decimallocalcontext
bit_lengthmaxprecDecimalr  sqrt)nbinsnballsr  r   r  ctxbitsrm  p1empty	meanemptyoccupied
collisionsvars                r`   collision_statsr  !  s    &qA$ 				 43||~! tR=__QFb=Q&K	y=\
"Q$i"Q$Q&a)m)DDZ %
"334 4 4s   BB33B<c                   &    e Zd Z	 d Zd Zd Zd Zy)catch_unraisable_exceptionc                      d | _         d | _        y re   )
unraisable	_old_hookrm   s    r`   rh   z#catch_unraisable_exception.__init__\  s    r_   c                     || _         y re   )r  )ri   r  s     r`   _hookz catch_unraisable_exception._hook`  s     %r_   c                 Z    t         j                  | _        | j                  t         _        | S re   )r   unraisablehookr  r  rm   s    r`   r  z$catch_unraisable_exception.__enter__e  s     ++!ZZr_   c                 2    | j                   t        _        | `y re   )r  r   r  r  )ri   exc_infos     r`   r  z#catch_unraisable_exception.__exit__j  s    !^^Or_   N)r[   r\   r]   rh   r  r  r  r^   r_   r`   r  r  C  s    0%

r_   r  r  c          	         	 t         j                  dk7  rdd l}|t        }t	        j
                         }t        |d      D ]0  }t        j                  | t         j                        \  }}|dk7  s0 n{ 	 t        j                  | |j                         t        j                  | d       t	        j
                         |z
  }t        d|  d|dd      t        j                  | d      \  }}t        j                  |      }	|	|k7  rt        d|  d	|	 d
| d      || k7  rt        d| d|        y # t        $ r Y w xY w)Nntr   Ferrorzprocess z is still running after .1fz secondsz exited with code z, but exit code z is expectedzpid z != pid )r   r   r  rQ   r  	monotonicsleeping_retryr  r  killr  r   AssertionErrorwaitstatus_to_exitcode)
r  exitcoder  r  
start_timere  pid2r  dt	exitcode2s
             r`   wait_processr  o  sZ   	 
ww$?"G^^%
u5 	<A::c2::6LD&qy	<V^^,

3"
 !J.B 8C5 1**,S"; < < zz#q)f))&1IHxu,>yk J..6Z|E F 	F s{tD6#788 #  s   66D5 5	E Ec                      	 ddl m}   | d        | d      }t        j                  dk(  r	 |j	                  d        y y # t
        $ r}t        j                  d|      d }~ww xY w)Nr   )import_module_multiprocessingzmultiprocessing.synchronizelinux)r  z broken multiprocessing SemLock: )import_helperr  r   r   Lockr   r|   r   )r  synchronizeexcs      r`   *skip_if_broken_multiprocessing_synchronizer    s{    
 - $%   =>K
||w	P &   	P##&Fsg$NOO	Ps   A   	A&	A!!A&c                     	 |j                   }|j                  }|dk7  r| d| }n| }dt        j                  |       d} | j                  t
        ||g|i | y )Nbuiltinsr   zcannot create 'z' instances)r\   r[   r  r  r  	TypeError)r  tprj   r  modr   qualnamerf   s           r`   r/   r/     so    
 --C;;D
jU!D6?VBIIh/0
<CHy#rADADAr_   c                      	 	 dd l } | j                         }t        |dz
  d      S # t        t        f$ rA}	 d}t	        j
                         }||dz  }|j                  }|d }n# d }w xY wY d }~Zd }~ww xY w)Nr   r   )rI  get_recursion_depthr<  RecursionErrorr   	_getframef_backr  )rI  depthr  frames       r`   r  r    s     !557 uqy! ( 
	EMMOE#
 #
 EDEE
s&   & A6+A%"A1%A))A11A6c                  J    	 t        j                         } t               }| |z
  S re   )r   getrecursionlimitr  )r  r  s     r`   get_recursion_availabler    s)    
 !!#E!E5=r_   c              #      K   	 t        j                         }	 t        j                  |        d  t        j                  |       y # t        j                  |       w xY wwre   )r   r  setrecursionlimit)r  original_limits     r`   set_recursion_limitr    sI     1**,N.e$n-n-   A"A A"AA"c                 v    	 | dk  rt        d      t               }t        |dz
  d      }|| z   }t        |      S )Nr  z-max_depth must be at least 3, got {max_depth}r   )r   r  r  r  )	max_depthr  r  s      r`   rA   rA     sI    
 1}HII!E	1EIEu%%r_   r[  likec          
      t    t               }t        j                  dt        | |dt	        |       dz          |S )Nr  
(?#support))r  r[  r  )objectr  filterwarningsDeprecationWarningr|  )r[  r  tokens      r`   ignore_deprecations_fromr#    s<    HE#*RYKq11	 Lr_   tokensc                     | st        d      g }t        d | D              }t        j                  D ]j  \  }}}}}|dk(  rG|t        u r?t        |t        j                        r|j                  }n|xs d}|j                  |      rU|j                  |||||f       l t        j                  |k7  r(|t        j                  d d  t        j                          y y )Nz<Provide token or tokens returned by ignore_deprecations_fromc              3   :   K   | ]  }d t        |       d  yw)r  r  N)r|  )r  r"  s     r`   r  z-clear_ignored_deprecations.<locals>.<genexpr>	  s     DE
2e9+Q/Ds   r  r'  )r   r   r  filtersr!  rW  r  Patternr   r  r  _filters_mutated)	r$  new_filtersr  actionr  r  r[  r~  rf   s	            r`   clear_ignored_deprecationsr,  	  s    WXXKDVDDH5=5E5E H166X(.@"@'2::.oom||H%FGXvvFGH ;&)!!# 'r_   c                      	 dd l } 	 dd l}t        j
                  |d      S # t        $ r t        j                  dd      cY S w xY w# t        $ r d }Y Hw xY w)Nr   Tzvenv: ensurepip requires zlibzvenv: pip requires ctypes)r;  r<  r|   r   r   r=  )r;  r   s     r`   requires_venv_with_pipr.  	  sc    F v'BCC  Ft%DEEF  s    ! A AAAAc                 F   	 t        j                  d      xs t        }t        j                  |      }t        |d      }|D ]L  }|j                  d      s| dz   }|j                  |      s,t        j                  j                  ||      c S  t        d|  d|       )NWHEEL_PKG_DIRT)reversez.whlr   zNo wheel for z
 found in )r)  r*  ri  r   listdirrp  r  r   r   r   r   )pkgname	wheel_dir	filenamesrk  prefixs        r`   
_findwheelr7  -	  s    
 ((9J]I

9%Iy$/I 5  (3v&77<<	8445 mG9JykJ
KKr_   c              #     K   dd l }ddlm}  |       5 }t        j                  dddd| g}t
        r%t                t        dd	j                  |             |j                  |d
       t        j                  j                  ||       }t        j                  j                  t        j                        }t        j                  dk(  r"t        j                  j                  |d|      }n!t        j                  j                  |d|      }|dddddt        d      t        d      g}t
        r%t                t        dd	j                  |             |j                  |d
       | d d d        y # 1 sw Y   y xY ww)Nr   r   )temp_cwdz-Xdevz-mvenvzRun: T)r  rV   Scriptsbinpipinstallry  wheel)r  r  r9  r   r  r   r   r   rr  r   r   r  r   r7  )venv_dirr  r9  temp_dirr  r;  
python_exer  s           r`   $setup_venv_with_pip_setuptools_wheelrE  C	  s#    #	 x~~tUD&(CG&#((3-(s$'ww||Hh/ WW%%cnn5
<<7"WW\\$	:>FWW\\$z:FtUUI,''"$ G&#((3-(s$'5  s   E?EE3*	E?3E<8E?gettotalrefcountc                     	 | g}|j                  |       dd l}d }||_        |j                  |       t	        t
        d      r!d }||_        t        j                  |       y y )Nr   c                      y re   r^   )encodings    r`   search_funcz"late_deletion.<locals>.search_func	  r  r_   register_at_forkc                       y re   r^   r^   r_   r`   atfork_funcz"late_deletion.<locals>.atfork_func	  r  r_   )before)r  codecs	referenceregisterr   r   rK  )r   	ref_cyclerO  rJ  rM  s        r`   late_deletionrS  j	  sg    	$ IY %K
OOK r%&	 )
;/ 'r_   r  c            #     K   	 | dk  rt        d      t        j                         }|| z   }	 d  t        j                         |k\  rn|r2t        j                         |z
  }d|dd}|r| d| }t        |      y w)Nr   z!timeout must be greater than zeroz	timeout (r  z	 seconds)r   )r   r  r  r  )r  err_msgr  r  deadliner  rf   s          r`   
busy_retryrW  	  s     * !|<==!JG#H
>>x'	  ^^
*"S+EG9%CS!! s   A>B g{Gz?g      ?)
init_delay	max_delayr  c            #      K   	 |}t        | ||      D ]*  }d  t        j                  |       t        |dz  |      }, y w)Nr  r   )rW  r  sleepmin)r  rU  rX  rY  r  delayre  s          r`   r  r  	  sI     0 E6 *

5EAIy)	*s   A Ac              #      K   	 t        j                         }	 t        j                  |        d  t        j                  |       y # t        j                  |       w xY wwre   )r   get_int_max_str_digitsset_int_max_str_digits)
max_digitscurrents     r`   adjust_int_max_str_digitsrc  	  sI     H((*G,"":.""7+""7+r  i  i  unames390xzskipped on s390xre   )zrequires zlib)zrequires gzip)zrequires bz2)zrequires lzma)z$requires co_positions / debug_ranges)r'  )T)NNr:  )Nr^   r^   )F)r^   )d   )r[   r<  
contextlibdataclassesr  r  rS  r   r  r   r   r)  rz  r  r#  r|   r  
testresultr   r'  rN   r   r  rO   rP   rQ   r   r  r  __file__TEST_SUPPORT_DIRri  r   	REPO_ROOTr   r
   r   rr   r   r   r   r*   r+   r!   r   r   r   r  rq  r	   r   r   r   r   r   r   r   r  r   r   r   r   r0   r1   r6  r   SOCK_MAX_SIZEr=  r  __getformat__r   r"   r#   r   r   r   rL  rN  rS  r4   r   r5   r9   r6   r7   r$   r%   r&   r'   r(   r)   has_strftime_extensionsstrftimer   TEST_HTTP_URLrH   r  r   r  rf  r@   rF   r   rr  r  r}  r   r<   contextmanagerr  r   r   r   r  r  r  r  r  r  r  r  r  r  r  r>   rG   r  r  r  _4Gr/  r  rD   r  r   r   r5  r7  r    r:  r=  r8   rM  rO  r2   r3   rY  	dataclassr_  rx  r{  r  r  r}  r  r  r  r   r  r*  MISSING_C_DOCSTRINGSr  HAVE_DOCSTRINGSrequires_docstringsr   r  r  r  r  r  r=   rB   r?   r  r  rC   r  r.   r  r  r,   r-   r;  rE   rW  r[  r^  rb  r]  rs  rI   r  r:   r;   r  r  r  r  rJ   r  rK   total_orderingr  rL   r  rM   r  	hash_infowidth	NHASHBITSr  r  r  r  r/   r  r  r  rA   r#  r,  r.  cacher7  rE  rR   rS  rW  r  rc  rS   rT   r   rd  machinerU   r^   r_   r`   <module>r~     s   =~
F
GG      	 	  
       '(h  <<7#++= \\Y     77??277??8#<=  01WW__]+
GGOOJ'	5I 5 =J =)E )X&& $ 

  *"K$Z>	76:8:	/  %Uu 6)eEe )$ $ % (H''	!,,V4$& --,-1:@ LL##F+	S./
<<++%/!YJJ ,
,,&
 2v&L}+<LW O +*:7{ V
 '&6w; &+ 
<   <<7"/$--"6%"? ,   ]F3&&3 4V, 	1$t 	141n 	/ 	/%%
$  / 	
3WnGFS=34
   ($ 4 4:F 
Sj#g#g*% %B.`$O+!8 *LG
 T"& & #&,:    +F*@@07 *+ I/I4I445GHH  %,,D8 ,++  *h))/*DF @  JJ   #< # #<  <5;f D ]*OB OBd4 79  @B 89v.*] ]@3D  , 37 
B;& +- B  +	 ; ;"$0 $0N#
  L		 	 ;
   *
   ;- MM	4D) )X ,0 -9^P2B. . .&S 3 6 $ $4 $*D  L L*  F 3*+"0J'"$ '"T*#(Ct*D , ,      G 4 V9K9Kw9V 24o=  s   Y) )Y21Y2