+
    BiO                        ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
Ht ^ RIt^ RIt^ RIt^ RIt^ RIHt  ^ RIt^ RIHt  ^ RIt^ RItR tR tR tRR	 ltR
 t ! R R4      t  ! R R]! RR4      4      t!RRRRRR/R lt"R t#RR lt$]PJ                  R 4       t& ! R R]PN                  4      t(R#   ] d   t]P*                  ! ]! ]4      4      hRtAii ; i  ] d    RtRt Li ; i)    )
namedtupleN)dedent)support)interpretersc                 H    \         P                  ! \        R J R4      ! V 4      # )Nz&test requires _testinternalcapi module)unittestskipIf_testinternalcapi)funcs   &3/usr/lib/python3.14/test/test_interpreters/utils.pyrequires_test_modulesr   #   s     ??,46^_`dee    c                     V P                  4       p\        4        \        R4       \        V^4       F5  w  r#\        RVR\        \	        \        V4      4      4       2 RV 24       K7  	  \        R4       R# )- >z  Nz--------------------)
splitlinesprint	enumeratelenstr)textlinesilines   &   r   _dump_scriptr   '   sa    OOE	G	(OUA&!Ac#c%j/*++,Btf56 '	(Or   c                      \        V R 4      '       d   V P                  4        R# \        P                  ! V 4       R#   \         d   pTP                  ^	8w  d   h  Rp?R# Rp?ii ; i)closeN)hasattrr   osOSErrorerrno)fileexcs   & r   _close_filer%   0   sK    4!!JJLHHTN 99> s   "> > A&	A!!A&c                     \         P                  ! V 4      p\        VP                  4      p\        VP                  P                  4      VR &   \
        P                  ! V4      # )type)_interpreterscapture_exceptiondict__dict__r'   jsondumps)r$   captureddatas   &  r   pack_exceptionr0   <   sI    ..s3H!!"D../DL::dr   c                     \         P                  ! V 4      p\        P                  ! R/ TB p\        P                  ! R/ TP                  B Tn        T#   \         P                  P                   di   p\        P
                  ! \        4      P                  R TR7       \        \        T \        4      '       d   T MT P                  R4      4        Rp?R# Rp?ii ; i)zincomplete exception data)exc_infoutf-8N )r,   loadsdecoderJSONDecodeErrorlogging	getLogger__name__warningr   
isinstancer   decodetypesSimpleNamespacer'   )packedr/   er$   s   &   r   unpack_exceptionrB   C   s    zz&!
 


'$
'C$$0sxx0CHJ <<'' (#++,GRS+T
63//fV]]75KLs   A C4ACCc                      a  ] tR t^Ot o ]! R4      RR t]! R4      RR t]RRRRRR/R	 l4       tR
 t	R t
R t]R 4       tR tR tR tR tR tR tR tR tRR/R ltRtV tR# )CapturingResultsa          with open({w_pipe}, 'wb', buffering=0) as _spipe_{stream}:
            _captured_std{stream} = io.StringIO()
            with contextlib.redirect_std{stream}(_captured_std{stream}):
                #########################
                # begin wrapped script

                {indented}

                # end wrapped script
                #########################
            text = _captured_std{stream}.getvalue()
            _spipe_{stream}.write(text.encode('utf-8'))
        Na          with open({w_pipe}, 'wb', buffering=0) as _spipe_exc:
            try:
                #########################
                # begin wrapped script

                {indented}

                # end wrapped script
                #########################
            except Exception as exc:
                text = _interp_utils.pack_exception(exc)
                _spipe_exc.write(text.encode('utf-8'))
        stdoutTstderrFr$   c               <   \        V4      P                  \        P                  4      pR \         R2.pTpV'       dJ   \        P
                  ! 4       pVw  rxVP                  RR4      p	V P                  P                  VV	R7      pMRpV'       d]   VP                  R.4       \        P
                  ! 4       pVw  rVP                  RR4      p	V P                  P                  VV	RR7      pMRpVR	8X  d   RpMnV'       de   V'       g   VP                  R.4       \        P
                  ! 4       pVw  rVP                  RR4      p	V P                  P                  VV	R
R7      pMRpWa8X  d   \        hV F  pV \        P                   V 2pK  	  V ! W#V4      pWo3# )zimport z as _interp_utils
z	
        )w_pipeindentedNzimport contextlib, ioout)rI   rJ   streamrE   err)r   stripr    linesepr:   pipereplaceEXCformatextendSTDIONotImplementedError)clsscriptrE   rF   r$   importswrappedr_excw_excrJ   r_outw_outr_errw_errr   resultss   &&$$$           r   wrap_scriptCapturingResults.wrap_scriptn   s   %%bjj1hZ01
  '')CLEt\:Hggnn! % G
 C NN'  WWYF!LEt\:Hii&&! ' G F XF+   WWYF!LEt\:Hii&&! ' G F%%!F2::,wi8   fc*r   c                f   R V n         R V n        R V n        R V n        R V n        R V n        Ve   Vw  rE\        VR^ R7      V n         WPn        Ve   Vw  rg\        VR^ R7      V n        Wpn        Ve   Vw  r\        VR^ R7      V n        Wn        RV n        RV n        RV n	        R V n
        RV n        R # )Nrb)	bufferingr   F)_rf_out_rf_err_rf_exc_w_out_w_err_w_excopen_buf_out_buf_err_buf_exc_exc_closed)
selfrK   rM   r$   r]   r^   r_   r`   r[   r\   s
   &&&&      r   __init__CapturingResults.__init__   s    ?LEtq9DLK?LEtq9DLK?LEtq9DLK	r   c                    V # Nr4   rs   s   &r   	__enter__CapturingResults.__enter__   s    r   c                &    V P                  4        R # rw   )r   )rs   argss   &*r   __exit__CapturingResults.__exit__   s    

r   c                    V P                   # rw   )rr   rx   s   &r   closedCapturingResults.closed   s    ||r   c                X   V P                   '       d   R # RV n         V P                  e   \        V P                  4       R V n        V P                  e   \        V P                  4       R V n        V P                  e   \        V P                  4       R V n        V P                  4        V P                  e   \        V P                  4       R V n        V P                  e   \        V P                  4       R V n        V P                  e   \        V P                  4       R V n        R # R # )NT)	rr   rj   r%   rk   rl   _capturerg   rh   ri   rx   s   &r   r   CapturingResults.close   s    <<<;;"$DK;;"$DK;;"$DK<<#%DL<<#%DL<<#%DL $r   c                t   V P                   eZ   V P                   P                  ^d4      pV'       d7   V ;P                  V,          un        V P                   P                  ^d4      pK>  V P                  eZ   V P                  P                  ^d4      pV'       d7   V ;P                  V,          un        V P                  P                  ^d4      pK>  V P
                  e\   V P
                  P                  ^d4      pV'       d7   V ;P                  V,          un        V P
                  P                  ^d4      pK>  R # R # rw   )rg   readrn   rh   ro   ri   rp   )rs   chunks   & r   r   CapturingResults._capture   s     <<#LL%%c*E&))#.<<#LL%%c*E&))#.<<#LL%%c*E&))#.  $r   c                8    V P                   P                  R 4      # r3   )rn   r=   rx   s   &r   _unpack_stdoutCapturingResults._unpack_stdout      }}##G,,r   c                8    V P                   P                  R 4      # r   )ro   r=   rx   s   &r   _unpack_stderrCapturingResults._unpack_stderr  r   r   c                    V P                   e   V P                   # V P                  '       g   R # \        V P                  4      V n         V P                   # rw   )rq   rp   rB   rx   s   &r   _unpack_excCapturingResults._unpack_exc
  s<    99 99}}}$T]]3	yyr   c                    V P                   '       d   V P                  4       P                  # V P                  4        V P	                  4       # rw   )r   finalrE   r   r   rx   s   &r   rE   CapturingResults.stdout  5    ;;;::<&&&""$$r   c                    V P                   '       d   V P                  4       P                  # V P                  4        V P	                  4       # rw   )r   r   rF   r   r   rx   s   &r   rF   CapturingResults.stderr  r   r   c                    V P                   '       d   V P                  4       P                  # V P                  4        V P	                  4       # rw   )r   r   r$   r   r   rx   s   &r   r$   CapturingResults.exc  s5    ;;;::<###!!r   forcec               F    V P                   #   \         d    T P                  '       g+   T'       g   \        R 4      h\        P                  T 4      u # \	        T P                  4       T P                  4       T P                  4       4      T n         T P                   u # i ; i)zno final results available yet)	_finalAttributeErrorrr   	ExceptionCapturedResultsProxyr   r   r   )rs   r   s   &$r   r   CapturingResults.final$  s    	;; 	<<<#$DEE*0066)##%##%  "DK
 ;;	s     B B  B AB B )ro   rp   rn   rr   rq   r   rh   ri   rg   rk   rl   rj   )r:   
__module____qualname____firstlineno__r   rU   rR   classmethodrb   rt   ry   r}   propertyr   r   r   r   r   r   rE   rF   r$   r   __static_attributes____classdictcell____classdict__s   @r   rD   rD   O   s        bE    bC = 4 =  = 5 =  = ~<   6/&--%%"U  r   rD   c                   :   a  ] tR tRt o  ! R R4      tR tRtV tR# )r   i5  c                   >   a  ] tR tRt o R tR tR tR tR tRt	V t
R# )	CapturedResults.Proxyi7  c                    Wn         R # rw   )
_capturing)rs   	capturings   &&r   rt   CapturedResults.Proxy.__init__8  s    'Or   c                r    V P                   f   R # V P                   P                  4       V n        R V n         R # rw   )r   r   r   rx   s   &r   _finishCapturedResults.Proxy._finish:  s*    &////1DK"DOr   c              #  Z   "   V P                  4        V P                   R j  xL
  R #  L5irw   )r   r   rx   s   &r   __iter__CapturedResults.Proxy.__iter__?  s     LLN{{""s    +)+c                L    V P                  4        \        V P                  4      # rw   )r   r   r   rx   s   &r   __len__CapturedResults.Proxy.__len__B  s    LLNt{{##r   c                    V P                  4        VP                  R 4      '       d   \        V4      h\        V P                  V4      # )_)r   
startswithr   getattrr   )rs   names   &&r   __getattr__!CapturedResults.Proxy.__getattr__E  s6    LLNs##$T**4;;--r   )r   r   N)r:   r   r   r   rt   r   r   r   r   r   r   r   s   @r   r   r   7  s#     	(	#
	#	$	. 	.r   r   c                b    V P                   e!   \        P                  ! V P                   4      hR # rw   )r$   r   ExecutionFailedrx   s   &r   raise_if_failedCapturedResults.raise_if_failedK  s&    88..txx88  r   r4   N)r:   r   r   r   r   r   r   r   r   s   @r   r   r   5  s     . .(9 9r   r   zstdout stderr excrE   TrF   Fr$   c                4    \         P                  V VVVR 7      # ))rE   rF   r$   )rD   rb   )rX   rE   rF   r$   s   &$$$r   _captured_scriptr   P  s&    ''	 (  r   c                      \         P                  ! 4        F'  p V P                  ^ 8X  d   K   V P                  4        K)  	  R#   \        P
                   d     KE  i ; ir   N)r   list_allidr   r(   InterpreterError)interps    r   clean_up_interpretersr   Y  sK    '')99>	LLN	 *
 -- 		s   AAAc                     \        V4      w  r4T;_uu_ 4        V'       d   V P                  V4       V P                  V4       R R R 4       VP                  4       #   + '       g   i     TP                  4       # ; irw   )r   prepare_mainexecrE   )r   requestinitrX   ra   s   &&&  r   _run_outputr   c  s[    &w/OF	%F 
 >>	 
 >>s   +AA:	c              #   H  a a"   \         P                  ! 4       w  opV V3R  lp\        P                  ! VR7      pVP	                  4        Rx  \        VR4      ;_uu_ 4       pVP                  R4       RRR4       VP                  4        R#   + '       g   i     L"; i5i)c                  D   < S P                  \        R S R24      4       R# )z7
            # wait for "signal"
            with open(z5) as rpipe:
                rpipe.read()
            N)r   r   )r   rs   r   run_running.<locals>.runo  s*    F  c   	r   targetNwdone)r    rP   	threadingThreadstartrm   writejoin)r   r   r   tspiper   s   f    @r   _runningr   l  sf     779DAq 	$AGGI		aF 
FFH 
s   AB"#B5B"B	B"c                     a  ] tR tRt o R tR tR t]P                  R 4       t	RR lt
RR lt]P                  ! 4       R	 4       tR
 tR tRR ltR tR tR t]]P                  RR l4       4       t]P                  RR l4       t]P                  R 4       t]RR/R l4       t]P                  R 4       t]P                  R 4       t]]P                  RR/R l4       4       t]RR l4       tRtV tR# )TestBasei  c                    \        4        R # rw   )r   rx   s   &r   tearDownTestBase.tearDown  s    r   c                   aaa R  o\         P                  ! 4       w  ooV P                  VV3R l4       V P                  VV3R l4       SS3# )c                 X     \         P                  ! V 4       R #   \         d     R # i ; irw   )r    r   r!   )fds   &r   ensure_closed$TestBase.pipe.<locals>.ensure_closed  s$     s    ))c                     < S ! S4      # rw   r4   )r   r   s   r   <lambda>TestBase.pipe.<locals>.<lambda>  
    a 0r   c                     < S ! S4      # rw   r4   )r   r   s   r   r   r     r   r   )r    rP   
addCleanup)rs   r   r   r   s   &@@@r   rP   TestBase.pipe  s<    	
 wwy10101!tr   c                   aa \         P                  ! 4       o\        P                  P	                  S4      o^ RIHo V P                  VV3R l4       S# )r   )	os_helperc                  &   < S P                  S4      # rw   )rmtree)r   tempdirs   r   r   #TestBase.temp_dir.<locals>.<lambda>  s    	 0 0 9r   )tempfilemkdtempr    pathrealpathtest.supportr   r   )rs   r   r   s   &@@r   temp_dirTestBase.temp_dir  s:    ""$''""7+*9:r   c              #     a"   \         P                  ! R R7      oV3R lp\        P                  pV\        n         Sx  V\        n        R #   T\        n        i ; i5i)Ncaughtc                    < V Sn         R # rw   r  )r|   ctxs   &r   
excepthook6TestBase.captured_thread_exception.<locals>.excepthook  s
    CJr   )r>   r?   r   r  )rs   r  orig_excepthookr  s   &  @r   captured_thread_exception"TestBase.captured_thread_exception  sH     ##40	#..)		3I#2I ?I s   9AA AAANc                   V'       d   \        V4      pVf   V P                  4       p\        P                  P	                  W!4      p\        P
                  ! \        P                  P                  V4      RR7       \        VRRR7      ;_uu_ 4       pTP                  T;'       g    R4       R R R 4       V#   + '       g   i     T# ; i)NTexist_okr   r3   encoding )	r   r  r    r  r   makedirsdirnamerm   r   )rs   filenamer  r   outfiles   &&&& r   make_scriptTestBase.make_script  s    $<D?mmoG77<<2
BGGOOH-=(C'22gMM$**"% 3 32s   B88C		c                   V'       d   \        V4      pVf   V P                  4       pM\        P                  ! VRR7       VP	                  R4      Ev rETpV F  p\        P
                  P                  Wg4      p\        P
                  P                  V4      '       d   MF\        P
                  P                  V4      '       d   \        V4      h\        P                  ! V4       \        P
                  P                  VR4      p\        P
                  P                  V4      '       d   K  \        VR4      ;_uu_ 4         R R R 4       K  	  \        P
                  P                  WeR,           4      p	\        V	RRR7      ;_uu_ 4       p
T
P                  T;'       g    R	4       R R R 4       V	#   + '       g   i     EKk  ; i  + '       g   i     T	# ; i)
NTr  .z__init__.pyr   z.pyr3   r  r  )r   r  r    r  splitr  r   isdirexistsr   mkdirrm   r   )rs   r   	pathentryr   subnamesbasenamer  subnameinitfiler  r  s   &&&&       r   make_moduleTestBase.make_module  s=   $<DIKK	D1"jjoGggll74Gww}}W%%((((!ww||G];H77>>(++(C(( )(   77<<E)9:(C'22gMM$**"% 3 )(( 32s   F1G1GG	c                    \         P                  ! \        P                  .VOR R R7      pVP                  VP
                  VP                  3# )T)capture_outputr   )
subprocessr   sys
executable
returncoderE   rF   )rs   argvprocs   &* r   
run_pythonTestBase.run_python  s@    ~~^^#d#

 T[[88r   c                R    V P                   ! V!  w  r#pV P                  V^4       W43# )   r2  assertNotEqualrs   r0  exitcoderE   rF   s   &*   r   assert_python_okTestBase.assert_python_ok  -    #'??D#9 &Ha(~r   c                R    V P                   ! V!  w  r#pV P                  V^ 4       W43# )r   r6  r8  s   &*   r   assert_python_failureTestBase.assert_python_failure  r<  r   c                   V P                  \        V4      \        V4      4       W8X  d   R # ^ R Ip^ R Ip^ RIHp RV! W4      ,          pRRP                  VP                  VP                  \        V4      4      P                  4       VP                  \        V4      4      P                  4       4      4      ,           pRV R2pV P                  Wx4      pV P                  V P                  W74      4       R # )N)_common_shorten_reprz%s != %srH   z
namespace())assertEqualr'   difflibpprintunittest.utilrA  r   ndiffpformatvarsr   _truncateMessagefail_formatMessage)	rs   ns1ns2msgrD  rE  rA  standardMsgdiffs	   &&&&     r   assert_ns_equalTestBase.assert_ns_equal  s    cDI.:6 #7#AAtyy~~d3i0;;=~~d3i0;;="? @ @ D6#++K>		$%%c78r   c                D   \        VR R7      w  r4T;_uu_ 4        \        V\        P                  4      '       d   VP	                  V4       M(\
        P                  ! W4      pVe   RV3uuRRR4       # RRR4       VP                  4       R3#   + '       g   i     L"; i)F)r$   N)r   r<   r   Interpreterr   r(   
run_stringrE   )rs   r   rX   rZ   ra   rM   s   &&&   r   _run_stringTestBase._run_string  sv    +F>W&,":":;;F##..v??9 WW ~~%% Ws   ABB	c                `    V P                  W4      w  r4Ve   \        P                  ! V4      hV# rw   )rW  r   r   )rs   r   rX   r   rM   s   &&&  r   run_and_captureTestBase.run_and_capture  s/    $$V4	?..s33Kr   c                l     \         P                  ! V4       R #   \         P                   d     R# i ; i)TF)r(   whenceInterpreterNotFoundError)rs   interpids   &&r   interp_existsTestBase.interp_exists  s4    	  *  55 		s    33c              #    "   VR J dN   Vf   \         P                  pM5V\         P                  \         P                  39   g   Q \        V4      4       hRpMVRJ d   \         P                  ! R4      pMlVf=   V\         P                  \         P                  39  d   \         P                  ! R4      pM,\        V\        4      '       d   \         P                  ! V4      pVf   \         P                  p\        P                  ! WR7      p Vx   \        P                  ! V4       R#   \         P                   d     R# i ; i   \        P                  ! T4       i   \         P                   d     i i ; i; i5i)FNTdefaultlegacy)r]  )r(   WHENCE_LEGACY_CAPIWHENCE_UNKNOWNrepr
new_configr<   r   	WHENCE_XIr
   create_interpreterdestroy_interpreterr^  )rs   configr]  r_  s   &&& r   interpreter_from_capiTestBase.interpreter_from_capi
  sF     U?~&99-"B"B"/">">"@ @ NAEfN @Ft^"--i8F^00,,  '11(;$$"--f5F>",,F$77N	N!55h? 99 !55h? 99 s`   DE;E D( &E;(E=E; EE;E8EE8E52E84E55E88E;c              #     "   V P                  V4      ;_uu_ 4       p\        P                  ! V\        P                  R R7      pW23x  RRR4       R#   + '       g   i     R# ; i5i)F)_whence_ownsrefN)rm  r   rU  r(   WHENCE_CAPI)rs   rl  r_  r   s   &&  r   interpreter_obj_from_capi"TestBase.interpreter_obj_from_capi+  sP     ''//8!--%11F
 "" 0///s   A'-A	
A'A$		A'c              #     "   \        VR R R7      w  r#V;_uu_ 4        W#P                  R R7      3x  RRR4       R#   + '       g   i     R# ; i5i)T)rE   r$   )r   N)r   r   )rs   rX   rZ   r   s   &&  r   r   TestBase.capturing5  s:     -fTtLY???666 YYYs   A=
AA		AmainFc                   V P                  V4      ;_uu_ 4       w  rE\        P                  ! WVR 7      pV^ 8X  g   Q V4       h RRR4       XP                  4        VP                  #   + '       g   i     L,; i)rw  N)r   r
   exec_interpreterr   rE   )rs   r_  rX   rw  rZ   ra   rcs   &&&$   r   run_from_capiTestBase.run_from_capi<  s_    ^^F##'9"33HDQB7B7 $ 	!~~	 $#s   )A((A8	c           	   #    aaaa	a
aaa"   R pV P                  4       w  o	oV P                  4       w  o
oV	V
VV3R lo\        RS	 RS RS	 R24      oRoVVVV3R lp\        P                  ! VR7      pVP	                  4         \
        P                  ! SV4       \
        P                  ! S
^4      pWc8X  g	   Q Wc34       h   Rx  \
        P                  ! SR 4        S! 4        VP                  4        Se   ShR#   \         d    TP                  4        Se   Sh L`i ; i  \
        P                  ! SR 4       i ; i  S! 4        TP                  4        Se   Shi ; i5i)	    c                  `   < \        S 4       \        S4       \        S4       \        S4       R # rw   )r%   )r_inr]   w_inr^   s   r   r    TestBase._running.<locals>.closeJ  s#    r   zd
            import os
            try:
                # handshake
                token = os.read(z, 1)
                os.write(zP, token)
                # Wait for the "done" message.
                os.read(z, 1)
            except BrokenPipeError:
                pass
            except OSError as exc:
                if exc.errno != 9:
                    raise  # re-raise
                # It was closed already.
            Nc                  ^   <  S! S4       R #   \          d   p T oS! 4         R p ? R # R p ? ii ; irw   )r   )r$   r   failed
run_interprX   s    r   r   TestBase._running.<locals>.runa  s,    6" s    ,	',r   )
rP   r   r   r   r   r    r   r   r!   r   )rs   r  exec_interptokenr   r   token2r   r  r  r]   rX   r  r^   s   &f&    @@@@@@@r   r   TestBase._runningD  s]    YY[
dyy{u	 	  ! "& ' !   	 	 C(			HHT5!WWUA&F?3VO3?
	& u%GFFH! "  	FFH! "	 u%GFFH! "sT   A9E#<C>  E#D% E E#>!D"E#!D""E#%D>>E E  E#c              #     a aa"   \        S\        4      '       d   SoV3R  lpTpMVV 3R lpV3R lpS P                  W24      ;_uu_ 4        Rx  RRR4       R#   + '       g   i     R# ; i5i)c                 L   < \         P                  ! SV 4      pVe   Q V4       hR # rw   )r(   r   )rX   r$   r_  s   & r   r  %TestBase.running.<locals>.exec_interp  s$    #((6:{'C'{r   c                 Z   < SP                  SV 4      pVR 8X  g   Q \        V4      4       hR# )r  N)rZ  rg  )rX   r   r   rs   s   & r   r  $TestBase.running.<locals>.run_interp  s*    ++FF;rz-4:-zr   c                 *   < SP                  V 4       R # rw   )r   )rX   r   s   &r   r  r    s    F#r   N)r<   intr   )rs   r   r  r  r_  s   ff  @r   runningTestBase.running  sN     fc""H( %J.$]]:33 4333s   AA0A
A0A-	'	A0c             #     a aa"   VVV 3R  lpV3R lpS P                  W44      ;_uu_ 4        Rx  RRR4       R#   + '       g   i     R# ; i5i)c                 ^   < SP                  SV SR 7      pVR8X  g   Q \        V4      4       hR# )ry  r  N)r|  rg  )rX   r   r_  rw  rs   s   & r   r  .TestBase.running_from_capi.<locals>.run_interp  s/    %%hT%BD2:)tDz):r   c                 R   < \         P                  ! SV 4      pV^ 8X  g   Q V4       hR# r   )r
   rz  )rX   r{  r_  s   & r   r  /TestBase.running_from_capi.<locals>.exec_interp  s&    "33HfEB7B7r   N)r   )rs   r_  rw  r  r  s   ffd  r   running_from_capiTestBase.running_from_capi  s2     	*	 ]]:33 4333s   (A<
AA		Ac                v   VR J d   R pRpMD\         P                  pVRJ d   Rp\        V\        4      '       d   \        P
                  ! V4      pV P                  V4      ;_uu_ 4       w  rEV! WB4      pV^ 8X  g   Q V4       h RRR4       XP                  4        VP                  #   + '       g   i     L,; i)Fc                 .    \         P                  ! V 4      # rw   )	_testcapirun_in_subinterp)scs   &&r   r   -TestBase.run_temp_from_capi.<locals>.<lambda>  s    )*D*DQ*Gr   NTrc  )	r
   run_in_subinterp_with_configr<   r   r(   rh  r   r   rE   )rs   rX   rl  run_in_interprZ   ra   r{  s   &&&    r   run_temp_from_capiTestBase.run_temp_from_capi  s    U?GMF-JJM~"&#&&&11&9^^F##'9w/B7B7 $ 	!~~	 $#s   *B((B8	r4   )NNrw   )rd  ) r:   r   r   r   r   rP   r  
contextlibcontextmanagerr  r  r(  r   requires_subprocessr2  r:  r>  rR  rW  rZ  r`  r   rm  rs  r   r|  r   r  r  r  r   r   r   s   @r   r   r     sV     	 	3 	3
8   "9 #9

9"
&   > # # 7 7 e   ; ;z    %     r   r   rw   ))collectionsr   r  r,   r8   r    os.pathr,  r-  r   textwrapr   r   r>   r   warningstestr   r(   ImportErrorr$   SkipTestr   
concurrentr   r
   r  r   r   r%   r0   rB   rD   r   r   r   r   r  r   TestCaser   r4   r   r   <module>r     s   "    	   
       & $
f	c cL9j!24GH 96t E u   &ox   oS  &


CH
%%&  Is*   C  C'  C$CC$'C54C5