
    3hh,                        S SK r S SKrS SKrS SKJrJr  S SKrS SKrS SKrS SK	J
r
  S SKJr  \R                  " S5      rS SKJr  S SKJr  S SKJr  S S	KJrJrJr  S
SKJrJrJrJrJrJr  SrSrSrSr Sr!Sr" " S S\5      r# " S S\5      r$ " S S\5      r% " S S\5      r& " S S\5      r' " S S\5      r( " S S\5      r) " S  S!\5      r* " S" S#\5      r+ " S$ S%\5      r,S& r-S' r.S( r/S) r0S* r1S+ r2 " S, S-5      r3S7SS..S/ jjr4 " S0 S1\5      r5 " S2 S3\5      r6 " S4 S5\5      r7\8S6:X  a  \Rr                  " 5         gg)8    N)dedentindent)support)import_helper_interpreters)Py_GIL_DISABLED)interpreters)force_not_colorized)InterpreterErrorInterpreterNotFoundErrorExecutionFailed   )_captured_script_run_output_runningTestBaserequires_test_modules_testinternalcapiunknownzruntime initlegacy C-APIC-APIcross-interpreter C-APIz_interpreters modulec                       \ rS rSrS rSrg)ModuleTests!   c                    [         R                  [         R                  [         R                  [         R                  /n[         R                  [         R                  [         R                  [         R                  /nU R                  X!5        g N)r	   create_queueQueue
QueueEmpty	QueueFullassertEqual)selffirstseconds      H/opt/python-3.13.8/usr/lib/python3.13/test/test_interpreters/test_api.pytest_queue_aliasesModuleTests.test_queue_aliases#   sj    %%##""	
 %%##""	
 	'     N)__name__
__module____qualname____firstlineno__r'   __static_attributes__r*   r)   r&   r   r   !   s    (r)   r   c                   2    \ rS rSrS rS rS rS rS rSr	g)	CreateTests3   c                    [         R                  " 5       nU R                  U[         R                  5        U R	                  U[         R
                  " 5       5        U R                  [        [        R                  S5        g )Nu   )	r	   createassertIsInstanceInterpreterassertInlist_allassertRaisesUnicodeEncodeErrorr   r#   interps     r&   test_in_mainCreateTests.test_in_main5   sX    $$&fl&>&>?fl3356 	,m.B.BHMr)   c                 .  ^^ [         R                  " 5       mS mUU4S jn[         R                  " US9nT   UR                  5         S S S 5        UR	                  5         U R                  T[        R                  " 5       5        g ! , (       d  f       ND= f)Nc                  p   > [         R                  " 5       m TR                  5         TR                  5         g r   )r	   r4   acquirerelease)r<   locks   r&   f%CreateTests.test_in_thread.<locals>.f@   s#    !((*FLLNLLNr)   target)	threadingLockThreadstartjoinr7   r	   r8   )r#   rD   tr<   rC   s      @@r&   test_in_threadCreateTests.test_in_thread=   sd    ~~	
 A&GGI 	fl3356 Ts   B
Bc                    [         R                  " 5       u  n[         R                  " 5       n[        U[	        S5      5      n[         R
                  " [        U5      5      nU R                  [         R                  " 5       XU/5        g )Nz
            from test.support import interpreters
            interp = interpreters.create()
            print(interp.id)
            )r	   r8   r4   r   r   r6   intr"   )r#   mainr<   outinterp2s        r&   test_in_subinterpreter"CreateTests.test_in_subinterpreterK   sl    %%'$$&&& * # 
 **3s84..042IJr)   c                 r   [        [        R                  " 5       5      n/ n[        S5       H)  n[        R                  " 5       nUR                  U5        M+     U H  nUR                  5         M     [        R                  " 5       nU R                  [        [        R                  " 5       5      X1-  5        g N   )setr	   r8   ranger4   appendcloser"   )r#   before
interp_lst_interpsr<   s         r&   test_after_destroy_all"CreateTests.test_after_destroy_allV   s    \**,-
qA"))+Gg&  !FLLN ! $$&\2245v7HIr)   c                    [        [        R                  " 5       5      n[        R                  " 5       n[        R                  " 5       n[        R                  " 5       nUR	                  5         UR	                  5         [        R                  " 5       nU R                  [        [        R                  " 5       5      XU1-  5        g r   )rZ   r	   r8   r4   r]   r"   )r#   r^   interp1rT   interp3r<   s         r&   test_after_destroy_some#CreateTests.test_after_destroy_somed   s    \**,-%%'%%'%%'$$&\2245v&@Q7QRr)   r*   N)
r+   r,   r-   r.   r=   rN   rU   rb   rg   r/   r*   r)   r&   r1   r1   3   s    N7	KJSr)   r1   c                   &    \ rS rSrS rS rS rSrg)GetMainTestsr   c                 f    [         R                  " 5       nU R                  UR                  S5        g Nr   )r	   get_mainr"   idr#   rR   s     r&   test_idGetMainTests.test_idt   s$    $$&!$r)   c                 z    [         R                  " 5       n[         R                  " 5       nU R                  X5        g r   )r	   rn   get_currentassertIsr#   rR   currents      r&   test_currentGetMainTests.test_currentx   s*    $$&**,d$r)   c                 z    [         R                  " 5       n[         R                  " 5       nU R                  X5        g r   )r	   rn   ru   )r#   main1main2s      r&   test_idempotentGetMainTests.test_idempotent}   s*    %%'%%'e#r)   r*   N)r+   r,   r-   r.   rq   rx   r}   r/   r*   r)   r&   rj   rj   r   s    %%
$r)   rj   c                   6    \ rS rSrS rS rS r\S 5       rSr	g)GetCurrentTests   c                 z    [         R                  " 5       n[         R                  " 5       nU R                  X!5        g r   )r	   rn   rt   r"   rv   s      r&   	test_mainGetCurrentTests.test_main   s,    $$&**,'r)   c                    [         R                  " 5       n[         R                  " 5       n[        U[	        S5      5      n[         R
                  " [        U5      5      nU R                  XB5        U R                  XA5        g )Nz
            from test.support import interpreters
            cur = interpreters.get_current()
            print(cur.id)
            )	r	   rn   r4   r   r   r6   rQ   r"   assertNotEqual)r#   rR   r<   rS   rw   s        r&   test_subinterpreter#GetCurrentTests.test_subinterpreter   sh    $$&$$&&& * # 
 **3s84)G*r)   c                    U R                  S5         [        R                  " 5       n[        R                  " 5       nU R                  X5        S S S 5        U R                  S5         [        R                  " 5       n[        U[        S5      5      nS UR                  5        5       u  pVU R                  XV5        S S S 5        U R                  S5         [        R                  " 5       n[        U[        S5      5      n[        U5      n[        U5      nU R                  Xx5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)NrR   subinterpreterz
                from test.support import interpreters
                cur = interpreters.get_current()
                print(id(cur))
                cur = interpreters.get_current()
                print(id(cur))
                c              3   8   #    U  H  n[        U5      v   M     g 7fr   )rQ   ).0vs     r&   	<genexpr>2GetCurrentTests.test_idempotent.<locals>.<genexpr>   s     ?.>c!ff.>s   zper-interpreterz
                from test.support import interpreters
                cur = interpreters.get_current()
                print(id(cur))
                )subTestr	   rt   ru   r4   r   r   
splitlinesr"   rQ   ro   r   )	r#   cur1cur2r<   rS   objid1objid2id1id2s	            r&   r}   GetCurrentTests.test_idempotent   s   \\&!++-D++-DMM$% "
 \\*+!((*Fff . ' C @cnn.>?NFV, , \\+,!((*Fff . ' C
 c(CV*C) -,# "!
 ,+ -,s%   <D0'AEAE0
D>
E
E c                     [         R                  " 5       nU R                  S[        R                   S35      n[        U5      u  p4U R                  X15        U R                  U[        5        g )N
            import z{ as interpreters
            interp = interpreters.get_current()
            print((interp.id, interp.whence))
            )r   next_interpreter_idrun_temp_from_capir	   r+   evalr"   WHENCE_STR_CAPI)r#   expectedtextinterpidwhences        r&   test_created_with_capi&GetCurrentTests.test_created_with_capi   sg    $88:&& , ))* +( 
  :,1r)   r*   N)
r+   r,   r-   r.   r   r   r}   r   r   r/   r*   r)   r&   r   r      s%    (

+*: 	2 	2r)   r   c                   2    \ rS rSrS rS rS rS rS rSr	g)	ListAllTests   c                 d    [         R                  " 5       nU R                  S[        U5      5        g )Nr   )r	   r8   r"   len)r#   ra   s     r&   test_initialListAllTests.test_initial   s$    '')CL)r)   c                 X   [         R                  " 5       n[         R                  " 5       n[         R                  " 5       n/ n[         R                  " 5        H  nUR	                  UR
                  5        M      U R                  XAR
                  UR
                  UR
                  /5        g r   )r	   rt   r4   r8   r\   ro   r"   r#   rR   r$   r%   idsr<   s         r&   test_after_creating ListAllTests.test_after_creating   sw    '')##%$$&"++-FJJvyy! . 	ww&))<=r)   c                 b   [         R                  " 5       n[         R                  " 5       n[         R                  " 5       nUR                  5         / n[         R                  " 5        H  nUR                  UR                  5        M      U R                  XAR                  UR                  /5        g r   )r	   rt   r4   r]   r8   r\   ro   r"   r   s         r&   test_after_destroying"ListAllTests.test_after_destroying   sz    '')##%$$&"++-FJJvyy! . 	ww		23r)   c                     [         R                  " 5       n[         R                  " 5       n[         R                  " 5       nXU/n[         R                  " 5       nU R	                  XT5        [        XT5       H  u  pgU R                  Xg5        M     g r   )r	   rt   r4   r8   r"   zipru   )r#   rR   r$   r%   r   actualre   rT   s           r&   r}   ListAllTests.test_idempotent   sp    '')##%$$&(&&(* #F 5GMM'+ !6r)   c                 :   [         R                  5       tp[         R                  5       n[         R                  5       n[         R                  5       nUS-   nUS-   nU[        4U[        4U[        4U[        4U[
        4U[        4/nUS S n	U R                  S[        R                   S35      n
[        U
5      n[        R                  " 5        Vs/ s H  oR                  UR                  4PM     nnU R                  X5        U R                  X5        g s  snf )Nr   r   z as interpreters
            interp = interpreters.create()
            print(
                [(i.id, i.whence) for i in interpreters.list_all()])
            )r   rn   r4   WHENCE_STR_RUNTIMEWHENCE_STR_STDLIBr   r   r	   r+   r   r8   ro   r   r"   )r#   mainidr`   	interpid1	interpid2	interpid3	interpid4	interpid5r   	expected2r   resires2s                 r&   r   #ListAllTests.test_created_with_capi   s   "++-
!((*	!((*	!((*	M	M	'()*)*)*()*
 SbM	&& , ))* +(  4j*6*?*?*AB*AQqxx *AB') Cs   !Dr*   N)
r+   r,   r-   r.   r   r   r   r}   r   r/   r*   r)   r&   r   r      s    *	>
4
,*r)   r   c                   \    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rSrg)InterpreterObjectTestsi  c                     [         R                  " 5       R                  n[         R                  " U5      nU R	                  UR                  U5        g r   )r	   rt   ro   r6   r"   r#   r   r<   s      r&   test_init_int$InterpreterObjectTests.test_init_int  s:    ++-00))(3H-r)   c                     [         R                  " 5       R                  n[         R                  " U5      nU R	                  UR                  U5        g r   )r	   rt   _idr6   r"   r   s      r&   test_init_interpreter_id/InterpreterObjectTests.test_init_interpreter_id  s:    ++-11))(3X.r)   c                    [         R                  " 5       R                  n[        U5      [	        U5      [        5       S S4 HZ  nU R                  [        U5      5         U R                  [        5         [         R                  " U5        S S S 5        S S S 5        M\     g ! , (       d  f       N= f! , (       d  f       M  = fN )r	   rt   ro   strfloatobjectr   reprr9   	TypeErrorr6   )r#   actualidr   s      r&   test_init_unsupported,InterpreterObjectTests.test_init_unsupported  s    ++-00M(OH
H d8n-&&y1 ,,X6 2 .-
 21 .-s$   B14B B1 
B.*B11
C 	c                     [         R                  " 5       n[         R                  " UR                  5      nU R	                  X!5        g r   )r	   rn   r6   ro   ru   r#   rR   r<   s      r&   r}   &InterpreterObjectTests.test_idempotent  s0    $$&))$''2f#r)   c                     U R                  [        5         [        R                  " S5        S S S 5        g ! , (       d  f       g = fNi@B )r9   r   r	   r6   r#   s    r&   test_init_does_not_exist/InterpreterObjectTests.test_init_does_not_exist#  s+    78$$Y/ 988	   6
Ac                     U R                  [        5         [        R                  " S5        S S S 5        g ! , (       d  f       g = f)N)r9   
ValueErrorr	   r6   r   s    r&   test_init_bad_id'InterpreterObjectTests.test_init_bad_id'  s*    z*$$R( +**r   c                 B   [         R                  " 5       n[         R                  " 5       n[         R                  " 5       nU R	                  UR
                  [        5        U R	                  UR
                  [        5        U R	                  UR
                  [        5        g r   )r	   rn   rt   r4   r5   ro   rQ   )r#   rR   rw   r<   s       r&   test_id_type#InterpreterObjectTests.test_id_type+  sh    $$&**,$$&dggs+gjj#.fii-r)   c                     [         R                  " 5       nU R                  [        5         SUl        S S S 5        g ! , (       d  f       g = fr   )r	   r4   r9   AttributeErrorro   r;   s     r&   test_id_readonly'InterpreterObjectTests.test_id_readonly3  s1    $$&~.!FI /..s	   <
A
c                    [         R                  " 5       n[         R                  " 5       nU R                  S5         U R	                  UR
                  [        5        S S S 5        U R                  S5         U R	                  UR
                  [        5        S S S 5        U R                  S5         U R                  S[         R                   S35      n[        U5      nU R	                  U[        5        S S S 5        U R                  S5         S [        [        [        [        4 HK  nU R                  [        5         XRl        S S S 5        U R                  [        5         XQl        S S S 5        MM     S S S 5        g ! , (       d  f       GN(= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Ns= f! , (       d  f       M  = f! , (       d  f       g = f)NrR   from _interpreters
from C-APIz
                import z as interpreters
                interp = interpreters.get_current()
                print(repr(interp.whence))
                readonly)r	   rn   r4   r   r"   r   r   r   r   r+   r   r   WHENCE_STR_UNKNOWNr9   r   )r#   rR   r<   r   r   values         r&   test_whence"InterpreterObjectTests.test_whence8  s`   $$&$$&\\&!T[[*<= " \\./V]],=> 0 \\,'** 0$--. /, D
 $ZFV_5 ( \\*%""! &&~6$)M 7&&~6"'K 76 &% "! 0/ ('" 7666 &%s`   !E>6!F0AF!0G>F2G"G)G>
F
F!
F/2
G <G
GG
G#c                     [         R                  " 5       n[        UR                  5      n[        U5      nU R	                  X25        g r   )r	   r4   hashro   r"   )r#   r<   r   r   s       r&   test_hashable$InterpreterObjectTests.test_hashableX  s4    $$&		?f*r)   c                     [         R                  " 5       n[         R                  " 5       nU R                  X5        U R                  X5        g r   )r	   r4   r"   r   )r#   re   rT   s      r&   test_equality$InterpreterObjectTests.test_equality^  s:    %%'%%'*G-r)   c                     [         R                  " 5       n[        R                  " U5      n[        R                  " U5      nU R                  X15        g r   )r	   r4   pickledumpsloadsr"   )r#   r<   data	unpickleds       r&   test_pickle"InterpreterObjectTests.test_pickled  s:    $$&||F#LL&	+r)   r*   N)r+   r,   r-   r.   r   r   r   r}   r   r   r   r   r   r   r   r  r/   r*   r)   r&   r   r     s?    .
/
7$
0)."
(@+.,r)   r   c                   h    \ rS rSrS r\R                  " S5      S 5       rS rS r	S r
S rS	 rS
rg)TestInterpreterIsRunningik  c                 l    [         R                  " 5       nU R                  UR                  5       5        g r   )r	   rn   
assertTrue
is_runningrp   s     r&   r   "TestInterpreterIsRunning.test_mainm  s#    $$&)*r)   Fails on FreeBSDc                 2   [         R                  " 5       nU R                  UR                  5       5        [	        U5         U R                  UR                  5       5        S S S 5        U R                  UR                  5       5        g ! , (       d  f       N.= fr   )r	   r4   assertFalser  r   r  r;   s     r&   r   ,TestInterpreterIsRunning.test_subinterpreterr  si    $$&**,-fOOF--/0 **,- s     B
Bc                    U R                  5       u  p[        R                  " 5       nUR                  SU S35        U R	                  UR                  5       5        U R                  [        R                  " US5      S5        g )Nz4if True:
            import os
            os.write(z, b'x')
            r      x)	piper	   r4   execr  r  r"   osread)r#   rwr<   s       r&   test_finished&TestInterpreterIsRunning.test_finished{  sp    yy{$$& S  	 	**,-A-r)   c                     [         R                  " 5       n[        U[        SUR                   S35      5      nU R                  UR                  5       S5        g )NzJ
            import _interpreters
            if _interpreters.is_running(zZ):
                print(True)
            else:
                print(False)
            True)r	   r4   r   r   ro   r"   strip)r#   r<   rS   s      r&   test_from_subinterpreter1TestInterpreterIsRunning.test_from_subinterpreter  sS    $$&&& .))/ 4* #  	f-r)   c                     [         R                  " 5       nUR                  5         U R                  [        5         UR                  5         S S S 5        g ! , (       d  f       g = fr   )r	   r4   r]   r9   r   r  r;   s     r&   test_already_destroyed/TestInterpreterIsRunning.test_already_destroyed  s@    $$&78 988   A
A#c                    U R                  5       u  pU R                  5       u  p4SnSn[        R                  " 5       nUR                  SU SU< SU SU< S3	5        U R	                  UR                  5       5        [        R                  " XE5        UR                  S5        U R                  [        R                  " US	5      U5        g )
N   D   Fqif True:
            import os
            import threading

            def task():
                v = os.read(!, 1)
                assert v == 
                os.write(, R)
            t = threading.Thread(target=task)
            t.start()
            t.join()r   )
r  r	   r4   r  r  r  r  writer"   r  )r#   r_interpw_interpr_threadw_threadDONEFINISHEDr<   s           r&   !test_with_only_background_threads:TestInterpreterIsRunning.test_with_only_background_threads  s    !YY[!YY[$$& 
 &J '!H %"2h\ 2
 
	 	**,-
 J1-x8r)   c                   ^  [        S[        R                   S35      nU 4S jnT R                  S5         T R	                  5        nT R                  X1SS9nS S S 5        U" W5      nT R                  U5        S S S 5        T R                  S5         T R                  U5      nU" U5      nT R                  U5        S S S 5        T R                  S5         T R                  5        u  pcUR                  5       nT R                  USS9   UR                  5       nS S S 5        UR                  5       n	S S S 5        T R                  W5        T R                  W5        T R                  W	5        S S S 5        T R                  S	5         T R                  5        u  pcUR                  5       nT R                  US
S9   UR                  5       nS S S 5        UR                  5       n	S S S 5        T R                  W5        T R                  W5        T R                  W	5        S S S 5        T R                  S5         T R                  5        u  pjUR                  5       nS S S 5        T R                  W5        S S S 5        g ! , (       d  f       GN-= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNq= f! , (       d  f       GN%= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr   zt as interpreters
            interp = interpreters.get_current()
            print(interp.is_running())
            c                    > TR                  U S5         [        U 5      $ ! [         a    [        [        U 5      5      ef = fr   )r   r   	Exceptionr   )r   r#   s    r&   parse_resultsFTestInterpreterIsRunning.test_created_with_capi.<locals>.parse_results  s@    b),Dz! ,T
++,s   
  ?running __main__ (from self)TrR   %running, but not __main__ (from self)running __main__ (from other)&running, but not __main__ (from other)Fnot running (from other))r   r	   r+   r   interpreter_from_capirun_from_capir  r   r  interpreter_obj_from_capir  running_from_capi)r#   scriptr:  r   r   runningr<   r^   duringafterr`   s   `          r&   r   /TestInterpreterIsRunning.test_created_with_capi  s     ))* + 
	, \\89++-))()F .#D)GOOG$	 : \\AB**62D#D)GW% C
 \\9://15Gf**,++H4+@#..0F A))+	 2
 V$OOF#U# ; \\BC//15Gf**,++H5+A#..0F B))+	 2
 V$V$U# D \\45//1[f ++- 2W% 65= .- :9 CB A@ 21 ;: BA 21 DC 21 65s   JI>!J+J"K'#K
J4K3;KL#K<;K*K<$;L8L0	LL0>
J	J
J"
J14
K>K
K	K
K'*
K94K<<
L	L
L
L-	)L00
L>r*   N)r+   r,   r-   r.   r   unittestskipr   r  r  r"  r5  r   r/   r*   r)   r&   r	  r	  k  s>    +
 ]]%&. '..	. 92/&r)   r	  c                   z    \ rS rSrS rS rS rS rS rS r	S r
\R                  " S	5      S
 5       rS rS rSrg)TestInterpreterClosei  c                    [         R                  " 5       n[         R                  " 5       n[         R                  " 5       n[         R                  " 5       nU R                  [	        [         R
                  " 5       5      XX415        UR                  5         U R                  [	        [         R
                  " 5       5      XU15        g r   )r	   rn   r4   r"   rZ   r8   r]   )r#   rR   re   rT   rf   s        r&   
test_basicTestInterpreterClose.test_basic  s    $$&%%'%%'%%'\2245:	<\22451	3r)   c                    [        [        R                  " 5       5      n[        5       n[        S5       H)  n[        R                  " 5       nUR                  U5        M+     U R                  [        [        R                  " 5       5      X-  5        U H  nUR                  5         M     U R                  [        [        R                  " 5       5      U5        g rX   )rZ   r	   r8   r[   r4   addr"   r]   )r#   r^   ra   r`   r<   s        r&   test_allTestInterpreterClose.test_all  s    \**,-%qA!((*FKK  	\2245v7GHFLLN \2245v>r)   c                 *  ^ ^ [         R                  " 5       u  mT R                  [        5         TR	                  5         S S S 5        UU 4S jn[
        R                  " US9nUR                  5         UR                  5         g ! , (       d  f       NJ= f)Nc                     > TR                  [        5         T R                  5         S S S 5        g ! , (       d  f       g = fr   )r9   r   r]   )rR   r#   s   r&   rD   )TestInterpreterClose.test_main.<locals>.f  s'    ""#34

 544s   1
?rF   )	r	   r8   r9   r   r]   rH   rJ   rK   rL   )r#   rD   rM   rR   s   `  @r&   r   TestInterpreterClose.test_main  sb    %%'/0JJL 1	 A&			 10s   B
Bc                     [         R                  " 5       nUR                  5         U R                  [        5         UR                  5         S S S 5        g ! , (       d  f       g = fr   )r	   r4   r]   r9   r   r;   s     r&   r"  +TestInterpreterClose.test_already_destroyed  s=    $$&78LLN 988r$  c                 @   [         R                  " 5       u  n[         R                  " 5       n[        U[	        SUR
                   S35      5      nU R                  UR                  5       S5        U R                  [        [         R                  " 5       5      X15        g )Nza
            from test.support import interpreters
            interp = interpreters.Interpreter(z)
            try:
                interp.close()
            except interpreters.InterpreterError:
                print('failed')
            failed)	r	   r8   r4   r   r   ro   r"   r  rZ   )r#   rR   r<   rS   s       r&   test_from_current&TestInterpreterClose.test_from_current  s    %%'$$&&& .//5yyk :* #  	h/\2245~Fr)   c                    [         R                  " 5       u  n[         R                  " 5       n[         R                  " 5       nU R                  [	        [         R                  " 5       5      XU15        UR                  [        SUR                   S35      5        U R                  [	        [         R                  " 5       5      X15        g )Nzb
            from test.support import interpreters
            interp2 = interpreters.Interpreter(zr)
            interp2.close()
            interp3 = interpreters.create()
            interp3.close()
            )r	   r8   r4   r"   rZ   r  r   ro   )r#   rR   re   rT   s       r&   test_from_sibling&TestInterpreterClose.test_from_sibling  s    %%'%%'%%'\22451	3V !007

| <  	 	\2245Gr)   c                    ^ [         R                  " 5       mU4S jn[        R                  " US9nUR	                  5         UR                  5         g )Nc                  &   > T R                  5         g r   )r]   )r<   s   r&   rD   6TestInterpreterClose.test_from_other_thread.<locals>.f+  s    LLNr)   rF   )r	   r4   rH   rJ   rK   rL   )r#   rD   rM   r<   s      @r&   test_from_other_thread+TestInterpreterClose.test_from_other_thread)  s:    $$&	 A&			r)   r  c                 b   [         R                  " 5       u  n[         R                  " 5       n[        U5         U R	                  [
        5         UR                  5         S S S 5        U R                  UR                  5       5        S S S 5        g ! , (       d  f       N6= f! , (       d  f       g = fr   )	r	   r8   r4   r   r9   r   r]   r  r  r   s      r&   test_still_running'TestInterpreterClose.test_still_running3  sr    %%'$$&f""#34 5OOF--/0 44 s#   B B'B 
B	B  
B.c                    U R                  5       u  pU R                  5       u  p4Sn[        R                  " 5       nUR                  SU SU< S35        UR	                  5         U R                  [        R                  " US5      U5        g )Nr'  a  if True:
            import os
            import threading
            import time

            done = False

            def notify_fini():
                global done
                done = True
                t.join()
            threading._register_atexit(notify_fini)

            def task():
                while not done:
                    time.sleep(0.1)
                os.write(r+  r,  r   )r  r	   r4   r  r]   r"   r  r  )r#   r/  r0  r1  r2  r4  r<   s          r&   test_subthreads_still_running2TestInterpreterClose.test_subthreads_still_running<  s    !YY[!YY[$$&   #2h\ 2! 	( 	1-x8r)   c           	      P   [        S[        R                   S35      nU R                  S5         U R	                  5        nU R                  [        S5         U R                  X!SS9  S S S 5        S S S 5        S S S 5        U R                  S5         U R                  [        S5         U R                  U5        S S S 5        S S S 5        U R                  S5         U R                  5        u  p2U R                  USS9   U R                  [        S	5         UR                  5         S S S 5        U R                  U R                  U5      5        S S S 5        S S S 5        S S S 5        U R                  S
5         U R                  5        u  p2U R                  USS9   U R                  [        S	5         UR                  5         S S S 5        U R                  U R                  U5      5        S S S 5        S S S 5        S S S 5        U R                  S5         U R                  5        u  p2U R                  [        S	5         UR                  5         S S S 5        U R                  U R                  U5      5        S S S 5        S S S 5        g ! , (       d  f       GN(= f! , (       d  f       GN2= f! , (       d  f       GN<= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNn= f! , (       d  f       GNX= f! , (       d  f       GNb= f! , (       d  f       GNl= f! , (       d  f       GN*= f! , (       d  f       GN= f! , (       d  f       g = f)Nr   zh as interpreters
            interp = interpreters.get_current()
            interp.close()
            r<  zInterpreterError.*unrecognizedTr=  r>  r?  unrecognizedr@  FrA  )r   r	   r+   r   rB  assertRaisesRegexr   rC  r   rD  rE  r   r]   r  interp_exists)r#   rF  r   r<   s       r&   r   +TestInterpreterClose.test_created_with_capi[  s     ))* +  \\89++-++O,LN&&xd&CN . : \\AB''(HJ''/J C
 \\9://15Gf++H4+@//0@.Q R OO**846	 A 2 ; \\BC//15Gf++H5+A//0@.Q R OO**846	 B 2 D \\45//15Gf++,<nMLLN N&&x02 2 65?N N .- :9J J CB RQ A@ 21 ;:  RQ BA 21 DC NM 21 65sC  J- JJ	(J0J-K(J?:KL,L?K5K#	'(K5LL8M!	ML=3L+	(L=,M4M!N&N?M3(N8N	
JJ
J*	%J--
J<?
K		K
K #
K2-K55
L?L
L	L
L(+
L:5L==
MM
M	M!!
M03
N=N
N	N
N%r*   N)r+   r,   r-   r.   rP  rT  r   r"  r^  ra  rf  rK  rL  ri  rl  r   r/   r*   r)   r&   rN  rN    sO    	3	?GH ]]%&1 '19>-2r)   rN  c                   N    \ rS rSrS rS rS rS rS rS r	S r
\S	 5       rS
rg)TestInterpreterPrepareMaini  c                     [         R                  " 5       nU R                  [        5         UR	                  5         S S S 5        g ! , (       d  f       g = fr   )r	   r4   r9   r   prepare_mainr;   s     r&   
test_empty%TestInterpreterPrepareMain.test_empty  s6    $$&z*! +**s   A
Ac                     SSS.n[         R                  " 5       nUR                  U5        [        U[	        S5      5      nU R                  UR                  5       S5        g N*   hamspameggs+
            print(spam, eggs)
            42 hamr	   r4   rv  r   r   r"   r  r#   valuesr<   rS   s       r&   	test_dict$TestInterpreterPrepareMain.test_dict  sX    e,$$&F#&& * #  	h/r)   c                     SSS.n[        UR                  5       5      n[        R                  " 5       nUR	                  U5        [        U[        S5      5      nU R                  UR                  5       S5        g rz  )	tupleitemsr	   r4   rv  r   r   r"   r  r  s       r&   
test_tuple%TestInterpreterPrepareMain.test_tuple  sh    e,v||~&$$&F#&& * #  	h/r)   c                     SSS.n[         R                  " 5       nUR                  " S0 UD6  [        U[	        S5      5      nU R                  UR                  5       S5        g )Nr{  r|  r}  r  r  r*   r  r  s       r&   test_kwargs&TestInterpreterPrepareMain.test_kwargs  s[    e,$$&%f%&& * #  	h/r)   c                     SSS.n[         R                  " 5       nUR                  USS9  [        U[	        S5      5      nU R                  UR                  5       S5        g )Nr{  r|  r}  bar)fooz0
            print(spam, eggs, foo)
            z
42 ham barr  r  s       r&   test_dict_and_kwargs/TestInterpreterPrepareMain.test_dict_and_kwargs  s]    e,$$&F.&& * #  	l3r)   c                    [         R                  " 5       nU R                  [        5         UR	                  SSS.S9  S S S 5        U R                  [
        5         UR                  S5        S S S 5        U R                  [
        5         UR                  S5        S S S 5        g ! , (       d  f       Nm= f! , (       d  f       NO= f! , (       d  f       g = f)Nr  r  )r~  r  r~  z
print(foo)zprint(spam))r	   r4   r9   r   rv  r   r  r;   s     r&   test_not_shareable-TestInterpreterPrepareMain.test_not_shareable  s    $$&z*fU%CD + /KK% 0/KK& 0/ +* 0///s#   B%B6
C%
B36
C
Cc                 R   [         R                  " 5       nUR                  SS05        U R                  U5         U R	                  [
        S5         UR                  SS05        S S S 5        S S S 5        UR                  S5        g ! , (       d  f       N(= f! , (       d  f       N1= f)Nr~  TrG  Fassert spam is True)r	   r4   rv  rG  rp  r   r  r;   s     r&   test_running'TestInterpreterPrepareMain.test_running  s~    $$&VTN+\\&!''(8)D##VUO4 E " 	)* ED "!s#   BB%B
B	B
B&c                 f   U R                  5        u  pU R                  [        S5         UR                  SS05        S S S 5        U R                  [        S5         U R                  US5        S S S 5        S S S 5        g ! , (       d  f       NH= f! , (       d  f       N(= f! , (       d  f       g = f)Nro  r~  T	NameErrorr  )rD  rp  r   rv  r   rC  )r#   r<   r   s      r&   r   1TestInterpreterPrepareMain.test_created_with_capi  s    ++-1C&''(8.I##VTN3 J''E""8-BC F .-IIEE .-s9   B"B B"B/B" 
B	
B"
B	B""
B0r*   N)r+   r,   r-   r.   rw  r  r  r  r  r  r  r   r   r/   r*   r)   r&   rt  rt    s;    "
0004
'+ D Dr)   rt  c                       \ rS rSrS rS r\S 5       rS r\	R                  " 5       S 5       r\R                  " S5      S 5       rS	 rS
 rS rS rSrg)TestInterpreterExeci  c                    [         R                  " 5       n[        S5      u  p#U   UR                  U5        S S S 5        UR	                  5       nUR                  5         UR                  nU R                  US5        g ! , (       d  f       NM= f)Nprint("it worked!", end="")
it worked!)r	   r4   r   r  finalraise_if_failedstdoutr"   )r#   r<   rF  resultsrS   s        r&   test_success TestInterpreterExec.test_success  si    $$&*+HIKK --/!nnl+ Ws   A>>
Bc                     [         R                  " 5       nU R                  [        5         UR	                  S5        S S S 5        g ! , (       d  f       g = f)Nzraise Exception)r	   r4   r9   r   r  r;   s     r&   test_failure TestInterpreterExec.test_failure  s7    $$&/KK)* 0//   A
Ac                 d   U R                  5       nU R                  SUSS9nU R                  SUSS9nU R                  U5      u  pES U l        S UR                  5        5       u  nU R                  U[        SU SUR                  5        S	U S
U SU S35      5        U R                  US5        g )Nr~  z
            def ham():
                raise RuntimeError('uh-oh!')

            def eggs():
                ham()
            )r   z	script.pyz
            from test.support import interpreters

            def script():
                import spam
                spam.eggs()

            interp = interpreters.create()
            interp.exec(script)
            c              3   6   #    U  H  nS U;   d  M  Uv   M     g7f)z execNr*   )r   ls     r&   r   GTestInterpreterExec.test_display_preserved_exception.<locals>.<genexpr>  s     J&9W\11&9s   
	zC            Traceback (most recent call last):
              File "zm", line 9, in <module>
                interp.exec(script)
                ~~~~~~~~~~~^^^^^^^^
              z
                raise ExecutionFailed(excinfo)
            test.support.interpreters.ExecutionFailed: RuntimeError: uh-oh!

            Uncaught in the interpreter:

            Traceback (most recent call last):
              File "za", line 6, in script
                spam.eggs()
                ~~~~~~~~~^^
              File "zS", line 6, in eggs
                ham()
                ~~~^^
              File "zl", line 3, in ham
                raise RuntimeError('uh-oh!')
            RuntimeError: uh-oh!
            r   )	temp_dirmake_modulemake_scriptassert_python_failuremaxDiffr   r"   r   r  )r#   tempdirmodfile
scriptfiler  stderrinterpmod_lines          r&    test_display_preserved_exception4TestInterpreterExec.test_display_preserved_exception  s    --/""67 :"  %%k7 	B% 	
 33J?Jf&7&7&9J -L ! ##%& '  L ! I  I %) " 	, 	$r)   c                 x  ^^ [         R                  " 5       m[        S5      u  mnU   UU4S jn[        R                  " US9nUR                  5         UR                  5         S S S 5        UR                  5       nUR                  5         UR                  nU R                  US5        g ! , (       d  f       NM= f)Nr  c                  (   > T R                  T5        g r   )r  )r<   rF  s   r&   rD   -TestInterpreterExec.test_in_thread.<locals>.f  s    F#r)   rF   r  )r	   r4   r   rH   rJ   rK   rL   r  r  r  r"   )r#   r  rD   rM   rS   r<   rF  s        @@r&   rN   "TestInterpreterExec.test_in_thread  s    $$&*+HI$   *AGGIFFH  --/!nnl+ Ws   <B++
B9c                    [         R                  " 5       nSS KnUR                  SSS9 nUR	                  S5        UR                  5         Sn[        SUR                   SU S	35      nUR                  U5        UR                  S5        UR                  5       nU R                  Xd5        S S S 5        g ! , (       d  f       g = f)
Nr   zw+zutf-8)encodingr   zspam spam spam spam spamz
                import os
                try:
                    os.fork()
                except RuntimeError:
                    with open('zE', 'w', encoding='utf-8') as out:
                        out.write('z')
                )r	   r4   tempfileNamedTemporaryFiler.  flushr   namer  seekr  r"   )r#   r<   r  filer   rF  contents          r&   	test_forkTestInterpreterExec.test_fork'  s    $$&(((@DJJrNJJL1H ! 
 !%		{ +$$,: . F KKIIaLiikGW/# A@@s   BB66
Cr  c                     [         R                  " 5       n[        U5         U R                  [        5         UR                  S5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nzprint("spam"))r	   r4   r   r9   RuntimeErrorr  r;   s     r&   test_already_running(TestInterpreterExec.test_already_running?  sO    $$&f""<0O, 1 00 s"   A+A	A+
A(	$A++
A9c                     [         R                  " 5       nU R                  [        5         UR	                  S5        S S S 5        g ! , (       d  f       g = f)N
   r	   r4   r9   r   r  r;   s     r&   test_bad_script#TestInterpreterExec.test_bad_scriptF  s5    $$&y)KKO *))r  c                     [         R                  " 5       nU R                  [        5         UR	                  S5        S S S 5        g ! , (       d  f       g = f)Ns   print("spam")r  r;   s     r&   test_bytes_for_script)TestInterpreterExec.test_bytes_for_scriptK  s7    $$&y)KK() *))r  c                 :   U R                  5       u  pU R                  5       u  p4SnSnSn[        R                  " 5       nUR                  SU SU< SU SU< SU SU< S	35        UR                  S
U SU< S	35        [        R
                  " XF5        UR                  S5        U R                  [        R                  " US5      U5        U R                  [        R                  " US5      U5        U R                  [        R                  " US5      U5        g )N   Rr&  r'  r(  r)  r*  r+  z[)
            t = threading.Thread(target=task)
            t.start()
            os.write(z)
            zif True:
            os.write(r-  r   )r  r	   r4   r  r  r.  r"   r  )	r#   r/  r0  r1  r2  RANr3  r4  r<   s	            r&   *test_with_background_threads_still_running>TestInterpreterExec.test_with_background_threads_still_runningP  s   !YY[!YY[$$& 
 &J '!H %"2h\ 2 Zr# ) 	 	 Zr# ) 	 	 J1-s31-s31-x8r)   c                     U R                  5        u  pU R                  [        S5         UR                  S5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nro  raise Exception("it worked!"))rD  rp  r   r  )r#   r<   r`   s      r&   r   *TestInterpreterExec.test_created_with_capio  sN    ++-&''(8.I;< J .-II .-s!   AAA
A	A
A,)r  N)r+   r,   r-   r.   r  r  r
   r  rN   r   requires_forkr  rK  rL  r  r  r  r  r   r/   r*   r)   r&   r  r    su    	,+
 .% .%`,  0 0. ]]%&- '-
*
9>=r)   r  c                      g r   r*   r*   r)   r&   call_func_noopr  x  s    r)   c                      g)N)r   Nr*   r*   r)   r&   call_func_return_shareabler  |  s    r)   c                  
    / SQ$ )Nr      rY   r*   r*   r)   r&   call_func_return_not_shareabler    s    r)   c                      [        S5      e)Nspam!)r9  r*   r)   r&   call_func_failurer    s    
G
r)   c                     U $ r   r*   r   s    r&   call_func_identr    s    Lr)   c                    ^  U 4S jnU$ )Nc                     > T $ r   r*   r  s   r&   call_func_closure0get_call_func_closure.<locals>.call_func_closure  s    r)   r*   )r   r  s   ` r&   get_call_func_closurer    s    r)   c                   L    \ rS rSr\S 5       r\S 5       rS rS r	S r
S rSrg	)
Spami  c                      g r   r*   r*   r)   r&   noop	Spam.noop  s    r)   c                     U " U5      $ r   r*   )clsr  s     r&   from_valuesSpam.from_values  s    6{r)   c                     Xl         g r   r  )r#   r   s     r&   __init__Spam.__init__  s    
r)   c                     U R                   X4$ r   r  r#   argskwargss      r&   __call__Spam.__call__      

D))r)   c                 j    [        U[        5      (       d  [        $ U R                  UR                  :H  $ r   )
isinstancer  NotImplementedr   )r#   others     r&   __eq__Spam.__eq__  s(    %&&!!zzU[[((r)   c                     U R                   X4$ r   r  r  s      r&   runSpam.run  r  r)   r  N)r+   r,   r-   r.   staticmethodr  classmethodr  r  r  r  r  r/   r*   r)   r&   r  r    s<       *)
*r)   r  )excc                  Ub  UeU S:X  a  [        S5      eU S:X  a  U(       d  U(       a  [        X445      eU$ U S:X  a  XU4$ U S:X  a$  Uc  U(       d  U(       a  [        XU45      e[        $ U S:X  a=  Uc  U(       d  U(       a  [        XU45      e[        R                  " 5       R
                  $ U S:X  a%  U(       d  U(       a  [        X445      e[        U5      $ U S:X  a%  U(       d  U(       a  [        X445      e[        U5      $ U S	:X  a1  U(       d  U(       a  [        X445      e " S
 S[        5      nU" U5      $ [        U [        5      (       d  [        U 5      e[        U 5      e)Nr   z
missing opident
full-identglobalsr   closurecustomcustom-innerc                       \ rS rSrSrg)call_func_complex.<locals>.Eggsi  r*   Nr+   r,   r-   r.   r/   r*   r)   r&   Eggsr    s    r)   r  )r   r9  r+   r	   rt   ro   r  r  r	  r   r   NotImplementedError)opr   r  r  r  r  s         r&   call_func_complexr!    sE   
		Rx&&	w6TN++	|	V$$	yU&122	z	U&122''),,,	y6TN++$U++	x6TN++E{	~	6TN++	4 	E{C  m!"%%r)   c                        \ rS rSrS rS rSrg)TestInterpreterCalli  c                    [         R                  " 5       n[        [        S0 4[        S0 4[
        S0 4[        R                  S0 4/5       HL  u  nu  p4nU R                  SUS-    35         UR                  U5      nU R                  US 5        S S S 5        MN     [        [        S0 4[        S0 4[        S5      S0 4[        R                  S0 4[        R                  S0 4[        S0 4[        S	5      S0 4[        S
5      R                  S0 4[        S0 4[        S0 4[        SSS04[        S0 4[        S0 4[        SSS04[        S0 4[        S0 4[        SS[!        S5      04/5       Hr  u  nu  p4nU R                  SUS-    35         U R#                  [$        5         U(       d  U(       a  [%        XE45      eUR                  U5        S S S 5        S S S 5        Mt     U R#                  [&        5         UR                  [(        5        S S S 5        g ! , (       d  f       GM  = f! , (       d  f       Na= f! , (       d  f       M  = f! , (       d  f       g = fNr*   zsuccess case #r   )spamspamspam)r{  r{  r  ???e   iu'  )r  r~  )r  r~  )r  r~  r|  r  z!!!)r  )r   )r  r   z~~~)r  r  )r  zeggs!)r'  r  r~  zinvalid case #)r	   r4   	enumerater  r  r  r  r  r   callru   r  r  r  r  r!  r   r9   r9  r   r  )r#   r<   r   callabler  r  r   s          r&   	test_callTestInterpreterCall.test_call  s2   $$&+4R$'R0+R4YYB	6
 ,'A' qse45kk(+c4( 65, ,5/4"E2."2&B/r2&y"-EB#YB%[__b"% 126 6; =Ob1r2w.>? 3R8 92>5*V2D*EF#6
 ,'A'& qse45&&y1v'77KK) 2 65',2 /KK)* 0/; 650 21 65 0/s<   +$H
H8 ,H'H85I

H$	'
H51H88
I	

Ic                    [         R                  " 5       n[        [        S0 4[        S0 4[
        S0 4[        R                  S0 4/5       H~  u  nu  p4nU R                  SUS-    35         U R                  5        nUR                  U5      nUR                  5         S S S 5        U R                  WR                  5        S S S 5        M     [        [        S0 4[        S0 4[        S5      S0 4[        R                   S0 4[        R                   S0 4[        S0 4[        S	5      S0 4[        S
5      R"                  S0 4[$        S0 4[$        S0 4[$        SSS04[$        S0 4[$        S0 4[$        SSS04[$        S0 4[$        S0 4[$        SS['        S5      04/5       H  u  nu  p4nU R                  SUS-    35         U(       d  U(       a   S S S 5        M:  U R                  5        nUR                  U5      nUR                  5         S S S 5        U R)                  WR                  5        S S S 5        M     U R                  5        nUR                  [*        5      nUR                  5         S S S 5        U R)                  WR                  5        g ! , (       d  f       GN= f! , (       d  f       GMh  = f! , (       d  f       N= f! , (       d  f       GM;  = f! , (       d  f       Ns= fr%  )r	   r4   r)  r  r  r  r  r  r   captured_thread_exceptioncall_in_threadrL   assertIsNonecaughtr  r  r  r  r!  r   assertIsNotNoner  )r#   r<   r   r+  r  r  ctxrM   s           r&   test_call_in_thread'TestInterpreterCall.test_call_in_thread  s   $$&+4R$'R0+R4YYB	6
 ,'A' qse45335--h7AFFH 6 !!#**-	 65, ,5/4"E2."2&B/r2&y"-EB#YB%[__b"% 126 6; =Ob1r2w.>? 3R8 92>5*V2D*EF#6
 ,'A'& qse456 65 335--h7AFFH 6 $$SZZ0 65',6 ++-%%&78AFFH . 	SZZ(G 65 658 65 65 .-sZ   +J#<"J#J#<KK&"J6#K&K
J J##
J3	6
K K
K	
K(r*   N)r+   r,   r-   r.   r,  r5  r/   r*   r)   r&   r#  r#    s    @'+R-)r)   r#  c                        \ rS rSrS rS rSrg)TestIsShareableiK  c                     / SQnU HD  nU R                  U5         [        R                  " U5      nU R                  U5        S S S 5        MF     g ! , (       d  f       MX  = f)N)
N   spamr~  r  iTFg      Y@r*   )r   r}  T)r   r	   is_shareabler  )r#   
shareablesobj	shareables       r&   test_default_shareables'TestIsShareable.test_default_shareablesM  sL    
 Cc"(55c:		* #" ""s   (A
A	c                 b    " S S5      n " S S[         5      n[        S[        [        [        5       [	        5       UU" S5      U" S5      /	nU HK  nU R                  [        U5      5         U R                  [        R                  " U5      5        S S S 5        MM     g ! , (       d  f       M_  = f)Nc                        \ rS rSrS rS rSrg)2TestIsShareable.test_not_shareable.<locals>.Cheeseib  c                     Xl         g r   r  )r#   r  s     r&   r  ;TestIsShareable.test_not_shareable.<locals>.Cheese.__init__c  s     	r)   c                     U R                   $ r   rE  r   s    r&   __str__:TestIsShareable.test_not_shareable.<locals>.Cheese.__str__e  s    yy r)   rE  N)r+   r,   r-   r.   r  rH  r/   r*   r)   r&   CheeserC  b  s    !!r)   rJ  c                       \ rS rSrSrg)4TestIsShareable.test_not_shareable.<locals>.SubBytesih  r*   Nr  r*   r)   r&   SubBytesrL  h  s     r)   rM  .Wensleydaler:  )
bytesr
  typer   r9  r   r   r  r	   r;  )r#   rJ  rM  not_shareablesr=  s        r&   r  "TestIsShareable.test_not_shareablea  s    	! 	!	2u 	2
 }%! "Cd3i(   --c24 )( "((s   ,&B
B.	r*   N)r+   r,   r-   r.   r?  r  r/   r*   r)   r&   r8  r8  K  s    +(4r)   r8  c                   z    \ rS rSrS rS rS rS rS r\	S 5       r
S r\	S	 5       rS
 rS rS r\	S 5       rSrg)LowLevelTestsi  c                    [         R                  S5      nU R                  S5         [         R                  5       nU R                  X!5        U R	                  X!5        S S S 5        U R                  S5         [         R                  S5      nU R                  X15        U R	                  X15        [         R                  S5      nU R                  XC5        U R	                  XC5        S S S 5        S HY  nU R                  SU< S35         [         R                  U5      nU R                  X!5        U R	                  X!5        S S S 5        M[     [
        R                  " SSSSSSS	S
9[
        R                  " SSSSS[        [        5      SS
9[
        R                  " SSSSSSSS
9S.n/ SQnUR                  5        GHe  u  pU R                  SU S35         U	n
[         R                  U5      nU R                  X:5        U R	                  X:5        [         R                  U5      nU R                  XC5        U R	                  XC5        S S S 5        U R                  SU S35         U	n
[        U	5      n[         R                  " U40 UD6nU R                  X*5        S S S 5        U R                  SU S35         [        U	5      R                  5        VVs0 s H  u  pX(       + _M     nnnU HW  nU	R                  U:X  a  M  XS'   [
        R                  " S!0 UD6n
[         R                  " U40 UD6nU R                  X*5        MY     S S S 5        [        U	5      R                  5        H  u  nnUS:X  a  U Vs/ s H  oU:w  d  M
  UPM     nnOU(       + /nU H  nU R                  U SU SU< SU< S35         UU0n[
        R                  " S!0 [        [        U	5      40 UD6D6n
[         R                  " U40 UD6nU R                  X*5        S S S 5        M     M     GMh     U R                  S5         U R                  [        5         [         R                  SS9  S S S 5        S S S 5        [        US   5      R                  5        H}  u  nnUS:X  a  M  SSSSS [        5       4 H[  nU R                  SU SU< S35         U R                  [         5         [         R                  " S!0 UU0D6  S S S 5        S S S 5        M]     M     SSSS [        5       4 HS  nU R                  SU< S35         U R                  [         5         [         R                  US9  S S S 5        S S S 5        MU     S  HS  nU R                  SU< S35         U R                  [        5         [         R                  US9  S S S 5        S S S 5        MU     g ! , (       d  f       GNw= f! , (       d  f       GN= f! , (       d  f       GM  = f! , (       d  f       GN= f! , (       d  f       GN= fs  snnf ! , (       d  f       GN= fs  snf ! , (       d  f       GM  = f! , (       d  f       GN= f! , (       d  f       GN	= f! , (       d  f       GN= f! , (       d  f       GM  = f! , (       d  f       GNI= f! , (       d  f       GM  = f! , (       d  f       GN= f! , (       d  f       GMs  = f)"Nisolatedzno argdefault)r   rW  z	default ()FTown)use_main_obmalloc
allow_fork
allow_execallow_threadsallow_daemon_threadscheck_multi_interp_extensionsgilshared)rV  legacyempty)rW  ra  rY  zsupported (znoop override (zoverride all (r`  .z (z -> zextra overrider  rc  r   r   r~  g      ?zbad override (=zbad override (gil=)r`  )r   r~  r*   )r   
new_configr   assert_ns_equalassertIsNottypesSimpleNamespaceboolr   r  varsr`  dictr9   r   r   r   )r#   rW  configconfig1config2arg	supportedgil_supportedr  vanillar   	overrideskr   r`  fieldoldr  valr   s                       r&   test_new_configLowLevelTests.test_new_config  s     **:6\\(#"--/F  1V- $
 \\)$#..y9G  2W.#..y9G  2W. % #C	#23&11#6$$V5  1 43 # --"'  "%*.2 ++"&"%).2?.C **"'  #%*.3'
	: 5&__.MDD634"'2248$$W7  3'2248$$W6  2 5 vQ78" M	&11$D)D$$V6	 9 tfA6726w-2E2E2GH2G$!QX2G	H(C{{c) '*e$$44AyAH*55dHiHF((: ) 8 #7m113
sE>)6CAs(aFCF"%gYF!CawbtC7!&LM%*CL	#(#8#8 $"4=>I>$ "/!9!9$!L)!L,,V> NM " 49 /T \\*+"":.((d(3 / ,
 !7!34::<LE5~RdFH=\\N5'5)1"EF**95%00BE5>B 6 GF >	 = AsD&(3E 25)1=>&&y1!,,,7 2 ?> 4 "E 25)1=>&&z2!,,,7 3 ?> "a $#
 %$ 43J 54 98 I 87 D NM /. ,+ 65 GF 21 ?>
 32 ?>s  7W7A/W 	8W2A1X%6X8X/X)
(A X/9	YY;AY	7Y+Y!Y+ZY=	6Z6Z4Z" Z4[%[9[
W 
W/2
X	
X	
X&	)X//
X>	
Y
Y(	#Y++
Y:=
ZZ
Z"
Z1,Z44
[	
[[
[)	c                     [         R                  5       u  pU R                  US5        U R                  U[         R                  5        U R                  [         R	                  U5      [         R                  5        g rm   )r   rn   r"   WHENCE_RUNTIMEr   )r#   r   r   s      r&   test_get_mainLowLevelTests.test_get_main  s^    (1131%!=!=>  *((	*r)   c                 ~   U R                  S5         [        R                  5       tp[        R                  5       u  p4U R	                  X15        U R	                  U[        R
                  5        S S S 5        SnS nU R                  S5         [        R                  5       nU R                  Xu5      nU" U5      u  p4U R	                  X75        U R	                  U[        R                  5        S S S 5        U R                  S5         Sn	[        R                  5        H  tp[        X5      n	M     U	S-   nU R                  U5      nU" U5      u  p4U R	                  X;5        U R	                  U[        R                  5        S S S 5        g ! , (       d  f       GN#= f! , (       d  f       N= f! , (       d  f       g = f)NrR   z
            import _interpreters
            interpid, whence = _interpreters.get_current()
            print((interpid, whence))
            c                 "    [        U 5      u  pX4$ r   )r   )r   r   r   s      r&   parse_stdout4LowLevelTests.test_get_current.<locals>.parse_stdout  s    #DzH##r)   r   r   r   r   )r   r   rn   rt   r"   r}  r4   run_and_captureWHENCE_STDLIBr8   maxr   WHENCE_CAPI)r#   rR   r`   r   r   rF  r  origr   lastro   r   s               r&   test_get_currentLowLevelTests.test_get_current
  se   \\&!$--/HD,88:HX,V]%A%AB	 "
	$ \\./ '')D''5D+D1HX,V]%@%@A 0 \\,'D'0024} 3axH**62D+D1HX0V]%>%>? ('- "! 0/ ('s&   AFA!FA;F.
F
F+.
F<c                    [         R                  5       tp[         R                  5       n[         R                  5       n[         R                  5       nU[         R                  4U[         R                  4U[         R                  4U[         R                  4/nU R                  S5         [         R                  5       nU R                  Xv5        S S S 5        U R                  S5         U R                  US5      n[        U5      nU R                  Xv5        S S S 5        U R                  S5         US-   n	U	S-   n
UU	[         R                  4U
[         R                  4/-   nUU
[         R                  4/-   nU R                  S5      n[        U5      n[         R                  5       nU R                  X5        U R                  X5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       g = f)NrR   zvia interp from _interpretersz{
                import _interpreters
                print(
                    _interpreters.list_all())
                zvia interp from C-APIr   z
                import _interpreters
                _interpreters.create()
                print(
                    _interpreters.list_all())
                )r   rn   r4   r}  r  r   r8   r"   r  r   r  r   )r#   r   r`   r   r   r   r   r   r   r   r   r   	expected3r   res3s                  r&   test_list_allLowLevelTests.test_list_all+  s   "++-
!((*	!((*	!((*	]112334334334	
 \\&!((*CS+ " \\9:''	 8 D t*CS+ ; \\12!AI!AI M556M778$ I !M778$ I ** 0 D :D ))+DT-T-' 32 "! ;: 32s%   )&G(/G%0BG6
G"%
G36
Hc                 2   [         R                  S5      n[         R                  S5      nUnU R                  S5         [         R                  5       n[         R	                  U5      nU R                  XS5        S S S 5        U R                  S5         [         R                  S 5      n[         R	                  U5      nU R                  XS5        S S S 5        U R                  S5         U R                  [        5         [         R                  S5        S S S 5        S S S 5        UUUUS.R                  5        H^  u  pgU R                  SU< 35         [         R                  U5      n[         R	                  U5      nU R                  XW5        S S S 5        M`     U R                  S	5         [         R                  S5      nS
Ul	        [        [        5      Ul        SUl        [         R                  U5      n[         R	                  U5      nU R                  XX5        S S S 5        U R                  S5         [         R                  5       nU?U R                  [        5         [         R                  U5        S S S 5        S S S 5        U R                  S5         [         R                  5       nS
Ul        U R                  [        5         [         R                  U5        S S S 5        S S S 5        U R                  S5         [         R                  5       nU R!                  [         R#                  U5      [         R$                  5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNk= f! , (       d  f       GNu= f! , (       d  f       GMs  = f! , (       d  f       GN= f! , (       d  f       GNN= f! , (       d  f       GNX= f! , (       d  f       GN
= f! , (       d  f       GN= f! , (       d  f       g = f)NrV  rb  no argszconfig: Nonezconfig: 'empty'rc  )r   rW  rV  rb  z	str arg: r  Tra  zmissing fieldszextra fieldsr   )r   rf  r   r4   
get_configrg  r9   r   r  rZ  rk  r   r_  r`  r   r~  r"   r   r  )	r#   rV  rb  rW  r   rn  rq  r   r  s	            r&   test_createLowLevelTests.test_createZ  s    ++J7))(3\\)$$++-H"--h7F  1 %
 \\.)$++D1H"--h7F  1 *
 \\-.""#34$$W- 5 /  	

 %'MC 	#12(//4&11(;$$V6 32 \\(# ++G4D%)D"15o1FD.DH$++D1H"--h7F  . $ \\*+ ++-D"":.$$T* / , \\.) ++-DDI"":.$$T* / * \\(#$++-H$$X.++- $#_ %$
 *) 54 /. 32
 $# /. ,+ /. *) $#s   ;M<M%'N	=M7N	<N+A3N.7,O#O 9O1O6O$!O6AP
M"%
M47
N	N		
N
N+	.
N= 
O	
O
O!$
O3	.O66
P
Pc                    U R                  S5         [        R                  5       n[        R                  5        VVs/ s H  tp#UPM     nnn[        R	                  U5        [        R                  5        VVs/ s H  tp#UPM     nnnU R                  X5        U R                  X5        U R                  U R                  U5      5        S S S 5        U R                  S5         [        R                  5       tpU R                  [        5         [        R	                  U5        S S S 5        S S S 5        U R                  S5         [        R                  " 5       nU R                  [        S5         [        R	                  USS9  S S S 5        U R                  U R                  U5      5        [        R	                  U5        U R                  U R                  U5      5        S S S 5        g s  snnf s  snnf ! , (       d  f       GN5= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr   rR   r   ro  Trestrict)r   r   r4   r8   destroyr7   assertNotInr  rq  rn   r9   r   r   create_interpreterrp  r  )r#   r   ro   r`   r^   rI  s         r&   test_destroyLowLevelTests.test_destroy  s   \\./$++-H'4'='='?@'?VRb'?F@!!(+&3&<&<&>?&>FBR&>E?MM(+X-""8,. 0 \\&!(113LH""#34%%h/ 5 " \\,'(;;=H''(8.I%%h%> JOO""8,.!!(+""8,. (' A?	 0/ 54 "! JI ('sr   ,G:G./G::G4AG:%+HH&H,H?3H.AH?.G::
H	
H	H
H+.
H<	8H??
Ic                    U R                  S5         [        R                  S5      nSUl        [        (       a  SUl        [        R                  5       tp#[        R                  U5      nU R                  XA5        S S S 5        U R                  S5         [        R                  S5      n[        R                  S5      n[        R                  U5      nU R                  XA5        S S S 5        U R                  S5         [        R                  S5      n[        R                  S5      n[        R                  U5      nU R                  XA5        S S S 5        U R                  S5         [        R                  S5      nU R                  U5       nU R                  [        S5         [        R                  USS	9  S S S 5        [        R                  U5      nS S S 5        U R                  WU5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN/= f! , (       d  f       N= f! , (       d  f       N{= f! , (       d  f       No= f! , (       d  f       g = f)
NrR   rb  rY  FrV  r   ro  Tr  )r   r   rf  r`  r   r_  rn   r  rg  r4   rB  rp  r   )r#   r   r   r`   rn  r  s         r&   test_get_configLowLevelTests.test_get_config  s    \\&!$//9H HL9>6(113LH"--h7F  2 " \\*%$//
;H$++J7H"--h7F  2	 & \\(#$//9H$++H5H"--h7F  2	 $ \\,' ++J7D++D1X++,<nM!,,X,E N&11(; 2   . ('+ "! &% $# NM 21 ('sb   A*G<AH?AH )'II'H1<II<
H
H 
H.1
H?;I
I	I
I!c                 T   U R                  S5         [        R                  5       tp[        R                  U5      nU R	                  U[        R
                  5        S S S 5        U R                  S5         [        R                  5       n[        R                  U5      nU R	                  U[        R                  5        S S S 5        [        R                  S[        R                  S[        R                  S[        R                  S0R                  5        He  u  pEU R                  SU SU S	35         U R                  US
9 n[        R                  U5      nS S S 5        U R	                  WU5        S S S 5        Mg     U R                  S5         U R                  [        S5      SS9n[!        U5      nU R	                  U[        R                  5        S S S 5        U R                  S5          U R                  [        S5      SS9n[!        U5      nU R	                  U[        R                  5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GMm  = f! , (       d  f       N= f! , (       d  f       g = f)NrR   stdlibz	not readyr   r   r   zfrom C-API (z: rX  )r   zfrom C-API, runningz
                import _interpreters
                interpid, *_ = _interpreters.get_current()
                print(_interpreters.whence(interpid))
                T)rn  zfrom legacy C-API, runningF)r   r   rn   r   r"   r}  r4   r  WHENCE_UNKNOWNWHENCE_LEGACY_CAPIr  	WHENCE_XIr  rB  r   r   r   )r#   r   r`   r   r  r  r   s          r&   r   LowLevelTests.test_whence  s*   \\&!(113LH"))(3FV]%A%AB "
 \\(#$++-H"))(3FV]%@%@A $ ((+,,n%%w##%>	

 %'JD TF"TF!<=//t/<*11(;F =  . >= \\/0**6 7 ,
  + D $ZFV]%>%>? 1 \\67**6 7 ,
  + D $ZFV]%E%EF 87? "!
 $# =< >=
 10 87sW   AH?6A
I5I5I#I5AJ0AJ?
I
I #
I2-I55
J	
J
J'c                 v  ^  U 4S jnT R                  S5         [        R                  5       nT R                  U5         [        R	                  U5      nT R                  U5        S S S 5        S S S 5        T R                  S5         [        R                  5       n[        R	                  U5      nT R                  U5        S S S 5        T R                  S5         [        R                  5       tp$U" US5        S S S 5        T R                  S5         T R                  5        nT R                  USS9   U" US5        S S S 5        S S S 5        S S S 5        T R                  S5         T R                  5        nT R                  US	S9   U" US	5        S S S 5        S S S 5        S S S 5        T R                  S
5         T R                  5        nU" US	5        S S S 5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNR= f! , (       d  f       GN,= f! , (       d  f       N= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nc                    > TR                  [        S5         [        R                  U SS9  S S S 5        [        R                  U 5      nTR	                  X!5        g ! , (       d  f       N5= f)Nro  Tr  )rp  r   r   r  ru   )r   r   rG  r#   s      r&   check,LowLevelTests.test_is_running.<locals>.check  sS    ''(8.I((D(A J#..x8GMM', JIs   A
A*zfrom _interpreters (running)z from _interpreters (not running)rR   Tzfrom C-API (running __main__)r=  z&from C-API (running, but not __main__)Fzfrom C-API (not running))
r   r   r4   rG  r  r  r  rn   rB  rE  )r#   r  r   rG  r`   s   `    r&   test_is_runningLowLevelTests.test_is_running  s   	- \\89$++-Hh''228<( ( : \\<=$++-H#..x8GW% >
 \\&!(113LH(D! " \\9:++-++H4+@(D) A . ;
 \\BC++-++H5+A(E* B . D
 \\45++-h& . 65/ (' :9 >=
 "! A@ .- ;: BA .- DC .- 65s   &G;'G)&G;;HHI$I5
H1?II(J9I7

I&I7J=J*
JJ*)
G8	3G;;
H

H
H.1
H?;I
I	I
I#&
I40I77
J	J
J
J'	#J**
J8c                    U R                  S5         [        R                  5       n[        S5      u  p#U   [        R	                  X5      nS S S 5        UR                  5       nUR                  5         UR                  nU R                  US5        S S S 5        U R                  S5         [        R                  5       n[        S5      u  p#U   [        R	                  X5      nUR                  5       nS S S 5        U R                  WS5        U R                  W[        R                  " [        R                  " SSSS	9S
UR                  UR                  S95        S S S 5        U R                  S5         U R                  5        nU R                  [         S5         [        R	                  USSS9  S S S 5        [        R	                  US5      nS S S 5        U R#                  WS 5        U R                  UR$                  S5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNH= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nz
run scriptr  r  uncaught exceptionzg
                raise Exception('uh-oh!')
                print("it worked!", end="")
                r   r9  builtinsr+   r-   r,   zuh-oh!rP  msg	formatted
errdisplayr   ro  r  Tr  )r   r   r4   r   r  r  r  r  r"   rg  ri  rj  r  r  rB  rp  r   rh  r  )r#   r   rF  r  r  rS   s         r&   	test_execLowLevelTests.test_exec"  s   \\,'$++-H./LMOF#((: mmoG##%..CS,/ ( \\./$++-H. 0 OF #((:nn&  S"%  e&;&;**(!,)
 -->>
' 
 0, \\,'++-++,<nM!&&x1P04 ' 6 N $((3RS	 .
 S$'SWWl3 (';  ('   0/0 NM .- ('s   $H$HAH$+$I&H65A)I7I;I*I5I*6I;
H!	H$$
H36
I	 I
I
I'#I**
I8	4I;;
J	c                 *   U R                  S5         [        R                  5       n[        R                  U[        5      nU R                  US 5        S S S 5        U R                  S5         [        R                  5       n[        R                  U[        5      nU R                  U[        R                  " [        R                  " SSSS9SUR                  UR                  S95        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr  r  r9  r  r  r  r  )r   r   r4   r*  r  ru   r  r"   ri  rj  r  r  )r#   r   r  s      r&   r,  LowLevelTests.test_callL  s    \\)$$++-H$$X/IJCMM#t$ %
 \\./$++-H$$X/@ACS%"7"7**(!,)
 -->>
# 
 0/ %$
 0/s   AC3,A>D3
D
Dc           	         U R                  S5         [        R                  5       n[        R                  US5      n[        R                  US5      nU R	                  UR
                  R                  S5        U R	                  UR
                  R                  S5        [        R                  U[        SSS95        [        R                  US5      n[        R                  US5      n[        R                  US5      nU R                  US 5        U R                  US 5        U R	                  UR
                  R                  S	5        U R                  [        5         [        R                  US
S05        S S S 5        S S S 5        U R                  S5         U R                  5        nU R                  [        S5         [        R                  USS0SS9  S S S 5        [        R                  USS05        [        R                   " US5      nS S S 5        U R	                  WS5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N\= f! , (       d  f       g = f)Nr   zassert spam == 'eggs'zassert ham == 42r  r  r{  )r~  r|  zassert spam == 42AssertionError r   r   ro  r~  Tr  r  r   )r   r   r4   r  r"   rP  r+   set___main___attrsrm  ru   r9   r   rB  rp  r   r   exec_interpreter)r#   r   before1before2after1after2after3rcs           r&   test_set___main___attrs%LowLevelTests.test_set___main___attrsa  s   \\./$++-H#((3LMG#((3EFGW\\22K@W\\22K@,,Xt8  #''2KLF"''2DEF"''2EFFMM&$'MM&$'V[[113CD"":.00FA;G /% 0, \\,'++-++,<nM!44X~>B 5 D N 00FD>J&77) . R# ('	 /.% 0/0 NM .- ('s`   EIH27II6)I% I7I%I62
I 	<I
I
I"I%%
I3	/I66
Jr*   N)r+   r,   r-   r.   rz  r~  r  r  r  r   r  r  r   r  r  r,  r  r/   r*   r)   r&   rT  rT    sw    x8t*@B-.^8-t . .8/B )G )GV"'H(4T* !$ !$r)   rT  __main__r   ):r  r  systextwrapr   r   rH   ri  rK  testr   test.supportr   import_moduler   r   r	   r
   test.support.interpretersr   r   r   utilsr   r   r   r   r   r   r   r   WHENCE_STR_LEGACY_CAPIr   WHENCE_STR_XIr   r   r1   rj   r   r   r   r	  rN  rt  r  r  r  r  r  r  r  r  r!  r#  r8  rT  r+   rR   r*   r)   r&   <module>r     sy   	  
 #     &++O< ( % ,    # ' )* (( ($<S( <S~$8 $":2h :2zB*8 B*Jc,X c,Ls&x s&lg28 g2TFD FDR^=( ^=H	* *2$&D $&Nv)( v)r14h 14hD$H D$N zMMO r)   