
    daf8                    0   	 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g dZdZdZdZdZej*                  j-                  ej*                  j/                  e            Zej*                  j-                  e      Zej*                  j-                  e      Zej*                  j-                  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jD                        Z#d Z$d Z%d Z&dZ'dZ(da)da*dZ+dZ,da-d Z.d Z/d Z0d Z1d Z2ddZ3d Z4d Z5d  Z6d! Z7dd"Z8ddddd#d$Z9dddddd#d%Z: e9d&'      Z;d( Z<d) Z=d*Z>d+Z? ej                  eAj                  d,      j                  d-      d.      ZDdd/ZEdd0ZFdd1ZGdd2ZHd3 ZIdd4ZJd5 ZKe	j                  d6k(  ZMe	j                  j                  d7      ZN eOe	d8      ZPe	j                  d9vrePrd:nd;ZQndZQe	j                  d<k(  ZRe	j                  d=k(  ZS eOed>      xr eR xr eS ZTd? ZUeR xr eS ZVd@ ZWeR xr eS ZXddAdBZYdZZe	j                  d6k7  r	  ej                  dC      dCk7  ZZdDZ]dZ^dZ_ej*                  j                  edE      ZadF ZbddGZcdH ZddIeedJefeeegf   fdKZhddddLdMZidN Zjej                  dO        ZldP ZmdQ ZndR ZodS Zpej                  dT        ZqdU ZrdV ZsdWZtdXZu eOe	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                  ZdheedJefdiZdheedJdfdjZ G dk dl      ZddmZdn Zdo Zdp Zdq ZddrZds Zdt Zdu Zdv Zdw Zdx Zdy Z e       xr% e	j                  d6k7  xr  e
j*                  dz       Zej.                  duxr e Z ej                  ed{      Zd| Zd} Ze	j8                  e_        dad~ Zej                  d        Zej                  d        Zd Zd Z G d deg      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ZdeedeedJegfdZdegdJdfdZd Zej                  d        Zej                  d        Z eOe	d      Zd Zdd&ddZdddd&ddZej                  d        ZdZereSrdZn`dZn]eSrdZnX eOedƫ      r# ej                         j                  dk(  rdZn,e	j                  j                  dɫ      rdZn e9d&'      rdZndZ ej                   eOedƫ      xr   ej                         j                  dk(  dͫ      Z eddh      ZdЄ Zy# e\$ r Y w xY w)ztest.supportz.support must be imported from the test package    N)P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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
MS_WINDOWS	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      $@g      N@g      >@g     r@c                       e Zd Zy)r   N__name__
__module____qualname__     0/root/Python-3.12.4/Lib/test/support/__init__.pyr   r   k   s    4rY   r   c                   ,     e Zd Z	 dd fd
Zd Z xZS )r	   Nstatsc                B    || _         || _        t        |   |g|  y N)msgr]   super__init__)selfr`   r]   args	__class__s       rZ   rb   zTestFailed.__init__p   s#    
$t$rY   c                     | j                   S r_   )r`   rc   s    rZ   __str__zTestFailed.__str__u   s    xxrY   )rU   rV   rW   rb   rh   __classcell__re   s   @rZ   r	   r	   n   s    )- %
rY   r	   c                         e Zd Z	  fdZ xZS )TestFailedWithDetailsc                 H    || _         || _        t        |   ||||       y )Nr\   )errorsfailuresra   rb   )rc   r`   rn   ro   r]   re   s        rZ   rb   zTestFailedWithDetails.__init__z   s'     fhe<rY   )rU   rV   rW   rb   ri   rj   s   @rZ   rl   rl   x   s    = =rY   rl   c                       e Zd Zy)r
   NrT   rX   rY   rZ   r
   r
      s    (rY   r
   c                       e Zd Zy)r   NrT   rX   rY   rZ   r   r      s    rY   r   c                 .    	 | rt         j                  S d S )Nc                     | S r_   rX   )fs    rZ   <lambda>z$anticipate_failure.<locals>.<lambda>   s    Q rY   )unittestexpectedFailure)	conditions    rZ   r&   r&      s    
 '''rY   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         rZ   r'   r'      sI     GOOg29,3 $ 5M M*rY   c                 r    	 	 t        | |      }|S # t        $ r t        j                  d| d|      w xY w)Nzobject z has no attribute )getattrAttributeErrorrv   SkipTest)objname	attributes      rZ   r   r      sG    IC&	   O3 MNNOs    %6   Fc                     | a y r_   )_original_stdout)stdouts    rZ   r   r      s    rY   c                  2    t         xs t        j                  S r_   )r   sysr   rX   rY   rZ   r   r      s    )szz)rY   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   printre   rU   OSErroroschmodstatS_IRWXU)pathfuncrd   errs       rZ   
_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)rU   rV   rW   wintypesBOOLDWORD_fields_)ctypess   rZ   USEROBJECTFLAGSr      s@    #V__%9%9:$foo&:&:;"FOO$9$9:<HrY   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)rU   rV   rW   r   )r   s   rZ   ProcessSerialNumberr     s    ,e4+U35rY   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typerU   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                         @@rZ   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 r_   )r   resources    rZ   r   r   !  s    
 D =H$==rY   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   r`   s     rZ   r   r   )  sg    Jx(;6ACS!!**3E0115!2!4.5566 "5rY   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
ValueErrorrv   skipIf)sysnamemin_versionr   min_version_txtversion_txtversionskips          rZ   _requires_unix_versionr   4  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    rZ   r   r   O  s     ")[99rY   c                      	 t        d|       S )NLinuxr  r  s    rZ   r   r   X  s     "';77rY   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   rv   r   r   )rd   kwr   r   r   r   r   r   s         rZ   wrapperz4requires_mac_ver.<locals>.decorator.<locals>.wrapperi  s    ||x'&..03	>#C[->->s-C$DEG ,*-((3sK3H*I&//.=> > $$$ " s   (B 	B('B()	functoolswrapsr   )r   r  r   s   ` rZ   	decoratorz#requires_mac_ver.<locals>.decoratorh  s-    			% 
	% *rY   rX   )r   r  s   ` rZ   r   r   a  s    & rY   c                     	 dd l }| sd} 	 |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)Nr   znot suitable for buildbotsbuildbotzgetpass.getuser() failed r   F)
getpassgetuserlowerKeyErrorEnvironmentErrorwarningswarnRuntimeWarningrv   r   )r   r  
isbuildbotr   s       rZ   skip_if_buildbotr  ~  sw    >-__&,,.*<
 ??:v.. &' 1#a8.I
s   !A A; A66A;addressmemoryubthreadc                    	 | s|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 }d|v xs d|v }	|xr |xs | xr |xs |xr |xs |xr |	S )Nz:At least one of address, memory, ub or thread must be TrueCFLAGS CONFIG_ARGSz-fsanitize=memoryz--with-memory-sanitizerz-fsanitize=addressz--with-address-sanitizerz-fsanitize=undefinedz#--with-undefined-behavior-sanitizerz-fsanitize=threadz--with-thread-sanitizer)r   	sysconfigget_config_var)
r  r  r  r   cflagsconfig_argsmemory_sanitizeraddress_sanitizerub_sanitizerthread_sanitizers
             rZ   r,   r,     s    CvvUVV %%h/52F**=9?RKv% 	1![0 
 	& 	2"k1 
 	&( 	=-< 
 	v% 	1![0 
 
	$$ 	&		&&	&			& 
	$$	rY   c                V    	 | sd} t        ||||      }t        j                  ||       S )Nz"not working with sanitizers activer  )r,   rv   r   )r   r  r  r  r   r   s         rZ   r-   r-     s.    H576bPD??4((rY   T)r  c                 F    dD ]  }|| v r| |xx   d| z  cc<   || |<    y )N)ASAN_OPTIONSMSAN_OPTIONSUBSAN_OPTIONSTSAN_OPTIONS:rX   )envoptionr   s      rZ   set_sanitizer_env_varr6    s5    Q 3;I1VH%ICI	rY   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   rv   r   )rd   kwargsr   rt   s      rZ   decz&system_must_validate_cert.<locals>.dec  sO    	tv 	*c!f4'' )A B B		s    	=#8=)r  r  )rt   r;  s   ` rZ   system_must_validate_certr<    s(    ?__Q  JrY   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ImportErrorrv   
skipUnless)r   rA  s     rZ   r   r     5     tV,,      **c                 Z    	 dd l }t        j                  ||       S # t        $ r d }Y #w xY wr@  )gziprB  rv   rC  )r   rG  s     rZ   r   r     rD  rE  c                 Z    	 dd l }t        j                  ||       S # t        $ r d }Y #w xY wr@  )bz2rB  rv   rC  )r   rI  s     rZ   r   r     s5     sF++  rE  c                 Z    	 dd l }t        j                  ||       S # t        $ r d }Y #w xY wr@  )lzmarB  rv   rC  )r   rK  s     rZ   r   r     rD  rE  c                      	 dd l } | j	                         }t        |d          S # t        $ r t        j                  d      w xY w)Nr   _testinternalcapi requiredcode_debug_ranges)_testinternalcapirB  rv   r   
get_configr   )rO  configs     rZ   has_no_debug_rangesrR    sQ    >  ))+FF./000  > <==>s	   % Ac                 >    t        j                  t               |       S r_   )rv   r   rR  )r   s    rZ   requires_debug_rangesrT    s    ??.0&99rY   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)	_testcapirW  rB  rv   rC  rV  s    rZ   requires_legacy_unicode_capirY    s>    %3 4>@ @  % $%s    ,,win32javagetandroidapilevel)rZ  vxworksz/system/bin/shz/bin/sh
emscriptenwasiforkc                  6    t        j                  t        d      S )Nzrequires working os.fork())rv   rC  r    rX   rY   rZ   r!   r!   !  s    /1MNNrY   c                  8    	 t        j                  t        d      S )Nzrequires subprocess support)rv   rC  r"   rX   rY   rZ   r#   r#   &  s    =57TUUrY   )modulec                 x    	 d}| rt         st        j                  |      y t        j                  t         |      S )Nzrequires socket support)r$   rv   r   rC  )rc  r`   s     rZ   r%   r%   -  s@     $C!##C(( " ""#5s;;rY   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_namerg  r`   detailpadding_s         rZ   darwin_malloc_err_warningrn  R  sk    
||x
C C CF
 ))+JGQ	#**Wc
"#	&M	#-rY   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 r_   )r   r   isabsr   TEST_HOME_DIRr   exists)filenamesubdirr   dnfns        rZ   r=   r=   e  s     
ww}}X77<<1?SXX%D )WW\\"h'77>>"by) OrY   c                     	 t        | j                               }|D cg c]  }d|z  	 }}dj                  |      }d|z  S c c}w )Nz%r: %rz, z{%s})sorteditemsr   )dictry  pair	reprpairs
withcommass        rZ   rC   rC   x  sJ    +4::< E-23TD3I39%JJ 4s   Acodereturnc                 J    	 i }t        t        j                  |       |       |S r_   )exectextwrapdedent)r~  nss     rZ   run_coder    s"    R	B	#IrY   )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>r  )assertRaisesRegexSyntaxErrorcompile	exceptionassertIsNotNoner  assertEqualr  )testcase	statementerrtextr  r  cmr   s          rZ   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)rv  rt   rd   r  r  s     rZ   check_valid_filez*open_urlresource.<locals>.check_valid_file  sA    !d!b!=H1XFF1IH		rY   r   z	fetching %s ...file)zAccept-EncodingrG  timeoutzContent-EncodingrG  )fileobjwbzinvalid resource %r) urllib.requesturllib.parse	os_helperr  rG  rB  popparseurlparser   r   r   r   TEST_DATA_DIRrr  r   r   r   r   requestbuild_opener
addheadersappendr  rL   headersgetGzipFilereadwriter  r	   )urlrd   r  urllibr  rG  rs  rv  r  rt   openeroutsr  s    ``          @rZ   r9   r9     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      rZ   captured_outputr    sW     O#{+KCbkkm,/c;''[+.[+.s   5A2A 
A2A//A2c                      	 t        d      S )Nr   r  rX   rY   rZ   r   r          8$$rY   c                      	 t        d      S )Nstderrr  rX   rY   rZ   r   r     r  rY   c                      	 t        d      S )Nstdinr  rX   rY   rZ   r   r     s     7##rY   c                  n    	 dd l } | j                          | j                          | j                          y r@  )gccollect)r  s    rZ   
gc_collectr    s'     JJLJJLJJLrY   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     rZ   
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   )r'  	final_optopts      rZ   python_is_optimizedr    sS    6%%k28bFI||~ >>$I ...rY   c                      t        j                  d      xs dg d} t        j                  d      }|r| j                  |       t        fd| D              S )NPY_CFLAGS_NODISTr#  )z-fprofile-usez-fprofile-instr-usez	-prof-usePGO_PROF_USE_FLAGc              3   &   K   | ]  }|v  
 y wr_   rX   ).0r5  cflags_nodists     rZ   	<genexpr>z#check_cflags_pgo.<locals>.<genexpr>)  s     A6v&As   )r%  r&  r  any)pgo_optionsr  r  s     @rZ   check_cflags_pgor    sY     ,,-?@FBMK "001DE,-A[AAArY   nP0n
getobjects2P0Pnc                 H    dd l }|j                  t        | z   t        z         S r@  )structcalcsize_header_alignfmtr  s     rZ   calcobjsizer  3  s    ??7S=6122rY   c                 H    dd l }|j                  t        | z   t        z         S r@  )r  r  _vheaderr  r  s     rZ   calcvobjsizer  7  s    ??8c>F233rY   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   rM  z&wrong size for %s: got %d, expected %d)rO  rB  rv   r   r   	getsizeofr   	__flags___TPFLAGS_HEAPTYPE_TPFLAGS_HAVE_GCSIZEOF_PYGC_HEADr  )testosizerO  r   r`   s         rZ   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         rZ   r;   r;   Q  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   rv   r   r   environ)rd   kwdsr  orig_tzr   tzs       rZ   innerz-run_with_tz.<locals>.decorator.<locals>.innerq  s    :

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

4('.BJJt$

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

4('.BJJt$

s   B B; B8;=C8)rU   __doc__)r   r  r  s   ` rZ   r  zrun_with_tz.<locals>.decoratorp  s%    	, rY   rX   )r  r  s   ` rZ   rD   rD   o  s    4 rY   i      r      limitc                 F   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        S )Nr  )kmgtz(\d+(?:\.\d+)?) (K|M|G|T)b?$zInvalid memory limit: r   r   )_1M_1Grematch
IGNORECASEVERBOSEr   r   floatgroupr  )r  sizesr  s      rZ   _parse_memlimitr    s    #X	E 	0%+	-Ay1%;<<uQWWQZ 5)9)9);#<<==rY   c                 p    t        |       }|t        dz
  k  rt        d      |at	        |t
              }|ay )Nr   z+Memory limit {limit!r} too low to be useful)r  _2Gr   real_max_memuseminMAX_Py_ssize_tr   )r  memlimits     rZ   rA   rA     s<     u%H#'FGGO8^,HJrY   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startedrg   s    rZ   rb   z_MemoryWatchdog.__init__  s$    +22ryy{2CrY   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,  )rc   r  rt   r   r0  watchdog_scripts         rZ   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 r_   )r,  r4  	terminatewaitrg   s    rZ   stopz_MemoryWatchdog.stop  s2    <<'')""$ rY   N)rU   rV   rW   rb   r6  r:  rX   rY   rZ   r'  r'    s    $%rY   r'  c                      	  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"  rv   r   r   r   r   r'  r6  r:  )rc   r  rA  maxsizewatchdogdry_runrt   r  s        rZ   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  rA  )rt   r  rD  rA  r  s   `@rZ   r  zbigmemtest.<locals>.decorator  s    	$: rY   rX   )r  rA  rD  r  s   ``` rZ   r   r     s     B rY   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$  rv   r   )rc   rt   s    rZ   r  z!bigaddrspacetest.<locals>.wrapper  sb    &*zU/B''CE E ''=%356 6 T7NrY   rX   )rt   r  s   ` rZ   r   r     s    :
 NrY   c                     | S r_   rX   )r   s    rZ   _idrH    s    JrY   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   rv   r   r   r   rH  r   r   s    rZ   requires_resourcerJ    sN    5!2!4}}.55668$
}}<CCHMNNrY   c                 (    	  t        d      |       S )NT)cpython)impl_detailr  s    rZ   r   r      s     %;t$T**rY   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 rX   )	r5   rH  _parse_guardsrx  keysr   r   rv   r   )r`   guards
guardnamesdefaults       rZ   rM  rM  &  sj    "6"

{+F3
G>C9CJOO-.
jjZ01==rY   c                 T    | sddidfS t        | j                               d   }| | fS )NrL  TFr   )listvalues)rR  is_trues     rZ   rP  rP  3  s7    D!5))6==?#A&GK  rY   c                  t    	 t        |       \  } }| j                  t        j                  j                  |      S r_   )rP  r  r   implementationr   )rR  rT  s     rZ   r5   r5   =  s4     $F+OFG::c((--w77rY   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r_   )r   r\  settrace)rd   r:  original_tracer   s      rZ   r  zno_tracing.<locals>.wrapperM  sE     \\^N-T"T,V,^,^,s   A	 	A )r   r   r  r  )r   r  s   ` rZ   
no_tracingr`  H  s7    O3
#			- 
	- rY   c                 ,    	 t        t        |             S r_   )r`  r   rN  s    rZ   refcount_testrb  X  s     l4())rY   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)rX  rB  rv   r   rC  LIMITED_API_AVAILABLE)r  rX  s     rZ   r.   r.   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)rv   rC  opcodeENABLE_SPECIALIZATIONrN  s    rZ   r/   r/   k  s1    A8$$&?AAEG GrY   c                       y r_   rX   rX   rY   rZ   _check_docstringsri  v  s    6rY   WITH_DOC_STRINGSztest requires docstringsc                      t         j                  t         j                  j                          t         j                  t         j                  j                          y y r_   )r   r   r/  r  rX   rY   rZ   flush_std_streamsrl    s;    
zz


zz

 rY   c                     t                t        j                  }| j                         D ]  }t	        d| |        |j                          y )NzWarning -- r  )rl  print_warningorig_stderr
splitlinesr   r/  )r`   streamlines      rZ   rn  rn    sC    &&F  1D6"01
LLNrY   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"   rt  ru  r   rn  environment_altered)r)  statuss     rZ   r:   r:     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r_   )r   r   r  delattr)r   attrnew_valreal_vals       rZ   r?   r?     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r_   rX   )r   itemr{  r|  s       rZ   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@  )r0  _args_from_interpreter_flagsr0  s    rZ   args_from_interpreter_flagsr    s    22244rY   c                  ,    	 dd l } | j                         S r@  )r0  "_optim_args_from_interpreter_flagsr  s    rZ   !optim_args_from_interpreter_flagsr    s    +88::rY   c                       e Zd ZdZd Zd Zy)r@   )r`   messagec                 v    	 d}|D ]0  }||   }|j                  |      }| j                  |||      r-d} |S  |S )NTF)r  match_value)rc   dr:  r   r  vdvs          rZ   matcheszMatcher.matches  sY    	  	Aq	AqB##Ar1-	 rY   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)rc   r  r  r  r   s        rZ   r  zMatcher.match_value!  sh    	 7d2hF
 	 "XS AT-B-B$B2gF  WWQZ1_FrY   N)rU   rV   rW   r  r  r  rX   rY   rZ   r@   r@     s    )"
rY   r@   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   rZ  cp65001r#  TFz!buggy MSVC UCRT strptime/strftime)
r  _buggy_ucrtr   r   getencodingr  	localtimetm_zonerv   r   )r  r  s     rZ   r*   r*   /  sn     <<7"""$	1 ((B.KKGR=8==<=dC\X\\rY   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   r2  real
_also_link_env_platform_specific)rc   r  r  s      rZ   rb   zPythonSymlink.__init__F  sY    %3BGGOOF3	GG$$S^^4		!rY   rZ  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  rr  GetModuleFileNamer   	dllhandledirnamer  r  r  r   basenameescaper  uppergetenvr  r%  is_python_buildr}   )rc   r  r  r   src_dirdest_dirruntimer  s           rZ   r  z PythonSymlink._platform_specificS  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 r_   rX   rg   s    rZ   r  z PythonSymlink._platform_specificn      rY   c                 .   t        j                  | j                  | j                         | j                  j                  | j                         | j                  D ]6  \  }}t        j                  ||       | j                  j                  |       8 | S r_   )r   symlinkr  r  r  r  r  )rc   r  r  s      rZ   	__enter__zPythonSymlink.__enter__q  sl    


499dii(DII&// 	&JD$JJtT"LL%	& rY   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   )rc   exc_type	exc_valueexc_tbr  exs         rZ   __exit__zPythonSymlink.__exit__y  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  r4  r   r  z'unexpected return code: {0} (0x{0:08X}))r0  r1  PIPEcommunicate
returncoder   r   reprr   r  RuntimeErrorr   )	rc   pythonrd   r4  r  r0  cmdpr.  s	            rZ   _callzPythonSymlink._call  s    ooS$.OO  >MMO<<:%d1Q4j!d1Q4jszz29@@NP PrY   r   )r  c                >    | j                  | j                  |d |      S r_   )r  r  rc   r  rd   s      rZ   	call_realzPythonSymlink.call_real  s    zz$))T4<<rY   c                R    | j                  | j                  || j                  |      S r_   )r  r  r  r  s      rZ   	call_linkzPythonSymlink.call_link  s    zz$))T499jAArY   r_   )rU   rV   rW   rb   r   r   r  r  r  r  r  r  rX   rY   rZ   r  r  D  sG    =
" ||w	56	H +, = +, BrY   r  c                 d    	 t          xs t        }d}|r| S  t        j                  |      |       S )Nz#Not run for (non-extended) PGO task)rE   PGO_EXTENDEDrv   r   )r  okr`   s      rZ   skip_if_pgo_taskr    s4    E	 LB
/C43-8==-d33rY   rX   )ignorec                    	 t        t        |             t        t        |            z
  }|r|t        |      z  }t        d |D              }|S )Nc              3   d   K   | ](  }|j                  d       r|j                  d      r| * yw)rm  __N)r   endswith)r  r  s     rZ   r  z&detect_api_mismatch.<locals>.<genexpr>  s0      Fa ||C0AJJt4D  Fs   .0)setdir)ref_api	other_apir  missing_itemss       rZ   r(   r(     sU     G%C	N(;;MV$ F= F FMrY   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 )Nrm  rV   )rU   
isinstancer   r  r  r   r   r   types
ModuleTypeaddassertCountEqual__all__)	test_caserc  name_of_moduleextranot_exportedexpectedr   r   s           rZ   r)   r)     s    %N  //,	NC	((+5zHF ??34<#7fd#Ct,>S,/U%5%56LL v~~x8rY   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)msvcrtrB  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      rZ   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)rB   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  rB  GetErrorMode	old_valuer  r  r   	old_modesr  r  r  r  r  r  r  r   	getrlimitRLIMIT_CORE	setrlimitr   r   r0  r1  r  r  stripr   )
rc   r  report_typeold_modeold_filer   r0  r  procr   s
             rZ   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   )r  r   r   r   r  r  r  ry  r  r  r   r  r  r   r   )rc   
ignore_excr  r  r  r  s         rZ   r  zSuppressCrashReport.__exit__G  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?)rU   rV   rW   r  r  r  r  rX   rY   rZ   rB   rB     s    
 II@DrY   rB   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 r_   )r  ry  )attr_is_local	attr_nameobject_to_patchr  s   rZ   cleanupzpatch.<locals>.cleanupr  s    OY	:OY/rY   )r   __dict__r   r  
addCleanupr  )test_instancer  r  	new_valuer  r  r  s    ``  @@rZ   patchr  \  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r_   rX   )origsaveds     rZ   
patch_listr  ~  s,     7QQ%Qs   	 c                 B    	 t                dd l}|j                  |       S r@  )_check_tracemallocrX  run_in_subinterp)r~  rX  s     rZ   r  r    s#     %%d++rY   )own_gilc                \    	 t                dd l}|	|rdnd|d<    |j                  | fi |S )Nr   r   r   gil)r  rX  run_in_subinterp_with_config)r~  r  rQ  rX  s       rZ   r  r    s=     $!u1911$A&AArY   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_tracingrv   r   rB  )r!  s    rZ   r  r    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NT)nextStopIteration)rc   doneits    rZ   __del__z-check_free_after_iterating.<locals>.A.__del__  s&    DR  s    	N)rU   rV   rW   r,  )r*  r+  s   rZ   Ar%    s    	rY   r-  F)assertRaisesr)  r(  r  
assertTrue)r  iterclsrd   r-  r*  r+  s        @@rZ   check_free_after_iteratingr2    sF    C  D	ahBmT2.LOODrY   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)rn   msvc)setuptools._distutilsr4  r%  r5  
setuptoolsrn   new_compilercustomize_compilercompiler_type
initializePlatformErrorexecutablesr   find_executable)	cmd_namesr4  r%  r5  rn   compilerr   r  s           rZ   rF   rF     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)r2   _is_android_emulatorr0  check_outputr  r   r7   )intervalminimum_intervalr0  s      rZ   r7   r7     s`     h!11'$.$;$; )+;<%>>Ceg%N 'H  **rY   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    rZ   r8   r8     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  )rP  fdrS  s      rZ   disable_faulthandlerrU    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)rc   r[  signamesignums       rZ   rb   zSaveSignals.__init__  sm    ++-- 	(G 1 LL'	(  " s   A	A$#A$c                     | j                   D ]/  }| j                  j                  |      }|!|| j                  |<   1 y r_   )r]  r[  	getsignalr^  rc   r`  handlers      rZ   savezSaveSignals.save%  sA    ll 		,Fkk++F3G $+DMM&!		,rY   c                     | j                   j                         D ]!  \  }}| j                  j                  ||       # y r_   )r^  ry  r[  rc  s      rZ   restorezSaveSignals.restore1  s6    #}}224 	0OFGKKvw/	0rY   N)rU   rV   rW   rb   re  rg  rX   rY   rZ   rW  rW    s    
,0rY   rW  c                  "    dd l } | j                  S r@  )rX  WITH_PYMALLOC)rX  s    rZ   with_pymallocrj  6  s    """rY   c                       e Zd Z	 d Zd Zy)
_ALWAYS_EQc                      yr'  rX   rc   others     rZ   __eq__z_ALWAYS_EQ.__eq__?      rY   c                      yNFrX   rn  s     rZ   __ne__z_ALWAYS_EQ.__ne__A      rY   N)rU   rV   rW   rp  rt  rX   rY   rZ   rl  rl  ;  s    rY   rl  c                        e Zd Z	 d Zd Zd Zy)	_NEVER_EQc                      yrs  rX   rn  s     rZ   rp  z_NEVER_EQ.__eq__J  ru  rY   c                      yr'  rX   rn  s     rZ   rt  z_NEVER_EQ.__ne__L  rq  rY   c                      y)Nr   rX   rg   s    rZ   __hash__z_NEVER_EQ.__hash__N  s    rY   N)rU   rV   rW   rp  rt  r{  rX   rY   rZ   rw  rw  F  s    rY   rw  c                       e Zd Z	 d Zd Zy)_LARGESTc                 "    t        |t              S r_   )r  r}  rn  s     rZ   rp  z_LARGEST.__eq__X  s    %**rY   c                      yrs  rX   rn  s     rZ   __lt__z_LARGEST.__lt__Z  ru  rY   N)rU   rV   rW   rp  r  rX   rY   rZ   r}  r}  S  s    +rY   r}  c                       e Zd Z	 d Zd Zy)	_SMALLESTc                 "    t        |t              S r_   )r  r  rn  s     rZ   rp  z_SMALLEST.__eq__d  s    %++rY   c                      yrs  rX   rn  s     rZ   __gt__z_SMALLEST.__gt__f  ru  rY   N)rU   rV   rW   rp  r  rX   rY   rZ   r  r  _  s    ,rY   r  c                  8    	 dd l } | j                  j                  S r@  )asyncio.eventsevents_event_loop_policy)asyncios    rZ   maybe_get_event_loop_policyr  k  s    N>>,,,rY   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bitsru  p1empty	meanemptyoccupied
collisionsvars                rZ   collision_statsr  x  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 r_   )
unraisable	_old_hookrg   s    rZ   rb   z#catch_unraisable_exception.__init__  s    rY   c                     || _         y r_   )r  )rc   r  s     rZ   _hookz catch_unraisable_exception._hook  s     %rY   c                 Z    t         j                  | _        | j                  t         _        | S r_   )r   unraisablehookr  r  rg   s    rZ   r  z$catch_unraisable_exception.__enter__  s     ++!ZZrY   c                 2    | j                   t        _        | `y r_   )r  r   r  r  )rc   exc_infos     rZ   r  z#catch_unraisable_exception.__exit__  s    !^^OrY   N)rU   rV   rW   rb   r  r  r  rX   rY   rZ   r  r    s    0%

rY   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[  rN   r  	monotonicsleeping_retryrt  ru  killrY  r   AssertionErrorwaitstatus_to_exitcode)
r)  exitcoder  r[  
start_timerm  pid2rw  dt	exitcode2s
             rZ   wait_processr    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   rv   r   )r  synchronizeexcs      rZ   *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)rV   rU   r  r  r  	TypeError)r  tprd   r	  modr   qualnamer`   s           rZ   r+   r+     so    
 --C;;D
jU!D6?VBIIh/0
<CHy#rADADArY   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   )rO  get_recursion_depthrB  RecursionErrorr   	_getframef_backr  )rO  depthr  frames       rZ   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 r_   )r   getrecursionlimitr  )r  r  s     rZ   get_recursion_availabler  4  s)    
 !!#E!E5=rY   c              #      K   	 t        j                         }	 t        j                  |        d  t        j                  |       y # t        j                  |       w xY wwr_   )r   r  setrecursionlimit)r  original_limits     rZ   set_recursion_limitr  >  sI     1**,N.e$n-n-   A"A A"AA"c                 ~    | d} n| dk  rt        d      t               }t        |dz
  d      }|| z   }t        |      S )Ni N     z-max_depth must be at least 3, got {max_depth}r   )r   r  r  r  )	max_depthr  r  s      rZ   r>   r>   H  sO     		QHII!E	1EIEu%%rY   rc  likec          
      t    t               }t        j                  dt        | |dt	        |       dz          |S )Nr  
(?#support))r  rc  r  )objectr  filterwarningsDeprecationWarningid)rc  r  tokens      rZ   ignore_deprecations_fromr  U  s<    HE#*RYKq11	 LrY   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     rZ   r  z-clear_ignored_deprecations.<locals>.<genexpr>d  s     DE
2e9+Q/Ds   r  r#  )r   r   r  filtersr  r  r  Patternr|   r  r  _filters_mutated)	r  new_filtersr  actionr  r  rc  r  r`   s	            rZ   clear_ignored_deprecationsr  _  s    WXXKDVDDH5=5E5E H166X(.@"@'2::.oom||H%FGXvvFGH ;&)!!# 'rY   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)rA  rB  rv   r   r   rC  )rA  r   s     rZ   requires_venv_with_pipr  t  sc    F v'BCC  Ft%DEEF  s    ! A AAAAc                    	 t        j                  d      xs$ t        j                  j	                  t
        d      }t        j                  |      }t        |d      }|D ]L  }|j                  d      s| dz   }|j                  |      s,t        j                  j	                  ||      c S  t        d|  d|       )	NWHEEL_PKG_DIR	wheeldataT)reversez.whlr   zNo wheel for z
 found in )r%  r&  r   r   r   rq  listdirrx  r  r   r   )pkgname	wheel_dir	filenamesrs  prefixs        rZ   
_findwheelr    s    
 ((9 RWW\\{>I 

9%Iy$/I 5  (3v&77<<	8445 mG9JykJ
KKrY   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  rZ  Scriptsbinpipinstallr8  wheel)r0  r  r  r   r2  r   r   r   runr   r   r  r   r  )venv_dirr0  r  temp_dirr  r  
python_exer  s           rZ   $setup_venv_with_pip_setuptools_wheelr    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 r_   rX   )encodings    rZ   search_funcz"late_deletion.<locals>.search_func  rq  rY   register_at_forkc                       y r_   rX   rX   rY   rZ   atfork_funcz"late_deletion.<locals>.atfork_func  r  rY   )before)r  codecs	referenceregisterr   r   r  )r   	ref_cycler  r  r  s        rZ   late_deletionr    sg    	$ IY %K
OOK r%&	 )
;/ 'rY   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  r`   s          rZ   
busy_retryr    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   )r  r  sleepr#  )r  r  r  r  r  delayrm  s          rZ   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r_   )r   get_int_max_str_digitsset_int_max_str_digits)
max_digitscurrents     rZ   adjust_int_max_str_digitsr%  4	  sI     H((*G,"":.""7+""7+r  i     i  unames390xi   r   i  i  i'  zskipped on s390xz.git__pycache__c                 |    t         }t        j                  j                  |       dk(  r	|ddhz  }|S d|v r|dhz  }|S )NDocbuildr  Modules) _BASE_COPY_SRC_DIR_IGNORED_NAMESr   r   r  )r   namesignoreds      rZ   copy_python_src_ignorer1  _	  s]    .G	ww&	
 	
 N 
e	
 	
 NrY   r_   )zrequires zlib)zrequires gzip)zrequires bz2)zrequires lzma)z$requires co_positions / debug_ranges)r#  )T)NrX   rX   )F)rX   )rU   rB  
contextlibdataclassesr  rf  r   r  r   r   r%  r  r  r  rv   r  r  rK   rL   rM   rN   r   r  r  __file__TEST_SUPPORT_DIRrq  r}   	REPO_ROOTr   r   r	   rl   r
   r   r   r&   r'   r   r   r   r   r"  junit_xml_listr   r   r   r   r   r   r   r   r   r   r   r   r  r,   r-   HAVE_ASAN_FORK_BUGr6  r<  r   SOCK_MAX_SIZErC  r  __getformat__r   r   r   r   r   r   rR  rT  rY  r   r0   r1   r   r2   r6   r3   r4   r    r!   r"   r#   r$   r%   has_strftime_extensionsstrftimer   TEST_HTTP_URLrE   r  r   r  rn  r=   rC   r   rz  r  r  r   r9   contextmanagerr  r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r;   rD   r  r  r!  _4GrB  r$  r   r  rA   r'  r   r   rH  rJ  r   rM  rP  r5   r`  rb  r.   r/   ri  r&  MISSING_C_DOCSTRINGSr  HAVE_DOCSTRINGSrequires_docstringsrl  rn  r  ro  rv  r:   r?   r<   r  r  r@   r  r*   r  r  r(   r)   r  rB   r  r  r  r  r  r2  rF   rE  r7   r8   rU  rW  rj  rl  rG   rw  rH   total_orderingr}  rI   r  rJ   r  	hash_infowidth	NHASHBITSr  r  r  r  r+   r  r  r  r>   r  r  r  cacher  r  rO   r  r  r  r%  rP   rQ   r'  machiner   rR   	frozensetr.  r1  rX   rY   rZ   <module>rJ     s   =~
F
GG     	 	  
      'f       77??277??8#<=  01WW__]+
GGOOJ'	5I 5 =J =)E )X&& $ 

  *"K$Z>	76:8:
/  %UuU @)eEeTY ) %T2 $ $ % (H''	!,,V4$& --,-1:@ llg%
 LL##F+	S./
<<++%/!YJJ ,
,,&
 2v&L}+<LW O +*:7{ V
 '&6w; &+ 
<   <<7"/$--"6%"? ,   ]F3&&3 4V, 	1$t 	141n 	/ 	/%%
$  /B$ 	
3WnGFS=34
   ($ 4 4:F 
Sj#g#g>3 >3 >	 	 	% %B.`$O+!8 *LG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 , ,   	W	("((*"4"4"?		 	 	' 		& !  G 4 V9K9Kw9V 24 $-
	. $  A9  s   -Z ZZ