
    daf_                        d dl Z d dlmZmZmZmZmZmZ d dlZd dl	m
Z
 d dlZd dlZd dlmZ  e
j                  d       d Zd Z G d	 d
ej$                        Z G d dej$                        Z G d dej$                        Z G d deej$                        Z G d dej$                        Zedk(  r ej2                          yy)    N)asynccontextmanagerAbstractAsyncContextManagerAsyncExitStacknullcontextaclosingcontextmanager)support)TestBaseExitStackT)modulec                 B     t        j                          fd       }|S )z5Decorator to turn an async function into a test case.c                  @     | i |}t        j                  |       y N)asynciorun)argskwargscorofuncs      5/root/Python-3.12.4/Lib/test/test_contextlib_async.pywrapperz_async_test.<locals>.wrapper   s    T$V$D    )	functoolswraps)r   r   s   ` r   _async_testr      s%    __T  Nr   c                  .    t        j                  d        y r   )r   set_event_loop_policy r   r   tearDownModuler      s    !!$'r   c                   8    e Zd Zed        Zed        Zd Zd Zy)TestAbstractAsyncContextManagerc                   K    G d dt               } |       }| j                  |j                          d {   |       |4 d {   }| j                  ||       d d d       d {    y 7 77 )7 	# 1 d {  7  sw Y   y xY ww)Nc                        e Zd Z fdZ xZS )@TestAbstractAsyncContextManager.test_enter.<locals>.DefaultEnterc                 :   K   t        |   |  d {    y 7 wr   super	__aexit__selfr   	__class__s     r   r'   zJTestAbstractAsyncContextManager.test_enter.<locals>.DefaultEnter.__aexit__        g'...   __name__
__module____qualname__r'   __classcell__r*   s   @r   DefaultEnterr#          / /r   r3   )r   assertIs
__aenter__)r)   r3   managercontexts       r   
test_enterz*TestAbstractAsyncContextManager.test_enter   s     	/6 	/ .G..00': 	, 	,gMM'7+	, 	, 	, 1	, 	, 	, 	, 	,sW   5B
A/B
A1B
A5B
)A3*B
1B
3B
5B;A><BB
c                    K   t         d        fd} |       }|2 3 d {   }| j                  |d        |j                          d {    y 7 06 7 	w)Nc                    K   d  y wr   r   r   r   r   ctxzUTestAbstractAsyncContextManager.test_async_gen_propagates_generator_exit.<locals>.ctx,   	        	c                    K            4 d {    d d d d       d {    y 7 7 # 1 d {  7  sw Y   y xY ww)N   r   )r<   s   r   genzUTestAbstractAsyncContextManager.test_async_gen_propagates_generator_exit.<locals>.gen0   s@     u        s8   A*A.A,AAA 7A Ar@   )r   assertEqualaclose)r)   rA   gvalr<   s       @r   (test_async_gen_propagates_generator_exitzHTestAbstractAsyncContextManager.test_async_gen_propagates_generator_exit(   sh      
	 
		 E 	 	#S"%hhj	 	s7   AAAA'AAAAAAc                      G d dt               }| j                  t              5   |        d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zy)KTestAbstractAsyncContextManager.test_exit_is_abstract.<locals>.MissingAexitNr.   r/   r0   r   r   r   MissingAexitrI   ;       r   rK   )r   assertRaises	TypeError)r)   rK   s     r   test_exit_is_abstractz5TestAbstractAsyncContextManager.test_exit_is_abstract:   s9    	6 	 y) 	N	 	 	s   6?c                 Z    G d d      }| j                  t        |t                      G d dt              }| j                  t        |t                      G d d|      }| j                  t        |t                      G d d|      }| j                  t        |t                     y )	Nc                       e Zd Zd Zd Zy)WTestAbstractAsyncContextManager.test_structural_subclassing.<locals>.ManagerFromScratchc                    K   | S wr   r   r)   s    r   r6   zbTestAbstractAsyncContextManager.test_structural_subclassing.<locals>.ManagerFromScratch.__aenter__C   s        c                    K   y wr   r   )r)   exc_type	exc_value	tracebacks       r   r'   zaTestAbstractAsyncContextManager.test_structural_subclassing.<locals>.ManagerFromScratch.__aexit__E   s	        Nr.   r/   r0   r6   r'   r   r   r   ManagerFromScratchrR   B   s    r   r\   c                        e Zd Z fdZ xZS )QTestAbstractAsyncContextManager.test_structural_subclassing.<locals>.DefaultEnterc                 :   K   t        |   |  d {    y 7 wr   r%   r(   s     r   r'   z[TestAbstractAsyncContextManager.test_structural_subclassing.<locals>.DefaultEnter.__aexit__K   r+   r,   r-   r2   s   @r   r3   r^   J   r4   r   r3   c                       e Zd ZdZy)OTestAbstractAsyncContextManager.test_structural_subclassing.<locals>.NoneAenterNr.   r/   r0   r6   r   r   r   
NoneAenterra   P   s    Jr   rc   c                       e Zd ZdZy)NTestAbstractAsyncContextManager.test_structural_subclassing.<locals>.NoneAexitNr.   r/   r0   r'   r   r   r   	NoneAexitre   U   s    Ir   rg   )
assertTrue
issubclassr   assertFalse)r)   r\   r3   rc   rg   s        r   test_structural_subclassingz;TestAbstractAsyncContextManager.test_structural_subclassingA   s    	 	 	
#57RST	/6 	/ 	
<1LMN	+ 	 	J0KLM	* 	 	I/JKLr   N)r.   r/   r0   r   r9   rF   rO   rk   r   r   r   r    r       s3    	, 	,  "Mr   r    c                   j   e Zd Zed        Zed        Zed        Zed        Zed        Zed        Z	ed        Z
ed        Zed	        Zed
        Zed        Zd Zd Zej$                  d        Zej$                  ed               Zed        Zed        Zed        Zed        Zed        Zy)AsyncContextManagerTestCasec                 4  K   g t         fd       } |       4 d {   }| j                  dg       | j                  |d       j                  |       d d d       d {    | j                  g d       y 7 _7 # 1 d {  7  sw Y   +xY ww)Nc                 \   K    j                  d       d  j                  d       y wN   *     appendstates   r   woohoozEAsyncContextManagerTestCase.test_contextmanager_plain.<locals>.woohoo`   s#     LLOHLLs   ),rq   rr   rq   rr   rs   )r   rB   ru   r)   rx   xrw   s      @r   test_contextmanager_plainz5AsyncContextManagerTestCase.test_contextmanager_plain]   s     		 
	 8 	 	qUQC(Q#LLO	 	 	-		 	 	 	 	sD   BA?B7BB%B&BBB	B
BBc                 |  K   g t         fd       }| j                  t              5   |       4 d {   }| j                  dg       | j                  |d       j	                  |       t               7 D# 1 d {  7  sw Y   nxY w	 d d d        n# 1 sw Y   nxY w| j                  g d       y w)Nc                    K    j                  d       	 d  j                  d       y #  j                  d       w xY wwrp   rt   rv   s   r   rx   zGAsyncContextManagerTestCase.test_contextmanager_finally.<locals>.woohoon   s4     LLO"S!S!s   A- AA  Arq   rr   ry   )r   rM   ZeroDivisionErrorrB   ru   rz   s      @r   test_contextmanager_finallyz7AsyncContextManagerTestCase.test_contextmanager_finallyk   s     		" 
	" 01 	*x * *1  ,  B'Q'))	* * * * *	* 	* 	* 	-sJ   &B<BA:BAA<:B<B	BB	
B	B<B$ B<c           	        K   t         d        }	  |       4 d {    ddz   d d d       d {    | j                  t              d       | j                  |d   j                  d       | j                  |d   j                  d        G d dt              }	  |       4 d {     |d      7 7 # 1 d {  7  sw Y   xY w# t        $ r)}t        j                  |j                        }Y d }~d }~ww xY w7 Z# 1 d {  7  sw Y   nxY wn1# |$ r)}t        j                  |j                        }Y d }~nd }~ww xY w| j                  t        |      d       | j                  |d   j                  d       | j                  |d   j                  d	        G d
 dt              } G d dt              }t        d      t        d       |d       |d      fD ]  }| j                  t        |            5  	  |       4 d {  7   |# 1 d {  7  sw Y   nxY w	 | j                  | d       nL# t        |      $ r;}| j                  ||       t        j                  |j                        }Y d }~nd }~ww xY w| j                  t        |      d       | j                  |d   j                  d       | j                  |d   j                  d       d d d        # 1 sw Y   xY w y w)Nc                    K   d  y wr   r   r   r   r   fzDAsyncContextManagerTestCase.test_contextmanager_traceback.<locals>.f   r=   r>   rq   r   test_contextmanager_tracebackz1/0c                       e Zd Zy)WAsyncContextManagerTestCase.test_contextmanager_traceback.<locals>.RuntimeErrorSubclassNrJ   r   r   r   RuntimeErrorSubclassr      rL   r   r   rr   zraise RuntimeErrorSubclass(42)c                       e Zd Zy)XAsyncContextManagerTestCase.test_contextmanager_traceback.<locals>.StopIterationSubclassNrJ   r   r   r   StopIterationSubclassr      rL   r   r   c                       e Zd Zy)]AsyncContextManagerTestCase.test_contextmanager_traceback.<locals>.StopAsyncIterationSubclassNrJ   r   r   r   StopAsyncIterationSubclassr      rL   r   r   spamhamtype was suppressedzraise stop_exc)r   r   rY   
extract_tb__traceback__rB   lennamelineRuntimeErrorStopIterationStopAsyncIterationsubTestr   failr5   )r)   r   eframesr   r   r   stop_excs           r   r   z9AsyncContextManagerTestCase.test_contextmanager_traceback}   s    		 
		;s  ! 
 	Va()HI/	< 		;s / /*2..      	;))!//:F	;/ / / / /# 	;))!//:F	; 	Va()HI)IJ	M 		); 	 &!u%!&)&v.	
 	CH 4>2 C< s ' '&' ' ' ' II
/:;	 H~ CMM!X.&11!//BFC   Va0  1PQ  1ABC C C	Cs8  LC B6C B:C B8C A(LD )D*D -	D6C 8C :C CCC 	DC<7L<DLD DDDD LE
!E LE

B=LK6	IH
IHH."H%#H.*I2K6J1JK6JAK6,
L6L 	;
Lc                    K   t         d        } |       }|j                          d {    | j                  |j                  t        t	        d      d        d {          y 7 <7 w)Nc                    K   d  y wr   r   r   r   r   wheezHAsyncContextManagerTestCase.test_contextmanager_no_reraise.<locals>.whee   r=   r>   foo)r   r6   rj   r'   rN   )r)   r   r<   s      r   test_contextmanager_no_reraisez:AsyncContextManagerTestCase.test_contextmanager_no_reraise   s[     		 
	fnns}}Y	%8H$OOP 	Os!   'A*A&2A*A(
A*(A*c                   K   t         d        } |       }|j                          d {    | j                  t              5  |j	                  t
        t        d      d        d {    d d d        t        j                  d      r&| j                  |j                  j                         y y 7 7 K# 1 sw Y   JxY ww)Nc                 0   K   	 d  y #  d  Y y xY wwr   r   r   r   r   whoozTAsyncContextManagerTestCase.test_contextmanager_trap_yield_after_throw.<locals>.whoo   s     s   
 r   Tcpython)r   r6   rM   r   r'   rN   r	   check_impl_detailrj   rA   ag_suspendedr)   r   r<   s      r   *test_contextmanager_trap_yield_after_throwzFAsyncContextManagerTestCase.test_contextmanager_trap_yield_after_throw   s     		 
	
 fnn|, 	C--	9U+;TBBB	C$$T2SWW112 3 	B	C 	Cs:   'CB1C$B5'B3(B5,AC3B55B>:Cc                    K   t         d        } |       }| j                  t              5  |j                          d {    d d d        y 7 # 1 sw Y   y xY ww)Nc                    K   y wr   r   r   r   r   r   zKAsyncContextManagerTestCase.test_contextmanager_trap_no_yield.<locals>.whoo   s	     rZ   )r   rM   r   r6   r   s      r   !test_contextmanager_trap_no_yieldz=AsyncContextManagerTestCase.test_contextmanager_trap_no_yield   s\     		 
	 f|, 	#.."""	# 	#"	# 	#s-   )AAA A	AAAAc                 l  K   t         d        } |       }|j                          d {    | j                  t              5  |j	                  d d d        d {    d d d        t        j                  d      r&| j                  |j                  j                         y y 7 z7 K# 1 sw Y   JxY ww)Nc                     K   d  d  y wr   r   r   r   r   r   zOAsyncContextManagerTestCase.test_contextmanager_trap_second_yield.<locals>.whoo   s     s   Tr   )
r   r6   rM   r   r'   r	   r   rj   rA   r   r   s      r   %test_contextmanager_trap_second_yieldzAAsyncContextManagerTestCase.test_contextmanager_trap_second_yield   s     		 
	 fnn|, 	2--dD111	2$$T2SWW112 3 	1	2 	2s:   'B4B$B4B(B&B(AB4&B((B1-B4c                    K   t         d        } |       }|j                          d {    | j                  t              5  |j	                  t
        d d        d {    d d d        y 7 B7 # 1 sw Y   y xY ww)Nc                 >   K   	 d  y # t         $ r t        w xY wwr   )r   SyntaxErrorr   r   r   r   zLAsyncContextManagerTestCase.test_contextmanager_non_normalised.<locals>.whoo   s"     " "!!"s   
 )r   r6   rM   r   r'   r   r   s      r   "test_contextmanager_non_normalisedz>AsyncContextManagerTestCase.test_contextmanager_non_normalised   sx     		" 
	" fnn{+ 	:--dD999	: 	: 	9	: 	:s9   'A<A,A<A0A.A0#
A<.A00A95A<c                 *   K   g t          fd       } |       4 d {   } j                  dg        j                  |d       j                  |       t        d      7 E# 1 d {  7  sw Y   nxY w j                  g d       y w)Nc                    K   j                  d       	 d y # t        $ r<} j                  | j                  d          j                  g d       Y d } ~ y d } ~ ww xY ww)Nrq   rr   r   ry   )ru   r   r   rB   )r   r)   rw   s    r   rx   zFAsyncContextManagerTestCase.test_contextmanager_except.<locals>.woohoo   sR     LLO6$ 6QVVAY'  556s*   A$ A$	A!2AA$A!!A$rq   rr   rs   ry   )r   rB   ru   r   rz   s   `  @r   test_contextmanager_exceptz6AsyncContextManagerTestCase.test_contextmanager_except   s     		6 
	6 8 	) 	)qUQC(Q#LLO#C((		) 	) 	) 	)
 	-s3   BA'BAA)'B)A;/A20A;7Bc           	        K   t         d        } G d dt              } G d dt              }t        d      t        d       |d       |d      fD ]0  }| j                  t	        |            5  	  |       4 d {    | y 7 # 1 d {  7  sw Y   nxY w	 | j                  | d	       n(# t        $ r}| j                  ||       Y d }~nd }~ww xY wd d d        # 1 sw Y   xY ww)
Nc                    K   d  y wr   r   r   r   r   rx   zOAsyncContextManagerTestCase.test_contextmanager_except_stopiter.<locals>.woohoo	  r=   r>   c                       e Zd Zy)^AsyncContextManagerTestCase.test_contextmanager_except_stopiter.<locals>.StopIterationSubclassNrJ   r   r   r   r   r     rL   r   r   c                       e Zd Zy)cAsyncContextManagerTestCase.test_contextmanager_except_stopiter.<locals>.StopAsyncIterationSubclassNrJ   r   r   r   r   r     rL   r   r   r   r   r   r   )r   r   r   r   r   r   	Exceptionr5   )r)   rx   r   r   r   exs         r   #test_contextmanager_except_stopiterz?AsyncContextManagerTestCase.test_contextmanager_except_stopiter  s     		 
		M 		); 	 &!u%!&)&v.	
 	<H 4>2 <<%x ' '&	<' ' ' ' '
 II
/:; ! 0MM"h//0	< < <s~   A-C//C#1B2<B
=B2 BC/B2BBBB2C#2	C;CC#CC#	C/#C,	(C/c                   K   t         d        }| j                  t              5   |       4 d {    ddz   d d d       d {    d d d        | j                  t              5   |       4 d {    t        7 M7 :# 1 d {  7  sw Y   JxY w# 1 sw Y   NxY w7 /# 1 d {  7  sw Y   nxY w	 d d d        y # 1 sw Y   y xY ww)Nc                 X   K   	 d  y # t         $ r} t        d|        | d } ~ ww xY ww)Nzcaught )r   r   excs    r   rx   zQAsyncContextManagerTestCase.test_contextmanager_wrap_runtimeerror.<locals>.woohoo$  s0     = ="WSE?3<=s   *
 *	'"'*rq   r   )r   rM   r   r   )r)   rx   s     r   %test_contextmanager_wrap_runtimeerrorzAAsyncContextManagerTestCase.test_contextmanager_wrap_runtimeerror"  s     		= 
	= |, 	x  A 	 12 	)x ) )((    	 	) ) ) ) )	) 	) 	)s   "CBA>BBBB B
C'C3B#4C7B%>B BB	B	B	BB C#C%B7	+B.,B7	3C;	CC	Cc                 <    d }t          |d      d               }|S )Nc                        fd}|S )Nc                 R    j                         D ]  \  }}t        | ||        | S r   )itemssetattr)r   kvkws      r   decoratez]AsyncContextManagerTestCase._create_contextmanager_attribs.<locals>.attribs.<locals>.decorate8  s-    88: &CAaD1%&r   r   )r   r   s   ` r   attribszKAsyncContextManagerTestCase._create_contextmanager_attribs.<locals>.attribs7  s     Or   bar)r   c                   K   d yw)Whee!Nr   )r   s    r   bazzGAsyncContextManagerTestCase._create_contextmanager_attribs.<locals>.baz=  s      r>   )r   )r)   r   r   s      r   _create_contextmanager_attribsz:AsyncContextManagerTestCase._create_contextmanager_attribs6  s/    	 
	U		 
 
	 
r   c                     | j                         }| j                  |j                  d       | j                  |j                  d       y )Nr   r   )r   rB   r.   r   r)   r   s     r   test_contextmanager_attribsz7AsyncContextManagerTestCase.test_contextmanager_attribsD  s8    113e,%(r   c                 \    | j                         }| j                  |j                  d       y Nr   r   rB   __doc__r   s     r   test_contextmanager_doc_attribz:AsyncContextManagerTestCase.test_contextmanager_doc_attribI  s$    113g.r   c                    K    | j                         d       }| j                  |j                  d       |4 d {    	 d d d       d {    y 7 7 # 1 d {  7  sw Y   y xY wwr   r   r   s     r   *test_instance_docstring_given_cm_docstringzFAsyncContextManagerTestCase.test_instance_docstring_given_cm_docstringN  sf      4d113D9g. 	 		 	 	 	 	 	 	sD   9A+AA+AA+AA+A+A(AA($A+c                    K   t         d        } |dddd      4 d {   }| j                  |d       d d d       d {    y 7 '7 # 1 d {  7  sw Y   y xY ww)Nc                   K   | |||f y wr   r   r)   r   r   kwdss       r   rx   z9AsyncContextManagerTestCase.test_keywords.<locals>.woohooY  s     tT**s   r@      !   ,   r   )r@   r   r   r   r   rB   )r)   rx   targets      r   test_keywordsz)AsyncContextManagerTestCase.test_keywordsV  sj      
	+ 
	+r"= 	7 	7V%56	7 	7 	7 	7 	7 	7 	7sC   A AA AA A	A 	A AAAA c                     K   ddt          fd       } |       fd                d {     j                  d        j                  d       y 7 )w)Nr   c                 ^   K   dz  } dz  d  dz  j                  |        y wNrq   )rB   )beforedepthncolsr)   s    r   rx   z:AsyncContextManagerTestCase.test_recursive.<locals>.woohood  s>      QJE FQJEQJEUF+s   *-c                  <   K    dk  r         d {    y y 7 w)N
   r   )r   	recursives   r   r   z=AsyncContextManagerTestCase.test_recursive.<locals>.recursivep  s!     rzk!! !s   r   r   )r)   rx   r   r   r   s   ` @@@r   test_recursivez*AsyncContextManagerTestCase.test_recursive_  sk     			, 
		, 
	" 
	" k#" 	s   /A!A*A!c                     K   dt         fd       } |        fd       } j                          |        d {     j                         y 7 w)NFc                     K   d d  d y wNTFr   entereds   r   r8   z;AsyncContextManagerTestCase.test_decorator.<locals>.context~  s      GGs   c                  0   K   j                          y wr   )rh   r   r)   s   r   testz8AsyncContextManagerTestCase.test_decorator.<locals>.test  s     OOG$   )r   rj   r)   r8   r   r   s   `  @r   test_decoratorz*AsyncContextManagerTestCase.test_decoratorz  s`     		 
	 
	% 
	% 	!f! 	s   <A AAc                    K   dt         fd       } |        fd       } j                          j                  t        d      5   |        d {    d d d         j                         y 7 # 1 sw Y   xY ww)NFc                 0   K   	 d d  d y # d w xY wwr   r   r   s   r   r8   zJAsyncContextManagerTestCase.test_decorator_with_exception.<locals>.context  s      %s    c                  D   K   j                          t        d      w)Nr   )rh   	NameErrorr   s   r   r   zGAsyncContextManagerTestCase.test_decorator_with_exception.<locals>.test  s     OOG$E""s    r   )r   rj   assertRaisesRegexr  r   s   `  @r   test_decorator_with_exceptionz9AsyncContextManagerTestCase.test_decorator_with_exception  s     		  
	  
	# 
	# 	!##Iu5 	&LL	! 	 	s0   ABA8A6A8B6A88B=Bc                   K   t         d         G fddt              } |       }|j                  dd       d {    | j                  |j                  d       | j                  |j
                  d       | j                  |j                  d         |       }|j                  ddd       d {    | j                  |j                  d       | j                  |j
                  d       | j                  |j                  d        |       }|j                  dd	       d {    | j                  |j                  d       | j                  |j
                  d       y 7 *7 7 Bw)
Nc                    K   d  y wr   r   r   r   r   r8   zCAsyncContextManagerTestCase.test_decorating_method.<locals>.context  r=   r>   c                   ,    e Zd Z W         dd       Zy)@AsyncContextManagerTestCase.test_decorating_method.<locals>.TestNc                 6   K   || _         || _        || _        y wr   )abc)r)   r  r  r  s       r   methodzGAsyncContextManagerTestCase.test_decorating_method.<locals>.Test.method  s     s   r   )r.   r/   r0   r  )r8   s   r   Testr
    s    Y r   r  rq      r  r  r  )r  r  )r   objectr  rB   r  r  r  )r)   r  r   r8   s      @r   test_decorating_methodz2AsyncContextManagerTestCase.test_decorating_method  s/     
	 
		6 	 vkk!Q##&vkk#sC(((%%%vkkAk##### 	  	) 	$s5   :E.E'A5E.3E*4A5E.)E,*>E.*E.,E.N)r.   r/   r0   r   r|   r   r   r   r   r   r   r   r   r   r   r   r   r	   requires_docstringsr   r   r   r   r   r  r  r   r   r   rm   rm   [   s   . . . ." 5C 5Cn Q Q 3 3 # # 3 3 : : . ." < <4 ) )&)
   / !/     ! 7 7 # #4 " "$ " ", $ $r   rm   c                   `    e Zd Zej                  d        Zed        Zed        Zed        Z	y)AclosingTestCasec                 r    t         j                  }t        d       }| j                  |j                  |       y r   )r   r   rB   )r)   cm_docstringobjs      r   test_instance_docsz#AclosingTestCase.test_instance_docs  s*    ''tnl3r   c                    K   g  G fdd      } |       }| j                  g        t        |      4 d {   }| j                  ||       d d d       d {    | j                  dg       y 7 :7 # 1 d {  7  sw Y   *xY ww)Nc                       e Zd Z fdZy))AclosingTestCase.test_aclosing.<locals>.Cc                 0   K   j                  d       y wr   rt   r)   rw   s    r   rC   z0AclosingTestCase.test_aclosing.<locals>.C.aclose       Qr   Nr.   r/   r0   rC   rv   s   r   Cr         r   r"  rq   )rB   r   r)   r"  r{   yrw   s       @r   test_aclosingzAclosingTestCase.test_aclosing  s     	  	  C#A; 	# 	#!Q"	# 	#$	# 	# 	# 	# 	#sD   7BA5BA9BA7B7B9B?B BBc                 ~  K   g  G fdd      } |       }| j                  g        | j                  t              5  t        |      4 d {   }| j                  ||       ddz   d d d       d {    d d d        | j                  dg       y 7 G7 "# 1 d {  7  sw Y   2xY w# 1 sw Y   6xY ww)Nc                       e Zd Z fdZy)/AclosingTestCase.test_aclosing_error.<locals>.Cc                 0   K   j                  d       y wr   rt   r  s    r   rC   z6AclosingTestCase.test_aclosing_error.<locals>.C.aclose  r   r   Nr!  rv   s   r   r"  r)    r#  r   r"  rq   r   )rB   rM   r   r   r$  s       @r   test_aclosing_errorz$AclosingTestCase.test_aclosing_error  s     	  	  C#01 	{  a  A&A 	 	$    	 	se   =B= B1BB1B,B17B8B1<B=B1B1B.	"B%#B.	*B11B:6B=c                   K   g t         fd       fd} |       }| j                  g        | j                  t              5  t	        |      4 d {   }| j                  ||       | j                  d|j                          d {          ddz   d d d       d {    d d d        | j                  dg       y 7 o7 ;7 $# 1 d {  7  sw Y   4xY w# 1 sw Y   8xY ww)Nc               3   f   K   	 d   j                  d       y #  j                  d       w xY wwr   rt   rv   s   r   sync_resourcez>AclosingTestCase.test_aclosing_bpo41229.<locals>.sync_resource  s%      QQs   1 1.1c                 Z   K            5  d d d d d        y # 1 sw Y   y xY ww)Nr   )r.  s   r   agenfuncz9AclosingTestCase.test_aclosing_bpo41229.<locals>.agenfunc  s*        s   +	+(+r0  rq   r   )r   rB   rM   r   r   	__anext__)r)   r2  r{   r%  rw   r.  s       @@r   test_aclosing_bpo41229z'AclosingTestCase.test_aclosing_bpo41229  s     		  
	 	
 J#01 	{  a  A&  1;;=%89A 	
 	$	%8   	 	sx   AC/C#CC#2CC
CC#'C(C#,C/C#
CC#C 	CC 	C##C,(C/N)
r.   r/   r0   r	   r  r  r   r&  r+  r4  r   r   r   r  r    sV      4 !4
 	% 	% % % % %r   r  c                       e Zd Z G d de      ZeZg dZd Zed        Z	ed        Z
ed        Zed        Zed	        Zed
        Zed        Zy)TestAsyncExitStackc                   .    e Zd Zed        Zd Zd Zd Zy)%TestAsyncExitStack.SyncAsyncExitStackc                 0   t        j                         j                         j                  |       }|j	                  fd       j                          |j                         }|s|j                         S |j                  }	 |#  ||_        |xY w)Nc                 $    j                         S r   )stop)r   loops    r   <lambda>zETestAsyncExitStack.SyncAsyncExitStack.run_coroutine.<locals>.<lambda>	  s    $))+ r   )	r   get_event_loop_policyget_event_loopcreate_taskadd_done_callbackrun_forever	exceptionresult__context__)r   tr   r8   r<  s       @r   run_coroutinez3TestAsyncExitStack.SyncAsyncExitStack.run_coroutine  s    002AACD  &A 56++-Cxxz!//I&-COIs   B
 
Bc                 @    | j                  | j                               S r   )rG  rC   rT   s    r   closez+TestAsyncExitStack.SyncAsyncExitStack.close  s    %%dkkm44r   c                 @    | j                  | j                               S r   )rG  r6   rT   s    r   	__enter__z/TestAsyncExitStack.SyncAsyncExitStack.__enter__  s    %%doo&788r   c                 >    | j                   | j                  |       S r   )rG  r'   r)   exc_detailss     r   __exit__z.TestAsyncExitStack.SyncAsyncExitStack.__exit__  s    %%ndnnk&BCCr   N)r.   r/   r0   staticmethodrG  rI  rK  rO  r   r   r   SyncAsyncExitStackr8    s$    		 
	$	5	9	Dr   rQ  ))rO  z7return self.run_coroutine(self.__aexit__(*exc_details))rG  z	raise excrR  )r'   zraise exc_details[1])r'   zcb_suppress = cb(*exc_details)c                     t        j                         | _        t        j                  | j                         | j	                  | j                  j
                         | j	                  t         j                  d        y r   )r   new_event_loopr<  set_event_loop
addCleanuprI  r   rT   s    r   setUpzTestAsyncExitStack.setUp*  sL    **,	tyy)		(55t<r   c           	      :  K   di fdi fdi fdt        d      fdt        d      fdt        d      fg}g fd}t               4 d {   }t        |      D ]o  \  }}|r|r |j                  |g|i |}n=|r |j                  |g| }n'|r |j                  |fi |}n|j                  |      }| j	                  ||       q |j
                  D ]s  }| j	                  |d   j                  |       | j                  |d   j                  |j                         | j                  |d   j                  |j                         u d d d       d {    | j                  |       g t               4 d {   }| j                  t              5  |j                  d       d d d        | j                  t              5  | j                  j                  d       d d d        | j                  t              5  |j                  |d	
       d d d        d d d       d {    | j                  g        y 7 7 # 1 d {  7  sw Y   xY w7 # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   `xY w7 W# 1 d {  7  sw Y   gxY ww)Nr   )rq   )rq   r  rq   )examplec                  4   K   j                  | |f       yw)zTest metadata propagationNrt   )r   r   rD  s     r   _exitz5TestAsyncExitStack.test_async_callback.<locals>._exit;  s     MM4,'s   )argr     )callbackr\  )dictr   reversedpush_async_callbackr5   _exit_callbacks__wrapped__assertNotEqualr.   assertIsNoner   rB   rM   rN   
exit_stack)	r)   expectedr[  stackr   r   r   r   rD  s	           @r   test_async_callbackz&TestAsyncExitStack.test_async_callback0  s     H2JBKa!4?#DO$
 	( "# 	E 	Eu&x0 	(
dD111%G$G$GA111%?$?A111%@4@A11%8Aa'	( !00 Egaj44e<##GAJ$7$7H!!'!*"4"4emmDE	E 	E  	*!# 	A 	Au""9- 1))a)01""9- ;333:;""9- A))5a)@A	A 	A 	$5	E 	E 	E 	E 	E&	A1 1; ;A A	A 	A 	A 	As   AJIJD I	JI&JIJJI .JI,(JI8J!J,J-JJ	IIIJ I)	%J,I5	1J8J	=JJJJJJc                    K   t          fd}d } fd} G d dt              } j                         4 d {   }|j                  |        j	                  |j
                  d   d   |        ||      }|j                  |        j	                  |j
                  d   d   j                  |       |j                  |        j	                  |j
                  d   d   |        ||      }|j                  |        j	                  |j
                  d   d   j                  |       |j                  |        j	                  |j
                  d   d   |       |j                  |        j	                  |j
                  d   d   |       ddz   d d d       d {    y 7 q7 # 1 d {  7  sw Y   y xY ww)	Nc                 2   K   j                  |        y wr   )r5   )rW   r   exc_tb
exc_raisedr)   s      r   _expect_excz7TestAsyncExitStack.test_async_push.<locals>._expect_exc^  s     MM(J/s   c                     K   ywNTr   )rN  s    r   _suppress_excz9TestAsyncExitStack.test_async_push.<locals>._suppress_exc`  s	     rZ   c                 t   K   j                  |        j                  |       j                  |       y wr   )re  )rW   r   rl  r)   s      r   
_expect_okz6TestAsyncExitStack.test_async_push.<locals>._expect_okb  s1     h'c"f%s   58c                       e Zd Zd Zd Zd Zy)2TestAsyncExitStack.test_async_push.<locals>.ExitCMc                     || _         y r   	check_exc)r)   rx  s     r   __init__z;TestAsyncExitStack.test_async_push.<locals>.ExitCM.__init__g  s	    !*r   c                 .   K   | j                  d       y w)NzShould not be called!)r   rT   s    r   r6   z=TestAsyncExitStack.test_async_push.<locals>.ExitCM.__aenter__i  s     		12s   c                 >   K    | j                   |  d {    y 7 wr   rw  rM  s     r   r'   z<TestAsyncExitStack.test_async_push.<locals>.ExitCM.__aexit__k  s     $dnnk222s   N)r.   r/   r0   ry  r6   r'   r   r   r   ExitCMru  f  s    +33r   r|  r0  rq   r   )r   r  rf  push_async_exitr5   rb  __self__)r)   rn  rq  rs  r|  rh  cmrm  s   `      @r   test_async_pushz"TestAsyncExitStack.test_async_push[  s    &
	0		&	3V 	3 ??$ 	 	!!*-MM%//3A6
C
#B!!"%MM%//3A6??D!!-0MM%//3A6F$B!!"%MM%//3A6??D!!+.MM%//3A6D!!+.MM%//3A6DaC	 	 	 	 	 	 	sF   8GF-G EF2G'F0(G0G2G8F;9G Gc                   K    G fddt               }g  |       }t               4 d {   }|j                  fd       }| j                  |       |j	                  |       d {    | j                  |j                  d   d   j                  |       j                  d       d d d       d {    | j                  g d       y 7 7 h7 # 1 d {  7  sw Y   -xY ww)Nc                   "    e Zd Z fdZ fdZy);TestAsyncExitStack.test_enter_async_context.<locals>.TestCMc                 0   K   j                  d       y wr   rt   )r)   rD  s    r   r6   zFTestAsyncExitStack.test_enter_async_context.<locals>.TestCM.__aenter__       a r   c                 0   K   j                  d       y w)Nr]  rt   )r)   rN  rD  s     r   r'   zETestAsyncExitStack.test_enter_async_context.<locals>.TestCM.__aexit__  r  r   Nr[   rD  s   r   TestCMr    s    !!r   r  c                  0   K    j                  d       y w)N   rt   r  s   r   r[  z:TestAsyncExitStack.test_enter_async_context.<locals>._exit  s     a r   r0  rq   r  )rq   r  r]  r  )
r  r   ra  assertIsNotNoneenter_async_contextr5   rb  r~  ru   rB   )r)   r  r  rh  r[  rD  s        @r   test_enter_async_contextz+TestAsyncExitStack.test_enter_async_context  s     	!V 	! X!# 	 	u&&! '!  '++B///MM%//3A6??DMM!	 	 	.	
 0	 	 	 	sW   )C,CC,:C*C+AC,C,7C8C,CC,C)C C)%C,c                   K    G d d      } G d d      } G d d      }| j                         4 d {   }| j                  t        d      5  |j                   |              d {    d d d        | j                  t        d      5  |j                   |              d {    d d d        | j                  t        d      5  |j                   |              d {    d d d        | j	                  |j
                         d d d       d {    y 7 7 # 1 sw Y   xY w7 # 1 sw Y   xY w7 V# 1 sw Y   UxY w7 1# 1 d {  7  sw Y   y xY ww)Nc                       e Zd Zy)MTestAsyncExitStack.test_enter_async_context_errors.<locals>.LacksEnterAndExitNrJ   r   r   r   LacksEnterAndExitr    rL   r   r  c                       e Zd Zd Zy)FTestAsyncExitStack.test_enter_async_context_errors.<locals>.LacksEnterc                    K   y wr   r   )r)   exc_infos     r   r'   zPTestAsyncExitStack.test_enter_async_context_errors.<locals>.LacksEnter.__aexit__  	     rZ   Nrf   r   r   r   
LacksEnterr        r   r  c                       e Zd Zd Zy)ETestAsyncExitStack.test_enter_async_context_errors.<locals>.LacksExitc                    K   y wr   r   rT   s    r   r6   zPTestAsyncExitStack.test_enter_async_context_errors.<locals>.LacksExit.__aenter__  r  rZ   Nrb   r   r   r   	LacksExitr    r  r   r  asynchronous context manager)rf  r  rN   r  rj   rb  )r)   r  r  r  rh  s        r   test_enter_async_context_errorsz2TestAsyncExitStack.test_enter_async_context_errors  s?    	 		 		 	 ??$ 	4 	4''	3QR E//0A0CDDDE''	3QR >//
===>''	3QR =//	<<<=U223	4 	4 	4DE E >> > == =	4 	4 	4 	4s   3E DE ED!*D+D!/ED/'D-(D/,E
D=$D;%D=)#EE E	E D!!D*	&E-D//D8	4E;D==E	E	E EEEE c                 :  K   d }d fd}	 | j                         4 d {   }|j                  |t               |j                  |t               |j                  |t               |j                  |       |j                  |t               ddz   d d d       d {    | j                  d       d   }| j                  |t               | j                  |j                  t               y 7 7 S# 1 d {  7  sw Y   cxY w# t        $ r}| j                  |j                  t               | j                  |j                  j                  t               | j                  |j                  j                  j                         Y d }~d }~ww xY ww)Nc                    K   | wr   r   r   s    r   	raise_exczHTestAsyncExitStack.test_async_exit_exception_chaining.<locals>.raise_exc  s     IrU   c                     K   | ywrp  r   )rN  saved_detailss    r   suppress_exczKTestAsyncExitStack.test_async_exit_exception_chaining.<locals>.suppress_exc  s     'Ms   rq   r   0Expected IndexError, but no exception was raised)rf  ra  
IndexErrorKeyErrorAttributeErrorr}  
ValueErrorr   assertIsInstancerE  re  r   )r)   r  r  rh  r   	inner_excr  s         @r   "test_async_exit_exception_chainingz5TestAsyncExitStack.test_async_exit_exception_chaining  sP    	 	
	J(  E)))Z@)))X>)))^D%%l3)))Z@A  IIHI!!$	i4i335FG#      	G!!#//8<!!#//"="=~Ncoo99EEFF		Gsv   FD C3D A/C7D !C5"D &AF3D 5D 7D	=D >D	D 	FA9FFFFc           	         K    G d dt               t        fd       t         fd       }|fD ]-  } j                         5  	  |       4 d {    t                y 7 # 1 d {  7  sw Y   nxY w	  j	                  d       n-# $ r%} j                  |j                         Y d }~nd }~ww xY wd d d        # 1 sw Y   xY ww)Nc                       e Zd Zy)WTestAsyncExitStack.test_async_exit_exception_explicit_none_context.<locals>.MyExceptionNrJ   r   r   r   MyExceptionr    rL   r   r  c                 `   K   	 d  y # t         $ r         } 	 | # d | _        w xY ww xY wwr   )BaseExceptionrE  )r   r  s    r   my_cmzQTestAsyncExitStack.test_async_exit_exception_explicit_none_context.<locals>.my_cm  s7     +  +!m+I&*CO+s    . .+	'+.c                    K   j                         4 d {   } | j                                 d {    |  d d d       d {    y 7 87 7 	# 1 d {  7  sw Y   y xY wwr   )rf  r  )rh  r  r)   s    r   my_cm_with_exit_stackzaTestAsyncExitStack.test_async_exit_exception_explicit_none_context.<locals>.my_cm_with_exit_stack  sa     (  E//888  8   sT   A,AA,AA	A A,AA,AA,A)A A)%A,r  )r   r   r   r  r   re  rE  )r)   r  r  r   r  r  s   `   @@r   /test_async_exit_exception_explicit_none_contextzBTestAsyncExitStack.test_async_exit_exception_explicit_none_context  s     
	) 	 
	+ 
	+ 
	 
	
 /0 	RB RR!t + +(l*		R+ + + + +
 IIPQ # 7%%coo667	R R Rs~   AC	CBA'
BA)%C'B)A;/A20A;7B?CB;B61C6B;;C>	CC	Cc                   K    G d dt               } |       }t               |_        t               |_        | j                         }| j	                  t
        d      5  |j                  |       d {    d d d        |j                  |       | j                  |j                  d   d   |       y 7 @# 1 sw Y   ?xY ww)Nc                       e Zd Zy)>TestAsyncExitStack.test_instance_bypass_async.<locals>.ExampleNrJ   r   r   r   Exampler    s    r   r  r  r0  rq   )
r  r6   r'   rf  r  rN   r  r}  r5   rb  )r)   r  r  rh  s       r   test_instance_bypass_asyncz-TestAsyncExitStack.test_instance_bypass_async  s     #f#Yx!##I/MN 	0++B///	0b!e++B/2B7 0	0 	0s0   ACB52B33B57<C3B55B>:CN)r.   r/   r0   r   rQ  rf  callback_error_internal_framesrW  r   ri  r  r  r  r  r  r  r   r   r   r6  r6    s    D^ D: $J&"= (% (%T ! !F / /* 4 4& H H>  R  RD 	8 	8r   r6  c                       e Zd Zed        Zy)TestAsyncNullcontextc                    K    G d d      } |       }t        |      4 d {   }| j                  ||       d d d       d {    y 7 '7 # 1 d {  7  sw Y   y xY ww)Nc                       e Zd Zy)6TestAsyncNullcontext.test_async_nullcontext.<locals>.CNrJ   r   r   r   r"  r    rL   r   r"  )r   r5   )r)   r"  r  c_ins       r   test_async_nullcontextz+TestAsyncNullcontext.test_async_nullcontext  s]     	 	Cq> 	# 	#TMM$"	# 	# 	# 	# 	# 	# 	#sC   !A$AA$AA$AA$A$A!AA!A$N)r.   r/   r0   r   r  r   r   r   r  r    s    # #r   r  __main__)r   
contextlibr   r   r   r   r   r   r   r   r	   unittestrY   test.test_contextlibr
   requires_working_socketr   r   TestCaser    rm   r  r6  r  r.   mainr   r   r   <module>r     s    ; ;     2   t ,(>Mh&7&7 >MBi$("3"3 i$X9%x(( 9%xs8*H,=,= s8l#8,, # zHMMO r   