
    2hh\                    $   S SK r S SKJr  S SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJ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$r$ S SK&r& S SK'r' S SK(r(\RT                  " S5      r+S SK,r,S SK-r-Sr.S r/S r0S r1 " S S5      r2\Rf                   " S S\Rh                  5      5       r5\ " S S\Rh                  5      5       r6 " S S\Rh                  5      r7 " S S\Rh                  5      r8\0 " S S\Rh                  5      5       r9\0 " S S\Rh                  5      5       r: " S S \Rh                  5      r; " S! S"\Rh                  5      r< " S# S$\Rh                  5      r=S<S% jr> " S& S'\Rh                  5      r? " S( S)\Rh                  5      r@ " S* S+\Rh                  5      rA\R                  " 5        " S, S-\Rh                  5      5       rC\R                  " \&SL S.5       " S/ S0\Rh                  5      5       rE " S1 S2\Rh                  5      rFS3rG " S4 S5\Rh                  5      rH\R                  " \R>                  S65       " S7 S8\Rh                  5      5       rJ " S9 S:\Rh                  5      rK\LS;:X  a  \R                  " 5         gg! \% a    Sr$ GNMf = f! \% a    Sr& GNWf = f! \% a    Sr' GNaf = f! \) a    Sr( GNkf = f)=    N)deque)support)MISSING_C_DOCSTRINGS)import_helper)threading_helper)warnings_helper)requires_limited_api)suppress_immortalization) expected_failure_if_gil_disabled)Py_GIL_DISABLED)assert_python_failureassert_python_okrun_python_until_end	_testcapic                 F    U R                  SS5      R                  SS5      $ )Nutf-8replace )decoder   )errs    A/opt/python-3.13.8/usr/lib/python3.13/test/test_capi/test_misc.pydecode_stderrr   ;   s     ::gy)11$;;    c                 H    [         R                  " [        SL S5      " U 5      $ )z>Decorator to skip a test if subinterpreters are not supported.Nzsubinterpreters required)unittestskipIf_interpreters)meths    r   requires_subinterpretersr    ?   s%    ??=D0577;= =r   c                     U $ )zsome doc selfs    r   testfunctionr%   E   s    Kr   c                   X    \ rS rSr\R                  \5      r\R                  \5      rSrg)InstanceMethodJ   r"   N)	__name__
__module____qualname____firstlineno__r   instancemethodidr%   __static_attributes__r"   r   r   r'   r'   J   s"    		!	!"	%B++L9Lr   r'   c                      \ rS rSrS r\R                  " 5       S 5       rS r\	R                  " \S5      S 5       r\	R                  " \S5      S 5       r\	R                  " \S5      S	 5       rS
 rS rS rS rS rS rS rS rS r\	R                  " \" \S5      S5      S 5       r\	R                  " \" \S5      S5      \R:                  " SSSSS9S 5       5       rS r\R@                  " S5      S 5       r!\R@                  " S5      S 5       r"S  r#\	R                  " \S5      S! 5       r$S" r%\&" 5       S# 5       r'\&" 5       S$ 5       r(S% r)S& r*S' r+S( r,S) r-S* r.S+ r/S, r0S- r1S. r2S/ r3S0 r4S1 r5S2 r6S3 r7S4 r8S5 r9S6 r:S7 r;\<Rz                  " \>S89S9 5       r?S: r@S; rAS< rBS= rCS> rDS? rES@ rFSA rGSB rHSC rISD rJSE rKSF rLSG rMSH rNSI rOSJ rPSKrQgL)MCAPITestO   c                 <   [        5       nU R                  [        U5      UR                  5       5        U R                  UR	                  5       UL 5        U R                  UR                  R
                  [        R
                  5        U R                  [         R                  R
                  [        R
                  5        S[         R                  l        U R                  [        R                  S5        U R                  [        [        UR                  SS5        g )Ntest	attribute)
r'   assertEqualr.   
assertTruer%   __doc__r5   assertRaisesAttributeErrorsetattrr$   insts     r   test_instancemethodCAPITest.test_instancemethodR   s    D4779-))+t34**22L4H4HI44<<l>R>RS06##-//8.'43D3DkSYZr   c                     [         R                  " S5      n[        SU5      u  p#Uu  pEnU R                  US5        SR	                  5       nU R                  UR                  5       R                  U5      U5        g )Nz
            import _testcapi
            from test import support

            with support.SuppressCrashReport():
                _testcapi.crash_no_current_thread()
        -cr   zFatal Python error: PyThreadState_Get: the function must be called with the GIL held, after Python initialization and before Python finalization, but the GIL is released (the current Python thread state is NULL))textwrapdedentr   r6   encoder7   rstrip
startswith)r$   code
run_result	_cmd_line_rcoutr   msgs           r    test_no_FatalError_infinite_loop)CAPITest.test_no_FatalError_infinite_loop]   sw        !5T4 @
"#c"; =CFH	 	
 	

//4	r   c                 L    U R                  [        [        R                  5        g N)r9   
ValueErrorr   !make_memoryview_from_NULL_pointerr#   s    r   !test_memoryview_from_NULL_pointer*CAPITest.test_memoryview_from_NULL_pointers   s    *i&Q&QRr   z(_posixsubprocess required for this test.c                     " S S[         5      nU R                  [        S5         [        R                  " SU" 5       SSSSS	S
SSSSSSSSSSSSSSS5        S S S 5         " S S[         5      nU R                  [        [        R                  SU" 5       SSSSS	S
SSSSSSSSSSSSSSS5        g ! , (       d  f       N^= f)Nc                       \ rS rSrS rSrg)1CAPITest.test_seq_bytes_to_charp_array.<locals>.Zy   c                     gN   r"   r#   s    r   __len__9CAPITest.test_seq_bytes_to_charp_array.<locals>.Z.__len__z       r   r"   Nr)   r*   r+   r,   r\   r/   r"   r   r   ZrW   y       r   r`   indexingr[   Tr[                  	   
                  F            c                        \ rS rSrS rS rSrg)rW      c                 "    [         R                  $ rP   )sysmaxsizer#   s    r   r\   r]      s    {{"r   c                     g)N   xr"   )r$   is     r   __getitem__=CAPITest.test_seq_bytes_to_charp_array.<locals>.Z.__getitem__       r   r"   N)r)   r*   r+   r,   r\   r|   r/   r"   r   r   r`   rW      s    #r   )objectassertRaisesRegex	TypeError_posixsubprocess	fork_execr9   MemoryErrorr$   r`   s     r   test_seq_bytes_to_charp_array&CAPITest.test_seq_bytes_to_charp_arrayv   s    	 	 ##Iz:&&ACVAa!AbBr"T$rRWXZ[]^`acdik ;	 	
 	+'7'A'AACVAa!AbBr"T$rRWXZ[]^`acdi	k ;:s   2B00
B>c                      " S S[         5      nU R                  [        [        R                  U" 5       S/SSSSSS	S
SSSSSSSSSSSSSS5        g )Nc                       \ rS rSrS rSrg)-CAPITest.test_subprocess_fork_exec.<locals>.Z   c                     grZ   r"   r#   s    r   r\   5CAPITest.test_subprocess_fork_exec.<locals>.Z.__len__   r^   r   r"   Nr_   r"   r   r   r`   r      ra   r   r`      1Trc   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   Frp   rq   rr   rs   )r   r9   r   r   r   r   s     r   test_subprocess_fork_exec"CAPITest.test_subprocess_fork_exec   sd    	 	
 	)%5%?%?#tfT&1Qq2bBr$tTVW\]_`bcefhin	pr   z6Signature information for builtins requires docstringsc                 D   U R                  [        R                  R                  S 5        U R                  [        R                  R                  S 5        U R                  [        R
                  R                  S 5        U R                  [        R
                  R                  S 5        U R                  [        R                  R                  S5        U R                  [        R                  R                  S 5        U R                  [        R                  R                  S5        U R                  [        R                  R                  S 5        U R                  [        R                  R                  S5        U R                  [        R                  R                  S 5        U R                  [        R                  R                  S5        U R                  [        R                  R                  S5        U R                  [        R                  R                  S 5        U R                  [        R                  R                  S5        U R                  [        R                  R                  S5        U R                  [        R                  R                  S5        g )Nz This docstring has no signature.z[docstring_with_invalid_signature($module, /, boo)

This docstring has an invalid signature.zedocstring_with_invalid_signature2($module, /, boo)

--

This docstring also has an invalid signature.z%This docstring has a valid signature.z($module, /, sig)z>
This docstring has a valid signature and some extra newlines.z($module, /, parameter))r6   r   no_docstringr8   __text_signature__docstring_emptydocstring_no_signature docstring_with_invalid_signature!docstring_with_invalid_signature2docstring_with_signature#docstring_with_signature_but_no_doc+docstring_with_signature_and_extra_newlinesr#   s    r    test_docstring_signature_parsing)CAPITest.test_docstring_signature_parsing   s    	//77>//BBDI22::DA22EEtL99AA.	099LLdSCCKK7	
 	CCVVX\]DDLL<	 	DDWWY]^;;CC3	5;;NNPcdFFNNPTUFFYY	! 	NNVVM	ONNaa%	'r   c                 n   [         R                  nU" 5       nU" 5       nU R                  X#-  SX#45        U R                  US-  SUS45        U R                  SU-  SSU45        UnXC-  nU R                  USX#45        UnUS-  nU R                  USUS45        SnXB-  nU R                  USSU45        g )Nmatmul*   imatmul)r   
matmulTyper6   )r$   Mm1m2os        r   &test_c_type_with_matrix_multiplication/CAPITest.test_c_type_with_matrix_multiplication   s      SS8R"45b8R"45b8R"45	Y/0	RYB/0	Xr2./r   c                     [         R                  5       nU R                  UR                  S5      S5        U R                  UR                  SS5      S5        g )Nr[   )r[   Nrd   )rd   rd   )r   ipowTyper6   __ipow__)r$   r   s     r   test_c_type_with_ipowCAPITest.test_c_type_with_ipow   sE      A	2Aq)62r   c                    [         R                  (       aC  [        R                  " S5      n[	        SU5      u  p#n[        U5      nU R                  US5        g U R                  [        5       n[        R                  5         S S S 5        U R                  [        WR                  5      S5        g ! , (       d  f       N4= f)Nz
                import _testcapi
                from test import support

                with support.SuppressCrashReport():
                    _testcapi.return_null_without_error()
            rA   a#  Fatal Python error: _Py_CheckFunctionResult: a function returned NULL without setting an exception\nPython runtime state: initialized\nSystemError: <built-in function return_null_without_error> returned NULL without setting an exception\n\nCurrent thread.*:\n  File .*", line 6 in <module>\nzFreturn_null_without_error.* returned NULL without setting an exception)r   Py_DEBUGrB   rC   r   r   assertRegexr9   SystemErrorr   return_null_without_errorstr	exceptionr$   rG   rcrK   r   cms         r   test_return_null_without_error'CAPITest.test_return_null_without_error   s     ?? $ D 1t<LBS$CS45 "";/2335 0S.JK 0/   .B11
B?c                    [         R                  (       aC  [        R                  " S5      n[	        SU5      u  p#n[        U5      nU R                  US5        g U R                  [        5       n[        R                  5         S S S 5        U R                  [        WR                  5      S5        g ! , (       d  f       N4= f)Nz
                import _testcapi
                from test import support

                with support.SuppressCrashReport():
                    _testcapi.return_result_with_error()
            rA   aq  Fatal Python error: _Py_CheckFunctionResult: a function returned a result with an exception set\nPython runtime state: initialized\nValueError\n\nThe above exception was the direct cause of the following exception:\n\nSystemError: <built-in function return_result_with_error> returned a result with an exception set\n\nCurrent thread.*:\n  File .*, line 6 in <module>\nzBreturn_result_with_error.* returned a result with an exception set)r   r   rB   rC   r   r   r   r9   r   r   return_result_with_errorr   r   r   s         r   test_return_result_with_error&CAPITest.test_return_result_with_error   s    ?? $ D 1t<LBS$CS78  "";/2224 0S.GH 0/r   c                     [         R                  " S5      n[        SU5      u  p#n[        U5      nSU;  a  U R	                  US5        g U R                  SU5        g )Nz
            import _testcapi
            from test import support

            with support.SuppressCrashReport():
                _testcapi.getitem_with_error({1: 2}, 1)
        rA   zSystemError: a  Fatal Python error: _Py_CheckSlotResult: Slot __getitem__ of type dict succeeded with an exception set\nPython runtime state: initialized\nValueError: bug\n\nCurrent thread .* \(most recent call first\):\n  File .*, line 6 in <module>\n\nExtension modules: _testcapi \(total: 1\)\nz'returned a result with an exception set)rB   rC   r   r   r   assertInr$   rG   r   rK   r   s        r   test_getitem_with_error CAPITest.test_getitem_with_error  sc         -T48C #%S	C
D MMCSIr   c           	      
   [         R                  nU R                  U" S5      S 5        U R                  U" S5      S5        U R                  U" S5      / 5        U R                  U" S5      0 5        U R                  U" S5      S/ 0 45        U R                  U" SS5      S5        U R                  U" S	S5      S
5        U R                  U" SS5      S/5        U R                  [        USS5        U R                  U" SSS5      S5        U R                  U" SSS5      S5        U R                  U" SSS5      SS/5        U R                  U" SSS5      SS05        U R                  U" SSSSS5      SSS.5        U R                  U" SS5      S5        U R                  U" SSS5      S5        U R                  U" S5      S 5        U R                  U" SS5      S5        U R                  U" SS5      S5        U R                  U" SS5      S5        U R                  U" SSS5      S5        U R                  U" S SS5      S5        U R                  U" S!SS5      S5        U R                  U" S"SS5      S5        U R                  U" S#SS5      S5        U R                  U" S$SS5      S5        U R                  U" S%SS5      S5        U R                  U" S&SS5      S5        U R                  U" S'SS5      S5        U R                  U" S(SS5      SS/5        U R                  U" S)SS5      SS/5        U R                  U" S*SS5      SS/5        U R                  U" S+SS5      SS/5        U R                  U" S,SS5      SS05        U R                  U" S-SSSS5      SSS.5        U R                  U" S.SSSS5      SSS.5        U R                  U" S/SSSS5      SSS.5        U R                  U" S0SSSS5      SSS.5        U R                  [        US[
        5        U R                  [        US	[
        5        U R                  [        US[
        5        U R                  [        US[
        5        U R                  [        USS[
        5        U R                  [        US[
        S5        U R                  [        USS[
        5        U R                  [        US[
        S5        U R                  [        USS[
        5        U R                  [        US[
        S5        U R                  [        USS[
        5        U R                  [        US[
        S5        g )1Nr   z()r"   z[]z{}z()[]{}Or[   z(O)r[   z[O]z{O}OOrd   rc   z(OO)z[OO]z{OO}z{OOOO}      )r[   r   z((O)))r   z((OO)))rc   z 	,:zO,z   O   z	O	zO,OzO, OzO,	OzO OzO	Oz(O,O)z(O, O,)z	 ( O O ) z		(	O	O	)	z[O,O]z[O, O,]z	 [ O O ] z	 [	O	O	] z{O:O}z	{O:O,O:O}z{O: O, O: O,}z { O O O O } z	{	O	O	O	O	}	)r   py_buildvaluer6   r9   r   NULL)r$   
buildvalues     r   test_buildvalueCAPITest.test_buildvalue2  s   ,,
B.D)2.D)2.D)2.H-B|<C+Q/E1-t4E1-s3+z5!<D!Q/8FAq16:FAq1Aq6:FAq1Aq6:HaAq9qQ<HGQ/9Ha3Y?G,d3D!,a0Iq115GQ/3E1a0&9FAq16:GQ2F;E1a0&9FAq16:GQ2F;Iq!4f=KA6?$4a;VDGQ2QF;Iq!4q!f=KA6A?NAq9Aq6BGQ2QF;KAq!<!lKOQ1a@aA,OOQ1a@aA,O$:Aq!QGQSTV+z3=+z5$?+z5$?+z5$?+z4DA+z4qA+z61dC+z64C+z61dC+z64C+z61dC+z64Cr   c                    [         R                  nSSK JnJnJnJnJnJn  U R                  U" SU5      U5        U R                  U" SU5      U5        U R                  U" SU5      U5        U R                  U" SU5      U5        U R                  U" SU5      U5        U R                  U" SU5      U5        U R                  U" SS5      S5        U R                  U" SS	5      S	5        U R                  U" S
S5      S5        U R                  U" S[        S5      5      S5        U R                  U" SS5      S5        U R                  U" SS5      S5        U R                  U" SS5      S5        U R                  U" SS5      [        S5      5        U R                  U" SS5      [        S5      5        U R                  U" S[        R                  5      [        [        R                  5      5        U R                  [        USS5        U R                  [        US[        R                  S-   5        U R                  [        USSS5        U R                  [        USSS5        U R                  [        USSSS5        g )Nr   )SHRT_MINSHRT_MAX	USHRT_MAXINT_MININT_MAXUINT_MAXr{   IhHb   iB   cA   A          Cr[   z(C )ird   z[C ]iz{Ci }ir   )r   py_buildvalue_intsr   r   r   r   r   r   r6   ordchrrw   
maxunicoder9   rQ   )r$   r   r   r   r   r   r   r   s           r   test_buildvalue_intsCAPITest.test_buildvalue_intsj  s   11
WWC17;C17;C2H=C2H=C2H=C3Y?C-s3C.5C-s3CS2D9C-w7C-w7C,g6C-s3x8C-s3x8C8#cnn:MN*j#r:*j#s~~a7GH 	*j'2qA*j'2qA*j(B1Er   c                 ,    [         R                  5         g rP   )r   test_buildvalue_Nr#   s    r   r   CAPITest.test_buildvalue_N  s    ##%r   c                 r    [         R                  " U5      n[        SU5      u  p#nU R                  US5        g )NrA   s`   _testcapimodule\.c:[0-9]+: _Py_NegativeRefcount: Assertion failed: object has negative ref count)rB   rC   r   r   r   s        r   check_negative_refcount CAPITest.check_negative_refcount  s7     t$,T48;	<r   negative_refcountz"need _testcapi.negative_refcount()c                 *    SnU R                  U5        g )Nz
            import _testcapi
            from test import support

            with support.SuppressCrashReport():
                _testcapi.negative_refcount()
        r   r$   rG   s     r   test_negative_refcountCAPITest.test_negative_refcount  s     	$$T*r   decref_freed_objectz$need _testcapi.decref_freed_object()zuse after free on purposeT)addressmemoryubc                 *    SnU R                  U5        g )Nz
            import _testcapi
            from test import support

            with support.SuppressCrashReport():
                _testcapi.decref_freed_object()
        r   r   s     r   test_decref_freed_object!CAPITest.test_decref_freed_object  s    
 	$$T*r   c                 J    SSK Jn  S n[        S5       H  nU" U45      nM     g )Nr   MyList  )r   r   range)r$   r   Lr{   s       r   test_trashcan_subclassCAPITest.test_trashcan_subclass  s%     	%tAtA r   cpuc                 .    U R                  [        5        g rP   )do_test_trashcan_python_classlistr#   s    r   test_trashcan_python_class1$CAPITest.test_trashcan_python_class1  s    **40r   c                 2    SSK Jn  U R                  U5        g )Nr   r   )r   r   r  )r$   r   s     r   test_trashcan_python_class2$CAPITest.test_trashcan_python_class2  s    $**62r   c                      " S SU5      nS Hi  nS n[        S5       H  nU" U45      nXTl        M     U(       a  U4nU R                  UR                  S5        AU R	                  UR                  S5        Mk     g )Nc                   8   ^  \ rS rSrSrU 4S jrU 4S jrSrU =r$ )6CAPITest.do_test_trashcan_python_class.<locals>.PyListi  r   c                 J   > T=R                   S-  sl         [        TU ]  " U6   g rZ   )numsuper__init__)r$   args	__class__s     r   r  ?CAPITest.do_test_trashcan_python_class.<locals>.PyList.__init__  s    " $'r   c                 0   > T=R                   S-  sl         g rZ   )r  r$   r  s    r   __del__>CAPITest.do_test_trashcan_python_class.<locals>.PyList.__del__  s    "r   r"   )	r)   r*   r+   r,   r  r  r  r/   __classcell__r  s   @r   PyListr    s     C(# #r   r  )r   r[   i   r   )r  attrassertGreaterr  r6   )r$   baser  parityr  r{   s         r   r  &CAPITest.do_test_trashcan_python_class  sv    	#T 	# FA 5\A4L " Dvzz1-VZZ+ r   c                     U R                  [        R                  R                  S5        U R                  [        R                  R                  S5        g )Nsomedocz(arg1, arg2))r6   r   HeapDocCTyper8   r   r#   s    r   &test_heap_ctype_doc_and_text_signature/CAPITest.test_heap_ctype_doc_and_text_signature  s<     	//77C//BBNSr   c                 X    U R                  [        R                  R                  S 5        g rP   )r6   r   NullTpDocTyper8   r#   s    r   test_null_type_docCAPITest.test_null_type_doc  s    0088$?r   c                 4    " S S[         R                  5      nU" 5       n[        R                  " U5      nU R	                  UR
                  S5        U R	                  UR                  S5        AU R	                  US-
  [        R                  " U5      5        g )Nc                   (   ^  \ rS rSrU 4S jrSrU =r$ )`CAPITest.test_subclass_of_heap_gc_ctype_with_tpdealloc_decrefs_once.<locals>.HeapGcCTypeSubclassi  c                 0   > SU l         [        TU ]	  5         g Nrq   value2r  r  r  s    r   r  iCAPITest.test_subclass_of_heap_gc_ctype_with_tpdealloc_decrefs_once.<locals>.HeapGcCTypeSubclass.__init__        "r   r3  r)   r*   r+   r,   r  r/   r  r  s   @r   HeapGcCTypeSubclassr/        # #r   r8  rj   rq   r[   )r   HeapGcCTyperw   getrefcountr6   valuer3  )r$   r8  subclass_instancetype_refcnts       r   :test_subclass_of_heap_gc_ctype_with_tpdealloc_decrefs_onceCCAPITest.test_subclass_of_heap_gc_ctype_with_tpdealloc_decrefs_once  s    	#)"7"7 	#
 01oo&9: 	*00"5*1126 q#//:M*NOr   c                   ^^  " S S[         R                  5      m " UU4S jST5      mT" 5       n[        R                  " T5      n[        R                  " T5      nU R	                  UR
                  S5        U R	                  UR                  S5        A[        R                  (       a  U R	                  UTR                  5        OU R	                  US-
  TR                  5        U R	                  US-   TR                  5        U R	                  US-
  [        R                  " T5      5        U R	                  U[        R                  " T5      5        g )Nc                   (   ^  \ rS rSrU 4S jrSrU =r$ )dCAPITest.test_subclass_of_heap_gc_ctype_with_del_modifying_dunder_class_only_decrefs_once.<locals>.Ai  c                 0   > SU l         [        TU ]	  5         g r1  r2  r  s    r   r  mCAPITest.test_subclass_of_heap_gc_ctype_with_del_modifying_dunder_class_only_decrefs_once.<locals>.A.__init__  r5  r   r6  r7  r  s   @r   r   rC    r9  r   r   c                   8   >^  \ rS rSrU 4S jrUU4S jrSrU =r$ )dCAPITest.test_subclass_of_heap_gc_ctype_with_del_modifying_dunder_class_only_decrefs_once.<locals>.Bi   c                 "   > [         TU ]  5         g rP   )r  r  r  s    r   r  mCAPITest.test_subclass_of_heap_gc_ctype_with_del_modifying_dunder_class_only_decrefs_once.<locals>.B.__init__  s     "r   c                    > TU l         [        R                  " T5      Tl        [        R                  " T5      Tl        g rP   )r  rw   r;  refcnt_in_del)r$   r   r   s    r   r  lCAPITest.test_subclass_of_heap_gc_ctype_with_del_modifying_dunder_class_only_decrefs_once.<locals>.B.__del__  s*    !""%//!"4"%//!"4r   r  )r)   r*   r+   r,   r  r  r/   r  )r  r   r   s   @r   r   rG     s    #5 5r   r   rj   rq   r[   )
r   r:  rw   r;  r6   r<  r3  r   r   rK  )r$   r=  r>  new_type_refcntr   r   s       @@r   Ptest_subclass_of_heap_gc_ctype_with_del_modifying_dunder_class_only_decrefs_onceYCAPITest.test_subclass_of_heap_gc_ctype_with_del_modifying_dunder_class_only_decrefs_once  s   	#	%% 	#
	5 	5 	5 Cooa(//!, 	*00"5*1126  [!//:[1_aoo>1,aoo> 	q#//!*<= 	#//!*<=r   c                 Z   [         R                  5       nSUl        U R                  UR                  S5        U R                  UR                  UR
                  5        U R                  UR                  SS05        [         R                  5       nU R                  0 UR
                  5        g Nr   foo)r   HeapCTypeWithDictrR  r6   dictobj__dict__r<   s     r   test_heaptype_with_dict CAPITest.test_heaptype_with_dict"  s}    **,2&t}}5r{3**,T]]+r   c                 z   [         R                  5       nSUl        U R                  UR                  S5        U R                  UR                  SS05        [         R                  5       nU R                  0 UR                  5        [         R                  5       n[         R                  5       nX2l        X#l        AAg rQ  )r   HeapCTypeWithManagedDictrR  r6   rU  r   a)r$   r=   rZ  r   s       r   test_heaptype_with_managed_dict(CAPITest.test_heaptype_with_managed_dict,  s    1132&4113T]]+..0..0qr   c                 R     " S S[         R                  5      nU" 5       nX"l        Ag )Nc                       \ rS rSrSrg)2CAPITest.test_sublclassing_managed_dict.<locals>.Ci=  r"   Nr)   r*   r+   r,   r/   r"   r   r   r   r_  =      r   r   )r   rY  spam)r$   r   r{   s      r   test_sublclassing_managed_dict'CAPITest.test_sublclassing_managed_dict;  s%    		22 	 Cr   c                 Z   [         R                  5       nSUl        U R                  UR                  S5        U R                  UR                  UR
                  5        U R                  UR                  SS05        [         R                  5       nU R                  0 UR
                  5        g rQ  )r   HeapCTypeWithNegativeDictrR  r6   rT  rU  r<   s     r    test_heaptype_with_negative_dict)CAPITest.test_heaptype_with_negative_dictD  s}    2242&t}}5r{3224T]]+r   c                     [         R                  5       n[        R                  " U5      nU R	                  U" 5       U5        U R	                  UR
                  U5        g rP   )r   HeapCTypeWithWeakrefweakrefrefr6   weakreflistr$   r=   rl  s      r   test_heaptype_with_weakref#CAPITest.test_heaptype_with_weakrefN  sF    --/kk$%))3/r   c                     [         R                  5       n[        R                  " U5      nU R	                  U" 5       U5        g rP   r   HeapCTypeWithManagedWeakrefrk  rl  r6   rn  s      r   "test_heaptype_with_managed_weakref+CAPITest.test_heaptype_with_managed_weakrefT  s0    446kk$%r   c                      " S S[         R                  5      nU" 5       n[        R                  " U5      nU R	                  U" 5       U5        g )Nc                       \ rS rSrSrg)5CAPITest.test_sublclassing_managed_weakref.<locals>.Ci[  r"   Nr`  r"   r   r   r   rx  [  ra  r   r   rr  )r$   r   r=   rl  s       r   !test_sublclassing_managed_weakref*CAPITest.test_sublclassing_managed_weakrefY  s=    		55 	 skk$%r   c                     " S S[         R                  [         R                  5      n " S S[         R                  [         R                  5      nX4 Hp  nU" 5       n[        R                  " U5      nU R                  U" 5       U5        XDl        A[        R                  " U" 5       5      nU R                  U" 5       S 5        Mr     g )Nc                       \ rS rSrSrg)3CAPITest.test_sublclassing_managed_both.<locals>.C1id  r"   Nr`  r"   r   r   C1r}  d  ra  r   r~  c                       \ rS rSrSrg)3CAPITest.test_sublclassing_managed_both.<locals>.C2ig  r"   Nr`  r"   r   r   C2r  g  ra  r   r  )r   rs  rY  rk  rl  r6   rb  assertIs)r$   r~  r  clsr=   rl  s         r   test_sublclassing_managed_both'CAPITest.test_sublclassing_managed_bothb  s    	66	8Z8Z 		33Y5Z5Z 	 8C5D++d#CSUD)I++ce$CMM#%& r   c                 f    [         R                  5       n[        U5      nU R                  US5        g )Ns   1234)r   HeapCTypeWithBufferbytesr6   )r$   r=   r   s      r   test_heaptype_with_buffer"CAPITest.test_heaptype_with_buffers  s)    ,,.$KG$r   c                 T   [         R                  5       n[        R                  " [         R                  5      nU R	                  UR
                  S5        U R	                  UR                  S5        AU R	                  US-
  [        R                  " [         R                  5      5        g Nrj   rq   r[   )r   HeapCTypeSubclassrw   r;  r6   r<  r3  )r$   r=  r>  s      r   9test_c_subclass_of_heap_ctype_with_tpdealloc_decrefs_onceBCAPITest.test_c_subclass_of_heap_ctype_with_tpdealloc_decrefs_oncex  s}    %779ooi&A&AB 	*00"5*1126 q#//):U:U*VWr   c                 8   [         R                  5       n[        R                  " [         R                  5      n[        R                  " [         R                  5      nU R                  UR                  S5        U R                  UR                  S5        A[        R                  (       a+  U R                  U[         R                  R                  5        O-U R                  US-
  [         R                  R                  5        U R                  US-   [         R                  R                  5        U R                  US-
  [        R                  " [         R                  5      5        U R                  U[        R                  " [         R                  5      5        g r  )r   HeapCTypeSubclassWithFinalizerrw   r;  r  r6   r<  r3  r   r   rK  )r$   r=  r>  rM  s       r   Otest_c_subclass_of_heap_ctype_with_del_modifying_dunder_class_only_decrefs_onceXCAPITest.test_c_subclass_of_heap_ctype_with_del_modifying_dunder_class_only_decrefs_once  s   %DDFooi&N&NO//)*E*EF 	*00"5*1126   [)*R*R*`*`a[1_i.V.V.d.de1,i.I.I.W.WX 	q#//):b:b*cd 	#//):U:U*VWr   c                     [         R                  5       nU R                  UR                  S5        SUl        U R                  UR                  S5        U?U R                  UR                  S5        g )Nrj   rl   r   )r   HeapCTypeSetattrr6   pvaluer<  )r$   objs     r   test_heaptype_with_setattro$CAPITest.test_heaptype_with_setattro  sX    ((*R(	R(IQ'r   c                    [         R                  nU R                  [        U[        5      5        [         R                  U5      nU R                  U[        5        U R                  UR                  S5        U R                  [	        U5      U5        U" SS0 5      nU R                  U[        5        U R                  UR                  S5        g )NHeapCTypeViaMetaclassPyClassViaMetaclassr"   )
r   HeapCTypeMetaclassr7   
issubclasstypepytype_fromspec_metaassertIsInstancer6   r)   r  r$   	metaclassts      r   #test_heaptype_with_custom_metaclass,CAPITest.test_heaptype_with_custom_metaclass  s    00	
9d34 **95a&%<=d1gy) +R4a&%:;r   c                    [         R                  nU R                  [        U[        5      5        [         R                  U5      nU R                  U[        5        U R                  UR                  S5        U R                  [	        U5      U5        U R                  [        S5         U" SS0 5        S S S 5        g ! , (       d  f       g = f)Nr  zcannot create .* instancesr  r"   )r   HeapCTypeMetaclassNullNewr7   r  r  r  r  r6   r)   r  r   r   r  s      r   ,test_heaptype_with_custom_metaclass_null_new5CAPITest.test_heaptype_with_custom_metaclass_null_new  s    77	
9d34 **95a&%<=d1gy) ##I/KL+R4 MLLs   (B<<
C
c                    [         R                  nU R                  [        [         R                  [        5      5        SnU R                  [        U5         [         R                  U5      nS S S 5        g ! , (       d  f       g = f)Nz1Metaclasses with custom tp_new are not supported.)r   HeapCTypeMetaclassCustomNewr7   r  r  r   r   r  )r$   r  rL   r  s       r   .test_heaptype_with_custom_metaclass_custom_new7CAPITest.test_heaptype_with_custom_metaclass_custom_new  sW    99	
9#H#H$OPA##Is3..y9A 433s   A55
Bc                 $   [         R                  n " S SUS9n[        R                  " S[        45         [         R                  U5      nS S S 5        U R                  [        WU5      5        U R                  X15        g ! , (       d  f       N;= f)Nc                       \ rS rSrSrg)FCAPITest.test_heaptype_with_custom_metaclass_deprecation.<locals>.Basei  r"   Nr`  r"   r   r   Baser    ra  r   r  )r  z8.* _testcapi.Subclass .* custom tp_new.*in Python 3.14.*)	r   r  r   check_warningsDeprecationWarningmake_type_with_baser7   r  r  )r$   r  r  subs       r   /test_heaptype_with_custom_metaclass_deprecation8CAPITest.test_heaptype_with_custom_metaclass_deprecation  sw    99	
	Y 	 ++KM_` //5C 	
3-.c- s   B
Bc                 `   U R                  [        5          " S S[        R                  [        R                  5      nS S S 5        U R                  [        5          " S S[        R                  [        R                  5      nS S S 5        g ! , (       d  f       NU= f! , (       d  f       g = f)Nc                       \ rS rSrSrg)MCAPITest.test_multiple_inheritance_ctypes_with_weakref_or_dict.<locals>.Both1i  r"   Nr`  r"   r   r   Both1r        r   r  c                       \ rS rSrSrg)MCAPITest.test_multiple_inheritance_ctypes_with_weakref_or_dict.<locals>.Both2i  r"   Nr`  r"   r   r   Both2r    r  r   r  )r9   r   r   rj  rS  )r$   r  r  s      r   5test_multiple_inheritance_ctypes_with_weakref_or_dict>CAPITest.test_multiple_inheritance_ctypes_with_weakref_or_dict  ss    y)	66	8S8S  * y)	33Y5S5S  *) *) *)s   )B)B
B
B-c                 F   U R                  [        5          " S S[        R                  [        5      nS S S 5        U R                  [        5          " S S[        R
                  [        5      nS S S 5         " S S[        R                  [        5      n " S S[        R                  [        5      nU" 5       nUR                  S	5        [        UR                  5        U" 5       nUR                  S	5        [        UR                  5        [        R                  [        R                  4 HK  n[        R                  [        R
                  4 H  n " S
 SXg5      nM      " S SX65      n	 " S SXF5      n
MM     g ! , (       d  f       GNQ= f! , (       d  f       GN'= f)Nc                       \ rS rSrSrg)\CAPITest.test_multiple_inheritance_ctypes_with_weakref_or_dict_and_other_builtin.<locals>.C1i  r"   Nr`  r"   r   r   r~  r    r  r   r~  c                       \ rS rSrSrg)\CAPITest.test_multiple_inheritance_ctypes_with_weakref_or_dict_and_other_builtin.<locals>.C2i  r"   Nr`  r"   r   r   r  r    r  r   r  c                       \ rS rSrSrg)\CAPITest.test_multiple_inheritance_ctypes_with_weakref_or_dict_and_other_builtin.<locals>.C3i  r"   Nr`  r"   r   r   C3r    ra  r   r  c                       \ rS rSrSrg)\CAPITest.test_multiple_inheritance_ctypes_with_weakref_or_dict_and_other_builtin.<locals>.C4i  r"   Nr`  r"   r   r   C4r    ra  r   r  r   c                       \ rS rSrSrg)[CAPITest.test_multiple_inheritance_ctypes_with_weakref_or_dict_and_other_builtin.<locals>.Si  r"   Nr`  r"   r   r   Sr    s    r   r  c                       \ rS rSrSrg)\CAPITest.test_multiple_inheritance_ctypes_with_weakref_or_dict_and_other_builtin.<locals>.B1i  r"   Nr`  r"   r   r   B1r    r  r   r  c                       \ rS rSrSrg)\CAPITest.test_multiple_inheritance_ctypes_with_weakref_or_dict_and_other_builtin.<locals>.B2i  r"   Nr`  r"   r   r   B2r    r  r   r  )r9   r   r   rS  r  rj  rY  rs  appendr   rU  __weakref__)r$   r~  r  r  r  r=   r  cls2r  r  r  s              r   Gtest_multiple_inheritance_ctypes_with_weakref_or_dict_and_other_builtinPCAPITest.test_multiple_inheritance_ctypes_with_weakref_or_dict_and_other_builtin  s(   y)Y00$  * y)Y33T  *	33T 		66 	 tADMMtAD66	8]8]^C"44i6T6TU  VR R  _+ *) *)s   E?F?
F
F c                    [        S5       HN  nU R                  US9   U R                  [        5         [        R                  U5        S S S 5        S S S 5        MP     g ! , (       d  f       N= f! , (       d  f       Ms  = f)Nrd   )variant)r  subTestr9   r   r   create_type_from_repeated_slots)r$   r  s     r   (test_pytype_fromspec_with_repeated_slots1CAPITest.test_pytype_fromspec_with_repeated_slots  sW    QxGg.&&{3==gF 4 /.  33 /.s"   A0A
A0
A-)A00
A?	categoryc                    [         R                  " SSS9   " S S5      nU R                  [        5         [        R                  U5      nS S S 5        W" 5       nU R                  UR                  5       S5        U R                  [        S5         S Ul        S S S 5        U R                  UR                  5       S5        S	 Ul        U R                  UR                  5       S
5        g ! , (       d  f       N= f! , (       d  f       Nh= f)Nz-creating immutable classes with mutable bases)r   rn   )removec                       \ rS rSrS rSrg)CCAPITest.test_immutable_type_with_mutable_base.<locals>.MutableBasei  c                     g)Noriginalr"   r#   s    r   r   HCAPITest.test_immutable_type_with_mutable_base.<locals>.MutableBase.meth  s    !r   r"   N)r)   r*   r+   r,   r   r/   r"   r   r   MutableBaser    s    "r   r  r  z-cannot set 'meth' attribute of immutable typec                     g)N
overriddenr"   r#   s    r   <lambda>@CAPITest.test_immutable_type_with_mutable_base.<locals>.<lambda>#  s    ,r   c                     g)Nchangedr"   r#   s    r   r  r  '  s    	r   r  )
warnings_deprecatedassertWarnsr  r   make_immutable_type_with_baser6   r   r   r   )r$   r  ImmutableSubclassinstances       r   %test_immutable_type_with_mutable_base.CAPITest.test_immutable_type_with_mutable_base  s     	;G	M	" 	" 01 ) G G! 2 %&*5 ##?A &?"A 	*5 2)4! 21A As   C*	C;*
C8;
D	c           	         SSK Jn  SnSn " S S5      nSnU H  u  pgnU R                  XgUS9   U R                  U" X&5      U5        U R                  U" U* U5      S	U-   5        U R                  U" U" U5      U5      U5        U R                  U" X65      U5        U R                  U" U* U5      S	U-   5        U R                  U" U" U5      U5      U5        S S S 5        M     U R	                  [
        X" S
5      S5        U R	                  [
        X" S5      S5        U R	                  [
        US
S5        U R	                  [
        USS5        U R	                  [        USS5        g ! , (       d  f       GM^  = f)Nr   )pynumber_tobase{               c                        \ rS rSrS rS rSrg)*CAPITest.test_pynumber_tobase.<locals>.IDXi.  c                     Xl         g rP   val)r$   r  s     r   r  3CAPITest.test_pynumber_tobase.<locals>.IDX.__init__/  s    r   c                     U R                   $ rP   r  r#   s    r   	__index__4CAPITest.test_pynumber_tobase.<locals>.IDX.__index__1  s    xxr   r  N)r)   r*   r+   r,   r  r  r/   r"   r   r   IDXr  .  s     r   r  ))rd   	0b1111011C0b10000000000000000000000000000000000000000000000000000000000000000)rh   0o1730o2000000000000000000000)rj   12318446744073709551616)   0x7b0x10000000000000000)r!  stlt-g     ^@rj   r  )r   r  r  r6   r9   r   r   )	r$   r  small_numberlarge_numberr  
test_casesr!  small_targetlarge_targets	            r   test_pynumber_tobaseCAPITest.test_pynumber_tobase*  s`   -	  	 ;
 1;,D4\J  !DlS  ,!Es\GYZ  \1BD!I<X  !DlS  ,!Es\GYZ  \1BD!I<X KJ 1; 	)_c%j"E)_c%j"E)_eR@)_eR@+Q? KJs   B)E''
E7	c                 P    [         R                  5       nU R                  US5        g Nz<NULL>)r   pyobject_repr_from_nullr6   r$   ss     r   test_pyobject_repr_from_null%CAPITest.test_pyobject_repr_from_nullH  s     --/H%r   c                 P    [         R                  5       nU R                  US5        g r  )r   pyobject_str_from_nullr6   r  s     r   test_pyobject_str_from_null$CAPITest.test_pyobject_str_from_nullL  s     ,,.H%r   c                 P    [         R                  5       nU R                  US5        g )Ns   <NULL>)r   pyobject_bytes_from_nullr6   r  s     r   test_pyobject_bytes_from_null&CAPITest.test_pyobject_bytes_from_nullP  s     ..0I&r   c                     [         R                  nSnU" U5      n[        USS5      nU R                  UR                  UR                  5        g )Ns%   # -*- coding: latin1 -*-
print('¤')
z<string>exec)r   Py_CompileStringcompiler6   	co_consts)r$   _compilerG   resultexpecteds        r   test_Py_CompileStringCAPITest.test_Py_CompileStringT  sE    --?$4V4))8+=+=>r   c                 z   [         R                  " S5      n/ n[        [        S5      (       a  UR	                  S5        [
        R                  S:w  a  UR	                  S5        U H@  nU R                  US9   U R                  [        UR                  U5      5        S S S 5        MB     g ! , (       d  f       MT  = f)Nctypesget_native_idPyThread_get_thread_native_idntPy_FrozenMain)name)
r   import_modulehasattr_threadr  osr:  r  r7   	pythonapi)r$   r5  namesr:  s       r   test_export_symbolsCAPITest.test_export_symbols\  s     ,,X6 7O,,LL89 77d?LL)D4((8(8$ ?@ )( ((s   8&B++
B:	c                 4    " S S5      nU" 5       n[         R                  U5        U R                  UR                  0 5        U" 5       nU R                  UR                  SS05        [         R                  U5        U R                  UR                  0 5        g )Nc                       \ rS rSrS rSrg)+CAPITest.test_clear_managed_dict.<locals>.Ciu  c                     SU l         g rZ   rZ  r#   s    r   r  4CAPITest.test_clear_managed_dict.<locals>.C.__init__v  s	    r   rG  N)r)   r*   r+   r,   r  r/   r"   r   r   r   rE  u  s    r   r   rZ  r[   )r   clear_managed_dictr6   rU  )r$   r   r   s      r   test_clear_managed_dict CAPITest.test_clear_managed_dicts  sx    	 	 C$$Q'R(Cc!W-$$Q'R(r   c                 0   SS K nS n[        R                  U5      nU R                  X1R                  5        U R                  X2R                  5        U R                  [        5         [        R                  S 5        S S S 5        g ! , (       d  f       g = f)Nr   c                      g rP   r"   r"   r   r   some-CAPITest.test_function_get_code.<locals>.some      r   )	typesr   function_get_coder  CodeTyper6   __code__r9   r   )r$   rQ  rN  rG   s       r   test_function_get_codeCAPITest.test_function_get_code  sh    	 **40dNN3}}-{+''- ,++s   (B
Bc                    S n[         R                  U5      nU R                  U[        5        U R	                  X!R
                  5        U R                  [        5         [         R                  S 5        S S S 5        g ! , (       d  f       g = f)Nc                      g rP   r"   r"   r   r   rN  0CAPITest.test_function_get_globals.<locals>.some  rP  r   )r   function_get_globalsr  dictr6   __globals__r9   r   )r$   rN  globals_s      r   test_function_get_globals"CAPITest.test_function_get_globals  se    	 11$7h-#3#34{+**40 ,++   A>>
Bc                    S n[         R                  U5      nU R                  U[        5        U R	                  X!R
                  5        U R                  [        5         [         R                  S 5        S S S 5        g ! , (       d  f       g = f)Nc                      g rP   r"   r"   r   r   rN  /CAPITest.test_function_get_module.<locals>.some  rP  r   )r   function_get_moduler  r   r6   r*   r9   r   )r$   rN  modules      r   test_function_get_module!CAPITest.test_function_get_module  sc    	 ..t4fc*1{+))$/ ,++r`  c                 &     SSS.S jjn[         R                  U5      nU R                  US5        U R                  X!R                  5        U R	                  [
        5         [         R                  S 5        S S S 5        g ! , (       d  f       g = f)NTkw2c                   g rP   r"   	pos_only1	pos_only2zerooptionalkw1rj  s         r   rN  1CAPITest.test_function_get_defaults.<locals>.some       r   pr   N)r   function_get_defaultsr6   __defaults__r9   r   r$   rN  defaultss      r   test_function_get_defaults#CAPITest.test_function_get_defaults  su    !$!	 	 2248>2#4#45{+++D1 ,++s   #B
Bc                      SSS.S jjnSnU R                  [        R                  U5      U5        U R                  UR                  U5        U R	                  [
        5         [        R                  US5        S S S 5        U R                  [        R                  U5      U5        U R                  UR                  U5        U R	                  [
        5         [        R                  SS5        S S S 5        U R                  [        R                  U5      U5        U R                  UR                  U5        Sn[        R                  X5        U R                  [        R                  U5      U5        U R                  UR                  U5        Sn[        R                  X5        U R                  [        R                  U5      U5        U R                  UR                  U5         " S S	[        5      nU" S
SS/S 45      n[        R                  X5        U R                  [        R                  U5      U5        U R                  UR                  U5        [        R                  US 5        U R                  [        R                  U5      S 5        U R                  UR                  S 5        g ! , (       d  f       GN?= f! , (       d  f       GN= f)NTri  c                   g rP   r"   rl  s         r   rN  1CAPITest.test_function_set_defaults.<locals>.some  rs  r   rt  r[   r"   )qr[   Nc                       \ rS rSrSrg)5CAPITest.test_function_set_defaults.<locals>.tuplesubi  r"   Nr`  r"   r   r   tuplesubr    s    sr   r  rc   rZ  r   )r6   r   rv  rw  r9   r   function_set_defaultstuple)r$   rN  old_defaultsnew_defaultsr  s        r   test_function_set_defaults#CAPITest.test_function_set_defaults  s3   !$!	 	 &88>M**L9{+++D!4 ,88>M**L9{+++Ar2 ,88>M**L9%'';88>M**L9 '';88>M**L9"u"#sT :;'';88>M**L9 	''d388>E**D1A ,+
 ,+s   $J3K3
K
Kc                 *     SSS.S jjn[         R                  U5      nU R                  USS05        U R                  X!R                  5        U R	                  [
        5         [         R                  S 5        S S S 5        g ! , (       d  f       g = f)NTri  c                   g rP   r"   rl  s         r   rN  4CAPITest.test_function_get_kw_defaults.<locals>.some  rs  r   rj  rt  )r   function_get_kw_defaultsr6   __kwdefaults__r9   r   rx  s      r   test_function_get_kw_defaults&CAPITest.test_function_get_kw_defaults  sy    !$!	 	 55d;E4=1#6#67{+..t4 ,++s   %B
Bc                      S	SS.S jjnSS0nU R                  [        R                  U5      U5        U R                  UR                  U5        U R	                  [
        5         [        R                  US5        S S S 5        U R                  [        R                  U5      U5        U R                  UR                  U5        U R	                  [
        5         [        R                  S0 5        S S S 5        U R                  [        R                  U5      U5        U R                  UR                  U5        SS0n[        R                  X5        U R                  [        R                  U5      U5        U R                  UR                  U5        0 n[        R                  X5        U R                  [        R                  U5      U5        U R                  UR                  U5         " S S[        5      nU" SS 05      n[        R                  X5        U R                  [        R                  U5      U5        U R                  UR                  U5        [        R                  US 5        U R                  [        R                  U5      S 5        U R                  UR                  S 5        g ! , (       d  f       GN>= f! , (       d  f       GN= f)
NTri  c                   g rP   r"   rl  s         r   rN  4CAPITest.test_function_set_kw_defaults.<locals>.some  rs  r   rj  r[   r[   rd   r   c                       \ rS rSrSrg)7CAPITest.test_function_set_kw_defaults.<locals>.dictsubi  r"   Nr`  r"   r   r   dictsubr    s    Sr   r  rt  )r6   r   r  r  r9   r   function_set_kw_defaultsr[  )r$   rN  r  r  r  s        r   test_function_set_kw_defaults&CAPITest.test_function_set_kw_defaults  s5   !$!	 	 t};;DA<P,,l;{+..tQ7 ,;;DA<P,,l;{+..q"5 ,;;DA<P,,l;y)**4>;;DA<P,,l; **4>;;DA<P,,l; d t}-**4>;;DA<P,,l; 	**46;;DA4H,,d3A ,+
 ,+s   &J4K4
K
Kc                 P    " S S[         R                  5      nU" 5       nSUl        SUl        SUl        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U?U R                  UR                  5        g )Nc                       \ rS rSrSrSrg);CAPITest.test_unstable_gc_new_with_extra_data.<locals>.Datai+  )xyr"   N)r)   r*   r+   r,   	__slots__r/   r"   r   r   Datar  +  s    "Ir   r  rj   rq      )r   ObjExtraDatar  r  extrar6   assertIsNone)r$   r  ds      r   $test_unstable_gc_new_with_extra_data-CAPITest.test_unstable_gc_new_with_extra_data*  s    	#9)) 	# Fb!b!"%G!''"r   c                 <    " S S5      nSSK JnJnJnJn  SSKJn  [         R                  5       n[        SSSS4USS	S
S
4USSSS4U[         S3[        SS44 H  u  ppnU R                  [        U5      S9   U R                  U" U5      U	5        U R                  U" U5      U
5        U R                  U" U5      U5        U R                  U" U5      U5        S S S 5        M     SUl        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        SUl	        SUl        U R                  U" U5      [         S35        U R                  U" U5      [        5        U R                  U" U5      S5        U R                  U" U5      S5        SUl        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        SUl        U R                  U" U5      S5        SUl        U R                  U" U5      S5        SUl        U R                  U" U5      S5        g ! , (       d  f       GMA  = f)Nc                       \ rS rSrSrg)+CAPITest.test_get_type_name.<locals>.MyTypei9  r"   Nr`  r"   r   r   MyTyper  9  ra  r   r  r   )get_type_nameget_type_qualnameget_type_fullyqualnameget_type_module_name)OrderedDictintbuiltinszcollections.OrderedDictcollectionsr  z_testcapi.HeapTypeNameTyper   HeapTypeNameTypez,.CAPITest.test_get_type_name.<locals>.MyTyper  r  test_moduleztest_module.HeapTypeNameTypemy_namemy_qualnamez.my_qualname	my_modulezmy_module.my_qualname__main__r  )r   r  r  r  r  r  r  get_heaptype_for_namer  r)   r  reprr6   r*   r+   )r$   r  r  r  r  r  r  htr  fullnamemodnamequalnamer:  s                r   test_get_type_nameCAPITest.test_get_type_name8  s   	 		: 	: 	,,,.	
 &	
 )	!
 zEF:	!7
2C7d, $s),  !7!<hG  !5c!:GD  !23!7B  s!3T:	 -,-7
: &/35ST-b1=A*2.0BCr*,>? $+/7H:\9RS-f5x@*62MBv.	: (/79PQ-f5{C*62MBv.	: '/7G&/7G/7GG -,s   9A!J
J	c                 v    S nU" 5       nU R                  [        R                  U5      UR                  5        g )Nc               3      #    S v   g 7frP   r"   r"   r   r   genf(CAPITest.test_gen_get_code.<locals>.genf  s     E   )r6   r   gen_get_codegi_code)r$   r  gens      r   test_gen_get_codeCAPITest.test_gen_get_code~  s+    f//4ckkBr   r"   N)Rr)   r*   r+   r,   r>   r   requires_subprocessrM   rS   r   
skipUnlessr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r<  r   r   skip_if_sanitizerr   r  requires_resourcer	  r  r  r'  r+  r
   r?  rN  rV  r[  rc  rg  ro  rt  ry  r  r  r  r  r  r  r  r  r  r  r  r  r   ignore_warningsr  r  r  r   r$  r(  r2  rA  rJ  rU  r^  rf  rz  r  r  r  r  r  r  r/   r"   r   r   r1   r1   O   s   	[   " #*S )+UVk Wk" )+UVp Wp __)MO''O''R0"3K: HDJ<6DpF@&< ,?@=?+?+ ,AB?A:'+DTC+CA+ u%1 &1 u%3 &3,8 __)MOTOT@ P  P" &>  &>P,,0&
&'"%

XX6(<5:."@G $$.@A5 B56@<&&'?A.).	1	02$/2b5$/4b#CHLCr   r1   c                   j    \ rS rSrSr\S 5       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)TestHeapTypeRelativei  z-Test API for extending opaque types (PEP 697)c                 @  ^  U 4S jn[        SSSSSSSS	[        R                  [        R                  S-
  [        R                  S-   15      nU H9  nU H0  n[        UUS
9nT R                  " S0 UD6   U" S0 UD6  S S S 5        M2     M;     g ! , (       d  f       MH  = f)Nc                 |  > [         R                  " X* 5      u  p#pEpgUS:X  a9  T
R                  UR                  UR                  5        T
R                  US5        OSUR                  S4US4Xa-   S4Xg-   S4UR                  S4/n[	        U[
        R                  " S5      S9n	T
R                  XS	U	 3S
9  T
R                  UR                  Xg-   5        T
R                  Xq-
  [         R                  5        T
R                  U[         R                  -  S5        T
R                  U[         R                  -  S5        g )Nr   )r   zstart of objectzend of base datazsubclass datazend of requested subcls datazend of reserved subcls datazend of object)keyz$Offsets not in expected order, got: rL   )	_testlimitedcapimake_sized_heaptypesr6   __basicsize__sortedoperator
itemgetter
assertLessALIGNOF_MAX_ALIGN_T)extra_base_size
extra_sizer  Subr  data_ptrdata_offset	data_sizeoffsetsordered_offsetsr$   s             r   check@TestHeapTypeRelative.test_heaptype_relative_sizes.<locals>.check  sN    55#[2 BDx;
 Q  !3!3S5F5FG  A.
 +'');< /2 -/MN ,.KL&&8 #)h6I6I!6L"M  >>OP ! R
   !2!2K4KL 	 6 0 D DF [+;+O+OOQRSY)9)M)MMqQr   r   r[   rd   r   r   rg   rh   r  r  r  r"   )r  r   r  r[  r  )r$   r  sizesr  r  r  s   `     r   test_heaptype_relative_sizes1TestHeapTypeRelative.test_heaptype_relative_sizes  s    "	RH 1aAq!S,,,,Q.,,Q.0 1  %O#
O'13\\)D)MDM *) $  % *)s   4	B
Bc                 l    [         R                  SSS5      nU R                  [        U5      / SQ5        g)z2Make sure HeapCCollection works properly by itselfr[   rd   r   r  N)r   HeapCCollectionr6   r  )r$   
collections     r   test_HeapCCollection)TestHeapTypeRelative.test_HeapCCollection  s+    ..q!Q7
j)95r   c                 P   [        SSSSSSSS[        R                  [        R                  S-
  [        R                  S-   15      nU H  nU R                  US	9   [        R
                  " [        R                  U* SS5      nU" SSS5      nUR                  5         U R                  [        U5      / S
Q5        UR                  5       nU R                  [        U5      U5        U R                  [        U5      S1:*  SU< 35        SSS5        M     g! , (       d  f       M  = f)-Test HeapCCollection subclasses work properlyr   r[   rd   r   r   rg   rh   r  )r  r  zgot N)r  r   r  r  r  subclass_var_heaptyper   r  set_data_to_3sr6   r  get_dataassertGreaterEquallenr7   set)r$   r  r  r  r  mems         r   test_heaptype_inherit_itemsize3TestHeapTypeRelative.test_heaptype_inherit_itemsize  s    1aAq!S,,,,Q.,,Q.0 1  J4&<<--
{AqB Aq\
))+  j!19= ))+''C*=CQC4w@ 54  44s   B.D
D%	c                     U R                  [        SS9   [        R                  " [        SS5        S S S 5        g ! , (       d  f       g = f)NzACannot extend variable-size class without Py_TPFLAGS_ITEMS_AT_ENDr  r   )r9   r   r  subclass_heaptyper  r#   s    r   !test_heaptype_invalid_inheritance6TestHeapTypeRelative.test_heaptype_invalid_inheritance  s@    {$;  < ..sB:< < <s	   ;
A	c                    [        SSSSSSSS[        R                  [        R                  S-
  [        R                  S-   15      nU GH  nU GH  nU GHK  nU R                  X#US	9   XC:  Ga  [        R
                  " X#* US
5      nUR                  5       S   nU" 5       nU R                  UR                  UR                  5       5        UR                  S5        U R                  UR                  UR                  5       5        U R                  UR                  5       S5        SUl        U R                  UR                  UR                  5       5        U R                  UR                  5       S5        U R                  UR                  5       UR                  5        U R                  UR                  5       UR                  5        U R                  [        5         UR!                  5         SSS5        U R                  [        5         UR#                  S5        SSS5        O7U R                  [        5         [        R
                  " X#* US
5      nSSS5        U R                  [        5         [        R
                  " X#US
5      nSSS5        SSS5        GMN     U R                  X#S9   U R                  [        5         [        R
                  " X#* SS
5      nSSS5        SSS5        GM     GM     g! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       GM  = f! , (       d  f       Ny= f! , (       d  f       GM)  = f)r  r   r[   rd   r   r   rg   rh   r  )r  r  offsetTrm   rn   Nr  r   )r  r   r  r  r  make_heaptype_with_membermror6   membget_membset_membr  get_memb_offsetr  r9   r   get_memb_relativeset_memb_relative)r$   r  r  r  r  r  r  r  s           r   test_heaptype_relative_members3TestHeapTypeRelative.test_heaptype_relative_members  s   1aAq!S,,,,Q.,,Q.0 1  %O#
#Foekl!."2"L"L /fd#LC#&779Q<D'*uH ,,X]]H<M<M<OP$--b1 ,,X]]H<M<M<OP ,,X->->-@"E,.HM ,,X]]H<M<M<OP ,,X->->-@"E 33H4L4L4NPTPbPbc OOH,D,D,FHYHYZ!%!2!2;!? ( : : < "@!%!2!2;!? ( : :1 = "@!? "&!2!2;!?&6&P&P$3[&$'P "@ "..{;"2"L"L /VT#KC </ ml $6 \\/\Y**;7.HH+["dD 8 ZY9 $  %$ "@!?!?!? "@!? <;/ ml6 87 ZYs   )E9M	"K?3M	L"M	 L"M	7L3M	4M(
M	$M(?
L	M	
LM	"
L0,M	3
M=M	
M
M%!M((
M8c                    U R                  [        S5         [        R                  " SSSS5        S S S 5        U R                  [        S5         [        R                  " SSSS5        S S S 5        U R                  [        S5         [        R                  " SSSS5        S S S 5        [        R                  " SSSS5      nU" 5       nU R                  [        S5         UR	                  5         S S S 5        U R                  [        S	5         UR                  S5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nr= f! , (       d  f       g = f)
Nz3With Py_RELATIVE_OFFSET, basicsize must be negativer   i  Tz.Member offset out of range \(0\.\.-basicsize\)r  r   z,PyMember_GetOne used with Py_RELATIVE_OFFSETz,PyMember_SetOne used with Py_RELATIVE_OFFSET)r   r   r  r  r  r  )r$   r  r  s      r   %test_heaptype_relative_members_errors:TestHeapTypeRelative.test_heaptype_relative_members_errors  sM   ##FH 66q$4HH ##NP66q"dDIP ##NP66q"b$GP 88B4H5##LN&&(N ##LN&&q)N N!H HP PP PN NN Ns;   D)D:EEE-)
D7:
E
E
E*-
E;c                    U R                  [        5         [        R                  S5        SSS5        U R                  [        5         [        R                  S5        SSS5        g! , (       d  f       NB= f! , (       d  f       g= f)z4Test PyObject_GetItemData fails on unsupported typesNr   )r9   r   r   pyobject_getitemdatar#   s    r   test_pyobject_getitemdata_error4TestHeapTypeRelative.test_pyobject_getitemdata_error  s]    y)**40 * y) **1- *) *) *)   A(	A9(
A69
Bc                   ^	 SSK Jm	  S nS nS nS nS nU R                  [        R	                  U5      5        U R                  UR
                  5        U" S5      n[        R	                  U5      nU R                  U5        U R                  UR
                  5        U" SS	5      " S
S5      n[        R	                  U5      nU R                  U5        U R                  UR
                  5        U" S5      n[        R	                  U5      nU R                  XvR
                  5        U R                  U[        5        U R                  [        U5      S5        U R                  [        U5      [        UR                  R                  5      5        U R                  [        U	4S jU 5       5      5        U R                  US   R                  S5        U" SS	5      " S
S5      n[        R	                  U5      nU R                  XvR
                  5        U R                  U[        5        U R                  [        U5      S5        U R                  [        U5      [        UR                  R                  5      5        U R                  [        U	4S jU 5       5      5        U R                  U Vs/ s H  oR                  PM     sn/ SQ5        g s  snf )Nr   CellTypec                      g rP   r"   r"   r   r   regular_functionHTestHeapTypeRelative.test_function_get_closure.<locals>.regular_function"  s    r   c                     S nU$ )Nc                     g rP   r"   )arg2arg3s     r   innerWTestHeapTypeRelative.test_function_get_closure.<locals>.unused_one_level.<locals>.inner$  s    3r   r"   arg1r!  s     r   unused_one_levelHTestHeapTypeRelative.test_function_get_closure.<locals>.unused_one_level#  s
    &Lr   c                     S nU$ )Nc                     S nU$ )Nc                     g rP   r"   )arg5arg6s     r   r!  kTestHeapTypeRelative.test_function_get_closure.<locals>.unused_two_levels.<locals>.decorator.<locals>.inner(  s    sr   r"   )r   arg4r!  s      r   	decorator\TestHeapTypeRelative.test_function_get_closure.<locals>.unused_two_levels.<locals>.decorator'  s
    *r   r"   r$  r  r.  s      r   unused_two_levelsITestHeapTypeRelative.test_function_get_closure.<locals>.unused_two_levels&  s     r   c                    ^  U 4S jnU$ )Nc                    > TU -   U-   $ rP   r"   )r  r   r$  s     r   r!  UTestHeapTypeRelative.test_function_get_closure.<locals>.with_one_level.<locals>.inner,  s    d{T))r   r"   r#  s   ` r   with_one_levelFTestHeapTypeRelative.test_function_get_closure.<locals>.with_one_level+  s    *Lr   c                    ^ ^ U U4S jnU$ )Nc                    >^ ^ UUU U4S jnU$ )Nc                 &   > TT-   T-   T-   U -   U-   $ rP   r"   )r*  r+  r$  r  r   r-  s     r   r!  iTestHeapTypeRelative.test_function_get_closure.<locals>.with_two_levels.<locals>.decorator.<locals>.inner1  s!    $;-4t;dBBr   r"   )r   r-  r!  r$  r  s   `` r   r.  ZTestHeapTypeRelative.test_function_get_closure.<locals>.with_two_levels.<locals>.decorator0  s    C Cr   r"   r0  s   `` r   with_two_levelsGTestHeapTypeRelative.test_function_get_closure.<locals>.with_two_levels/  s     r   r[   rd   r   r   re   c              3   <   >#    U  H  n[        UT5      v   M     g 7frP   
isinstance.0cellr  s     r   	<genexpr>ATestHeapTypeRelative.test_function_get_closure.<locals>.<genexpr>K       K74JtX667   c              3   <   >#    U  H  n[        UT5      v   M     g 7frP   r@  rB  s     r   rE  rF  T  rG  rH  )r[   rd   r   r   )rQ  r  r  r   function_get_closure__closure__r6   r  r  r  rT  co_freevarsr7   allcell_contents)
r$   r  r%  r1  r6  r=  funcclosurerD  r  s
            @r   test_function_get_closure.TestHeapTypeRelative.test_function_get_closure  s3   "#		
		 	)889IJK*667"006'"$**+ A&q!,006'"$**+ a 006"2"23gu-Wq)Ws4==+D+D'EFK7KKL
00!4q!$Q*006"2"23gu-Wq)Ws4==+D+D'EFK7KKLA,,A%	'As   0Kc                    U R                  [        5         [        R                  S5        S S S 5        U R                  [        5         [        R                  S 5        S S S 5        g ! , (       d  f       NB= f! , (       d  f       g = frZ   )r9   r   r   rJ  r#   s    r   test_function_get_closure_error4TestHeapTypeRelative.test_function_get_closure_errorX  sW    {+**1- ,{+**40 ,+ ,+++r  c                    SSK Jn  S nS nUn[        R                  XA" S5      U" S5      45        [        R	                  U5      nU R                  U Vs/ s H  ofR                  PM     snSS/5        U R                  UR                   Vs/ s H  ofR                  PM     snSS/5        U" S5      n[        R                  UU" S5      U" S5      U" S5      45        [        R	                  U5      nU R                  U Vs/ s H  ofR                  PM     sn/ SQ5        U R                  UR                   Vs/ s H  ofR                  PM     sn/ SQ5        g s  snf s  snf s  snf s  snf )	Nr   r  c                      g rP   r"   r"   r   r   function_without_closurePTestHeapTypeRelative.test_function_set_closure.<locals>.function_without_closurea      r   c                    ^  U 4S jnU$ )Nc                     > T $ rP   r"   args   r   r!  \TestHeapTypeRelative.test_function_set_closure.<locals>.function_with_closure.<locals>.innerc      
r   r"   r^  r!  s   ` r   function_with_closureMTestHeapTypeRelative.test_function_set_closure.<locals>.function_with_closureb      Lr   r[   rd   r   r  )rQ  r  r   function_set_closurerJ  r6   rN  rK  )r$   r  rX  rb  rO  rP  r   s          r   test_function_set_closure.TestHeapTypeRelative.test_function_set_closure^  s.   "+	
 (&&thqk8A;-GH0067;7a//7;aVD43C3CD3Ca//3CDq!fM$Q'&&t(0Xa[(1+'N	P0067;7a//7;YG43C3CD3Ca//3CDiP <D <Ds   EE!E&<E+c                 d   S nS n[         R                  US 5        U R                  [         R                  U5      5        U R                  UR                  5        [         R                  US 5        U R                  [         R                  U5      5        U R                  UR                  5        g )Nc                      g rP   r"   r"   r   r   rX  UTestHeapTypeRelative.test_function_set_closure_none.<locals>.function_without_closureu  rZ  r   c                    ^  U 4S jnU$ )Nc                     > T $ rP   r"   r]  s   r   r!  aTestHeapTypeRelative.test_function_set_closure_none.<locals>.function_with_closure.<locals>.innerw  r`  r   r"   ra  s   ` r   rb  RTestHeapTypeRelative.test_function_set_closure_none.<locals>.function_with_closurev  rd  r   )r   re  r  rJ  rK  )r$   rX  rb  s      r   test_function_set_closure_none3TestHeapTypeRelative.test_function_set_closure_nonet  s    +	
 	&&'?F**+CD	F2>>?&&'<dC**+@A	C/;;<r   c                    S nU R                  [        5         [        R                  S S5        S S S 5        U R                  [        5         [        R                  US5        S S S 5        U R	                  UR
                  5        [        R                  US5        U R                  [        R                  U5      S5        U R                  UR
                  S5        g ! , (       d  f       N= f! , (       d  f       N= f)Nc                      g rP   r"   r"   r   r   rX  WTestHeapTypeRelative.test_function_set_closure_errors.<locals>.function_without_closure  rZ  r   r"   r[   rc   )r9   r   r   re  r  rK  r6   rJ  )r$   rX  s     r    test_function_set_closure_errors5TestHeapTypeRelative.test_function_set_closure_errors  s    +{+**44 , {+**+CQG ,2>>? 	&&'?H**+CDf	N1==vF ,+ ,+s   CC0
C-0
C>r"   N)r)   r*   r+   r,   r8   r	   r  r  r  r  r  r  r  rQ  rT  rf  ro  rt  r/   r"   r   r   r  r    sU    7/" /"b6
A$;&DP**.7'r1Q,="Gr   r  c                   
   \ rS rSrS rSSS.S jrSS jr\R                  " 5       S	 5       r	S
 r
S rS r " S S\R                  5      r\R                  " 5       S 5       r\R                  " 5       S 5       r\S 5       rSrg)TestPendingCallsi  c                    ^ U4S jn[        U5       HL  n[        R                  " [        R                  " 5       S-  5         [        R                  U5      (       a  ML  M     g )Nc                  (   > T R                  S 5        g rP   r  ls   r   callback;TestPendingCalls.main_pendingcalls_submit.<locals>.callback       HHTNr   g{Gz?)r  timesleeprandomr   _pending_threadfunc)r$   r|  nr}  r{   s    `   r   main_pendingcalls_submit)TestPendingCalls.main_pendingcalls_submit  sM    	
 qAJJv}}t+, 00::  r   TF)mainensurec                t   ^ U4S jnU(       a  [         R                  XRSUS9$ [        R                  " XRSUS9$ )Nc                  (   > T R                  S 5        g rP   rz  r{  s   r   r}  6TestPendingCalls.pendingcalls_submit.<locals>.callback  r  r   F)blockingensure_added)r   r  _testinternalcapipending_threadfunc)r$   r|  r  r  r  r}  s    `    r   pendingcalls_submit$TestPendingCalls.pendingcalls_submit  sN    	
 00:?>D 1 F F %77AFEKM Mr   Nc                    Sn[        U5      U:w  ax   [	        S5       H  nXU-  nM	     U(       a!  UR
                  R                  5       (       d  MN  US-  nU R                  US:  SU[        U5      4-  5        [        U5      U:w  a  Mx  g )Nr   r   r[   i'  z(timeout waiting for %i callbacks, got %i)r  r   verboseprintr  eventis_setr7   )r$   r|  numaddedcontextcountr{   rZ  s          r   pendingcalls_wait"TestPendingCalls.pendingcalls_wait  s    !f  4[C !w}}3355QJEOOEEM:Hc!f;MMO !f  r   c                    Sn/ n " S S[         5      nU" 5       n/ Ul        SUl        XR                  -  Ul        SUl        [
        R                  " 5       Ul        [
        R                  " 5       Ul	        [        UR                  5       Vs/ s H#  n[
        R                  " U R                  U4S9PM%     nn[        R                  " U5         U R                  UR                  X5        S S S 5        g s  snf ! , (       d  f       g = f)N    c                       \ rS rSrSrg)=TestPendingCalls.test_main_pendingcalls_threaded.<locals>.fooi  r"   Nr`  r"   r   r   rR  r    s    $r   rR  rd   r   targetr  )r   r|  r  nThreads	nFinished	threadingLocklockEventr  r  Threadmain_pendingcalls_threadr   start_threadsr  )r$   r  threadsrR  r  r{   s         r   test_main_pendingcalls_threaded0TestPendingCalls.test_main_pendingcalls_threaded  s     &%				> ~~'!) "'"2"2353q ##4+H+H*153 	 5 ++G4""799a9 545 54s   *C6C;;
D	c                 *    U R                  UR                  UR                  5        UR                     U=R                  S-  sl        UR                  n S S S 5        WUR                  :X  a  UR                  R                  5         g g ! , (       d  f       N:= f! UR                     U=R                  S-  sl        UR                  n S S S 5        O! , (       d  f       O= fWUR                  :X  a  UR                  R                  5         f f = frZ   )r  r|  r  r  r  r   r  r  r  r  r  )r$   r  r  s      r   r  )TestPendingCalls.main_pendingcalls_thread  s    		$))'))WYY?!!Q&!#--	 
 G,,,!!# - !!Q&!#--	 
 G,,,!!# -s.   &B #B
BD)#C	D
C#3Dc                 P    / nSnU R                  X5        U R                  X5        g )N@   )r  r  )r$   r|  r  s      r   #test_main_pendingcalls_non_threaded4TestPendingCalls.test_main_pendingcalls_non_threaded  s*    
 %%a+q$r   c                 <   U R                  S5         Sn/ nU R                  USSS9nU R                  X#5        U R                  US5        / nU R                  X!SS9nU R                  X#5        U R                  X15        / nU R                  X!S-   SS9nU R                  X#5        U R                  X15        S S S 5        U R                  S5         Sn/ nU R                  USSS9nU R                  X#5        U R                  US5        / nU R                  X!SS9nU R                  X#5        U R                  X15        / nU R                  X!S-   SS9nU R                  X#5        U R                  X15        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)	Nz	main-onlyr  r[   T)r  znot main-onlyi,  F)r  r  r  r6   )r$   
maxpendingr|  addeds       r   test_max_pending!TestPendingCalls.test_max_pending  s   \\+&JA,,Q,=E""1,UA&A,,Q,FE""1,U/A,,Q14,HE""1,U/! '$ \\/* JA,,Q,>E""1,UA&A,,Q,GE""1,U/A,,Q15,IE""1,U/% +*% '&$ +*s   B$E<B$F<
F

Fc                   T    \ rS rSr\R
                  rS
S jrS rS r	S r
S rS rS	rg)TestPendingCalls.PendingTaski  Nc                     X l         Xl        X0l        [        R                  " 5       U l        S U l        S U l        S U l        g rP   )	r.   reqnotify_doner  	get_identcreator_tidrequester_tid
runner_tidr0  )r$   r  taskidr  s       r   r  %TestPendingCalls.PendingTask.__init__#  s9    GH*(224D!%D"DODKr   c                     [         R                  " 5       U l        U R                  5         U R                  b  U R	                  5         g g rP   )r  r  r  _runr  r#   s    r   run TestPendingCalls.PendingTask.run-  s8    '113DOIIK+  " ,r   c                 &    U R                   U l        g rP   )r  r0  r#   s    r   r  !TestPendingCalls.PendingTask._run4  s    ((DKr   c                 n   ^ ^^ [         R                  " 5       T l        UU U4S jmT R                  TSS9  g )Nc                  z   > [         R                  " 5       T;  a  TR                  T SS9  g TR                  5         g )NTr  )r  r  _add_pendingr  )r}  r$   worker_tidss   r   r}  BTestPendingCalls.PendingTask.run_in_pending_call.<locals>.callback:  s5    
 &&(;%%hT%B
r   Tr  )r  r  r  r  )r$   r  r}  s   ``@r   run_in_pending_call0TestPendingCalls.PendingTask.run_in_pending_call7  s.    !*!4!4!6D hT:r   c                 B    [         R                  " U R                  U4S9$ )Nr  )r  r  r  )r$   r  s     r   create_thread*TestPendingCalls.PendingTask.create_threadE  s#    ##//!^ r   c                 j    U R                   c&  [        R                  " S5        U R                   c  M%  g g N{Gz?)r0  r  r  r#   s    r   wait_for_result,TestPendingCalls.PendingTask.wait_for_resultK  s$    ++%

4  ++%r   )r  r.   r  r  r  r0  r  )NN)r)   r*   r+   r,   r  r  r  r  r  r  r  r  r  r/   r"   r   r   PendingTaskr    s+    (;;		#	#	;		!r   r  c                    ^ SnU R                  U5      mU4S jn[        R                  " US9n[        R                  " U/5          S S S 5        U R                  TR                  U5        g ! , (       d  f       N+= f)Nz1Spam spam spam spam. Lovely spam! Wonderful spam!c                     > [         R                  " 5       n TR                  U 15      n[        R                  " U/5         TR                  5         S S S 5        g ! , (       d  f       g = frP   )r  r  r  r   r  r  )tidr  tasks     r   do_the_workNTestPendingCalls.test_subthreads_can_handle_pending_calls.<locals>.do_the_workT  sK    %%'C""C5)A!//4$$& 544s    A
A(r  )r  r  r  r   r  r6   r0  )r$   payloadr  r  r  s       @r   (test_subthreads_can_handle_pending_calls9TestPendingCalls.test_subthreads_can_handle_pending_callsO  sf    E(	'
 K0++QC0 1 	g. 10s   A--
A;c           	        ^^^^^^ [         R                  " 5       nU R                  [         R                  " 5       R                  U5        [        5       m[        5       m[         R                  " 5       mUU4S jnU4S jmUU4S jnU4S jmU4S jn/ n[        S5       H0  nU R                  SU 3UUS9nUR                  U5        U" U5        M2     TR                  5         UU4S	 jnS
mUU4S jn	[        S5       V
s/ s H  n
[         R                  " U	S9PM     nn
[        R                  " U5          U Vs/ s H  oR                  PM     nn[        S5       V
s/ s H  n
[         R                  " X4S9PM     nn
[        R                  " U5           S S S 5        U" 5         Sm S S S 5        U Vs/ s H  oR                  PM     nnU R!                  X5        U H  nU R#                  SUR$                   35         U R'                  UR(                  U5        U R'                  UR(                  UR                  5        U R!                  UR(                  U5        S S S 5        M     g s  sn
f s  snf s  sn
f ! [         a    Sme f = f! , (       d  f       N= f! [         a    Sme f = f! , (       d  f       GN= fs  snf ! , (       d  f       M  = f)Nc                 J   > TR                  U 5        TR                  S5        g )NTrz  )r  _active_queues    r   	queue_putQTestPendingCalls.test_many_subthreads_can_handle_pending_calls.<locals>.queue_puti  s    MM$NN4 r   c                  f   >  TR                  5       n U $ ! [         a    [        R                  ef = frP   )popleft
IndexErrorqueueEmpty)r  r  s    r   	queue_getQTestPendingCalls.test_many_subthreads_can_handle_pending_calls.<locals>.queue_getl  s6    "~~' K  "kk!"s    0c                  x   > T R                  5         T (       d   TR                  5         g g ! [         a     g f = frP   )popreleaseRuntimeError)r  
_done_locks   r   queue_task_doneWTestPendingCalls.test_many_subthreads_can_handle_pending_calls.<locals>.queue_task_doner  s1    KKM3&&(  $ 3s   , 
99c                     > T (       + $ rP   r"   )r  s   r   queue_emptySTestPendingCalls.test_many_subthreads_can_handle_pending_calls.<locals>.queue_emptyy  s    :r   c                  F   > T R                  5         T R                  5         g rP   )acquirer  )r  s   r   
queue_joinRTestPendingCalls.test_many_subthreads_can_handle_pending_calls.<locals>.queue_join{  s      r   rq   zrequest )r  r  r  c                    >  T(       a  g  T" 5       nUR                  U 5        M#  ! [         R                   a     g f = frP   )r  r  r  )r  r  doner  s     r   	add_tasksQTestPendingCalls.test_many_subthreads_can_handle_pending_calls.<locals>.add_tasks  sE    $;D ((5 
 {{ s   & ==Fc                     > T" 5       (       d,  T (       a  g [         R                  " S5        T" 5       (       d  M,  T (       d   [         R                  " S5        T (       d  M  g g r  )r  r  )r  r  s   r   	run_tasksQTestPendingCalls.test_many_subthreads_can_handle_pending_calls.<locals>.run_tasks  s=    !mm

4  "mm
 

4  dr   r   r  r  Tztask )r  r  r6   main_threadidentr   r  r  r  r  r  r  r   r  BaseExceptionr  assertNotInr  r.   assertNotEqualr  )r$   main_tidr  r  r  tasksr{   r  r  r  _worker_threadsr  r  r  runner_tidsr  r  r  r  r  r  s                   @@@@@@r   -test_many_subthreads_can_handle_pending_calls>TestPendingCalls.test_many_subthreads_can_handle_pending_calls_  s~   &&(..066A '^^%
	!		3		! rA##qcN+ $ D
 LLdO  		6 	! $)8-#+a $**)<#+ 	 -++N;0>?1ww?$)!H.$,q %++9>R$,  .%33G< =  <& .33U||U3/DdggY/0##D$6$6A##D$6$6H  !3!3[A 10 1-
 @.
 ) # =< ! ! <;& 4 10sy   I18J3:J">I6J""I;J"JJ":KAK
6
J" JJ
J	J""J00J33
K

K	c                 
  ^ ^^^^^^^^^^ SnSm[         R                  " 5       mT R                  U4S j5        [         R                  " TS5        U 4S jnT R	                  S5         U" 5       u  mmU" 5       u  mm[
        R
                  " 5       S-   mUUUU4S jn[        R                  " US	9n[        R                  " U/5         [        R                  " TS
5        [        R                  " T5      n[        R                  " TS5        S S S 5        T R                  W[!        T5      5        S S S 5        T R	                  S5         U" 5       u  mmU" 5       u  mm[
        R
                  " 5       S-   mUUUU4S jn[        R                  " US	9n[        R                  " U/5         [        R                  " TS
5        [        R                  " T5      n[        R                  " TS5        S S S 5        T R                  W[!        T5      5        S S S 5        T R	                  S5         U" 5       u  mmU" 5       u  mmU" 5       u  nm[
        R
                  " 5       S-   mUUUUU4S jnSmSm[        R                  4UUU4S jjn[        R                  " US	9n	[        R                  " US	9n
[        R                  " X/5         T(       d
   T(       d  M
  [        R                  " TS5        T(       dC  [
        R"                  " S5        [
        R
                  " 5       T:  a  [%        S5      eT(       d  MC  [        R                  " US
5      nS S S 5        [         R'                  WS5      nT R                  U[!        T5      5        S S S 5        T R	                  S5         U" 5       u  mmU" 5       u  mmU" 5       u  nm[
        R
                  " 5       S-   mUUUUU4S jnSmSm[        R                  4UUU4S jjnUUUU4S jn[        R                  " US	9n	[        R                  " US	9n
[        R                  " US	9n[        R                  " XU/5          S S S 5        [        R                  " US
5      n[         R'                  US5      nT R                  U[!        T5      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N= f! , (       d  f       N= f! , (       d  f       g = f)N   r   c                  0   > [         R                  " T 5      $ rP   )r   destroyinterpids   r   r  ?TestPendingCalls.test_isolated_subinterpreter.<locals>.<lambda>  s     5 5h ?r   zif True:
            import json
            import os
            import threading
            import time
            import _testinternalcapi
            from test.support import threading_helper
            c                     >^ ^ [         R                  " 5       u  m mTR                  U 4S j5        TR                  U4S j5        T T4$ )Nc                  0   > [         R                  " T 5      $ rP   r>  close)rs   r   r  TTestPendingCalls.test_isolated_subinterpreter.<locals>.create_pipe.<locals>.<lambda>      BHHQKr   c                  0   > [         R                  " T 5      $ rP   r  )ws   r   r  r    r   r   )r>  pipe
addCleanup)r  r"  r$   s   @@r   create_pipeBTestPendingCalls.test_isolated_subinterpreter.<locals>.create_pipe  s5    779DAqOO/0OO/0a4Kr   z"add in main, run in subinterpreterr  c            
      H   > [         R                  " T ST ST ST S35        g )Na<  if True:
                    # Wait until this interp has handled the pending call.
                    waiting = False
                    done = False
                    def wait(os_read=os.read):
                        global done, waiting
                        waiting = True
                        os_read(a
  , 1)
                        done = True
                    t = threading.Thread(target=wait)
                    with threading_helper.start_threads([t]):
                        while not waiting:
                            pass
                        os.write(, b'\0')
                        # Loop to trigger the eval breaker.
                        while not done:
                            time.sleep(0.01)
                            if time.time() > zT:
                                raise Exception('timed out!')
                    r   
run_stringr  r_donetimeoutw_readys   r   do_work>TestPendingCalls.test_isolated_subinterpreter.<locals>.do_work  sA    (( 8! "( )" #* +. /6Y 7#4 r   r  r[   r   z-add in main, run in subinterpreter sub-threadc            
      H   > [         R                  " T ST ST ST S35        g )Nzif True:
                    waiting = False
                    done = False
                    def subthread():
                        while not waiting:
                            pass
                        os.write(r(  aO  :
                                raise Exception('timed out!')
                    t = threading.Thread(target=subthread)
                    with threading_helper.start_threads([t]):
                        # Wait until this interp has handled the pending call.
                        waiting = True
                        os.read(z=, 1)
                        done = True
                    r)  r+  s   r   r/  r0    sA    (( 8" #* +. /6Y 7! "( )!4 r   z"add in subinterpreter, run in mainc            
      v   > [         R                  " TS5        [        R                  " T ST ST ST S35        g Nr[   zif True:
                    # Add the pending call and wait for it to finish.
                    actual = _testinternalcapi.pending_identify(zX)
                    # Signal the subinterpreter to stop.
                    os.write(z&, b'\0')
                    os.write(z4, actual.to_bytes(1, 'little'))
                    r>  readr   r*  r  main_interpidr_readyw_dataw_dones   r   add_job>TestPendingCalls.test_isolated_subinterpreter.<locals>.add_job&  K    #(( 8AAN P$X &$X &4 r   Fc                     > SmU " TS5        Smg NTr[   r"   os_readr  r,  waitings    r   wait;TestPendingCalls.test_isolated_subinterpreter.<locals>.wait2      "r   r  
timed out!littlez(add in subinterpreter, run in sub-threadc            
      v   > [         R                  " TS5        [        R                  " T ST ST ST S35        g r3  r4  r6  s   r   r;  r<  M  r=  r   c                     > SmU " TS5        Smg r?  r"   r@  s    r   rC  rD  Y  rE  r   c                     > T(       d
   T(       d  M
  [         R                  " TS5        T (       dD  [        R                  " S5        [        R                  " 5       T:  a  [	        S5      eT (       d  MC  g g )Nr   r  rF  )r>  writer  r  	Exception)r  r-  r.  rB  s   r   	subthread@TestPendingCalls.test_isolated_subinterpreter.<locals>.subthread^  sM    ! "'%(JJt$yy{W,'55 $r   )r   creater$  r*  r  r  r  r  r   r  r>  r5  r  pending_identifyrK  r6   r  r  rL  
from_bytesstartjoin)r$   maxtextr%  r/  r  actualr_datar;  rC  t1t2textrM  t3r  r  r7  r,  r8  r-  r9  r:  r.  rB  s   `             @@@@@@@@@@r   test_isolated_subinterpreter-TestPendingCalls.test_isolated_subinterpreter  s(     '')?@   0 		 \\>?*}GW'MNFFiikB&G *   0A!//4#*;;HE' 5 VS]3E @H \\IJ*}GW'MNFFiikB&G (   0A!//4#*;;HE' 5 VS]3C KF \\>?*}GW'MNFF'MNFFiikB&G  GDWW  
 !!1B!!.B!//9! "'%(JJt$yy{W,'55 $ wwvq) : ^^D(3FVS%78K @N \\DE*}GW'MNFF'MNFFiikB&G  GDWW  
6 6 !!1B!!.B!!3B!//= >7761%D^^D(3FVS%78Q FV 	} 547 @?| 545 KJx :93 @?T >=G FEV 	s   (A!S	AR;#S
A!S1+AS0#S1,BT	TAT<T9T%B;T8 T'"AT8;
S
	S
S
S.	)S11
T 
T	T
T$'
T5	1T88
Ur"   rP   )r)   r*   r+   r,   r  r  r  r   requires_working_threadingr  r  r  r  rQ  SimpleNamespacer  r  r  r    r[  r/   r"   r   r   rw  rw    s     15U M$& 002: 3:(
$%%0N.!e++ .!` 002/ 3/ 002\B 3\B| _4 _4r   rw  c                      \ rS rSr\R
                  " \" \S5      S5      S 5       r\R
                  " \" \S5      S5      S 5       r	S r
\R
                  " \" \S5      S5      S 5       r\R                  " \SL S	5      \R
                  " \" \S5      S5      \" 5       S
 5       5       5       rS r\R                  " \SL S5      \" 5       S 5       5       rSrg)SubinterpreterTesti  r#  zrequires os.pipe()c                    SS K n[        R                  " 5       u  p#SR                  U5      n[	        US5       n[
        R                  " U5      nU R                  US5        U R                  [        R                  " U5      [        [        R                  5      5        U R                  [        R                  " U5      [        U5      5        S S S 5        g ! , (       d  f       g = f)Nr   zif 1:
            import sys, builtins, pickle
            with open({:d}, "wb") as f:
                pickle.dump(id(sys.modules), f)
                pickle.dump(id(builtins), f)
            rb)r  r>  r#  formatopenr   run_in_subinterpr6   r  pickleloadr.   rw   modules)r$   r  r  r"  rG   frets          r   test_subinterps"SubinterpreterTest.test_subinterps  s    wwy
 q	 	 !T]a**40CS!$A3;;@A8=	 ]]s   BC
C%c                 B   [         R                  " 5       u  pSR                  U5      n[        US5       n[        R
                  " U5      nU R                  US5        U R                  [        R                  " U5      SSS.5        S S S 5        g ! , (       d  f       g = f)Naa  if 1:
            import pickle
            with open({:d}, "wb") as f:

                @(lambda x:x)  # Py 3.9
                def noop(x): return x

                a = (b := f'1{{2}}3') + noop('x')  # Py 3.8 (:=) / 3.6 (f'')

                async def foo(arg): return await arg  # Py 3.5

                pickle.dump(dict(a=a, b=b), f)
            rb  r   123xr  )rZ  r   )	r>  r#  rc  rd  r   re  r6   rf  rg  )r$   r  r"  rG   ri  rj  s         r   (test_subinterps_recent_language_features;SubinterpreterTest.test_subinterps_recent_language_features  sx    wwy q	 	 !T]a**40CS!$V[[^6-FG ]]s   AB
Bc                     Sn[         R                  " 5       nU R                  [        R                  " U5      SS5        [         R                  " 5       nU R                  X#S5        U R                  X#S5        g )Na  if 1:
        import sys, _testinternalcapi

        # Any config value would do, this happens to be the one being
        # double checked at the time this test was written.
        config = _testinternalcapi.get_config()
        config['int_max_str_digits'] = 55555
        config['parse_argv'] = 0
        _testinternalcapi.set_config(config)
        sub_value = _testinternalcapi.get_config()['int_max_str_digits']
        assert sub_value == 55555, sub_value
        r   z%subinterp code failure, check stderr.z7Expected get_config() to return a new dict on each callzJCAUTION: Tests executed after this may be running under an altered config.)r  
get_configr6   r   re  assertIsNot)r$   rG   before_configafter_configs       r   (test_py_config_isoloated_per_interpreter;SubinterpreterTest.test_py_config_isoloated_per_interpreter  st    
 *44611$7@	B(335I	K 	<	=r   c                     SnSnSnSnSnSnX-  U-  U-  U-  U-  n/ SQnU V	s/ s H  n	SU	 3PM
     n
n	S	U
S
'   SU
S'   SU
S'   US4US4X2-  S4S.nS1n[         (       aS  [        UR                  5       5       H6  n[        [	        X5      5      nUS   (       a  M#  X	 UR                  U5        M8     UR                  5        H  u  p[        [	        X5      5      nUu  nnUUS.nU R                  U5         [        R                  " 5       u  nn[        R                  " SU S35      n[        R                  " U5       n[        R                  " U40 UD6nU R                  US
5        UR!                  5       nSSS5        ["        R$                  " W5      nU R                  UU5        SSS5        M     U H  n[        [	        X5      5      nU R                  U5         [        R                  " S5      nU R'                  [(        R*                  5         [        R                  " U40 UD6  SSS5        SSS5        M     gs  sn	f ! , (       d  f       N= f! , (       d  f       GM  = f! , (       d  f       ND= f! , (       d  f       M  = f)z
The config with which an interpreter is created corresponds
1-to-1 with the new interpreter's settings.  This test verifies
that they match.
r  r               )obmallocforkr+  r  daemon_threads
extensionsown_gilallow_use_main_obmallocr   check_multi_interp_extensionsr  r   TF))TTTTTTT)TFFFFFF)FFFTFTF)FFFFFFFfeature_flagsr  z
                    import _testinternalcapi, json, os
                    settings = _testinternalcapi.get_interp_settings()
                    with os.fdopen(zX, "w") as stdin:
                        json.dump(settings, stdin)
                    Nz
                    import _testinternalcapi
                    _testinternalcapi.get_interp_settings()
                    raise NotImplementedError('unreachable')
                    )r   r  keysr[  zipadditemsr  r>  r#  rB   rC   fdopenr   run_in_subinterp_with_configr6   r5  jsonloadsr9   r   InterpreterError)r$   OBMALLOC
EXTENSIONSTHREADSDAEMON_THREADSFORKEXEC	ALL_FLAGSfeaturesr  kwlistexpected_to_workexpected_to_failconfigkwargsr1  	exp_flagsexp_gilr  r"  scriptstdoutrj  rK   settingss                            r   test_configured_settings+SubinterpreterTest.test_configured_settings  s    
_t+g5F!"	
 )111F1#,1'q	4r
r
 D!5!%u-
 >
 ?/4467c&12=>>(0$((0	 8 !1 6 6 8F#f-.F!)Iw!*"H f%wwy1! .$ %&3 '*  YYq\V!>>vPPC$$S!, ++-C "  ::c?  84 &% !90 'F#f-.Ff%! . 
 &&}'E'EF88J6J G &% 'i 2V "\ &%2 GF &%sN   I8A	I:I	;0I!6I>I-/I>	
II
I*	-
I;7I>>
J	Nz%test requires _testsinglephase modulec                   ^ ^^^	 SnSmSnSnSnSnX-  U-  U-  U-  mSSSSSSS	.m	UUU	U 4S
 jnST l         T R                  S5         U" SS5        SSS5        T R                  S5         U" SS5        SSS5        T R                  S5         U" SS5        SSS5        T R                  S5         U" SS5        SSS5        T R                  S5         U" SS5        SSS5        T R                  S5         U" S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       Nv= f! , (       d  f       g= f)z
PyInterpreterConfig.check_multi_interp_extensions can be overridden
with PyInterpreterState.override_multi_interp_extensions_check.
This verifies that the override works but does not modify
the underlying setting.
r  r   ry  rz  r{  r|  TF)r  
allow_fork
allow_execallow_threadsallow_daemon_threadsr  c                 n  > [        TU S9nU (       a  TT-  OTnUSS.nUSUSUUUU (       + U(       a  US:  OU (       + U (       + S.
n[        R                  " 5       u  pg[        (       a   TR	                  [        R
                  U5        [        R                  " SU SU S35      n[        R                  " U5       n	[        R                  " U40 UD6n
TR                  U
S5        U	R                  5       nS S S 5        [        R                  " W5      nTR                  X5        g ! , (       d  f       N6= f)	Nr  Fr  r   )
	requestedoverride__initialoverride_afteroverride_restoredsettings__initialsettings_aftersettings_restoredallowed__initialallowed_afterallowed_restoredzu
                from test.test_capi.check_config import run_singlephase_check
                run_singlephase_check(z, z)
                )r[  r>  r#  r   r$  r  rB   rC   r  r   r  r6   r5  r  r  )enabledoverrider  flagsr  r1  r  r"  r  r  rj  rK   results
BASE_FLAGSr  base_kwargsr$   s                r   r  TSubinterpreterTest.test_overridden_setting_extensions_subinterp_check.<locals>.checka  s   .5F 07J+JE!& H &%&"*%&%-"*%-(/K8@x!|g!N(/KH 779DA!,__ *''/j1# 6& F 1::6LVL  a(kkm  jjoGW/ s   <:D&&
D4Nz*config: check disabled; override: disabledr   z,config: check disabled; override: use configr   z)config: check disabled; override: enabledr[   z)config: check enabled; override: disabledz+config: check enabled; override: use configz(config: check enabled; override: enabled)maxDiffr  )
r$   r  r  r  r  r  r  r  r  r  s
   `      @@@r   2test_overridden_setting_extensions_subinterp_checkESubinterpreterTest.test_overridden_setting_extensions_subinterp_checkD  sF    
_t+g5F
!%!$(
(	0 (	0T  \\FG% H\\HI%O J\\EF%O G \\EF$O G\\GH$N I\\DE$N FE HGIIFF GFHHEEsH   
D
+
D
D,1
D=
E7
E

D
D),
D:=
E
E
E-c                     SSK n[        R                  " S5        U R                  [	        UR
                  S5      5        g)z
Exceptions saved in global module state get shared between
individual module instances. This test checks whether or not
a change in one interpreter's module gets reflected into the
other ones.
r   Nz1import binascii; binascii.Error.foobar = 'foobar'foobar)binasciir   re  assertFalser<  Error)r$   r  s     r   test_mutate_exception(SubinterpreterTest.test_mutate_exception  s/     	  !TU:;r   $test requires _testmultiphase modulec                    [         R                  " 5       u  pU R                  [         R                  U5        U R                  [         R                  U5        [        R
                  (       a  SnOSn[        R                  " SU SU S35      n[        U5        [         R                  " US5      n[        R                  " U5      nU R                  US5        [         R                  " US5      nU R                  XW5        g)	zs
bpo-44050: Extension module state should be shared between interpreters
when it doesn't support sub-interpreters.
AppleFrameworkLoaderExtensionFileLoadera  
            import importlib.machinery
            import importlib.util
            import os

            fullname = '_test_module_state_shared'
            origin = importlib.util.find_spec('_testmultiphase').origin
            loader = importlib.machinery.z(fullname, origin)
            spec = importlib.util.spec_from_loader(fullname, loader)
            module = importlib.util.module_from_spec(spec)
            attr_id = str(id(module.Error)).encode()

            os.write(z, attr_id)
            d   r   N)r>  r#  r$  r  r   is_apple_mobilerB   rC   r+  r5  re  r6   )r$   r  r"  loaderr  main_attr_idrj  subinterp_attr_ids           r   "test_module_state_shared_in_global5SubinterpreterTest.test_module_state_shared_in_global  s     wwy!$!$ ""+F*F &* +1 2
 S "  	Vwwq#&&v.a GGAsO9r   )r  )r)   r*   r+   r,   r   r  r<  r>  rk  ro  rv  r  r   _testsinglephaser   r  r  _testmultiphaser  r/   r"   r   r   r`  r`    s   V,.BC> D> V,.BCH DH*=D V,.BCVK DVKp __%-/VWV,.BC &'R ( D X
Rh< ___,.TU &'$: ( V$:r   r`  c                       \ rS rSr\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.r/ S	Qr	S
 r
SS jrS rS rS rS rSrg)InterpreterConfigTestsi  FTownr  r  r  r  r  r  gilshareddefault)isolatedlegacyempty)r  r  r  c              #      #    S HU  nS HL  nS HC  nS H:  nS H1  nS H(  nS H  n[         R                  " UUUUUUUS9v   M!     M*     M3     M<     ME     MN     MW     g 7f)N)TF)r  r  r  r  )rQ  r^  )r$   r  r  r  r  allow_daemoncheckextr  s           r   iter_all_configs'InterpreterConfigTests.iter_all_configs  su     !.+
"/J)6,9L,9+GC*/*?*?:K3=3=6C=IFN,/+& %& ,H -: -: *7 #0 , "/s   AANc                    U R                  [        U5      [        U5      5        X:X  a  g SS KnSS KnSSKJn  SU" X5      -  nSSR                  UR                  UR                  [        U5      5      R                  5       UR                  [        U5      5      R                  5       5      5      -   nSU S3nU R                  Xx5      nU R                  U R                  X75      5        g )Nr   )_common_shorten_reprz%s != %s
z
namespace())r6   r  difflibpprintunittest.utilr  rS  ndiffpformatvars
splitlines_truncateMessagefail_formatMessage)	r$   ns1ns2rL   r  r  r  standardMsgdiffs	            r   assert_ns_equal&InterpreterConfigTests.assert_ns_equal		  s    cDI.:6 #7#AAtyy~~d3i0;;=~~d3i0;;="? @ @ D6#++K>		$%%c78r   c                   ^  U 4S jnT R                  S5         U" S S5        S S S 5        T R                   H%  nT R                  U5         U" X"5        S S S 5        M'     g ! , (       d  f       ND= f! , (       d  f       MJ  = f)Nc                 2  > TR                   U   nU (       a  U 4OSn[        R                  " U6 nTR                  X15        TR	                  X15        [        R                  " U6 nTR                  XA5        TR	                  XA5        TR	                  XC5        g )Nr"   )	supportedr   
new_configr  rs  )r:  r1  r  config1config2r$   s        r   r  <InterpreterConfigTests.test_predefined_config.<locals>.check	  s    ~~h/H"D7D#..5G  3W/#..5G  3W/W.r   r  r  )r  r  )r$   r  r:  s   `  r   test_predefined_config-InterpreterConfigTests.test_predefined_config	  sc    	/ \\)$$
# % NNDd#d! $# # %$ $#s   
A!	A2!
A/2
B	c                 J	   U R                   R                  5        GH  u  pU R                  SU S35         Un[        U5      n[        R
                  " U40 UD6nU R                  XS5        S S S 5        U R                  SU S35         [        U5      R                  5        VVs0 s H  u  pgXg(       + _M     nnnU R                   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                  XS5        MY     S S S 5        [        U5      R                  5        H  u  pU	S:X  a$  U R                   Vs/ s H  owU
: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         X0n[        R                  " S0 [        [        U5      40 UD6D6n[        R
                  " U40 UD6nU R                  XS5        S S S 5        M     M     GM     U R                  S5         U R                    H6  nU R                  [        5         [        R
                  " US	S
9  S S S 5        M8     S S S 5        [        U R                   S   5      R                  5        H{  u  pU	S:X  a  M  SSSSS [        5       4 HZ  nU R                  SU	 SU< S35         U R                  [        5         [        R
                  " S0 X0D6  S S S 5        S S S 5        M\     M}     S	SSS [        5       4 HT  nU R                  SU< S35         U R                  [        5         [        R
                  " US9  S S S 5        S S S 5        MV     S HT  nU R                  SU< S35         U R                  [        5         [        R
                  " US9  S S S 5        S S S 5        MV     g ! , (       d  f       GNk= fs  snnf ! , (       d  f       GN= fs  snf ! , (       d  f       GM  = f! , (       d  f       GM  = f! , (       d  f       GN= f! , (       d  f       GNH= f! , (       d  f       GM  = f! , (       d  f       GN= f! , (       d  f       GMa  = f! , (       d  f       N= f! , (       d  f       GM+  = f)Nznoop (r  zchange all (r  .z (z -> zunsupported fieldT)rb  r  r[   r   rb  g      ?zunsupported value (=zunsupported value(gil=)r  )r   rb  zunsupported value (gil=r"   )r  r  r  r  r   r  r  gil_supportedr  rQ  r^  r[  r9   rQ   r   r   )r$   r:  vanillar1  	overridesr  kvr  fieldoldvaluesr  r<  s                 r   test_update_from_dict,InterpreterConfigTests.test_update_from_dict/	  s   !^^113MDtfA./" M	&11$D)D$$V6	 0 TF!4526w-2E2E2GH2G$!QX2G	H--C{{c) '*e$$44AyAH*55<@ODMOF((: . 6 #7m113
E>)-););H);ACxa);FHF"%gYF!CawbtC7!&LM%*L	#(#8#8 $"4=>I>$ "/!9!9<@"ODM"O,,V> NM " 4' 4D \\-.&&z2!,,T= 32 ' / !!89??ALE~RdFH=\\$7way"JK**95%00BE>B 6 LK >	 B AsD&(3E 6uiqAB&&y1!,,7 2 CB 4 "E 7yBC&&z2!,,7 3 DC "k 0/ I 65 I NM 32 /. 65 LK 21 CB
 32 DCs   6O	O(&O"
9A*O(	O:*O:AO?	%P%?PP%Q	P7	6Q	6Q.Q!Q.R&R;R
O	"O((
O7	?
P
P"	P%%
P47
QQ		
Q
Q+&Q..
Q>	
RR
R"	c           	         ^  [        SSS9[        SSS9[        SSS9[        SSS9[        SSS9/n[        SSS	9/n[        (       a  UR                  [        SS
95        S nU 4S jnT R                  5        H  nUR                  S:X  a  M  U" XR5      (       aO  T R                  SU 35         T R                  [        R                  5         U" U5        S S S 5        S S S 5        Mq  U" XQ5      (       a'  T R                  SU 35         U" U5        S S S 5        M  T R                  SU 35         U" U5        S S S 5        M     g ! , (       d  f       Nv= f! , (       d  f       M  = f! , (       d  f       GM  = f! , (       d  f       GM  = f)NTF)r  r  r  )r  r  )r  r  )r  r  r  )r  r  r  c                 P    [        U 5      nU H  n[        U40 UD6U:X  d  M    g   g)NTF)r  r[  )r  override_casesnsr  s       r   match6InterpreterConfigTests.test_interp_init.<locals>.match	  s/    fB+	(i(B. , r   c                 Z   > Sn[         R                  " X5      nTR                  US5        g )Npassr   )r  r  r6   )r  r  r   r$   s      r   r  6InterpreterConfigTests.test_interp_init.<locals>.check	  s(    F"??OBR#r   r  z	invalid: zquestionable: zvalid: )	r[  r   r  r  r  r  r9   r   r  )r$   questionableinvalidr  r  r  s   `     r   test_interp_init'InterpreterConfigTests.test_interp_initk	  sv      "'
 "
 #%) "&)
4 "'.3
 ?NN4eDE		$
 ++-FzzY&V%%\\IfX"67**=+I+IJf K 87 v,,\\N6(";<&M =< \\GF8"45&M 65 .
 KJ 87 =< 65s<   . E	EE
	E*1	E=
EE
E'	*
E:	=
F	c           	         [         R                  S 5       nU R                  S5         [        R                  " S5      nSUl        [        (       a  SUl        [        R                  " 5       tp4[        R                  " U5      nU R                  XR5        S S S 5        U R                  S5         [        R                  " S5      nU" S5       n[        R                  " U5      nS S S 5        U R                  WU5        S S S 5        U R                  S5         [        R                  " S5      nU" S5       n[        R                  " U5      nS S S 5        U R                  WU5        S S S 5        U R                  S5         [        R                  " SS	S
[        [        5      S9nU" U5       n[        R                  " U5      nS S S 5        U R                  WU5        S S S 5        g ! , (       d  f       GNY= 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       g = f)Nc              3     #    [         R                  " U SS9n Uv    [         R                  " U5        g ! [         R                   a     g f = f!  [         R                  " U5        f ! [         R                   a     f f = f= f7f)NF)reqrefs)r   rO  r  InterpreterNotFoundError)r  r  s     r   
new_interp:InterpreterConfigTests.test_get_config.<locals>.new_interp	  sv     $++FEBH!))(3$== !))(3$== sZ   BA 5 BA	BABBA('B(A?<B>A??BBr  r  r  Fr  customr  Tr  )r  r  r  )
contextlibcontextmanagerr  r   r  r  r   r  get_mainrr  r  bool)r$   r  r1  r  r  r  origs          r   test_get_config&InterpreterConfigTests.test_get_config	  s   		"	"	 
#	 \\&!$//9H HL9>6(113LH"--h7F  2 " \\*%$//
;HJ'8&11(; (  2	 & \\(#$//9HH%&11(; &  2	 $ \\(# ++"&.2?.C	D D!X&11(; "  . $#+ "! (' &% &% $# "! $#sx   A-G'.HG9$HH.6HH. -I-H?I'
G69
H	H
H
H+	'H..
H<?
I		I
Ir"   rP   )r)   r*   r+   r,   rQ  r^  r$  r   r  r  r  r  r  r  r  r&  r/   r"   r   r   r  r    s     ))#!&*.
 ''"!%*.*?
 &&#!&*/
'I: 1M&$9""*:8x:"x*/r   r  c                   z    \ 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S rS rS rS rSrg)InterpreterIDTestsi	  c                 4   ^ U4S jnU R                  U5        g )Nc                  h   >  [         R                  " T 5        g ! [         R                   a     g f = frP   )r   r  r  r  s   r   ensure_destroyed?InterpreterIDTests.add_interp_cleanup.<locals>.ensure_destroyed	  s.    %%h/ 99 s    11)r$  )r$   r  r,  s    ` r   add_interp_cleanup%InterpreterIDTests.add_interp_cleanup	  s    	
 	()r   c                 R    [         R                  " 5       nU R                  U5        U$ rP   )r   rO  r.  )r$   r.   s     r   new_interpreter"InterpreterIDTests.new_interpreter	  s#    !!##	r   c                 X    [         R                  nU" S5      nU R                  US5        g Nrj   )r  normalize_interp_idr6   )r$   convertr  s      r   test_conversion_int&InterpreterIDTests.test_conversion_int	  s&    #772;2&r   c                     [         R                  n " S S[        5      nU" U" 5       5      nU R                  US5        g )Nc                       \ rS rSrS rSrg)9InterpreterIDTests.test_conversion_coerced.<locals>.MyInti	  c                     gr4  r"   r#   s    r   r  CInterpreterIDTests.test_conversion_coerced.<locals>.MyInt.__index__	      r   r"   N)r)   r*   r+   r,   r  r/   r"   r   r   MyIntr;  	      r   r?  rj   )r  r5  r   r6   )r$   r6  r?  r  s       r   test_conversion_coerced*InterpreterIDTests.test_conversion_coerced	  s7    #77	C 	 57#2&r   c                 v    [         R                  nU R                  5       nU" U5      nU R                  X25        g rP   )r  r5  r1  r6   )r$   r6  r  	converteds       r    test_conversion_from_interpreter3InterpreterIDTests.test_conversion_from_interpreter	  s3    #77'')H%	-r   c                    [         R                  n[        5       SSS4 HG  nU R                  SU< 35         U R	                  [
        5         U" U5        S S S 5        S S S 5        MI     SnU R                  SU< 35         U R	                  [        5         U" U5        S S S 5        S S S 5        SnU R                  SU< 35         U R	                  [        5         U" U5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       M  = f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N\= f! , (       d  f       g = f)Ng      $@10s   10zbad: r   r  )r  r5  r   r  r9   r   rQ   OverflowError)r$   r6  badids      r   test_conversion_bad&InterpreterIDTests.test_conversion_bad	  s   #77 H	
E eY/0&&y1EN 2 10
 \\E%+,"":. / - \\E%+,""=1 2 -, 21 10 /. -, 21 -,sk   D	C7DD+	D D+E	D<&E7
DD
D	
D(	$D++
D9<
E
	E
Ec                 n    U R                  5       nU R                  [        R                  " U5      5        g rP   )r1  r7   r  interpreter_existsr$   r  s     r   test_lookup_exists%InterpreterIDTests.test_lookup_exists
  s*    '')00:	<r   c                 x    [         R                  " 5       nU R                  [         R                  " U5      5        g rP   )r  unused_interpreter_idr  rN  rO  s     r   test_lookup_does_not_exist-InterpreterIDTests.test_lookup_does_not_exist
  s,    $::<00:	<r   c                     [         R                  " 5       n[         R                  " U5        U R                  [        R
                  " U5      5        g rP   )r   rO  r  r  r  rN  rO  s     r   test_lookup_destroyed(InterpreterIDTests.test_lookup_destroyed
  s:     '')h'00:	<r   c                 F    [         R                  S [        R                  4$ )Nc                 ,    [         R                  " U SS9$ )NF)implieslink)r   incref)r.   s    r   r  9InterpreterIDTests.get_refcount_helpers.<locals>.<lambda>!
  s    ,,RUCr   )r  get_interpreter_refcountr   decrefr#   s    r   get_refcount_helpers'InterpreterIDTests.get_refcount_helpers
  s!    66C  
 	
r   c                 b   [         R                  n[         R                  n[         R                  n[         R                  nU R                  5       u  pVnU R                  S5         [         R                  " 5       nU R                  U" U5      5        U R                  [        R                  5         U" U5        S S S 5        U R                  [        R                  5         U" U5        S S S 5        U R                  [        R                  5         U" U5        S S S 5        U R                  [        R                  5         U" U5        S S S 5        U R                  [        R                  5         U" U5        S S S 5        U R                  [        R                  5         U" U5        S S S 5        S S S 5        U R                  S5         [        R                  " 5       n[        R                  " U5        U R                  U" U5      5        U R                  [        R                  5         U" U5        S S S 5        U R                  [        R                  5         U" U5        S S S 5        U R                  [        R                  5         U" U5        S S S 5        U R                  [        R                  5         U" U5        S S S 5        U R                  [        R                  5         U" U5        S S S 5        U R                  [        R                  5         U" U5        S S S 5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GNf= f! , (       d  f       GNH= 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Nh= f! , (       d  f       GNJ= f! , (       d  f       GN,= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       g = f)Nznever existed	destroyed)r  rN  interpreter_refcount_linkedlink_interpreter_refcountunlink_interpreter_refcountr`  r  rS  r  r9   r   r  rO  r  	r$   exists	is_linkedlinkunlinkget_refcountr\  r_  r  s	            r   $test_linked_lifecycle_does_not_exist7InterpreterIDTests.test_linked_lifecycle_does_not_exist%
  s   "55%AA	 ::">>'+'@'@'B$f\\/*(>>@Hx """=#I#IJ(# K""=#I#IJX K""=#I#IJx  K""=#I#IJX& K""=#I#IJx  K""=#I#IJx  K +" \\+&$++-H!!(+x """=#I#IJ(# K""=#I#IJX K""=#I#IJx  K""=#I#IJX& K""=#I#IJx  K""=#I#IJx  K '& KJJJJJJJJJJJ +*, KJJJJJJJJJJJ '&s:  %AN#1	L7:'N#!	M	*'N#	M'N#	M-
'N#1	M?:'N#!	N*N#A"P -	N56'P 	O&'P 	O'P =	O+'P -	O=6'P 	P&P 7
M	N#	
M	N#
M*	%N#-
M<	7N#?
N		N#
N 	N##
N25
O	?P 
O	P 
O(	#P +
O:	5P =
P	P 
P	P  
P.c                     [         R                  nU R                  5       u  n  nU R                  5       nU" U5      nU" U5      nU R	                  U5        U R                  US5        g Nr   )r  rd  r`  r1  r  r6   )r$   ri  rl  r  r  linkedrefcounts          r   test_linked_lifecycle_initial0InterpreterIDTests.test_linked_lifecycle_initialO
  sd    %AA	!668a '')8$) 1%r   c                    [         R                  n[         R                  nU R                  5       u  p4nU R	                  5       nU" U5        U R                  U" U5      5        U R                  SU" U5      5        U" U5        U R                  U" U5      5        U R                  U" U5      5        U R                  SU" U5      5        g Nr[   r   )r  rN  rd  r`  r1  r  r6   r7   )r$   rh  ri  rl  r\  r_  r  s          r   "test_linked_lifecycle_never_linked5InterpreterIDTests.test_linked_lifecycle_never_linked[
  s    "55%AA	'+'@'@'B$f'') 	xh	!|H%	' 	x8	h	!|H%	'r   c                 |   [         R                  n[         R                  n[         R                  n[         R                  nU R                  5       nU" U5        U R                  U" U5      5        U R                  U" U5      5        U" U5        U R                  U" U5      5        U R                  U" U5      5        g rP   )r  rN  rd  re  rf  r1  r7   r  )r$   rh  ri  rj  rk  r  s         r   !test_linked_lifecycle_link_unlink4InterpreterIDTests.test_linked_lifecycle_link_unlinkr
  s    "55%AA	 ::">>'') 	X8	h	! 	x8	h	!r   c                    [         R                  n[         R                  n[         R                  nU R	                  5       u  pEnU R                  5       nU" U5        U R                  U" U5      5        U R                  SU" U5      5        U" U5        U R                  SU" U5      5        U" U5        U R                  U" U5      5        g )Nr   r[   )	r  rN  rd  re  r`  r1  r7   r6   r  )r$   rh  ri  rj  rl  r\  r_  r  s           r   (test_linked_lifecycle_link_incref_decref;InterpreterIDTests.test_linked_lifecycle_link_incref_decref
  s    "55%AA	 ::'+'@'@'B$f'') 	Xh	!|H%	' 	x|H%	' 	x8	r   c                 8   [         R                  n[         R                  nU R                  5       u  p4nU R	                  5       nU" U5        U R                  SU" U5      5        U" U5        U R                  U" U5      5        U R                  SU" U5      5        g rZ   )r  rd  re  r`  r1  r6   r7   )r$   ri  rj  rl  r\  r  r  s          r   !test_linked_lifecycle_incref_link4InterpreterIDTests.test_linked_lifecycle_incref_link
  s    %AA	 ::"&";";"=a'')x|H%	' 	Xh	!|H%	'r   c                 $   [         R                  n[         R                  n[         R                  n[         R                  nU R                  5       u  pVnU R                  5       nU" U5        U R                  U" U5      5        U" U5        U R                  SU" U5      5        U" U5        U R                  U" U5      5        U R                  SU" U5      5        U" U5        U R                  U" U5      5        U R                  SU" U5      5        g rv  )
r  rN  rd  re  rf  r`  r1  r7   r6   r  rg  s	            r   /test_linked_lifecycle_link_incref_unlink_decrefBInterpreterIDTests.test_linked_lifecycle_link_incref_unlink_decref
  s    "55%AA	 ::">>'+'@'@'B$f'')Xh	! 	x|H%	' 	xh	!|H%	' 	x8	|H%	'r   r"   N)r)   r*   r+   r,   r.  r1  r7  rA  rE  rK  rP  rT  rW  r`  rm  rs  rw  rz  r}  r  r  r/   r"   r   r   r)  r)  	  sX    *
'
'..<
<
<
(!T
&'.!,2'$'r   r)  c                   F    \ rS rSr\\\\\\" S5      \	\
\\\/rS rS rSrg)BuiltinStaticTypesTestsi
  Nc                     U R                    HD  nU R                  U5         [        R                  U5      nU R	                  US 5        S S S 5        MF     g ! , (       d  f       MX  = frP   )TYPESr  r   type_get_tp_basesrs  )r$   typeobjbasess      r   test_tp_bases_is_set,BuiltinStaticTypesTests.test_tp_bases_is_set
  sM     zzGg&!33G<  - '& "&&   (A
A%	c                     U R                    HD  nU R                  U5         [        R                  U5      nU R	                  US 5        S S S 5        MF     g ! , (       d  f       MX  = frP   )r  r  r   type_get_tp_mrors  )r$   r  r  s      r   test_tp_mro_is_set*BuiltinStaticTypesTests.test_tp_mro_is_set
  sM     zzGg&//8  d+ '& "&&r  r"   )r)   r*   r+   r,   r   r  r  r   r[  r$  r	  rL  Warningr  r  r  r  r/   r"   r   r   r  r  
  s:     	T
E.,r   r  c                   R    \ rS rSrSr\S 5       r\R                  S 5       r	S r
Srg)TestStaticTypesi
  Fc                 `    U R                   (       a  [        R                  " S5      eSU l         g )Nz%these tests do not support re-runningT)_has_runr   SkipTestr  s    r   
setUpClassTestStaticTypes.setUpClass
  s$     <<##$KLLr   c              '   :   #    [         R                  " U6 nUv   g 7frP   )r   get_basic_static_type)r$   r  r  s      r   basic_static_type!TestStaticTypes.basic_static_type   s     --t4	s   c                 Z   U R                  5        nU R                  UR                  [        5        U R	                  UR
                  [        45        U R                  [        U5      [        [        5      5        S S S 5        U R                  [        5       nU R                  UR                  [        5        U R	                  UR
                  [        45        U R                  [        U5      [        [        5      5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = frP   )r  r  __base__r   r6   	__bases__r  )r$   r  s     r   %test_pytype_ready_always_sets_tp_type5TestStaticTypes.test_pytype_ready_always_sets_tp_type  s     ##%MM#,,/S]]VI6MM$s)T&\2 & ##F+sMM#,,/S]]VI6MM$s)T&\2 ,+ &% ,+s   A*DA*D
D
D*r"   N)r)   r*   r+   r,   r  classmethodr  r!  r"  r  r  r/   r"   r   r   r  r  
  s8    H   4r   r  c                       \ rS rSr\R
                  \R                  " 5       S 5       5       r\R
                  \R                  " 5       S 5       5       r\R
                  \R                  " 5       S 5       5       r	S r
Srg)TestThreadStatei  c                    ^  U 4S jnU" 5         [         R                  " US9nUR                  5         UR                  5         g )Nc                     >^ / mU4S jn [         R                  U 5        U =p[        R                  " S5        TR	                  TR                  [        R                  " 5       5      SS5        g )Nc                  N   > T R                  [        R                  " 5       5        g rP   )r  r  r  )identss   r   r}  CTestThreadState.test_thread_state.<locals>.target.<locals>.callback   s    i1134r   r[   r   z/Couldn't find main thread correctly in the list)r   _test_thread_stater  r  r6   r  r  r  )r}  rZ  r   r  r$   s      @r   r  1TestThreadState.test_thread_state.<locals>.target  sX    F5 ((2AJJqMV\\)*=*=*?@!NPr   r  )r  r  rR  rS  )r$   r  r  s   `  r   test_thread_state!TestThreadState.test_thread_state  s2    	P 	F+			r   c                 ~   ^^  " S S5      m[         R                  " 5       mUU4S jn[        R                  U5        g )Nc                       \ rS rSrS rSrg)8TestThreadState.test_thread_gilstate_in_clear.<locals>.Ci3  c                 ,    [         R                  5         g rP   )r   gilstate_ensure_releaser#   s    r   r  @TestThreadState.test_thread_gilstate_in_clear.<locals>.C.__del__4  s    113r   r"   N)r)   r*   r+   r,   r  r/   r"   r   r   r   r  3  s    4r   r   c                     > T " 5       Tl         g rP   r  )r   	local_vars   r   r}  ?TestThreadState.test_thread_gilstate_in_clear.<locals>.callback:  s    #IKr   )r  localr   r  )r$   r}  r   r  s     @@r   test_thread_gilstate_in_clear-TestThreadState.test_thread_gilstate_in_clear/  s0    	4 	4
 OO%		 	$$X.r   c                     [         R                  " S5      n[        SSSU5      nU R                  SUR                  5        g )Nz
            import _testcapi

            def callback():
                print('callback called')

            _testcapi._test_thread_state(callback)
            z-XtracemallocrA   s   callback called)rB   rC   r   r   rK   )r$   rG   rj  s      r    test_gilstate_ensure_no_deadlock0TestThreadState.test_gilstate_ensure_no_deadlock?  s<         t]D$?(#''2r   c                 ,    [         R                  5         g rP   )r   test_current_tstate_matchesr#   s    r   test_gilstate_matches_current-TestThreadState.test_gilstate_matches_currentN  s    --/r   r"   N)r)   r*   r+   r,   r   reap_threadsr]  r  r  r  r  r/   r"   r   r   r  r    s    ""002 3 #( ""002/ 3 #/ ""0023 3 #30r   r  c                     0 n[        U 5       HC  nUR                  S5      (       d  M  Ub  UR                  U5      (       a  M6  [        X5      X#'   ME     U$ )Ntest_)dirrF   getattr)modexclude_prefixfuncsr:  s       r   get_test_funcsr  R  sQ    ECw''%$//.*I*Ic(  Lr   c                   ~    \ rS rSr\" 5       R                  \" \5      5        \R                  " \
S9S 5       rS rSrg)Test_testcapii]  r  c                 .    [         R                  " 5         g rP   )r  test_widecharr#   s    r   r  Test_testcapi.test_widechara  s    &&(r   c                 `    U R                  [        R                  [        R                  5        g rP   )r6   r   
Py_Versionrw   
hexversionr#   s    r   test_version_api_data#Test_testcapi.test_version_api_datae  s    --s~~>r   r"   N)r)   r*   r+   r,   localsupdater  r   r   r  r  r  r  r/   r"   r   r   r  r  ]  s;    
HOON9-. $$.@A) B)?r   r  c                   L    \ rS rSr\" 5       R                  \" \5      5        Srg)Test_testlimitedcapiii  r"   N)	r)   r*   r+   r,   r  r  r  r  r/   r"   r   r   r  r  i  s    
HOON#345r   r  c                   J    \ rS rSr\" 5       R                  \" \SS95        Srg)Test_testinternalcapiim  
test_lock_)r  r"   N)	r)   r*   r+   r,   r  r  r  r  r/   r"   r   r   r  r  m  s    
HOON#42>@ Ar   r  c                   Z    \ rS rSr\" 5       R                  S \" \5       5       5        Srg)Test_PyLockir  c              #   v   #    U  H/  nUR                  S 5      (       d  M  U[        [        U5      4v   M1     g7f)r  N)rF   r  r  )rC  r:  s     r   rE  Test_PyLock.<genexpr>t  s2      6 6|4 =T7#4d;< 6s   99r"   N)	r)   r*   r+   r,   r  r  r  r  r/   r"   r   r   r  r  r  s#    
HOO 6 #$5 66 6r   r  r  c                   <    \ rS rSrSrS rS rS rS rS r	S r
S	rg
)Test_ModuleStateAccessiy  z%Test access to module start (PEP 573)c                    Sn[         R                  R                  S5      R                  n[        R
                  (       a   [         R                  R                  X5      nO[         R                  R                  X5      n[         R                  R                  X5      n[         R                  R                  U5      nUR                  U5        XPl        g )N!_testmultiphase_meth_state_accessr  )	importlibutil	find_specoriginr   r  	machineryr  r  spec_from_loadermodule_from_specexec_modulere  )r$   r  r  r  specre  s         r   setUpTest_ModuleStateAccess.setUp  s    6))*;<CC ""((==hOF((<<XNF~~..x@0066"r   c                      " S SU R                   R                  5      nU" 5       nU R                  UR                  5       U R                   5        g)z#PyType_GetModule for defining_classc                       \ rS rSrSrg)QTest_ModuleStateAccess.test_subclass_get_module.<locals>.StateAccessType_Subclassi  r"   Nr`  r"   r   r   StateAccessType_Subclassr    ra  r   r  Nre  StateAccessTyper  get_defining_moduler$   r  r  s      r   test_subclass_get_module/Test_ModuleStateAccess.test_subclass_get_module  s=    	t{{'B'B 	 ,-h224dkkBr   c                      " S SU R                   R                  5      nU" 5       nU R                  UR                  5       U R                   5        g )Nc                   (   ^  \ rS rSrU 4S jrSrU =r$ )\Test_ModuleStateAccess.test_subclass_get_module_with_super.<locals>.StateAccessType_Subclassi  c                     > [         TU ]  5       $ rP   )r  r  r  s    r   r  pTest_ModuleStateAccess.test_subclass_get_module_with_super.<locals>.StateAccessType_Subclass.get_defining_module  s    w244r   r"   )r)   r*   r+   r,   r  r/   r  r  s   @r   r  r    s    5 5r   r  r  r  s      r   #test_subclass_get_module_with_super:Test_ModuleStateAccess.test_subclass_get_module_with_super  s=    	5t{{'B'B 	5 ,-h224dkkBr   c                    U R                   R                  5       nU R                   R                  5       nUR                  UR                  S.nUR	                  5        GH  u  pEU R                  U5         U R                  UR                  5       UR                  5       5        U R                  UR                  5       S5        U" 5         U R                  UR                  5       UR                  5       5        U R                  UR                  5       S5        U" S5        U R                  UR                  5       UR                  5       5        U R                  UR                  5       S5        U" SSS9  U R                  UR                  5       UR                  5       5        U R                  UR                  5       S5        U R                  [        5         U" SS	9  S
S
S
5        U R                  [        5         U" SSS5        S
S
S
5        S
S
S
5        GM     g
! , (       d  f       ND= f! , (       d  f       N-= f! , (       d  f       GM  = f)zChecks methods defined with and without argument clinic

This tests a no-arg method (get_count) and a method with
both a positional and keyword argument.
)clinicnoclinicr   r[   r   r   r  T)twice)thriceNrd   )
re  r  increment_count_clinicincrement_count_noclinicr  r  r6   	get_countr9   r   )r$   rZ  r   methodsr:  increment_counts         r   test_state_access(Test_ModuleStateAccess.test_state_access  s    KK'')KK'') ..22

 &-]]_!Dd#  >  2!  >  2"  >  2$/  >  2&&y1#1- 2 &&y1#Aq!, 2' $# &5" 21 21' $#s=   5E$I H I =H/I 
H,(I /
H=9I  
I	c                     U R                   R                  5       nU R                  [        5         UR	                  5         S S S 5        g ! , (       d  f       g = frP   )re  r  r9   r   getmodulebydef_bad_def)r$   r  s     r   test_get_module_bad_def.Test_ModuleStateAccess.test_get_module_bad_def  s<     ;;..0y)++- *))s   A


Ac                      " S S[         U R                  R                  5      nU R                  U" 5       R	                  5       U R                  5        g )Nc                       \ rS rSrSrg)FTest_ModuleStateAccess.test_get_module_static_in_mro.<locals>.Subclassi  r"   Nr`  r"   r   r   Subclassr    ra  r   r  )r	  re  r  r  r  )r$   r  s     r   test_get_module_static_in_mro4Test_ModuleStateAccess.test_get_module_static_in_mro  s7    	}dkk&A&A 	hj446Dr   )re  N)r)   r*   r+   r,   r8   r  r  r  r  r  r  r/   r"   r   r   r  r  y  s'    /CC$-L.Er   r  c                   6    \ rS rSr\S 5       rS rS rS rSr	g)TestInternalFrameApii  c                  ,    [         R                  " 5       $ rP   )rw   	_getframer"   r   r   rO  TestInternalFrameApi.func  s    }}r   c                     U R                  5       n[        R                  " U5      nU R                  X R                   R                  5        g rP   )rO  r  iframe_getcoder  rT  )r$   framerG   s      r   	test_codeTestInternalFrameApi.test_code  s3    		 //6dII../r   c                     U R                  5       n[        R                  " U5      nU R                  US5        U R	                  U[        U R                   R                  R                  5      5        g rp  )rO  r  iframe_getlastir   r  r  rT  co_code)r$   r   lastis      r   
test_lastiTestInternalFrameApi.test_lasti  sP    		!11%85!$s499#5#5#=#=>?r   c                     U R                  5       n[        R                  " U5      nU R                   R                  R                  nU R                  X#S-   5        g )Nrd   )rO  r  iframe_getlinerT  co_firstlinenor6   )r$   r   line	firstlines       r   	test_lineTestInternalFrameApi.test_line  sD    		 //6II&&55	1}-r   r"   N)
r)   r*   r+   r,   staticmethodrO  r!  r'  r.  r/   r"   r   r   r  r    s$     0
@.r   r  r  c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)Test_Pep523APIi  c                    / n[         nU[         -   n [        U5       H%  nXd:X  a  [        R                  " U5        U" 5         M'     [        R                  " 5         U[         -  nU R                  [        U5      [        U5      5        [        XsSS9 H  u  pU R                  X5        M     g ! [        R                  " 5         f = f)NT)strict)"SUFFICIENT_TO_DEOPT_AND_SPECIALIZEr  r  set_eval_frame_recordset_eval_frame_defaultr6   r  r  )
r$   rO  r@  actual_callsrR  r  r{   expected_callsr1  rU  s
             r   do_testTest_Pep523API.do_test  s    2::	75\:%;;LI "
 446!CC^,c,.?@ #N NHX. !O 446s   4B. .Cc                 P   ^  " S S5      mU4S jnSS/nU R                  X5        g )Nc                       \ rS rSrS rSrg)4Test_Pep523API.test_inlined_binary_subscr.<locals>.Ci  c                     g rP   r"   )r$   others     r   r|   @Test_Pep523API.test_inlined_binary_subscr.<locals>.C.__getitem__  r~   r   r"   N)r)   r*   r+   r,   r|   r/   r"   r   r   r   r>    s    r   r   c                     > T " 5       S     g Nr   r"   )r   s   r   rO  7Test_Pep523API.test_inlined_binary_subscr.<locals>.func  s    CGr   rO  r|   r:  )r$   rO  r@  r   s      @r   test_inlined_binary_subscr)Test_Pep523API.test_inlined_binary_subscr  s(    	 		'T!r   c                 F   ^ SS jmU4S jn/ SQnU R                  X5        g )Nc                     g rP   r"   r  s    r   r!  /Test_Pep523API.test_inlined_call.<locals>.inner  rP  r   c                  $   > T " 5         T " S5        g rC  r"   r!  s   r   rO  .Test_Pep523API.test_inlined_call.<locals>.func  s    G"Ir   )rO  r!  r!  )r   rE  r$   rO  r@  r!  s      @r   test_inlined_call Test_Pep523API.test_inlined_call  s     		 +T!r   c                 B   ^ S mU4S jnSS/nU R                  X5        g )Nc                     g rP   r"   r  s    r   r!  ;Test_Pep523API.test_inlined_call_function_ex.<locals>.inner  rP  r   c                     > T " S/6   g rC  r"   rL  s   r   rO  :Test_Pep523API.test_inlined_call_function_ex.<locals>.func  s    B4Lr   rO  r!  rE  rN  s      @r   test_inlined_call_function_ex,Test_Pep523API.test_inlined_call_function_ex  s#    		!T!r   c                 B   ^ S mU4S jn/ SQnU R                  X5        g )Nc               3      #    Sv   g 7frC  r"   r"   r   r   r  1Test_Pep523API.test_inlined_for_iter.<locals>.gen  
     Hr  c                  "   > T" 5        H  n M     g rP   r"   )r  r  s    r   rO  2Test_Pep523API.test_inlined_for_iter.<locals>.func  s    U r   )rO  r  r  r  rE  )r$   rO  r@  r  s      @r   test_inlined_for_iter$Test_Pep523API.test_inlined_for_iter  s     		 .T!r   c                 h   ^^  " S S5      m " S S5      mUU4S jn/ SQnU R                  X5        g )Nc                   $    \ rS rSr\S 5       rSrg)0Test_Pep523API.test_inlined_load_attr.<locals>.Ci&  c                     grC  r"   r#   s    r   rZ  2Test_Pep523API.test_inlined_load_attr.<locals>.C.a'  s    r   r"   N)r)   r*   r+   r,   propertyrZ  r/   r"   r   r   r   rb  &  s     r   r   c                       \ rS rSrS rSrg)0Test_Pep523API.test_inlined_load_attr.<locals>.Di*  c                     grC  r"   )r$   r:  s     r   __getattribute__ATest_Pep523API.test_inlined_load_attr.<locals>.D.__getattribute__+  r>  r   r"   N)r)   r*   r+   r,   ri  r/   r"   r   r   Drg  *  r@  r   rk  c                  J   > T " 5       R                     T" 5       R                     g rP   rG  )r   rk  s   r   rO  3Test_Pep523API.test_inlined_load_attr.<locals>.func-  s    CEECEEr   )rO  rZ  ri  rE  )r$   rO  r@  r   rk  s      @@r   test_inlined_load_attr%Test_Pep523API.test_inlined_load_attr%  s/    	 		 		 2T!r   c                 P   ^^ S mU4S jmU4S jn/ SQnU R                  X5        g )Nc               3      #    Sv   g 7frC  r"   r"   r   r   r!  /Test_Pep523API.test_inlined_send.<locals>.inner4  r[  r  c               3   0   >#    T " 5        S h  vN   g  N7frP   r"   rL  s   r   outer/Test_Pep523API.test_inlined_send.<locals>.outer6  s     ws   c                  &   > [        T " 5       5        g rP   )r  )rt  s   r   rO  .Test_Pep523API.test_inlined_send.<locals>.func8  s    Mr   )rO  rt  rt  r!  r!  rt  r!  rE  )r$   rO  r@  r!  rt  s      @@r   test_inlined_send Test_Pep523API.test_inlined_send3  s#    			NT!r   r"   N)r)   r*   r+   r,   r:  rF  rO  rV  r^  rn  rx  r/   r"   r   r   r2  r2    s%    / """"""r   r2  zneed Py_GIL_DISABLEDc                       \ rS rSrS rSrg)TestPyThreadIdi>  c                   ^^	 [         R                  mSm	 " UU	4S jS[        R                  5      nSn[	        U5       Vs/ s H	  o1" 5       PM     nnU H  nUR                  5         M     U H  nUR                  R                  5         M     T" 5       /nU H  nUR                  R                  5         M     U HT  nUR                  5         UR                  UR                  5        U R                  UR                  UR                  5        MV     U H+  nU R                  U[         5        U R#                  US5        M-     U R                  [%        ['        U5      5      [%        U5      U5        g s  snf )Nr  c                   8   >^  \ rS rSrU 4S jrUU4S jrSrU =r$ )5TestPyThreadId.test_py_thread_id.<locals>.GetThreadIdiF  c                    > [         TU ]  5         [        R                  " 5       U l        U R                  R                  5         [        R                  " 5       U l        S U l        g rP   )	r  r  r  r  get_lockr  r  started_lockpy_tidr  s    r   r  >TestPyThreadId.test_py_thread_id.<locals>.GetThreadId.__init__G  sB     " ) 0%%'$-OO$5!"r   c                    > U R                   R                  5         U R                  R                  5         T" 5       U l        [
        R                  " T5        T" 5       U l        g rP   )r  r  r  r  r  r  r  py_tid2)r$   py_thread_idshort_sleeps    r   r  9TestPyThreadId.test_py_thread_id.<locals>.GetThreadId.runN  sC    !!%%'%%'*n

;'+~r   )r  r  r  r  )r)   r*   r+   r,   r  r  r/   r  )r  r  r  s   @r   GetThreadIdr~  F  s    #. .r   r  re   r   )r  r  r  r  r  rR  r  rC  r  r  rS  r  r  r6   r  r  r  r   r  r  )
r$   r  nthreadr  r  threadpy_thread_idsr  r  r  s
           @@r   test_py_thread_id TestPyThreadId.test_py_thread_id@  s>    )55	. 	.)** 	. */.9.Q;=.9 FLLN F$$&  &( FOO##%  FKKM  / V^^V]];  !C!!#s+sA& ! 	S/0#m2D&	(7 :s   E4r"   N)r)   r*   r+   r,   r  r/   r"   r   r   r{  r{  >  s    2(r   r{  c                       \ rS rSrS rSrg)	TestCEvaliu  c                    [         R                  " S5      n[        SU5      u  p#nUR                  S5      R	                  5       nU R                  UR                  S5      S5        U R                  UR                  S5      S5        g )Nz
            import _testcapi
            _testcapi.toggle_reftrace_printer(True)
            l1 = []
            l2 = []
            del l1
            del l2
            _testcapi.toggle_reftrace_printer(False)
        rA   r   zCREATE listrd   zDESTROY list)rB   rC   r   r   r  r6   r  )r$   rG   r  rK   liness        r   test_ceval_decrefTestCEval.test_ceval_decrefv  sp        %T40	

7#..0]3Q7^4a8r   r"   N)r)   r*   r+   r,   r  r/   r"   r   r   r  r  u  s    9r   r  r  rP   )Nr=  r  r   r!  importlib.machineryr  importlib.utilr  r>  rf  r  r  rw   rB   r  r  rQ  r   r  rk  r  r4   r   test.supportr   r   r   r   r	   r
   r   r   test.support.script_helperr   r   r   r   ImportErrorr  r  r   ModuleNotFoundErrorr;  r   r  r  r   r   r    r%   r'   force_not_colorized_test_classTestCaser1   r  rw  r`  r  r)  r  r  r  r  r  r  r  r]  r  r   r  r  r5  r2  r  r{  r  r)   r  r"   r   r   <module>r     sF         	    
          - & ) ( - 1 9 ( d d
 ''4	   <=
: :
 	''qCx   qC (qCh! NG8,, NG NGbH4x(( H4Vq:** q:h	 {/X.. {/ {/| {'** {' {'|,h// ,B 4h''  4F80h'' 80v	?H%% 	?68,, 6AH-- A
 ,,.6(## 6 /6 
D(*PQYEX.. YE RYEx.8,, .0 &) "K"X&& K"\ 
W,,.DE3(X&& 3( F3(l9!! 9" zMMO Gc    O    MsH   K K% K4 L K"!K"%K10K14L ?L LL