
   g9J                      	 e d k    r ed          ddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZ	 ddlmZ n# e$ r dZY nw xY wg dZdZdZdZd	Zej                            ej                            e                    Zej                            e          Zej                            e          Ze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j"                  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Z3dd Z4d! Z5d" Z6d# Z7d$ Z8dd%Z9dddd&d'Z:ddddd&d(Z; e:d)*          Z<d+ Z=d, Z>d-Z?d.Z@ ejA        eBC                    d/          D                    d0          d1          ZEdd3ZFdd5ZGdd7ZHdd9ZId: ZJdd<ZK ejA        ed=          ZLejM        d>k    ZNejM        D                    d?          ZO ePed@          ZQejM        dAvreQrdBndCZRndZRejM        dDk    ZSejM        dEk    ZT ePedF          oeS oeT ZUdG ZVeS oeT ZWdH ZXeS oeT ZYddIdJZZdZ[ejM        d>k    r!	  e
j\        dK          dKk    Z[n# e]$ r Y nw xY wdLZ^dZ_dZ`ej        a                    edM          ZbdN ZcddOZddP ZeddddRdSZfdT Zgejh        dU             ZidV ZjdW ZkdX ZldY Zmejh        dZ             Znd[ Zod\ Zpd]Zqd^Zr ePed_          rd`eqz   ZqdaZreqdbz   Zsdc Ztdd ZudeZvdfZwdg ZxddhdiZyejh        dj             Zzdk Z{dlZ|dme|z  Z}dne}z  Z~doe}z  Zej        ZdpedqefdrZdpedqdfdsZ G dt du          ZddvZdw Zdx Zdy Zdz Zdd{Zd| Zd} Zd~ Zd Zd Z e            oejM        d>k    o e	j        d           Zej        duoe Z ejA        ed          Zd Zd Zej        e_        dad Zejh        d             Zejh        d             Zd Zd Z G d de          Zdad Z G d d          Zd ZdddZ	 	 ddZddZ G d d          Zd Zejh        d             Zd ZddZg fdZdad Zejh        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jh        d             ZddZdededqefdZdedqdfdZd Z ePed          Zdd)ddZdddd)ddZejh        dÄ             Z eddh          ZdƄ Z ej         ePedǦ          o ej                    j        dk    dɦ          Zdqee         fdʄZdS )ztest.supportz.support must be imported from the test package    N)unicode_legacy_string)J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
MS_WINDOWS	is_jython
is_androidis_emscriptenis_wasicheck_impl_detail
unix_shellsetswitchinterval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skip_on_s390xg      $@g      N@g      >@g     r@c                       e Zd ZdS )r	   N__name__
__module____qualname__     c/nix/store/c6yb989sl77467xxwhylnkph1pqyi47p-python3-3.11.15/lib/python3.11/test/support/__init__.pyr	   r	   j   s        44rT   r	   c                   ,     e Zd Z	 dd fd
Zd Z xZS )r
   Nstatsc                X    || _         || _         t                      j        |g|R   d S N)msgrX   super__init__)selfr[   rX   args	__class__s       rU   r]   zTestFailed.__init__o   s6    
$t$$$$$$rT   c                     | j         S rZ   )r[   r^   s    rU   __str__zTestFailed.__str__t   s	    xrT   )rP   rQ   rR   r]   rc   __classcell__r`   s   @rU   r
   r
   m   sW        )- % % % % % % %
      rT   r
   c                         e Zd Z	  fdZ xZS )TestFailedWithDetailsc                 n    || _         || _        t                                          ||||           d S )NrW   )errorsfailuresr\   r]   )r^   r[   ri   rj   rX   r`   s        rU   r]   zTestFailedWithDetails.__init__y   s8     fhe<<<<<rT   )rP   rQ   rR   r]   rd   re   s   @rU   rg   rg   w   s;        = = = = = = = = =rT   rg   c                       e Zd ZdS )r   NrO   rS   rT   rU   r   r   ~   s        ((rT   r   c                       e Zd ZdS )r   NrO   rS   rT   rU   r   r      s         rT   r   c                 &    	 | rt           j        S d S )Nc                     | S rZ   rS   )fs    rU   <lambda>z$anticipate_failure.<locals>.<lambda>   s    Q rT   )unittestexpectedFailure)	conditions    rU   r'   r'      s"    
  ('';rT   c                 x    	 |d}t           }|                    | ||          }|                    |           |S )Nztest*)	start_dirtop_level_dirpattern)
STDLIB_DIRdiscoveraddTests)pkg_dirloaderstandard_testsrw   top_dirpackage_testss         rU   r(   r(      sT     GOOg29,3 $ 5 5M M***rT   c                 z    	 	 t          | |          }|S # t          $ r t          j        d| d|          w xY w)Nzobject z has no attribute )getattrAttributeErrorrq   SkipTest)objname	attributes      rU   r   r      sa    IC&&	   O O O333 MNNNOs    %:   Fc                 
    | a d S rZ   )_original_stdout)stdouts    rU   r   r      s    rT   c                  (    t           pt          j        S rZ   )r   sysr   rS   rT   rU   r   r      s    )sz)rT   c                 v   	  || S # t           $ r/}t          dk    rt          |j        j        d|            d }~wt
          $ rp}t          dk    r7t          |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   printr`   rP   OSErroroschmodstatS_IRWXU)pathfuncr_   errs       rU   
_force_runr      s    tT{   a<<cm444cc:;;;   a<<cm444cc:;;;E4==$$7888
t|$$$tT{s%    
B8*;B8A%B3-B83B8c            	      &   t          t          d          rt          j        S dd l} d }t          j                            d          r|                                 rd}nt          j                            d          rdd ldd ld}d} G fddj	                  }j
        j        }|                                }|s                                 |            }j                                        }|                    ||                    |                              |                              |                    }	|	s                                t'          |j        |z            sd}nt          j        d	k    rdd
lm}
mm}m	} ddlm} |
                     |d                    }|                                dk    rd}nY G fdd|          } |            } ||          }|                    |          dk     s|                    |          dk     rd}|s	 ddlm}  |            }|                                  |!                                 |"                                 nn# tF          $ ra}tI          |          }tK          |          dk    r|d d         dz   }d&                    tO          |          j(        |          }Y d }~nd }~ww xY w|t          _)        | t          _        t          j        S )Nresultr   winz(gui is not available on Windows IoT Corer   c                   b    e Zd Zd j        j        fd j        j        fd j        j        fgZdS )*_is_gui_available.<locals>.USEROBJECTFLAGSfInherit	fReserveddwFlagsN)rP   rQ   rR   wintypesBOOLDWORD_fields_)ctypess   rU   USEROBJECTFLAGSr      s=        #V_%9:$fo&:;"FO$9:<HHHrT   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 fd fgZdS )._is_gui_available.<locals>.ProcessSerialNumberhighLongOfPSNlowLongOfPSNN)rP   rQ   rR   r   )r   s   rU   ProcessSerialNumberr     s&        ,e4+U35rT   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typerP   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                         @@rU   r   r      s    (++ ( ''OOOF
|u%% 2?(*?*?*A*A 2?;		 	 	'	' 0? 			< 	< 	< 	< 	< 	< 	<f. 	< 	< 	< m"'')) 	$//###o&&((++ALLMM#LL  	" "
  	$//###CK+-.. 	DCF		!	! 	;:::::::::::,,,,,,''5J(K(KLL''))Q..GFF5 5 5 5 5 5 5i 5 5 5 &%''CGCLLE11%881<<//66::>  G	G""""""244DMMOOOKKMMMLLNNNN 	G 	G 	GQJ:##'_x7
3::477;K;EG GFFFFFF		G  &#)z##s   3AJ   
K+
AK&&K+c                 (    	 t           d u p| t           v S rZ   )r   resources    rU   r   r      s    
 D =H$==rT   c                     	 t          |           s|d| z  }t          |          | dv rt          st          d          | dk    r't                      st          t          j                  d S d S )Nz"Use of the %r resource not enabled>   networkurlfetchzNo socket supportgui)r   r   r%   r   r   )r   r[   s     rU   r   r   (  s    Jx(( ";6ACS!!!***3E*01115!2!4!4.5666 rT   Linuxc                 (   dd l }|                                | k    rd S |                                                    dd          d         }	 t	          t          t          |                    d                              S # t          $ r Y d S w xY w)Nr   -r   .)r   systemreleasesplittuplemapint
ValueError)sysnamer   version_txts      rU   _get_kernel_versionr   3  s    OOOG##t""$$**32215KSk//4455666   tts   4B 
BBc                    	 dd l }d                    t          t          |                    }|                                                    dd          d         }|                                | k    rO	 t          t          t          |                    d                              }||k     }n# t          $ r d}Y nw xY wd}t          j        ||  d| d|           S )Nr   r   r   r   Fz	 version  or higher required, not )r   joinr   r   r   r   r   r   r   r   rq   skipIf)r   min_versionr   min_version_txtr   versionskips          rU   _requires_unix_versionr   =  s
    OOOhhs34455O""$$**32215KG##	)C[%6%6s%;%;<<==G [(DD  	 	 	DDD	
 ? 	 	_ 	 		 	  s   55B1 1C ?C c                  $    	 t          d|           S )NFreeBSDr   r   s    rU   r   r   X  s     ")[999rT   c                  $    	 t          d|           S )Nr   r  r  s    rU   r   r   a  s     "';777rT   c                       	  fd}|S )Nc                 X     t          j                    fd            }|_        |S )Nc                     t           j        dk    rdd l}|                                d         }	 t          t	          t
          |                    d                              }|k     rBd                    t	          t                              }t          j
        d|d|          n# t          $ r Y nw xY w | i |S )Nr   r   r   z	Mac OS X r   )r   r   mac_verr   r   r   r   r   r   rq   r   r   )r_   kwr   r   r   r   r   r   s         rU   wrapperz4requires_mac_ver.<locals>.decorator.<locals>.wrapperr  s    |x''&..003	>#C[->->s-C-C$D$DEEG ,,*-((3sK3H3H*I*I&//.=> > > - "   D 4$$$$s   5B/ /
B<;B<)	functoolswrapsr   )r   r	  r   s   ` rU   	decoratorz#requires_mac_ver.<locals>.decoratorq  sF    				% 	% 	% 	% 	% 
		% *rT   rS   )r   r  s   ` rU   r   r   j  s)        & rT   c                    	 dd l }| sd} 	 |                                                                dk    }n># t          t          f$ r*}t          j        d| dt                     d}Y d }~nd }~ww xY wt          j	        ||           S )Nr   znot suitable for buildbotsbuildbotzgetpass.getuser() failed r   F)
getpassgetuserlowerKeyErrorEnvironmentErrorwarningswarnRuntimeWarningrq   r   )r   r  
isbuildbotr   s       rU   skip_if_buildbotr    s    >NNN .-__&&,,..*<

&'   8#888.III





 ?:v...s   *6 A1 A,,A1addressmemoryubc                     	 | s|s|st          d          t          j        d          pd}t          j        d          pd}d|v pd|v }d|v pd|v }d	|v pd
|v }|r|p| o|p|o|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           rU   r-   r-     s    C Pv P PNOOO %h//52F*=99?RKv% 	1![0 
 	& 	2"k1 
 	&( 	=-< 
 
	$$ 			&&			rT   c                Z    	 | sd} t          |||          }t          j        ||           S )Nz"not working with sanitizers activer  )r-   rq   r   )r   r  r  r  r   s        rU   r.   r.     s8    H 6576bAAAD?4(((rT   T)r  c                 J    dD ]}|| v r| |xx         d| z  cc<   || |<    d S )N)ASAN_OPTIONSMSAN_OPTIONSUBSAN_OPTIONS:rS   )envoptionr   s      rU   set_sanitizer_env_varr0    sM    A  3;;IIIV%IIIICII	 rT   c                 H     	 t          j                    fd            }|S )Nc                      	  | i | d S # 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   rq   r   )r_   kwargsr   ro   s      rU   decz&system_must_validate_cert.<locals>.dec  st    	Atv 	 	 	*c!ff44' )A B B B		s    
A&=A)r
  r  )ro   r5  s   ` rU   system_must_validate_certr6    s;    ?_Q     JrT   i @ i  doubleIEEEztest requires IEEE 754 doublesrequires zlibc                 \    	 dd l }n# t          $ r d }Y nw xY wt          j        ||           S Nr   )zlibImportErrorrq   
skipUnless)r   r<  s     rU   r    r      I       tV,,,    requires gzipc                 \    	 dd l }n# t          $ r d }Y nw xY wt          j        ||           S r;  )gzipr=  rq   r>  )r   rC  s     rU   r   r     r?  r@  requires bz2c                 \    	 dd l }n# t          $ r d }Y nw xY wt          j        ||           S r;  )bz2r=  rq   r>  )r   rF  s     rU   r   r     sI    



   sF+++r@  requires lzmac                 \    	 dd l }n# t          $ r d }Y nw xY wt          j        ||           S r;  )lzmar=  rq   r>  )r   rI  s     rU   r   r     r?  r@  c                      	 dd l } n"# t          $ r t          j        d          w xY w|                                 }t          |d                    S )Nr   _testinternalcapi requiredcode_debug_ranges)_testinternalcapir=  rq   r   
get_configr   )rM  configs     rU   has_no_debug_rangesrP    sk    >      > > > <===>))++FF./0000    &$requires co_positions / debug_rangesc                 D    t          j        t                      |           S rZ   )rq   r   rP  )r   s    rU   requires_debug_rangesrT    s    ?.00&999rT   zrequires legacy Unicode C APIwin32javagetandroidapilevel)rU  vxworksz/system/bin/shz/bin/sh
emscriptenwasiforkc                  6    t          j        t          d          S )Nzrequires working os.fork())rq   r>  r!   rS   rT   rU   r"   r"     s    /1MNNNrT   c                  8    	 t          j        t          d          S )Nzrequires subprocess support)rq   r>  r#   rS   rT   rU   r$   r$   #  s    =57TUUUrT   )modulec                 z    	 d}| rt           st          j        |          d S t          j        t           |          S )Nzrequires socket support)r%   rq   r   r>  )r^  r[   s     rU   r&   r&   *  sO     $C <! 	)#C(((	) 	) "#5s;;;rT   z%4Yzhttp://www.pythontest.netdatac                     	 t           j        dk    rd S dd l}d}|  d}|                                \  }}t	          |                    |d                     t	          |           t	          d|z             d S )Nr   r   z NOTICE z may generate "malloc can't allocate region"
warnings on macOS systems. This behavior is known. Do not
report a bug unless tests are also failing. See bpo-40928.r   )r   r   shutilget_terminal_sizer   center)	test_namerb  r[   detailpadding_s         rU   darwin_malloc_err_warningri  O  s    
|xMMM
C K K KF ))++JGQ	#**Wc
"
"###	&MMM	#-rT   c                 H   	 t           j                            |           r| S | t           j                            ||           } t          gt
          j        z   }|D ]E}t           j                            ||           }t           j                            |          r|c S F| S rZ   )r   r   isabsr   TEST_HOME_DIRr   exists)filenamesubdirr   dnfns        rU   r;   r;   a  s     
w}}X 7<<11?SX%D ) )W\\"h''7>>"(byyy(OrT   c                     	 t          |                                           }d |D             }d                    |          }d|z  S )Nc                     g | ]}d |z  S )z%r: %rrS   ).0pairs     rU   
<listcomp>zsortdict.<locals>.<listcomp>w  s    333TD333rT   z, z{%s})sorteditemsr   )dictrx  	reprpairs
withcommass       rU   rA   rA   t  sI    +4::<<  E33U333I9%%JJrT   r  )linenooffsetc                |   |                      t          |          5 }t          |dd           d d d            n# 1 swxY w Y   |j        }|                     |j                   ||                     |j        |           |                     |j                   ||                     |j        |           d S d S )Nz<test string>exec)assertRaisesRegexSyntaxErrorcompile	exceptionassertIsNotNoner|  assertEqualr}  )testcase	statementerrtextr|  r}  cmr   s          rU   r   r   {  s    		#	#K	9	9 4R	?F3334 4 4 4 4 4 4 4 4 4 4 4 4 4 4
,CSZ(((SZ000SZ(((SZ00000 s   :>>c                    dd l }dd l}ddlm} 	 dd l}n# t
          $ r d }Y nw xY w                    dd           |j                            |           d         	                    d          d         }t          j                            t          |          }fd}t          j                            |          r ||          }	|	|	S  ||           t          d	           t           r t#          d
| z  t%                                 |j                                        }
|r|
j                            d           |
                    | t0                    }	|r4|	j                            d          dk    r|                    |	          }		 t/          |d          5 }|	                                }|r+|                    |           |	                                }|+d d d            n# 1 swxY w Y   |	                                 n# |	                                 w xY w ||          }	|	|	S t?          d|z            )Nr   r   )unlinkcheckr   /c                     t          | gR i }|S  |          r|                    d           |S |                                 d S r;  )openseekclose)rq  ro   r_   r  r  s     rU   check_valid_filez*open_urlresource.<locals>.check_valid_file  s_    !d!!!b!!=HU1XX 	FF1IIIH						rT   r   z	fetching %s ...file)zAccept-EncodingrC  timeoutzContent-EncodingrC  )fileobjwbzinvalid resource %r) urllib.requesturllib.parse	os_helperr  rC  r=  popparseurlparser   r   r   r   TEST_DATA_DIRrm  r   r   r   r   requestbuild_opener
addheadersappendr  rJ   headersgetGzipFilereadwriter  r
   )urlr_   r  urllibr  rC  rn  rq  r  ro   openeroutsr  s    ``          @rU   r7   r7     s   ''''''''!!!!!!    FF7D!!E|$$S))!,22377;H	mX	.	.B       
w~~b R  =Hr


 Z E!C'.A.C.CDDDD^((**F >  !<===C!122A %	011V;;MM!M$$"d^^ 	sA 		!FFHH  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
								A}
*R/
0
00s=    ''H ,AG:.H :G>>H G>H H0c              #      K   	 dd l }t          t          |           }t          t          | |                                           	 t          t          |           V  t          t          | |           d S # t          t          | |           w xY wr;  )ior   r   setattrStringIO)stream_namer  orig_stdouts      rU   captured_outputr    s      OIII#{++KCbkkmm,,,/c;'''''[+.....[+....s   A5 5Bc                  "    	 t          d          S )Nr   r  rS   rT   rU   r   r          8$$$rT   c                  "    	 t          d          S )Nstderrr  rS   rT   rU   r   r     r  rT   c                  "    	 t          d          S )Nstdinr  rS   rT   rU   r   r     s     7###rT   c                      	 dd l } |                                  t          rt          j        d           |                                  |                                  d S )Nr   g?)gccollectr0   timesleep)r  s    rU   
gc_collectr    sR     IIIJJLLL 
3JJLLLJJLLLLLrT   c               #      K   dd l } |                                 }|                                  	 d V  |r|                                  d S d S # |r|                                  w w xY wr;  )r  	isenableddisableenable)r  have_gcs     rU   
disable_gcr    sy      IIIllnnGJJLLL 	IIKKKKK	 	7 	IIKKKK	s   A A'c                      	 t          j        d          pd} d}|                                 D ]}|                    d          r|}t          j        d          dk    rd}nd}||vS )N	PY_CFLAGSr  z-OCCgcc)r  -O0z-Og)r  r  )r!  r"  r   r   )r#  	final_optoptnon_optss       rU   python_is_optimizedr    s}    6%k228bFI||~~  >>$ 	I%%..%H$$rT   c                      t          j        d          pdg d} t          j        d          }|r|                     |           t          fd| D                       S )NPY_CFLAGS_NODISTr  )z-fprofile-usez-fprofile-instr-usez	-prof-usePGO_PROF_USE_FLAGc              3       K   | ]}|v V  	d S rZ   rS   )rt  r/  cflags_nodists     rU   	<genexpr>z#check_cflags_pgo.<locals>.<genexpr>#  s(      AA6v&AAAAAArT   )r!  r"  r  any)pgo_optionsr  r  s     @rU   check_cflags_pgor    s     ,-?@@FBM  K "01DEE .,---AAAA[AAAAAArT   nP0n
getobjects2P0Pnc                 T    dd l }|                    t          | z   t          z             S r;  )structcalcsize_header_alignfmtr  s     rU   calcobjsizer  -  s&    MMM??7S=61222rT   c                 T    dd l }|                    t          | z   t          z             S r;  )r  r  _vheaderr  r  s     rU   calcvobjsizer  1  s&    MMM??8c>F2333rT   i @  i   c                    	 dd l }n"# t          $ r t          j        d          w xY wt	          j        |          }t          |          t          k    r|j        t          z  s4t          |          t          k    r&t          |          j        t          z  r
||j
        z  }dt          |          ||fz  }|                     |||           d S )Nr   rK  z&wrong size for %s: got %d, expected %d)rM  r=  rq   r   r   	getsizeofr   	__flags___TPFLAGS_HEAPTYPE_TPFLAGS_HAVE_GCSIZEOF_PYGC_HEADr  )testosizerM  r   r[   s         rU   check_sizeofr  9  s    >      > > > <===>]1F	aDq{->>
q''T//Q 14D D/!22
2Aww%&CVT3'''''rQ  )_do_cleanupsc                    	 dt           t                    r=                     dd                                           t	                     dk    rdt                     fd}|S )NF, r   Tc                      t           t                    rt          d          t          j                    fd            }|S )Nz1subTests() can only decorate methods, not classesc                    D ]m}	r|f}t          t          |                    } | j        di |5   | g|R i || d d d            n# 1 swxY w Y   r|                                  nd S )NrS   )ry  zipsubTest
doCleanups)
r^   r_   r4  valuessubtest_kwargsr  	arg_names
arg_valuesr   single_params
        rU   r	  z,subTests.<locals>.decorator.<locals>.wrapperS  s    $ & & '$YF!%c)V&<&<!=!=!T\33N33 B BDAAAAA.AAAB B B B B B B B B B B B B B B &OO%%%& &s   AA	A	)
isinstancer   	TypeErrorr
  r  )r   r	  r  r  r  r  s   ` rU   r  zsubTests.<locals>.decoratorP  so    dD!! 	QOPPP				& 	& 	& 	& 	& 	& 	& 	& 
		& rT   )r  r   replacer   r   r   )r  r  r  r  r  s   ``` @rU   subTestsr  G  s    L)S!!  %%c#..4466	y>>QLz""J        rT   c              '   Z  K   	 dd l }t          ||           }|                    |          }|D ]!}	 |                    ||            n#  Y xY wn# t          $ r   d x}}Y nxY w	 d V  |r|r|                    ||           d S d S d S # |r|r|                    ||           w w w xY wr;  )localer   	setlocaler   )catstrlocalesr	  categoryorig_localelocs         rU   r9   r9   d  s&     66**&&x00  	 	C  3///    $##4 	4k 	4X{33333	4 	4 	4 	46 	4k 	4X{3333	4 	4s"   )A A

AA$(B B*c                       fd}|S )Nc                 F      fd} j         |_          j        |_        |S )Nc                     	 t           j        }n"# t          $ r t          j        d          w xY w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
          j        d= n|t
          j        d<   t          j                     w xY w)Nztzset requiredTZ)r  tzsetr   rq   r   r   environ)r_   kwdsr  orig_tzr   tzs       rU   innerz-run_with_tz.<locals>.decorator.<locals>.inner  s    :
! : : :'(8999:rz!!*T*!BJtEGGGtT*T**?
4(('.BJt$
	 ?
4(('.BJt$
s    //B) )4C)rP   __doc__)r   r  r  s   ` rU   r  zrun_with_tz.<locals>.decorator  s;    	 	 	 	 	 	, rT   rS   )r  r  s   ` rU   rB   rB     s$        4 rT   i      r      limitreturnc                 p   dt           t          dt          z  d}t          j        d| t          j        t          j        z            }|t          d|           t          t          |	                    d                    ||	                    d          
                                         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      rU   _parse_memlimitr-    s    #X	 E 	0%+	- 	-Ay;%;;<<<uQWWQZZ  5)9)9););#<<===rT   c                     t          |           }|t          dz
  k     rt          d          |at	          |t
                    }|ad S )Nr   z+Memory limit {limit!r} too low to be useful)r-  _2Gr   real_max_memuseminMAX_Py_ssize_tr   )r  memlimits     rU   r?   r?     sL     u%%H#'FGGGO8^,,HJJJrT   c                   "    e Zd Z	 d Zd Zd ZdS )_MemoryWatchdogc                 l    d                     t          j                              | _        d| _        d S )Nz/proc/{pid}/statm)pidF)r   r   getpidprocfilestartedrb   s    rU   r]   z_MemoryWatchdog.__init__  s+    +22ry{{2CCrT   c                    dd l }	 t          | j        d          }n_# t          $ rR} |j        d                    |          t                     t          j        	                                 Y d }~d S d }~ww xY wdd l
}|5  t          d          }|                    t          j        |g||j                  | _        d d d            n# 1 swxY w Y   d| _        d S )Nr   rz!/proc not available for stats: {}zmemory_watchdog.py)r  r  T)r  r  r9  r   r  r   r  r   r  flush
subprocessr;   Popen
executableDEVNULLmem_watchdogr:  )r^   r  ro   r   r>  watchdog_scripts         rU   startz_MemoryWatchdog.start  sS   	T]C((AA 	 	 	HM=DDQGG(* * *JFFFFF		 	 	L 	L&';<<O * 0 0#./1R788B8J !1 !L !LD	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L
 s'    
A8AA33A8>CCCc                 |    | j         r4| j                                         | j                                         d S d S rZ   )r:  rB  	terminatewaitrb   s    rU   stopz_MemoryWatchdog.stop  sF    < 	%'')))""$$$$$	% 	%rT   N)rP   rQ   rR   r]   rD  rH  rS   rT   rU   r5  r5    sF            $% % % % %rT   r5  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          rat
          rZt                       t          d                    ||z  dz                       t                      }|	                                 nd }	  | |          |r|
                                 S S # |r|
                                 w w xY w)Ni  'not enough memory: %.1fG minimum needed   @z* ... expected peak memory use: {peak:.1f}G)peak)r  memuser0  rq   r   r   r   r   r5  rD  rH  )r^   r  rO  maxsizewatchdogdry_runro   r	  s        rU   r	  z.bigmemtest.<locals>.decorator.<locals>.wrapper  s)   <D^F"   5 5#g&666'=f}	245 5 5   7  Bv4&=I#>v??A A A*,,    $qw'' $MMOOOO$8 $MMOOOO$s   ;C C7)r  rO  )ro   r	  rR  rO  r  s   `@rU   r  zbigmemtest.<locals>.decorator  s=    	$ 	$ 	$ 	$ 	$ 	$ 	$: rT   rS   )r  rO  rR  r  s   ``` rU   r   r     s6                 B rT   c                      	  fd}|S )Nc                     t           t          k     rIt          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 insteadrL  rM  )r   r2  rq   r   )r^   ro   s    rU   r	  z!bigaddrspacetest.<locals>.wrapper  st    &&**zU/B/B'CE E E '=%356 6 6 1T77NrT   rS   )ro   r	  s   ` rU   r   r     s&    :
 
 
 
 
 NrT   c                     | S rZ   rS   )r   s    rU   _idrV  (  s    JrT   c                     | dk    r,t                      st          j        t           j                  S t	          |           rt
          S t          j        d                    |                     S )Nr   zresource {0!r} is not enabled)r   rq   r   r   r   rV  r   r   s    rU   requires_resourcerX  +  sb    5!2!4!4}.56668$$ O
}<CCHMMNNNrT   c                 6    	  t          d          |           S )NT)cpython)impl_detailr  s    rU   r   r   3  s$     %;t$$$T***rT   c                    t          di |rt          S | bt          |          \  }}|rd} nd} t          |                                          }|                     d                    |                    } t          j        |           S )Nz*implementation detail not available on {0}z%implementation detail specific to {0}z or rS   )	r4   rV  _parse_guardsrw  keysr   r   rq   r   )r[   guards
guardnamesdefaults       rU   r[  r[  9  s    ""6"" 

{+F33
G 	:>CC9CJOO--..
jjZ0011=rT   c                 j    | sddidfS t          |                                           d         }| | fS )NrZ  TFr   )listr  )r`  is_trues     rU   r^  r^  F  sA     *D!5))6==??##A&GK  rT   c                  r    	 t          |           \  } }|                     t          j        j        |          S rZ   )r^  r  r   implementationr   )r`  rb  s     rU   r4   r4   P  s4     $F++OFG::c(-w777rT   c                 v     	 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rZ   )r   ri  settrace)r_   r4  original_tracer   s      rU   r	  zno_tracing.<locals>.wrapper`  s^     \^^N-T"""tT,V,,^,,,,^,,,,s   A A)r   r   r
  r  )r   r	  s   ` rU   
no_tracingrm  [  sR    O3
## 				- 	- 	- 	- 
		- rT   c                 <    	 t          t          |                     S rZ   )rm  r   r\  s    rU   refcount_testro  k  s     l4(()))rT   c                      d S rZ   rS   rS   rT   rU   _check_docstringsrq  |  s    66rT   WITH_DOC_STRINGSztest requires docstringsc                      t           j        t           j                                         t           j         t           j                                         d S d S rZ   )r   r   r=  r  rS   rT   rU   flush_std_streamsrt    sH    
z

z
 rT   c                     t                       t          j        }|                                 D ]}t	          d| |           |                                 d S )NzWarning -- r  )rt  print_warningorig_stderr
splitlinesr   r=  )r[   streamlines      rU   rv  rv    s_    &F   1 1"D""00000
LLNNNNNrT   c                     	 t          t          d          rt          t          d          sd S t          sd S 	 	 t          j        dt          j                  \  } }n# t
          $ r Y d S w xY w| dk    rd S t          d|             daR)NwaitpidWNOHANGTr  r   z%reap_children() reaped child process )r   r   r#   r|  r}  r   rv  environment_altered)r7  statuss     rU   r8   r8     s     B	"" wr9'='= # #	*R44KC 	 	 	EE	 !88ECcCCDDD"#s   "A 
A*)A*c              #     K   	 t          | |          rOt          | |          }t          | ||           	 |V  t          | ||           d S # t          | ||           w xY wt          | ||           	 d V  t          | |          rt          | |           d S d S # t          | |          rt          | |           w w xY wrZ   )r   r   r  delattr)r   attrnew_valreal_vals       rU   r=   r=     s       sD #3%%T7###	)NNNCx(((((GCx((((T7###	#EEEsD!! #T"""""# #wsD!! #T""""#s   A A 5B #C c              #      K   	 || v r#| |         }|| |<   	 |V  || |<   d S # || |<   w xY w|| |<   	 d V  || v r| |= d S d S # || v r| |= w xY wrZ   rS   )r   itemr  r  s       rU   r:   r:     s       s{{t9D		!NNN CIIICI    D		EEEs{{III {ts{{Is   ! (A   	A	c                  4    	 dd l } |                                 S r;  )r>  _args_from_interpreter_flagsr>  s    rU   args_from_interpreter_flagsr    s%    222444rT   c                  4    	 dd l } |                                 S r;  )r>  "_optim_args_from_interpreter_flagsr  s    rU   !optim_args_from_interpreter_flagsr    s%    +88:::rT   c                       e Zd ZdZd Zd ZdS )r>   )r[   messagec                     	 d}|D ]:}||         }|                     |          }|                     |||          sd} n;|S )NTF)r  match_value)r^   dr4  r   r   vdvs          rU   matcheszMatcher.matches  se    	  	 	Aq	AqB##Ar1--  rT   c                     	 t          |          t          |          k    rd}n?t          |          t          us	|| j        vr||k    }n|                    |          dk    }|S )NFr   )r   r   _partial_matchesfind)r^   r   r  r  r   s        rU   r  zMatcher.match_value'  sh    	 77d2hhFF"XXS  AT-B$B$B2gFFWWQZZ1_FrT   N)rP   rQ   rR   r  r  r  rS   rT   rU   r>   r>     s8        )  "
 
 
 
 
rT   r>   c                     	 dd l }t          It          j        dk    r7|                                dk    rt          j                    j        dk    rdandat          r t          j	        d          |           n| S )Nr   rU  cp65001r  TFz!buggy MSVC UCRT strptime/strftime)
r	  _buggy_ucrtr   r   getencodingr  	localtimetm_zonerq   r   )r  r	  s     rU   r+   r+   5  s     MMM<7""""$$	11  (B..KKKGR\=8=<==dCCCX\\rT   c                   f    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dS )PythonSymlinkNc                    ddl m} |pt          j                            |          | _        g | _        t          j                            t          j	                  | _
        g | _        d | _        |                                  d S )Nr   )TESTFN)r  r  r   r   abspathlink_linkedrealpathr   r@  real
_also_link_env_platform_specific)r^   r  r  s      rU   r]   zPythonSymlink.__init__L  st    %%%%%%3BGOOF33	G$$S^44		!!!!!rT   rU  c           
      b   dd l }dd l}t          j                            | j                  r>t          j                            | j                  s|                    d          | _        |                    t          j	                  }t          j        
                    |          }t          j        
                    | j                  }| j                            |t          j                            |t          j                            |                    f           |                     t          j                            |                    |          d                    D ]Y}| j                            |t          j                            |t          j                            |                    f           Zd t          j        D             | _        t          j        
                    | j                  | j        d<   t'          j                    rt*          | j        d<   d S d S )Nr   zvcruntime*.dllc                 \    i | ])}|                                 t          j        |          *S rS   )upperr   getenv)rt  r   s     rU   
<dictcomp>z4PythonSymlink._platform_specific.<locals>.<dictcomp>o  s*    EEEQBIaLLEEErT   
PYTHONHOME
PYTHONPATH)glob_winapir   r   lexistsr  rm  GetModuleFileNamer   	dllhandledirnamer  r  r  r   basenameescaper  r  r!  is_python_buildrx   )r^   r  r  r   src_dirdest_dirruntimes          rU   r  z PythonSymlink._platform_specificY  s   KKKNNNwty)) 9"'..2K2K 9 $55a88	++CM::Cgooc**Gwty11HO""Xrw'7'7'<'<==$     99RW\\$++g2F2FHX%Y%YZZ  &&GLL27+;+;G+D+DEE(    
 FE"*EEEDI&(goodi&@&@DIl#(** 5*4	,'''5 5rT   c                     d S rZ   rS   rb   s    rU   r  z PythonSymlink._platform_specifict  s    DrT   c                     t          j        | j        | j                   | j                            | j                   | j        D ]4\  }}t          j        ||           | j                            |           5| S rZ   )r   symlinkr  r  r  r  r  )r^   r  r  s      rU   	__enter__zPythonSymlink.__enter__w  su    

49di(((DI&&&/ 	& 	&JD$JtT"""L%%%%rT   c                     | j         D ]X}	 t          j        |           # t          $ r4}t          r#t          d                    ||                     Y d }~Qd }~ww xY wd S )Nzfailed to clean up {}: {})r  r   removeIOErrorr   r   r   )r^   exc_type	exc_valueexc_tbr  exs         rU   __exit__zPythonSymlink.__exit__  s    L 	H 	HDH	$ H H H H5<<T2FFGGGH	H 	Hs    
A*AAc                    dd l }|g|}|                    ||j        |j        |          }|                                }|j        |k    r~t
          rPt          t          |d                              t          t          |d                   t          j	                   t          d                    |j                            |S )Nr   )r   r  r.  r   r  z'unexpected return code: {0} (0x{0:08X}))r>  r?  PIPEcommunicate
returncoder   r   reprr   r  RuntimeErrorr   )	r^   pythonr_   r.  r  r>  cmdpr<  s	            rU   _callzPythonSymlink._call  s    ooS$.O  > >MMOO<:%% 3d1Q4jj!!!d1Q4jjsz22229@@NNP P PrT   r   )r  c                <    |                      | j        |d |          S rZ   )r  r  r^   r  r_   s      rU   	call_realzPythonSymlink.call_real  s    zz$)T4<<<rT   c                F    |                      | j        || j        |          S rZ   )r  r  r  r  s      rU   	call_linkzPythonSymlink.call_link  s    zz$)T49jAAArT   rZ   )rP   rQ   rR   r]   r   r   r  r  r  r  r  r  rS   rT   rU   r  r  J  s        =
" 
" 
" 
" |w	5 	5 	5 	56	 	 	  H H H   +, = = = = = +, B B B B B B BrT   r  c                 h    	 t            pt          }d}|r| n t          j        |          |           S )Nz#Not run for (non-extended) PGO task)rC   PGO_EXTENDEDrq   r   )r  okr[   s      rU   skip_if_pgo_taskr    s:    E	 LB
/C344-8=--d333rT   rS   )ignorec                    	 t          t          |                     t          t          |                    z
  }|r|t          |          z  }t          d |D                       }|S )Nc              3   n   K   | ]0}|                     d           r|                    d          ,|V  1dS )rh  __N)r   endswith)rt  r!  s     rU   r  z&detect_api_mismatch.<locals>.<genexpr>  sd       F Fa ||C00F45JJt4D4DF F F F F F FrT   )setdir)ref_api	other_apir  missing_itemss       rU   r)   r)     s~     G%%C	NN(;(;;M %V$ F F= F F F F FMrT   c                    	 |	|j         f}nt          |t                    r|f}t          |          }t	          |          D ]~}|                    d          s||v rt          ||          }t          |dd           |v s*t          |d          s/t          |t          j	                  s|
                    |           |                     |j        |           d S )Nrh  rQ   )rP   r  r   r  r  r   r   r   types
ModuleTypeaddassertCountEqual__all__)	test_caser^  name_of_moduleextranot_exportedexpectedr   r   s           rU   r*   r*     s    %N  /,	NC	(	( ,(+5zzHF  ??3 	4<#7#7fd##Ct,,>>S,// ?U%566 ? LLv~x88888rT   c                    	 dd l }n# t          $ r Y d S w xY w|                    |j        |j        z  |j        z  |j        z             t          |d          rf|j        |j	        |j
        fD ]S}| r7|                    ||j                   |                    ||j                   ;|                    |d           Rd S d S )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      rU   suppress_msvcrt_assertsr     s       5 ;< 67 !78 9 9 9 v)** ./6#3V5FG 	. 	.A .''6+BCCC''6+DEEEE''1----. .	. 	.s    
c                   $    e Zd Z	 dZdZd Zd ZdS )r@   Nc                 <   	 t           j                            d          r	 dd l}n# t          $ r Y d S w xY w|                                | _        |                    | j        |j        z             t          |d          r`i | _
        |j        |j        |j        fD ]D}|                    ||j                  }|                    ||j                  }||f| j
        |<   En7	 dd l}|| _        n# t          $ r
 d | _        Y nw xY w| j        t	 | j                            | j        j                  | _        | j                            | j        j        d| j        d         f           n# t,          t.          f$ r Y nw xY wt           j        dk    rdd l}g d}|                    ||j        |j                  }|5  |                                d         }	d d d            n# 1 swxY w Y   |	                                dk    rt;          d	d
d           | S )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_valuer  r  r   	old_modesr  r  r  r  r  r  r  r   	getrlimitRLIMIT_CORE	setrlimitr   r   r>  r?  r  r  stripr   )
r^   r  report_typeold_modeold_filer   r>  r  procr   s
             rU   r  zSuppressCrashReport.__enter__  s   	 <""5)) 7	E    $0022DN1M MNNN v122 	E!#$*O$*$4$*$5$7 E EK  &66{"3 5  5H%66{"5 7  7H2:H2DDN;//% ( % % % $%}(%)]%<%<T]=V%W%WDNM++DM,E-.q0A,BD D D D"G,   D |x''!!!!@ @ @!''/9/9 ( @ @  3 3!--//2F3 3 3 3 3 3 3 3 3 3 3 3 3 3 3<<>>\11 057tE E E E sC   ' 
55&C2 2DDAE- -F F G''G+.G+c                    	 | j         d S t          j                            d          rwdd l}|                    | j                    | j        rN| j                                        D ]6\  }\  }}|                    ||           |	                    ||           5d S d S | j
        E	 | j
                            | j
        j        | j                    d S # t          t          f$ r Y d S w xY wd S )Nr   r   )r  r   r   r   r  r  r  rx  r  r  r   r
  r	  r   r   )r^   
ignore_excr  r  r  r  s         rU   r  zSuppressCrashReport.__exit__M  s'   O>!F<""5)) 	MMM///~ C9=9M9M9O9O C C5K!5(H++KBBB++KBBBBC CC C }(M++DM,Et~VVVVV"G,   DD )(s   )*C C*)C*)rP   rQ   rR   r  r  r  r  rS   rT   rU   r@   r@     sG        
 II@ @ @D    rT   r@   c                    	 t                     d	 j                 dn(# t          t          f$ r t          d           Y nw xY wfd}|                     |           t          |           d S )NFTc                  R     rt                     d S t                     d S rZ   )r  r  )attr_is_local	attr_nameobject_to_patchr  s   rU   cleanupzpatch.<locals>.cleanupx  s9     	0OY	:::::OY/////rT   )r   __dict__r   r  
addCleanupr  )test_instancer  r  	new_valuer  r  r  s    ``  @@rU   patchr  b  s     OY''' M#,Y7	  H% > > >OY==			>0 0 0 0 0 0 0 0 W%%% OY	22222s   ) "AAc              #   P   K   	 	 | d d          }d V  || d d <   d S # || d d <   w xY wrZ   rS   )origsaveds     rU   
patch_listr     sJ      7QQQQQQ%QQQs    	%c                     	 	 dd l }|                                rt          j        d          n# t          $ r Y nw xY wdd l}|                    |           S )Nr   zUrun_in_subinterp() cannot be used if tracemalloc module is tracing memory allocations)tracemalloc
is_tracingrq   r   r=  	_testcapirun_in_subinterp)coder"  r$  s      rU   r%  r%    s    ; !!## 	;# %: ; ; ;	;     %%d+++s   0 
==c                      G fdd|          }d | ||           |                      t          t                     t                       |                                d S )Nc                       e Zd Z fdZdS )%check_free_after_iterating.<locals>.Ac                 N    d	 t                     d S # t          $ r Y d S w xY wNT)nextStopIteration)r^   doneits    rU   __del__z-check_free_after_iterating.<locals>.A.__del__  s>    DR    s    
$$N)rP   rQ   rR   r0  )r.  r/  s   rU   Ar)    s3        	 	 	 	 	 	 	 	rT   r1  F)assertRaisesr-  r,  r  
assertTrue)r  iterclsr_   r1  r.  r/  s        @@rU   check_free_after_iteratingr6    s           C    D	aahBmT2...LLLOODrT   c                 d   	 ddl m}m}m}m} |                                } |j        |           |j        dk    r'	 |                                 n# |j	        $ r Y dS w xY w|j
        D ]D}| r|| vr	t          ||          }| rn|s|                    |d                   
|d         c S Ed S )Nr   )	ccompilerr!  spawnri   msvc)	distutilsr8  r!  r9  ri   new_compilercustomize_compilercompiler_type
initializeDistutilsPlatformErrorexecutablesr   find_executable)	cmd_namesr8  r!  r9  ri   compilerr   r  s           rU   rD   rD     s"    >===========%%''H I ***''	!!!!, 	 	 	66	$ 
 
 	Y..h%% 	 	  	  Q((0q6MMM 1
 
s   A 
A! A!c                     d}t           rG| |k     rAt          1dd l}|                    ddg                                          dk    at          r|} t          j        |           S )Ngh㈵>r   getpropzro.kernel.qemu   1)r1   _is_android_emulatorr>  check_outputr  r   r6   )intervalminimum_intervalr>  s      rU   r6   r6     s}      (h!111'$.$;$; )+;<%> %>>Cegg%N  	('H ***rT   c               #     K   dd l } t          j                                        }|                                 }	 |                                  d V  |r|                     |d           d S d S # |r|                     |d           w w xY w)Nr   T)r  all_threads)faulthandlerr   
__stderr__fileno
is_enabledr  r  )rN  fdrQ  s      rU   disable_faulthandlerrS    s      
 
			 	 B((**J; 	;RT:::::	; 	;: 	;RT::::	;s   A/ /Bc                   "    e Zd Z	 d Zd Zd ZdS )SaveSignalsc                     dd l }|| _         |                                | _        dD ]>}	 t          ||          }n# t          $ r Y  w xY w| j                            |           ?i | _        d S )Nr   )SIGKILLSIGSTOP)signalvalid_signalssignalsr   r   r  handlers)r^   rY  signamesignums       rU   r]   zSaveSignals.__init__   s    ++--- 	( 	(G 11!   L''''s   ;
AAc                 h    | j         D ])}| j                            |          }||| j        |<   *d S rZ   )r[  rY  	getsignalr\  r^   r^  handlers      rU   savezSaveSignals.save  sK    l 		, 		,Fk++F33G $+DM&!!		, 		,rT   c                 z    | j                                         D ] \  }}| j                            ||           !d S rZ   )r\  rx  rY  ra  s      rU   restorezSaveSignals.restore  sH    #}2244 	0 	0OFGKvw////	0 	0rT   N)rP   rQ   rR   r]   rc  re  rS   rT   rU   rU  rU    sF          
, 
, 
,0 0 0 0 0rT   rU  c                      dd l } | j        S r;  )r$  WITH_PYMALLOC)r$  s    rU   with_pymallocrh    s    ""rT   c                       e Zd Z	 d Zd ZdS )
_ALWAYS_EQc                     dS r+  rS   r^   others     rU   __eq__z_ALWAYS_EQ.__eq__'      trT   c                     dS NFrS   rl  s     rU   __ne__z_ALWAYS_EQ.__ne__)      urT   N)rP   rQ   rR   rn  rr  rS   rT   rU   rj  rj  #  s7              rT   rj  c                   "    e Zd Z	 d Zd Zd ZdS )	_NEVER_EQc                     dS rq  rS   rl  s     rU   rn  z_NEVER_EQ.__eq__2  rs  rT   c                     dS r+  rS   rl  s     rU   rr  z_NEVER_EQ.__ne__4  ro  rT   c                     dS )Nr   rS   rb   s    rU   __hash__z_NEVER_EQ.__hash__6  s    qrT   N)rP   rQ   rR   rn  rr  ry  rS   rT   rU   ru  ru  .  sF                rT   ru  c                       e Zd Z	 d Zd ZdS )_LARGESTc                 ,    t          |t                    S rZ   )r  r{  rl  s     rU   rn  z_LARGEST.__eq__@  s    %***rT   c                     dS rq  rS   rl  s     rU   __lt__z_LARGEST.__lt__B  rs  rT   N)rP   rQ   rR   rn  r~  rS   rT   rU   r{  r{  ;  s7        + + +    rT   r{  c                       e Zd Z	 d Zd ZdS )	_SMALLESTc                 ,    t          |t                    S rZ   )r  r  rl  s     rU   rn  z_SMALLEST.__eq__L  s    %+++rT   c                     dS rq  rS   rl  s     rU   __gt__z_SMALLEST.__gt__N  rs  rT   N)rP   rQ   rR   rn  r  rS   rT   rU   r  r  G  s7        , , ,    rT   r  c                  $    	 dd l } | j        j        S r;  )asyncio.eventsevents_event_loop_policy)asyncios    rU   maybe_get_event_loop_policyr  S  s    N>,,rT   c                    | |}}dd l }|                                5 }|                                dz  }t          |d          |_        |                    |          }|dz
  |z  |z  }||z  }	||	z
  }
||
z
  }||dz
  z  |dz
  |z  |z  z  |	d|	z
  z  z   }t          |          t          |                                          fcd d d            S # 1 swxY w Y   d S )Nr   r      r   )decimallocalcontext
bit_lengthmaxprecDecimalr*  sqrt)nbinsnballsr  r   r  ctxbitsrp  p1empty	meanemptyoccupied
collisionsvars                rU   collision_statsr  `  s6   &qA$ NNN					 43||~~! tR==__QFb=Q&K	y=\
"Q$i"Q$Q&a)m)DDZ  %

"3"334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s   B(CCCc                   (    e Zd Z	 d Zd Zd Zd ZdS )catch_unraisable_exceptionc                 "    d | _         d | _        d S rZ   )
unraisable	_old_hookrb   s    rU   r]   z#catch_unraisable_exception.__init__  s    rT   c                     || _         d S rZ   )r  )r^   r  s     rU   _hookz catch_unraisable_exception._hook  s     %rT   c                 J    t           j        | _        | j        t           _        | S rZ   )r   unraisablehookr  r  rb   s    rU   r  z$catch_unraisable_exception.__enter__  s    +!ZrT   c                 ,    | j         t          _        | `d S rZ   )r  r   r  r  )r^   exc_infos     rU   r  z#catch_unraisable_exception.__exit__  s    !^OOOrT   N)rP   rQ   rR   r]   r  r  r  rS   rT   rU   r  r    sU        0  % % %
  
    rT   r  r  c          	         	 t           j        dk    rdd l}|t          }t	          j                    }t          |d          D ],}t          j        | t           j                  \  }}|dk    r no-	 t          j	        | |j
                   t          j        | d           n# t          $ r Y nw xY wt	          j                    |z
  }t          d|  d|dd          nt          j        | d          \  }}t          j        |          }	|	|k    rt          d|  d	|	 d
| d          || k    rt          d| d|            d S )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   rY  rL   r  	monotonicsleeping_retryr|  r}  killrW  r   AssertionErrorwaitstatus_to_exitcode)
r7  exitcoder  rY  
start_timerh  pid2r  dt	exitcode2s
             rU   wait_processr    s   	 
w$?"G^%%
u555 	< 	<A:c2:66LD&qyy V^,,,
3""""    !!J.B  ";C "; ";*,!:"; "; "; < < <  z#q))f)&11IH E E Ey E E.6E E E F F 	F s{{7D77#77888 {s   1/B! !
B.-B.c                      	 ddl m}   | d            | d          }t          j        dk    rB	 |                    d            d S # t
          $ r}t          j        d|          d }~ww xY wd S )Nr   )import_module_multiprocessingzmultiprocessing.synchronizelinux)r  z broken multiprocessing SemLock: )import_helperr  r   r   Lockr   rq   r   )r  synchronizeexcs      rU   *skip_if_broken_multiprocessing_synchronizer    s    
 -,,,,, M$%%%  - =>>K
|w	P &&&&& 	P 	P 	P#$Ns$N$NOOO	P s   A 
A-A((A-c                     	 |j         }|j        }|dk    r| d| }n| }dt          j        |           d} | j        t
          ||g|R i | d S )Nbuiltinsr   zcannot create 'z' instances)rQ   rP   r&  r  r  r  )r  tpr_   r  modr   qualnamer[   s           rU   r,   r,     s    
 -C;D
j??D??9
<BIh//
<
<
<CHy#rADAAADAAAAArT   c                      	 	 dd l } |                                 }nN# t          t          f$ r:}	 d}t	          j                    }||dz  }|j        }|d }n# d }w xY wY d }~nd }~ww xY wt          |dz
  d          S )Nr   r   )rM  get_recursion_depthr=  RecursionErrorr   	_getframef_backr  )rM  depthr  frames       rU   r  r    s        !5577( 
 
 
	EMOOE#
 #
 EEDELLLLEEEEE
 uqy!s&    A'%AA"AA""A'c                      	 t          j                    } t                      }	 ddlm} n# t
          $ r d}Y nw xY w|rt          | |z
  dz
  d          S | |z
  S )Nr   )USE_STACKCHECKFr   )r   getrecursionlimitr  r$  r  r=  r  )r  r  r  s      rU   get_recursion_availabler    s    
 !##E!!E,,,,,,,     55=1$a(((u}s   + ::c              #      K   	 t          j                    }	 t          j        |            d V  t          j        |           d S # t          j        |           w xY wrZ   )r   r  setrecursionlimit)r  original_limits     rU   set_recursion_limitr  /  sd      1*,,N.e$$$n-----n----   A Ad   c                     	 | dk     rt          d          t                      }t          |dz
  d          }|| z   }t          |          S )Nr  z-max_depth must be at least 4, got {max_depth}r   )r   r  r  r  )	max_depthr  r  s      rU   r<   r<   9  sW    
 1}}HIII!!E	1EIEu%%%rT   r^  likec          
          t                      }t          j        dt          | |dt	          |           dz              |S )Nr  
(?#support))r  r^  r  )objectr  filterwarningsDeprecationWarningid)r^  r  tokens      rU   ignore_deprecations_fromr  F  sO    HHE#1RYY1111	    LrT   tokensc                     | st          d          g }t          d | D                       }t          j        D ]m\  }}}}}|dk    rE|t          u r<t          |t          j                  r|j        }n|pd}|	                    |          rS|
                    |||||f           nt          j        |k    r&|t          j        d d <   t          j                     d S d S )Nz<Provide token or tokens returned by ignore_deprecations_fromc              3   <   K   | ]}d t          |           dV  dS )r  r  N)r  )rt  r  s     rU   r  z-clear_ignored_deprecations.<locals>.<genexpr>U  s4      DDE/2e99///DDDDDDrT   r  r  )r   r   r  filtersr  r  r&  Patternrw   r  r  _filters_mutated)	r  new_filtersr  actionr  r  r^  r|  r[   s	            rU   clear_ignored_deprecationsr  P  s    YWXXXKDDVDDDDDH5=5E H H166X(.@"@"@'2:.. $om||H%% FGXvvFGGGG;&&)!##### '&rT   c                      	 dd l } n%# t          $ r t          j        dd          cY S w xY w	 dd l}n# t          $ r d }Y nw xY wt          j        |d          S )Nr   Tzvenv: ensurepip requires zlibzvenv: pip requires ctypes)r<  r=  rq   r   r   r>  )r<  r   s     rU   requires_venv_with_pipr  e  s    F F F Ft%DEEEEEF
   v'BCCCs    ))2 A Agettotalrefcountr  c            #     K   	 | dk    rt          d          t          j                    }|| z   }	 d V  t          j                    |k    rn|r5t          j                    |z
  }d|dd}|r| d| }t          |          d S )Nr   z!timeout must be greater than zeroTz	timeout (r  z	 seconds)r   )r   r  r  r  )r  err_msgr  r  deadliner  r[   s          rU   
busy_retryr  z  s      * !||<===!!JG#H>x''	  "^
*+"++++ 	&%%G%%CS!!!" "rT   g{Gz?g      ?)
init_delay	max_delayr  c            #      K   	 |}t          | ||          D ]-}d V  t          j        |           t          |dz  |          }.d S )Nr  r   )r  r  r  r1  )r  r  r  r  r  delayrh  s          rU   r  r    sh      0 E666 * *
5EAIy))	* *rT   c              #      K   	 t          j                    }	 t          j        |            d V  t          j        |           d S # t          j        |           w xY wrZ   )r   get_int_max_str_digitsset_int_max_str_digits)
max_digitscurrents     rU   adjust_int_max_str_digitsr    sd      H(**G,":..."7+++++"7++++r  z.git__pycache__c                 ~    t           }t          j                            |           dk    r|ddhz  }n
d|v r|dhz  }|S )NDocbuildvenvModules) _BASE_COPY_SRC_DIR_IGNORED_NAMESr   r   r  )r   namesignoreds      rU   copy_python_src_ignorer    s_    .G	w&&	
 	
 
e		
 	
 NrT   unames390xzskipped on s390xc                  @    	 d t          dd          D             dgz   S )Nc                 ,    g | ]}t          |          S rS   )chr)rt  cs     rU   rv  z)control_characters_c0.<locals>.<listcomp>  s    ...qCFF...rT   r       )rangerS   rT   rU   control_characters_c0r    s.     /.E$--...&99rT   rZ   )r   )r9  )rA  )rD  )rG  )rR  )r  )T)NrS   rS   )F)rS   )r  )rP   r=  
contextlibdataclassesr
  r   r&  r   r   r!  r  r  rq   r  r$  r   r  rI   rJ   rK   rL   r   r  r  __file__TEST_SUPPORT_DIRrl  rx   	REPO_ROOTr   r	   r
   rg   r   r   r   r'   r(   r   r   r   r   r0  junit_xml_listr   r   r   r   r   r   r   r   r   r   r   r   r   r  r-   r.   HAVE_ASAN_FORK_BUGr0  r6  r   SOCK_MAX_SIZEr>  r*  __getformat__r   r   r    r   r   r   rP  rT  requires_legacy_unicode_capir   r/   r0   r   r1   r5   r2   r3   r!   r"   r#   r$   r%   r&   has_strftime_extensionsstrftimer   TEST_HTTP_URLrC   r  r   r  ri  r;   rA   r   r7   contextmanagerr  r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r9   rB   r$  r%  r/  _4GrP  r2  r   r   r-  r?   r5  r   r   rV  rX  r   r[  r^  r4   rm  ro  rq  r"  MISSING_C_DOCSTRINGSr  HAVE_DOCSTRINGSrequires_docstringsrt  rv  r  rw  r~  r8   r=   r:   r  r  r  r>   r  r+   r  r  r)   r*   r   r@   r  r   r%  r6  rD   rH  r6   rS  rU  rh  rj  rE   ru  rF   total_orderingr{  rG   r  rH   r  	hash_infowidth	NHASHBITSr  r  r  r  r,   r  r  r  r<   r  r  r  Py_DEBUGr  r  r  	frozensetr  r  r   r  machinerM   rd  r  rS   rT   rU   <module>r*     sj   =~
+F
G
GG             				 				  



        !/////// ! ! ! !# # #^       7??27??8#<#<==  011W__]++
GOOJ''	5 5 5 5 5I 5 5 5       = = = = =J = = =) ) ) ) )E ) ) )    X&       $   

    * * *  "K$ K$ K$Z> > >	7 	7 	7 	7     6: : :8 8 8  :
/ 
/ 
/ 
/  %Uu     6)eEe ) ) ) ) ) %_T222     $ $ % (H'	!!,,V44$& & - - - -- - - -, , , ,- - - -1 1 1: : : :  3x23H7 9  9  lg%
L##F++	WS.//
<+++%/>!!YJJJ ,
,&
 72v&&L}+<LW O O O +*:7{ V V V
 '&6w; &+ 
< 
< 
< 
< 
<   <7"/$-"6"6%"?   
 ,   ]F33  $   &  	1$t 	1 	1 	1 	1 	141 41 41n 	/ 	/ 	/% % %% % %
$ 
$ 
$  "   % % %B B B$ 	
73 WnGFS=3 3 34 4 4
   ( ( ( 8=     : 4 4 4:  F 
Sj#g#g>3 >3 > > > >	 	 	 	 	 	% % % % % % % %B. . . .`  $  O O O+ + +   ! ! !8 8 8   * * *"7 7 7 *)++ I/I4I45GHHH  %,D8 ,++  *h)/*DF F       J   # # #< # # #<   <5 5 5; ; ;    f   D ] ] ]*OB OB OB OB OB OB OB OBd4 4 4 79      @B 89 89 89 89v. . . .*] ] ] ] ] ] ] ]@3 3 3D   , , ,(   & +-    @  + + + ; ; ;"$0 $0 $0 $0 $0 $0 $0 $0N# # #
        JLL		 	 	 	 	 	 	 	 9;;
        (**
        9;;- - - M	4 4 4D) ) ) ) ) ) ) )X ,0 -9 -9 -9 -9 -9^P P P2B B B  .  & . . .& & & &S 3 6    $ $4 $ $ $ $*D D D$ 73*++'"$ '" '" '" '" '"T*#(Ct* * * * *D , , , $-9
	. $ $    &  G 4 4 V9Kw9V 24 4:tCy : : : : : :s$   A AAJ J! J!