
    2hhl                     $   S 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rSSKJr  SSKrSSKJr  SSKJr  S rS	 rS
 rS r " S S\5      r " S S\R4                  R6                  5      r " S S5      r " S S\R<                  5      r " S S5      r \RB                  " \"" \S5      S5       " S S\ \R<                  5      5       r#\RB                  " \"" \S5      S5       " S S\ \R<                  5      5       r$ " S S\ \R<                  5      r% " S S5      r&\RB                  " \"" \S5      S5       " S  S!\&\R<                  5      5       r'\RB                  " \"" \S5      S5       " S" S#\&\R<                  5      5       r( " S$ S%\&\R<                  5      r) " S& S'5      r* " S( S)\*\R<                  5      r+\RB                  " \"" \S5      S5       " S* S+\*\R<                  5      5       r,\-S,:X  a  \R\                  " 5         gg)-zTests for futures.py.    N)mock)GenericAlias)futures)utils)supportc                  0    [         R                  " S 5        g N)asyncioset_event_loop_policy     G/opt/python-3.13.8/usr/lib/python3.13/test/test_asyncio/test_futures.pytearDownModuler      s    !!$'r   c                     U $ r	   r   fs    r   	_fakefuncr      s    Hr   c                      g r	   r   r   r   r   first_cbr          r   c                      g r	   r   r   r   r   last_cbr      r   r   c                       \ rS rSrSrSrg)ReachableCode#   zyException to raise to indicate that some code was reached.

Use this exception if using mocks is not a good alternative.
r   N)__name__
__module____qualname____firstlineno____doc____static_attributes__r   r   r   r   r   #   s    r   r   c                   $    \ rS rSrSrS rS rSrg)SimpleEvilEventLoop*   zEBase class for UAF and other evil stuff requiring an evil event loop.c                     gNFr   selfs    r   	get_debugSimpleEvilEventLoop.get_debug-   s    r   c                 |    U R                  5       (       d'  U R                  5       (       d  U R                  5         g g g r	   )	is_closed
is_runningcloser'   s    r   __del__SimpleEvilEventLoop.__del__0   s,    ~~(9(9JJL ):r   r   N)r   r   r   r   r    r)   r/   r!   r   r   r   r#   r#   *   s    Or   r#   c                   T    \ 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)
DuckFuture6   FNc                 >    U R                  5       (       a  gSU l        g)NFT)done_DuckFuture__cancelledr'   s    r   cancelDuckFuture.cancel?   s    99;;r   c                     U R                   $ r	   )r6   r'   s    r   	cancelledDuckFuture.cancelledE   s    r   c                 n    U R                   =(       d#    U R                  S L=(       d    U R                  S L$ r	   )r6   _DuckFuture__result_DuckFuture__exceptionr'   s    r   r5   DuckFuture.doneH   s4       0==,0##4/	1r   c                     U R                  U R                  5       5        U R                  b  U R                  eU R                  $ r	   )assertFalser:   r>   r=   r'   s    r   resultDuckFuture.resultM   s9    )*'"""}}r   c                 X    U R                  U R                  5       5        U R                  $ r	   )rA   r:   r>   r'   s    r   	exceptionDuckFuture.exceptionS   s#    )*r   c                 p    U R                  U R                  5       5        U R                  U5        Xl        g r	   )rA   r5   assertIsNotNoner=   )r(   rB   s     r   
set_resultDuckFuture.set_resultW   s)    %V$r   c                 p    U R                  U R                  5       5        U R                  U5        Xl        g r	   )rA   r5   rH   r>   )r(   rE   s     r   set_exceptionDuckFuture.set_exception\   s*    %Y'$r   c              #      #    U R                  5       (       d  SU l        U v   U R                  U R                  5       5        U R                  5       $ 7fNT)r5   _asyncio_future_blocking
assertTruerB   r'   s    r   __iter__DuckFuture.__iter__a   s;     yy{{,0D)J		${{}s   AA)__cancelled__exception__resultrP   )r   r   r   r   rP   r6   r=   r>   r7   r:   r5   rB   rE   rI   rL   rR   r!   r   r   r   r2   r2   6   sA      %KHK 1
 
%
r   r2   c                   4   ^  \ rS rSrU 4S jrS rS rSrU =r$ )	DuckTestsi   c                    > [         TU ]  5         U R                  5       U l        U R	                  U R                  R
                  5        g r	   supersetUpnew_test_looploop
addCleanupr.   r(   	__class__s    r   r]   DuckTests.setUpk   0    &&(			(r   c                 f    [        5       n[        R                  " U5      nU R                  X!5        g r	   )r2   r
   wrap_futureassertIsr(   r   gs      r   test_wrap_futureDuckTests.test_wrap_futurep   s%    L"ar   c                 f    [        5       n[        R                  " U5      nU R                  X!5        g r	   )r2   r
   ensure_futurerg   rh   s      r   test_ensure_futureDuckTests.test_ensure_futureu   s%    L!!!$ar   r_   )	r   r   r   r   r]   rj   rn   r!   __classcell__rb   s   @r   rX   rX   i   s    )

 r   rX   c                     ^  \ rS rSrS rU 4S j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\4S jrS rS rS rS rS rS rS r\R:                  " S5      S 5       r\R:                  " S5      S 5       r\R:                  " S5      S 5       r \R:                  " S5      S 5       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,\R:                  " S5      S) 5       r-S* r.S+ r/S, r0S- r1S. r2S/ r3S0 r4S1 r5S2r6U =r7$ )3BaseFutureTests{   c                 &    U R                   " U0 UD6$ r	   )clsr(   argskwargss      r   _new_futureBaseFutureTests._new_future}   s    xx(((r   c                    > [         TU ]  5         U R                  5       U l        U R	                  U R                  R
                  5        g r	   r[   ra   s    r   r]   BaseFutureTests.setUp   rd   r   c                     U R                   [           nU R                  UR                  [        45        U R	                  U[
        5        g r	   )rw   strassertEqual__args__assertIsInstancer   )r(   futures     r   test_generic_alias"BaseFutureTests.test_generic_alias   s5    #3&1fl3r   c           	          " S S5      nU R                  [        R                  " U5      5        U R                  [        R                  " U" 5       5      5        U R                  [        R                  " S5      5        U R                  [        R                  " [        R
                  " 5       5      5        U R                  U R                  S9nU R                  [        R                  " U5      5        U R                  [        R                  " [        U5      5      5        U R                  [        R                  " [        R
                  " [        U5      5      5      5        UR                  5         g )Nc                       \ rS rSrSrS rSrg)/BaseFutureTests.test_isfuture.<locals>.MyFuture   Nc                     SU l         g r&   rP   r'   s    r   __init__8BaseFutureTests.test_isfuture.<locals>.MyFuture.__init__   s
    05-r   r   )r   r   r   r   rP   r   r!   r   r   r   MyFuturer      s    '+$6r   r      rp   )
rA   r
   isfuturerQ   r   Mockr{   r_   typer7   )r(   r   r   s      r   test_isfutureBaseFutureTests.test_isfuture   s    	6 	6 	))(34((45))!,- 	))$))+67$)),((+,))$q'23 	((47);<=	
r   c                    U R                  U R                  S9nU R                  UR                  5       5        U R                  UR	                  5       5        UR                  5         U R                  UR                  5       5        g Nrp   )r{   r_   rA   r:   r5   r7   rQ   r(   r   s     r   test_initial_state"BaseFutureTests.test_initial_state   s\    $)),'"	
&r   c                     U R                  [        S5         U R                  5         S S S 5        g ! , (       d  f       g = f)Nno current event loop)assertRaisesRegexRuntimeErrorr{   r'   s    r   test_constructor_without_loop-BaseFutureTests.test_constructor_without_loop   s,    ##L2IJ KJJs   1
?c                    ^  U 4S jnT R                   R                  U" 5       5      nT R                  UR                  T R                   5        T R                  UR	                  5       T R                   5        g )Nc                  ,   >#    T R                  5       $ 7fr	   )r{   r'   s   r   test?BaseFutureTests.test_constructor_use_running_loop.<locals>.test   s     ##%%s   )r_   run_until_completerg   _loopget_loop)r(   r   r   s   `  r   !test_constructor_use_running_loop1BaseFutureTests.test_constructor_use_running_loop   sL    	&II((0aggtyy)ajjlDII.r   c                 D   [         R                  " U R                  5        U R                  [         R                  S 5        U R	                  5       nU R                  UR                  U R                  5        U R                  UR                  5       U R                  5        g r	   )r
   set_event_loopr_   r`   r{   rg   r   r   r   s     r    test_constructor_use_global_loop0BaseFutureTests.test_constructor_use_global_loop   sd    tyy)..5aggtyy)ajjlDII.r   c                 F    U R                  [        U R                  S5        g )Nr$   )assertRaises	TypeErrorr{   r'   s    r   test_constructor_positional+BaseFutureTests.test_constructor_positional   s    )T%5%5r:r   c                    U R                   R                  U R                   U R                  S9nU R                  [        R
                  UR                  5        U R                   R                  U R                   U R                  S9nU R                  [        R
                  UR                  5        U R                   R                  U R                   U R                  S9nU R                  [        [        45         UR                  S 5        S S S 5        U R                   R                  U R                   U R                  S9nU R                  [        [        45         UR                  [        5        S S S 5        U R                   R                  U R                   U R                  S9nU R                  [        [        45         UR                  5         S S S 5        U R                   R                  U R                   U R                  S9nU R                  [        [        45         UR                  S 5        S S S 5        U R                   R                  U R                   U R                  S9nU R                  [        [        45         UR                  S 5        S S S 5        U R                   R                  U R                   U R                  S9n [!        U5        U R                   R                  U R                   U R                  S9n UR#                  5         U R                   R                  U R                   U R                  S9n [%        U5        U R                   R                  U R                   U R                  S9nU R'                  UR)                  5       5        U R'                  UR+                  5       5        g ! , (       d  f       GN= f! , (       d  f       GNk= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNw= f! [        [        4 a     GNSf = f! [         a     GN%f = f! [         a     Nf = f)Nrp   c                     g r	   r   r   s    r   <lambda>4BaseFutureTests.test_uninitialized.<locals>.<lambda>   s    Dr   c                     g r	   r   r   s    r   r   r      s    tr   )rw   __new__r_   r   r
   InvalidStateErrorrB   rE   r   AttributeErrorrI   rL   	Exceptionr7   add_done_callbackremove_done_callbackrepr	__await__iterrA   r:   r5   r(   futs     r   test_uninitialized"BaseFutureTests.test_uninitialized   s$    hhtxxdii8'33SZZ@hhtxxdii8'33S]]Chhtxxdii8n=>NN4  ? hhtxxdii8n=>i( ? hhtxxdii8n=>JJL ? hhtxxdii8n=>!!.1 ? hhtxxdii8n=>$$^4 ? hhtxxdii8	I hhtxxdii8	MMO hhtxxdii8	I hhtxxdii8)$O ?> ?> ?> ?> ?> n- 		  		  		sr   :OOO)&O;
PP P6 Q 
O
O&)
O8;
P

PP32P36
QQ
QQc                    U R                  U R                  S9nU R                  [        US5      5        U R	                  UR
                  S 5        UR                  S5        U R                  [        R                  5         U R                  R                  U5        S S S 5        U R	                  UR
                  S5        g ! , (       d  f       N+= f)Nrp   _cancel_message
my message)r{   r_   rQ   hasattrr   r   r7   r   r
   CancelledErrorr   r   s     r   !test_future_cancel_message_getter1BaseFutureTests.test_future_cancel_message_getter   s    $)),#456**D1	w556II((+ 7**L9 76s   C
Cc                 ~   U R                  U R                  S9nUR                  S5        SUl        U R	                  UR                  S5        U R                  [        R                  5         U R                  R                  U5        S S S 5        U R	                  UR                  S5        g ! , (       d  f       N+= f)Nrp   r   zmy new message)	r{   r_   r7   r   r   r   r
   r   r   r   s     r   !test_future_cancel_message_setter1BaseFutureTests.test_future_cancel_message_setter   s    $)),	,**,<= w556II((+ 7**,<= 76s   -B..
B<c                    U R                  U R                  S9nU R                  UR                  5       5        U R                  UR	                  5       5        U R                  UR                  5       5        U R                  [        R                  UR                  5        U R                  [        R                  UR                  5        U R                  [        R                  UR                  S 5        U R                  [        R                  UR                  S 5        U R                  UR                  5       5        g r   )r{   r_   rQ   r7   r:   r5   r   r
   r   rB   rE   r   rI   rL   rA   r   s     r   test_cancelBaseFutureTests.test_cancel  s    $)),
#&!'00!((;'00!++>'33Q\\4H'33Q__dK$r   c                    U R                  U R                  S9nU R                  [        R                  UR
                  5        UR                  S5        U R                  UR                  5       5        U R                  UR                  5       5        U R                  UR                  5       S5        U R                  UR                  5       S 5        U R                  [        R                  UR                  S 5        U R                  [        R                  UR                  S 5        U R                  UR                  5       5        g Nrp   r$   )r{   r_   r   r
   r   rB   rI   rA   r:   rQ   r5   r   rE   rL   r7   r   s     r   test_resultBaseFutureTests.test_result  s    $)),'33QXX>	R'!R(-'33Q\\4H'33Q__dK$r   c                    [        5       nU R                  U R                  S9nU R                  [        R
                  UR                  5        UR                  U5        U R                  UR                  5       5        U R                  UR                  5       5        U R                  [         UR                  5        U R                  UR                  5       U5        U R                  [        R
                  UR                  S 5        U R                  [        R
                  UR                  S 5        U R                  UR                  5       5        g r   )r   r{   r_   r   r
   r   rE   rL   rA   r:   rQ   r5   rB   r   rI   r7   )r(   excr   s      r   test_exceptionBaseFutureTests.test_exception   s    n$)),'33Q[[A	'!,1,'33Q\\4H'33Q__dK$r   c                    U" 5       nU R                  U R                  S9nUR                  U5        U R                  UR	                  5       5        U R                  UR                  5       5        U R                  [        UR                  5        UR                  5       nUR                  nU R                  U[        5        U R                  [        U5      S5        U R                  XA5        g )Nrp   z!StopIteration .* cannot be raised)r{   r_   rL   rA   r:   rQ   r5   r   r   rB   rE   	__cause__r   assertRegexr   )r(   stop_iteration_classr   r   causes        r   test_stop_iteration_exception-BaseFutureTests.test_stop_iteration_exception.  s    "$$)),	'!,1kkmc<0S#FGe:r   c                 D     " S S[         5      nU R                  U5        g )Nc                       \ rS rSrSrg)OBaseFutureTests.test_stop_iteration_subclass_exception.<locals>.MyStopIterationi<  r   Nr   r   r   r   r!   r   r   r   MyStopIterationr   <      r   r   )StopIterationr   )r(   r   s     r   &test_stop_iteration_subclass_exception6BaseFutureTests.test_stop_iteration_subclass_exception;  s    	m 	 	**?;r   c                     U R                  U R                  S9nUR                  [        5        U R	                  UR                  5       [        5        g r   )r{   r_   rL   r   r   rE   r   s     r   test_exception_class$BaseFutureTests.test_exception_classA  s;    $)),	%akkm\:r   c                 L  ^ U R                  U R                  S9mU4S jnU" 5       nU R                  [        U5      S5        U R                  [        U5      T5        TR	                  S5        U R                  [        U5      S5        U R                  [        U5      S5        g )Nrp   c               3   ^   >#    Sv   T S h  vN n SU 4v   T S h  vN nSU4v   g  N N7f)NABCr   )xyr   s     r   fixture6BaseFutureTests.test_yield_from_twice.<locals>.fixtureI  s3     IAq&LAq&L s   
-)-+--r   r$   )r   r$   )r   r$   )r{   r_   r   nextrI   )r(   r   ri   r   s      @r   test_yield_from_twice%BaseFutureTests.test_yield_from_twiceF  s    $)),	 Ia#&a!$	Ra),a),r   c           
      T	   U R                   R                  S5        U R                  U R                   S9nUR                  S   nU R	                  [        U5      SU R                  R                   SUS    SUS    S	35        UR                  5         U R                   R                  S
5        U R                  U R                   S9nU R	                  [        U5      SU R                  R                   S35        UR                  5         U R                  U R                   S9nUR                  5         U R	                  [        U5      SU R                  R                   S35        U R                  U R                   S9nUR                  S5        U R	                  [        U5      SU R                  R                   S35        U R	                  UR                  5       S5        [        5       nU R                  U R                   S9nUR                  U5        U R	                  [        U5      SU R                  R                   S35        U R                  UR                  5       U5        S nU R                  U R                   S9n	U	R                  [         5        U" [         5      n
U R#                  [        U	5      SU R                  R                  -   SU
-  -   5        U	R                  5         U R	                  [        U	5      SU R                  R                   S35        U R                  U R                   S9nUR                  [$        5        UR                  [&        5        U" [$        5      nU" [&        5      nU R#                  [        U5      SU R                  R                  -   SU< SU< S3-   5        U R                  U R                   S9nUR                  [$        5        [)        S5       H  nUR                  [         5        M     UR                  [&        5        U< SU< 3nU R#                  [        U5      SU R                  R                  -   SU-  -   5        UR                  5         U R	                  [        U5      SU R                  R                   S35        g )NTrp   <z pending created at r   :r   >Fz	 pending>z cancelled>   z finished result=4>z# finished exception=RuntimeError()>c                     [         R                  " U 5      u  pU R                  < SU< SU< 3n[        R                  " U5      $ )Nz() at r   )
test_utilsget_function_sourcer   reescape)funcfilenamelinenotexts       r   	func_repr3BaseFutureTests.test_future_repr.<locals>.func_reprx  s5    )==dCH&*&7&76JD99T?"r   z pending cb=\[%s\]>z pending cb=\[z, z\]>   z, <8 more>, )r_   	set_debugr{   _source_tracebackr   r   rw   r   r7   rI   rB   r   rL   rg   rE   r   r   r   r   r   range)r(   f_pending_debugframe	f_pendingf_cancelledf_resultr   f_exceptionr  f_one_callbacks	fake_reprf_two_callbacks
first_repr	last_reprf_many_callbacksicb_regexs                    r   test_future_repr BaseFutureTests.test_future_reprX  s   		D!**		*:11"5!!!""6uQxj%(1M	O 	 		E"$$$))$4	iAdhh.?.?-@	*JK&&DII&6k*a0A0A/B+,NO###3ANa 1 122EF	H*A.n&&DII&6!!#&!!""EF	H 	k++-s3	#
 **		*:)))4i(	!488$$$'=	'II	K 	 o.TXX../{;	= **		*:))(3))'2x(
g&	o. 1 11&	53 3	4  +++;**84qA..y9 **73*4i@!"488$$$'='HH	J 	!./TXX../{;	=r   c                 L   SSK Jn  U R                  U R                  S9nUR	                  S5        U R                  U R                  S9nU" X#5        U R                  UR                  5       5        U R                  UR                  5       S5        U R                  U R                  S9nUR                  [        5       5        U R                  U R                  S9nU" XE5        U R                  UR                  5       5        U R                  [        UR                  5        U R                  U R                  S9nUR                  5         U R                  U R                  S9nU" Xg5        U R                  UR                  5       5         [        R                  R                   e! ["         a  nUn	 S nAOS nAff = fU R                  U R                  S9n
U
R                  U	5        U R                  U R                  S9nU" X5        U R                  UR                  5       5         UR                  5         O! ["         a  nUn S nAOS nAff = fSR%                  [&        R(                  " WR*                  5      5      nU R                  UR-                  S5      S5        g )Nr   )_copy_future_staterp   
    z*raise concurrent.futures.InvalidStateErrorr   )asyncio.futuresr  r{   r_   rI   rQ   r5   r   rB   rL   r   r   r7   r:   
concurrentr   r   BaseExceptionjoin	traceback	format_tb__traceback__count)r(   r  r   newfr  newf_exceptionr  newf_cancelledef_excf_conexcnewf_conexcnewf_excnewf_tbs                 r   test_copy_stateBaseFutureTests.test_copy_state  s   6$)),	RTYY/1#		$+&&DII&6!!,.1))tyy)9;7++-.,(=(=>&&DII&6))tyy)9;70023	$$666 	E	 ###3u%&&DII&681((*+	  	H	'')--h.D.DEF'STVWXs0   F' '
F=1F88F=+H< <
IIIc                    ^^ U R                  U R                  S9mU4S jmU4S jnU R                  [        S5         U" 5         S S S 5        TR	                  5         g ! , (       d  f       N= f)Nrp   c               3   &   >#    T  S h  vN   g  N7fr	   r   r   s   r   coro'BaseFutureTests.test_iter.<locals>.coro  s     NNs   c                     > T" 5       u  pg r	   r   )arg1arg2r8  s     r   r   'BaseFutureTests.test_iter.<locals>.test  s    JD$r   zawait wasn't used)r{   r_   r   r   r7   )r(   r   r8  r   s     @@r   	test_iterBaseFutureTests.test_iter  sU    DII.		  ##L2EFF G

 GFs   A
A-c                     U R                  U R                  S9nU R                  [        S5         SUl        S S S 5        g ! , (       d  f       g = f)Nrp   zcan only be set to FalseT)r{   r_   r   
ValueError_log_tracebackr   s     r   test_log_traceback"BaseFutureTests.test_log_traceback  s?    DII.##J0JK!%C LKKs   A
Azasyncio.base_events.loggerc                     U R                  U R                  S9nAU R                  UR                  R                  5        g r   )r{   r_   rA   errorcalledr(   m_logr   s      r   test_tb_logger_abandoned(BaseFutureTests.test_tb_logger_abandoned  s4    DII.++,r   c                     U R                  U R                  S9nUR                  [        5       5        UR	                  5         AU R                  UR                  R                  5        g r   )r{   r_   rL   r   r7   rA   rF  rG  rH  s      r   &test_tb_logger_not_called_after_cancel6BaseFutureTests.test_tb_logger_not_called_after_cancel  sM    DII.)+&

++,r   c                     U R                  U R                  S9nUR                  S5        AU R                  UR                  R
                  5        g r   )r{   r_   rI   rA   rF  rG  rH  s      r   !test_tb_logger_result_unretrieved1BaseFutureTests.test_tb_logger_result_unretrieved  s@    DII.r++,r   c                     U R                  U R                  S9nUR                  S5        UR                  5         AU R	                  UR
                  R                  5        g r   )r{   r_   rI   rB   rA   rF  rG  rH  s      r   test_tb_logger_result_retrieved/BaseFutureTests.test_tb_logger_result_retrieved  sI    DII.r

++,r   c                     U R                  U R                  S9nUR                  [        S5      5        A[        R
                  " U R                  5        [        R                  " 5         U R                  UR                  R                  5        g Nrp   boom)r{   r_   rL   r   r   run_brieflyr   
gc_collectrQ   rF  rG  rH  s      r   $test_tb_logger_exception_unretrieved4BaseFutureTests.test_tb_logger_exception_unretrieved  sc    DII.,v./tyy)**+r   c                     U R                  U R                  S9nUR                  [        S5      5        UR	                  5         AU R                  UR                  R                  5        g rV  )r{   r_   rL   r   rE   rA   rF  rG  rH  s      r   "test_tb_logger_exception_retrieved2BaseFutureTests.test_tb_logger_exception_retrieved  sP    DII.,v./++,r   c                     U R                  U R                  S9nUR                  [        S5      5        U R	                  [        UR
                  5        AU R                  UR                  R                  5        g rV  )	r{   r_   rL   r   r   rB   rA   rF  rG  rH  s      r   )test_tb_logger_exception_result_retrieved9BaseFutureTests.test_tb_logger_exception_result_retrieved	  s[    DII.,v./,

3++,r   c                    S n[         R                  R                  S5      nUR                  US5      n[        R
                  " X0R                  S9nU R                  R                  U5      u  pVU R                  [        R                  " U5      5        U R                  US5        U R                  U[        R                  " 5       5        UR                  SS9  g )Nc                 0    U [         R                  " 5       4$ r	   	threading	get_identargs    r   run-BaseFutureTests.test_wrap_future.<locals>.run      ,,.//r   r   oirp   Twait)r#  r   ThreadPoolExecutorsubmitr
   rf   r_   r   rQ   r   r   assertNotEqualre  rf  shutdown)r(   ri  exf1f2residents          r   rj    BaseFutureTests.test_wrap_future  s    	02215YYsD!  ))4YY11"5
((,-d#E9#6#6#89
r   c                     U R                  U R                  S9n[        R                  " U5      nU R	                  X5        g r   )r{   r_   r
   rf   rg   r(   rt  ru  s      r   test_wrap_future_future'BaseFutureTests.test_wrap_future_future  s5    499-  $br   c                    S n[         R                  R                  S5      nUR                  US5      nU R	                  [
        S5         [        R                  " U5        S S S 5        UR                  SS9  g ! , (       d  f       N= f)Nc                 0    U [         R                  " 5       4$ r	   rd  rg  s    r   ri  :BaseFutureTests.test_wrap_future_without_loop.<locals>.run$  rk  r   r   rl  r   Trm  )	r#  r   ro  rp  r   r   r
   rf   rr  )r(   ri  rs  rt  s       r   test_wrap_future_without_loop-BaseFutureTests.test_wrap_future_without_loop#  sj    	02215YYsD!##L2IJ# K
 KJs   A::
Bc                 $  ^ S n[         R                  R                  S5      nUR                  US5      mU4S jnU R                  R                  U" 5       5      nU R                  U R                  UR                  5        UR                  SS9  g )Nc                 0    U [         R                  " 5       4$ r	   rd  rg  s    r   ri  >BaseFutureTests.test_wrap_future_use_running_loop.<locals>.run-  rk  r   r   rl  c                  8   >#    [         R                  " T 5      $ 7fr	   )r
   rf   )rt  s   r   r   ?BaseFutureTests.test_wrap_future_use_running_loop.<locals>.test1  s     &&r**s   Trm  )	r#  r   ro  rp  r_   r   rg   r   rr  )r(   ri  rs  r   ru  rt  s        @r   !test_wrap_future_use_running_loop1BaseFutureTests.test_wrap_future_use_running_loop,  sm    	02215YYsD!	+YY))$&1dii*
r   c                    [         R                  " U R                  5        U R                  [         R                  S 5        S n[        R
                  R                  S5      nUR                  US5      n[         R                  " U5      nU R                  U R                  UR                  5        UR                  SS9  g )Nc                 0    U [         R                  " 5       4$ r	   rd  rg  s    r   ri  =BaseFutureTests.test_wrap_future_use_global_loop.<locals>.run;  rk  r   r   rl  Trm  )r
   r   r_   r`   r#  r   ro  rp  rf   rg   r   rr  )r(   ri  rs  rt  ru  s        r    test_wrap_future_use_global_loop0BaseFutureTests.test_wrap_future_use_global_loop7  s    tyy)..5	02215YYsD!  $dii*
r   c                 X   [         R                  R                  5       n[        R                  " XR
                  S9nUR                  5         [        R                  " U R
                  5        U R                  UR                  5       5        U R                  UR                  5       5        g r   )r#  r   Futurer
   rf   r_   r7   r   rX  rQ   r:   rz  s      r   test_wrap_future_cancel'BaseFutureTests.test_wrap_future_cancelC  si    &&(  ))4
		tyy)''r   c                    [         R                  R                  5       n[        R                  " XR
                  S9nUR                  S5        UR                  5         [        R                  " U R
                  5        U R                  UR                  5       5        U R                  UR                  5       S5        U R                  UR                  5       5        g r   )r#  r   r  r
   rf   r_   rI   r7   r   rX  rA   r:   r   rB   rQ   rz  s      r   test_wrap_future_cancel2(BaseFutureTests.test_wrap_future_cancel2K  s    &&(  ))4
b
		tyy)(b)'r   c                 B   U R                   R                  S5        U R                  U R                   S9n[        R                  " 5       R
                  S-
  nU R                  UR                  [        5        U R                  UR                  S   S S [        US45        g )NTrp   r      test_future_source_traceback)r_   r  r{   sys	_getframef_linenor   r  listr   __file__)r(   r   r  s      r   r  ,BaseFutureTests.test_future_source_tracebackU  s    		D!!!tyy!1))A-f66=11"5bq9" 8:	;r   c                 d   U R                   R                  U5        S nU" 5       nU R                  U R                   S9nUR                  U5        S n[        R
                  " U R                   5        [        R                  " 5         SU R                  R                   S3n[        U5      XDR                  4nUR                  R                  [        R                  US9  UR                  R                   S   S   nU R#                  U[$        R&                  " U[$        R(                  5      5        g )Nc                  J     [        5       e! [         a  n U s S n A $ S n A ff = fr	   )MemoryErrorr$  )r   s    r   memory_errorLBaseFutureTests.check_future_exception_never_retrieved.<locals>.memory_errord  s$    !m#  
s   
 
"""rp   ^z exception was never retrieved
)exc_infor   )r_   r  r{   rL   r   rX  r   rY  rw   r   r   r(  rF  assert_called_once_withr   ANY	call_argsr   r  compileDOTALL)	r(   debugrI  r  r   r   regexr  messages	            r   &check_future_exception_never_retrieved6BaseFutureTests.check_future_exception_never_retrieved`  s    		E"	
 n!!tyy!1S!tyy)DHH%%&&FGIs$5$56++DHHx+H++''*1-"**UBII">?r   c                 &    U R                  S5        g r&   r  r'   s    r   %test_future_exception_never_retrieved5BaseFutureTests.test_future_exception_never_retrievedx  s    33E:r   c                 &    U R                  S5        g rO   r  r'   s    r   +test_future_exception_never_retrieved_debug;BaseFutureTests.test_future_exception_never_retrieved_debug{  s    33D9r   c                     U R                  U R                  S9nUR                  5         [        R                  " US5        U R                  UR                  5       5        g )Nrp      )r{   r_   r7   r   _set_result_unless_cancelledrQ   r:   r   s     r    test_set_result_unless_cancelled0BaseFutureTests.test_set_result_unless_cancelled~  sD    DII.

,,S!4(r   c                 2   U R                  U R                  S9nUR                  S5        UR                  5       nS n UR	                  S 5        U R                  S5        U R                  US5        g ! [         a  nUR                  S   n S nAN1S nAff = f)Nrp   )r   r  zStopIteration was expectedr   )	r{   r_   rI   rR   sendfailr   ry   r   )r(   r   firB   rs  s        r   test_future_stop_iteration_args/BaseFutureTests.test_future_stop_iteration_args  s    DII.v\\^	4GGDM II23(	  	 WWQZF	 s   A3 3
B=BBc           	         U R                  U R                  S9n[        U5      nU R                  [        5         U R                  [        UR                  [        [        S5      S 5        S S S 5        [        R                  " 5          [        R                  " S[        S9  U R                  [        UR                  [        [        S5      S5        U R                  [        UR                  [        S5      [        S5      5        U R                  [        UR                  [        S S 5        S S S 5        U R                  [        UR                  [        5        g ! , (       d  f       N= f! , (       d  f       NE= f)Nrp   zebraignore)categoryelephant    )r{   r_   r   assertWarnsDeprecationWarningr   r   throwwarningscatch_warningsfilterwarningsr   rA  r  )r(   r   r  s      r   test_future_iter_throw&BaseFutureTests.test_future_iter_throw  s   DII.#Y01i9i>PRVW 2$$&##H7IJi%y'<bBi%j19Z3HJ j"((JdK ' 	)RXXt4 21&&s   1EB%E,
E),
E:c                      " S S5      n[        S5       H2  nU R                  U R                  S9nUR                  U" 5       5        M4     g )Nc                       \ rS rSrS rSrg)5BaseFutureTests.test_future_del_collect.<locals>.Evili  c                 .    [         R                  " 5         g r	   )gccollectr'   s    r   r/   =BaseFutureTests.test_future_del_collect.<locals>.Evil.__del__  s    

r   r   N)r   r   r   r   r/   r!   r   r   r   Evilr    s    r   r  d   rp   )r  r{   r_   rI   )r(   r  r  r   s       r   test_future_del_collect'BaseFutureTests.test_future_del_collect  sA    	 	 sA""		"2CNN46" r   c                 0   U R                  U R                  S9nUR                  5         S n UR                  5         U R                  U5        U R                  [        R                  " U5      / 5        g ! [        R
                   a  nUn S nANSS nAff = fr   )
r{   r_   r7   rB   r
   r   rH   assertListEqualr  get_referrersr(   r   r   r-  s       r   &test_future_cancelled_result_refcycles6BaseFutureTests.test_future_cancelled_result_refcycles  s}    $)),	
	HHJ 	S!R--c2B7 %% 	C	   A5 5B	BBc                 0   U R                  U R                  S9nUR                  5         S n UR                  5         U R                  U5        U R                  [        R                  " U5      / 5        g ! [        R
                   a  nUn S nANSS nAff = fr   )
r{   r_   r7   rE   r
   r   rH   r  r  r  r  s       r   )test_future_cancelled_exception_refcycles9BaseFutureTests.test_future_cancelled_exception_refcycles  s}    $)),	
	KKM 	S!R--c2B7 %% 	C	r  rp   )8r   r   r   r   r{   r]   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r3  r>  rC  r   patchrJ  rM  rP  rS  rZ  r]  r`  rj   r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!   rq   rr   s   @r   rt   rt   {   s   ))
4
.'//;2%h:	>	%%% BO ;<;
-$C=J*YX&
 
ZZ,-- .-
 
ZZ,-- .- 
ZZ,-- .- 
ZZ,-- .- 
ZZ,-, ., 
ZZ,-- .- 
ZZ,-- .-
	
((	; 
ZZ,-@ .@.;:))5#	8	8 	8r   rt   _CFuturezrequires the C _asyncio modulec                   \    \ rS rSr \R
                  rS rS r	S r
Srg! \ a    Sr Nf = f)CFutureTestsi  Nc                     U R                  U R                  S9nU R                  [        5         U?S S S 5        U R                  [        5         U?S S S 5        g ! , (       d  f       N/= f! , (       d  f       g = fr   )r{   r_   r   r   rP   rB  r   s     r   test_future_del_segfault%CFutureTests.test_future_del_segfault  s^    DII.~., /~." /. /...s   AA,
A),
A:c                     SS K n[        U R                  U R                  S95      nA[        R
                  " U5      n[        R                  " 5         g )Nr   rp   )_asyncior   r{   r_   r  get_referentsr  )r(   r  itevils       r   'test_future_iter_get_referents_segfault4CFutureTests.test_future_iter_get_referents_segfault  s=    $""		"23)


r   c                    U R                  U R                  S9nS nS nUR                  U5        UR                  U5        UR                  nU R	                  XAR                  5        UR                  U5        UR                  nU R	                  XAR                  5        UR                  U5        U R                  UR                  5        g )Nrp   c                     g)Nr   r   _s    r   r   2CFutureTests.test_callbacks_copy.<locals>.<lambda>      qr   c                     g)Nr  r   r  s    r   r   r    r  r   )r{   r_   r   
_callbacksassertIsNotr   assertIsNone)r(   r   rt  ru  	callbackss        r   test_callbacks_copy CFutureTests.test_callbacks_copy  s    
 DII.b!b!NN	NN3  $NN	NN3  $#..)r   r   )r   r   r   r   r   r  rw   r   r  r  r  r!   r   r   r   r  r    s7    #*%  s     ++r  c                   d    \ rS rSr  " S S\R
                  5      r\rSr	g! \ a    Sr Sr	gf = f)CSubFutureTestsi  c                       \ rS rSrSrg)CSubFutureTests.CSubFuturei  r   Nr   r   r   r   
CSubFuturer    r   r   r  Nr   )
r   r   r   r   r   r  r  rw   r   r!   r   r   r   r  r    s4    	)) 	  s   " //r  c                   ,    \ rS rSr\R
                  rSrg)PyFutureTestsi  r   N)r   r   r   r   r   	_PyFuturerw   r!   r   r   r   r  r    s    


Cr   r  c                      ^  \ rS rSrU 4S j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U =r$ )BaseFutureDoneCallbackTestsi  c                 L   > [         TU ]  5         U R                  5       U l        g r	   )r\   r]   r^   r_   ra   s    r   r]   !BaseFutureDoneCallbackTests.setUp  s    &&(	r   c                 D    [         R                  " U R                  5        g r	   )r   rX  r_   r'   s    r   rX  'BaseFutureDoneCallbackTests.run_briefly   s    tyy)r   c                    ^^ UU4S jnU$ )Nc                 (   > TR                  T5        g r	   )append)r   bagthings    r   bag_appender@BaseFutureDoneCallbackTests._make_callback.<locals>.bag_appender  s    JJur   r   )r(   r  r  r  s    `` r   _make_callback*BaseFutureDoneCallbackTests._make_callback  s    	r   c                     [         er	   NotImplementedErrorr'   s    r   r{   'BaseFutureDoneCallbackTests._new_future	      !!r   c                    / nU R                  5       nU R                  US5      nU R                  US5      nU R                  US5      nUR                  U5        UR                  U5        UR                  U5        UR                  U5        UR                  U5        U R	                  U/ 5        UR                  S5        U R                  5         U R	                  USS/5        U R	                  UR                  5       S5        g Nr$      r  foor{   r  r   r   r   rI   rX  rB   r(   r  r   cb1cb2cb3s         r   $test_callbacks_remove_first_callback@BaseFutureDoneCallbackTests.test_callbacks_remove_first_callback  s    !!#r*!!#r*!!#s+	C 	C 	C 	s#	s#b!	Ur3i(U+r   c                 ,   / nU R                  5       nU R                  US5      nU R                  US5      nU R                  US5      nUR                  U5        UR                  U5        UR                  U5        UR                  U5        UR                  U5        UR                  U5        U R	                  U/ 5        UR                  S5        U R                  5         U R	                  US/5        U R	                  UR                  5       S5        g r  r   r!  s         r   /test_callbacks_remove_first_and_second_callbackKBaseFutureDoneCallbackTests.test_callbacks_remove_first_and_second_callback#  s    !!#r*!!#r*!!#s+	C 	C 	C 	s#	s#	s#b!	Use$U+r   c                    / nU R                  5       nU R                  US5      nU R                  US5      nU R                  US5      nUR                  U5        UR                  U5        UR                  U5        UR                  U5        UR                  U5        U R	                  U/ 5        UR                  S5        U R                  5         U R	                  USS/5        U R	                  UR                  5       S5        g r  r   r!  s         r   $test_callbacks_remove_third_callback@BaseFutureDoneCallbackTests.test_callbacks_remove_third_callback;  s    !!#r*!!#r*!!#s+	C 	C 	C 	s#	s#b!	Ur2h'U+r   c                 z   / nU R                  5       nUR                  U R                  US5      5        UR                  U R                  US5      5        U R                  U/ 5        UR	                  S5        U R                  5         U R                  USS/5        U R                  UR                  5       S5        g )Nr$   r  r  )r{   r   r  r   rI   rX  rB   )r(   r  r   s      r   $test_callbacks_invoked_on_set_result@BaseFutureDoneCallbackTests.test_callbacks_invoked_on_set_resultR  s    	D//R89	D//R89b!	Ur2h'U+r   c                 J   / nU R                  5       nUR                  U R                  US5      5        U R                  U/ 5        [	        5       nUR                  U5        U R                  5         U R                  US/5        U R                  UR                  5       U5        g )Nr  )r{   r   r  r   r   rL   rX  rE   )r(   r  r   r   s       r   'test_callbacks_invoked_on_set_exceptionCBaseFutureDoneCallbackTests.test_callbacks_invoked_on_set_exception`  s    	D//S9:b!n	se$,r   c                    / nU R                  5       nU R                  US5      nU R                  US5      nU R                  US5      nUR                  U5        UR                  U5        U R                  UR	                  U5      S5        U R                  UR	                  U5      S5        UR                  U5        [        S5       H  nUR                  U5        M     U R                  UR	                  U5      S5        U R                  U/ 5        UR                  S5        U R                  5         U R                  US/5        U R                  UR                  5       S5        g )Nr   r  r  r         r  )	r{   r  r   r   r   r  rI   rX  rB   )r(   r  r   r"  r#  r$  r  s          r   test_remove_done_callback5BaseFutureDoneCallbackTests.test_remove_done_callbackn  s<   !!#q)!!#q)!!#q) 	
C 	C  	//4a8 	//4a8 	
C qA$  	//4a8b!	Uqc"U+r   c                    ^ U R                  5       mTR                  [        5        [        S5       H  nTR                  [        5        M      " U4S jS5      nTR                  U" 5       5        g )N?   c                   "   > \ rS rSrU 4S jrSrg)RBaseFutureDoneCallbackTests.test_remove_done_callbacks_list_mutation.<locals>.evili  c                 0   > TR                  [        5        gr&   )r   idr(   otherr   s     r   __eq__YBaseFutureDoneCallbackTests.test_remove_done_callbacks_list_mutation.<locals>.evil.__eq__  s    ((,r   r   Nr   r   r   r   r@  r!   r7  s   r   r  r;    s     r   r  r{   r   r   r  r=  r   r(   r  r  r   s      @r   (test_remove_done_callbacks_list_mutationDBaseFutureDoneCallbackTests.test_remove_done_callbacks_list_mutation  sY      c"rA!!"% 	 	
 	  (r   c                    ^ U R                  5       mTR                  [        5        [        S5       H  nTR                  [        5        M      " U4S jS5      nTR                  U" 5       5        g )Nr9  c                   "   > \ rS rSrU 4S jrSrg)OBaseFutureDoneCallbackTests.test_remove_done_callbacks_list_clear.<locals>.evili  c                 (   > TR                  U5        g r	   )r   r>  s     r   r@  VBaseFutureDoneCallbackTests.test_remove_done_callbacks_list_clear.<locals>.evil.__eq__  s    ((/r   r   NrB  r7  s   r   r  rI    s    0 0r   r  rC  rD  s      @r   %test_remove_done_callbacks_list_clearABaseFutureDoneCallbackTests.test_remove_done_callbacks_list_clear  sY      c"rA!!"% 	0 	0 	  (r   c                    S nU R                  5       nUR                  U5        UR                  [        5        UR                  [        5        UR                  S5        [        R
                  " U R                  5        g )Nc                 .    U R                  [        5        g r	   )r   r   r   s    r   mutPBaseFutureDoneCallbackTests.test_schedule_callbacks_list_mutation_1.<locals>.mut  s    ""3'r   r   )r{   r   r   rI   r   rX  r_   )r(   rP  r   s      r   'test_schedule_callbacks_list_mutation_1CBaseFutureDoneCallbackTests.test_schedule_callbacks_list_mutation_1  s_    	(  c"c"c"qtyy)r   c                    ^^^ U R                  5       mTR                  [        5        [        S5       H  nTR                  [        5        M     SmSm " UUU4S jS5      nTR                  U" 5       5        g )Nr9  r  r   c                   &   > \ rS rSrU UU4S jrSrg)QBaseFutureDoneCallbackTests.test_schedule_callbacks_list_mutation_2.<locals>.evili  c                 F   > TS-  mTT:  a  TR                  [        5        g)Nr   F)r   r=  )r(   r?  	extra_cbsr   max_extra_cbss     r   r@  XBaseFutureDoneCallbackTests.test_schedule_callbacks_list_mutation_2.<locals>.evil.__eq__  s%    Q	},))"-r   r   NrB  )rX  r   rY  s   r   r  rV    s     r   r  rC  )r(   r  r  rX  r   rY  s      @@@r   'test_schedule_callbacks_list_mutation_2CBaseFutureDoneCallbackTests.test_schedule_callbacks_list_mutation_2  se      c"rA!!"%  		 	 	  (r   c                   ^^^ SmS mUUU4S jn[        5       nXl        [        R                  R	                  U SU5         U R                  5       mU R                  TR                  5       U5        TR                  [        5        TR                  [        5        TR                  T5        TR                  T5        TR                  S5        U R                  TR                  S / 45        S S S 5        g ! , (       d  f       g = f)NFc                      gN.r   r   r   r   r   OBaseFutureDoneCallbackTests.test_evil_call_soon_list_mutation.<locals>.<lambda>  s    cr   c                  f   > T(       a'  TR                  [        5        TR                  T5        g Smg rO   )r   int)ry   rz   called_on_fut_callback0r   pads     r   evil_call_soonUBaseFutureDoneCallbackTests.test_evil_call_soon_list_mutation.<locals>.evil_call_soon  s*    & ((-((-*.'r   r_   rW  )r#   	call_soonr   r  objectr{   rg   r   r   r   rb  rI   assertInr  )r(   re  fake_event_looprc  r   rd  s      @@@r   !test_evil_call_soon_list_mutation=BaseFutureDoneCallbackTests.test_evil_call_soon_list_mutation  s    "'	/ ./$2!ZZtV_=""$CMM#,,./:!!#&!!#&!!#&!!#&NN6" MM#..4*5 >==s   B,C77
Dc                    ^ U R                  5       m " S S5      n " U4S jSU5      nTR                  U" 5       5        TR                  U" 5       5        g )Nc                       \ rS rSrS rSrg)aBaseFutureDoneCallbackTests.test_use_after_free_on_fut_callback_0_with_evil__eq__.<locals>.cb_padi  c                     grO   r   )r(   r?  s     r   r@  hBaseFutureDoneCallbackTests.test_use_after_free_on_fut_callback_0_with_evil__eq__.<locals>.cb_pad.__eq__  s    r   r   NrB  r   r   r   cb_padro    s    r   rr  c                   "   > \ rS rSrU 4S jrSrg)_BaseFutureDoneCallbackTests.test_use_after_free_on_fut_callback_0_with_evil__eq__.<locals>.evili  c                 2   > TR                  S 5        [        $ r	   )r   NotImplementedr>  s     r   r@  fBaseFutureDoneCallbackTests.test_use_after_free_on_fut_callback_0_with_evil__eq__.<locals>.evil.__eq__  s    ((.%%r   r   NrB  r7  s   r   r  rt    s    & &r   r  )r{   r   r   )r(   rr  r  r   s      @r   5test_use_after_free_on_fut_callback_0_with_evil__eq__QBaseFutureDoneCallbackTests.test_use_after_free_on_fut_callback_0_with_evil__eq__  sK      	 		&6 	&
 	fh'  (r   c                 |  ^^  " UU4S jS[         5      nU" 5       n[        R                  R                  U SU5         U R	                  5       mU R                  TR                  5       U5        S mTR                  T5        U R                  [        TR                  S5        S S S 5        g ! , (       d  f       g = f)Nc                   8   >^  \ rS rSrU 4S jrUU4S jrSrU =r$ )rBaseFutureDoneCallbackTests.test_use_after_free_on_fut_callback_0_with_evil__getattribute__.<locals>.EvilEventLoopi  c                 0   > [         TU ]  " U0 UD6  [        er	   r\   rg  r   r(   ry   rz   rb   s      r   rg  |BaseFutureDoneCallbackTests.test_use_after_free_on_fut_callback_0_with_evil__getattribute__.<locals>.EvilEventLoop.call_soon      !4262##r   c                 ^   > US:X  a  TR                  T5        @[        R                  X5      $ )Nrg  )r   rh  __getattribute__)r(   namer   fut_callback_0s     r   r  ڃBaseFutureDoneCallbackTests.test_use_after_free_on_fut_callback_0_with_evil__getattribute__.<locals>.EvilEventLoop.__getattribute__  s-    ;&,,^<&..t::r   r   r   r   r   r   rg  r  r!   rq   )rb   r   r  s   @r   EvilEventLoopr|    s    $; ;r   r  r_   c                      gr_  r   r   r   r   r   mBaseFutureDoneCallbackTests.test_use_after_free_on_fut_callback_0_with_evil__getattribute__.<locals>.<lambda>  s    Sr   rW  )r#   r   r  rh  r{   rg   r   r   r   r   rI   )r(   r  	evil_loopr   r  s      @@r   ?test_use_after_free_on_fut_callback_0_with_evil__getattribute__[BaseFutureDoneCallbackTests.test_use_after_free_on_fut_callback_0_with_evil__getattribute__  s    
	; 
	;/ 
	; "O	ZZtVY7""$CMM#,,.)4(N!!.1mS^^VD 877s   A&B--
B;c                   ^  " U4S jS[         5      nU" 5       n[        R                  R                  U SU5         U R	                  5       mU R                  TR                  5       U5        [        R                  " 5       n[        R                  " 5       nTR                  X4S9  AAU R                  [        TR                  S5        S S S 5        g ! , (       d  f       g = f)Nc                   6   >^  \ rS rSrU 4S jrU4S jrSrU =r$ )qBaseFutureDoneCallbackTests.test_use_after_free_on_fut_context_0_with_evil__getattribute__.<locals>.EvilEventLoopi  c                 0   > [         TU ]  " U0 UD6  [        er	   r~  r  s      r   rg  {BaseFutureDoneCallbackTests.test_use_after_free_on_fut_context_0_with_evil__getattribute__.<locals>.EvilEventLoop.call_soon   r  r   c                 h   > US:X  a  TR                  [        5       S9  [        R                  X5      $ )Nrg  rp   )r   r#   rh  r  )r(   r  r   s     r   r  ڂBaseFutureDoneCallbackTests.test_use_after_free_on_fut_context_0_with_evil__getattribute__.<locals>.EvilEventLoop.__getattribute__$  s.    ;&LL&9&;L<..t::r   r   r  )rb   r   s   @r   r  r    s    $; ;r   r  r_   )contextrW  )r#   r   r  rh  r{   rg   r   r   r   r   r   rI   )r(   r  r  r  fut_context_0r   s        @r   >test_use_after_free_on_fut_context_0_with_evil__getattribute__ZBaseFutureDoneCallbackTests.test_use_after_free_on_fut_context_0_with_evil__getattribute__  s    		;/ 		; "O	ZZtVY7""$CMM#,,.)4!YY[N IIKM!!.!HmS^^VD 877s   BC
C rp   )r   r   r   r   r]   rX  r  r{   r%  r(  r+  r.  r1  r6  rE  rL  rR  r[  rk  rx  r  r  r!   rq   rr   s   @r   r	  r	    sg    )*",.,0,.,-,B) )*),6B)$E0E Er   r	  c                       \ rS rSrS rSrg)CFutureDoneCallbackTestsi7  c                 >    [         R                  " U R                  S9$ r   r   r  r_   r'   s    r   r{   $CFutureDoneCallbackTests._new_future<  s    TYY//r   r   Nr   r   r   r   r{   r!   r   r   r   r  r  7  s    
0r   r  c                       \ rS rSrS rSrg)CSubFutureDoneCallbackTestsi@  c                 T     " S S[         R                  5      nU" U R                  S9$ )Nc                       \ rS rSrSrg);CSubFutureDoneCallbackTests._new_future.<locals>.CSubFutureiF  r   Nr   r   r   r   r  r  F  r   r   r  rp   r  )r(   r  s     r   r{   'CSubFutureDoneCallbackTests._new_futureE  s#    	)) 	tyy))r   r   Nr  r   r   r   r  r  @  s    
*r   r  c                       \ rS rSrS rSrg)PyFutureDoneCallbackTestsiK  c                 >    [         R                  " U R                  S9$ r   )r   r  r_   r'   s    r   r{   %PyFutureDoneCallbackTests._new_futureN  s      dii00r   r   Nr  r   r   r   r  r  K  s    1r   r  c                   4   ^  \ rS rSrS rU 4S jrS rSrU =r$ )BaseFutureInheritanceTestsiR  c                     [         er	   r  r'   s    r   _get_future_cls*BaseFutureInheritanceTests._get_future_clsT  r  r   c                    > [         TU ]  5         U R                  5       U l        U R	                  U R                  R
                  5        g r	   r[   ra   s    r   r]    BaseFutureInheritanceTests.setUpW  rd   r   c                     U R                  5       n " S SU5      nU" U R                  S9nU R                  [        S5         UR	                  5         S S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrS rSrg)QBaseFutureInheritanceTests.test_inherit_without_calling_super_init.<locals>.MyFuti`  c                     g r	   r   rx   s      r   r   ZBaseFutureInheritanceTests.test_inherit_without_calling_super_init.<locals>.MyFut.__init__a  s    r   r   N)r   r   r   r   r   r!   r   r   r   MyFutr  `  s    r   r  rp   z!Future object is not initialized.)r  r_   r   r   r   )r(   rw   r  r   s       r   'test_inherit_without_calling_super_initBBaseFutureInheritanceTests.test_inherit_without_calling_super_init\  s[    ""$	C 	
 ###/
 LLN	
 
 
s   A
A*rp   )	r   r   r   r   r  r]   r  r!   rq   rr   s   @r   r  r  R  s    ")
 r   r  c                       \ rS rSrS rSrg)PyFutureInheritanceTestsim  c                 "    [         R                  $ r	   )r   r  r'   s    r   r  (PyFutureInheritanceTests._get_future_clso  s       r   r   Nr   r   r   r   r  r!   r   r   r   r  r  m  s    !r   r  c                       \ rS rSrS rSrg)CFutureInheritanceTestsis  c                 "    [         R                  $ r	   )r   r  r'   s    r   r  'CFutureInheritanceTests._get_future_clsw  s    r   r   Nr  r   r   r   r  r  s  s     r   r  __main__)/r    concurrent.futuresr#  r  r  r  re  r&  unittestr   typesr   r
   r   r  test.test_asyncior   r   r   r   r   r   r   r   r   r   base_eventsBaseEventLoopr#   r2   TestCaserX   rt   
skipUnlessr   r  r  r  r	  r  r  r  r  r  r  r   mainr   r   r   <module>r     s.     	 	 
         1 (		I 	'--;; 	0 0f
## $B	8 B	8J 
WWj157%*?J$7$7 %*7%*P 
WWj157oz':': 7OZ%8%8 zE zEz	 
WWj1570:)22070 
WWj157*"=","5"5*7*1 ; * 3 31 6!9)22! 
WWj157 8(11 7  zMMO r   