
    dafu                        d Z ddlZddlZddlZddlZddlZddlZddlmZ ddl	m
Z
 ddlZddlmZ ddlZddlmZ ddlmZ d Zd	 Zd
 Zd Z G d d      Z G d dej0                        Z G d d      Z ej6                   eed      d       G d deej0                               Z ej6                   eed      d       G d deej0                               Z G d deej0                        Z G d d      Z  ej6                   eed      d       G d de ej0                               Z! ej6                   eed      d       G d de ej0                               Z" G d  d!e ej0                        Z# G d" d#      Z$ G d$ d%e$ej0                        Z% ej6                   eed      d       G d& d'e$ej0                               Z&e'd(k(  r ejP                          yy))zTests for futures.py.    N)mock)GenericAlias)futures)utils)supportc                  .    t        j                  d        y N)asyncioset_event_loop_policy     9/root/Python-3.12.4/Lib/test/test_asyncio/test_futures.pytearDownModuler      s    !!$'r   c                     | S r	   r   fs    r   	_fakefuncr      s    Hr   c                       y r	   r   r   r   r   first_cbr          r   c                       y r	   r   r   r   r   last_cbr      r   r   c                   L    e Zd ZdZdZdZdZd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zy)
DuckFutureFNc                 4    | j                         ryd| _        y)NFT)done_DuckFuture__cancelledselfs    r   cancelzDuckFuture.cancel+   s    99;r   c                     | j                   S r	   )r   r   s    r   	cancelledzDuckFuture.cancelled1   s    r   c                 Z    | j                   xs | j                  d uxs | j                  d uS r	   )r   _DuckFuture__result_DuckFuture__exceptionr   s    r   r   zDuckFuture.done4   s4       0==,0##4/	1r   c                     | j                  | j                                | j                  | j                  | j                  S r	   )assertFalser"   r%   r$   r   s    r   resultzDuckFuture.result9   s9    )*'"""}}r   c                 X    | j                  | j                                | j                  S r	   )r'   r"   r%   r   s    r   	exceptionzDuckFuture.exception?   s#    )*r   c                 r    | j                  | j                                | j                  |       || _        y r	   )r'   r   assertIsNotNoner$   )r   r(   s     r   
set_resultzDuckFuture.set_resultC   s+    %V$r   c                 r    | j                  | j                                | j                  |       || _        y r	   )r'   r   r,   r%   )r   r*   s     r   set_exceptionzDuckFuture.set_exceptionH   s,    %Y'$r   c              #      K   | j                         sd| _        |  | j                  | j                                | j                         S wNT)r   _asyncio_future_blocking
assertTruer(   r   s    r   __iter__zDuckFuture.__iter__M   s:     yy{,0D)J		${{}s   AA)__name__
__module____qualname__r2   r   r$   r%   r    r"   r   r(   r*   r-   r/   r4   r   r   r   r   r   "   sA      %KHK 1
 
%
r   r   c                   *     e Zd Z fdZd Zd Z xZS )	DuckTestsc                     t         |           | j                         | _        | j	                  | j                  j
                         y r	   supersetUpnew_test_looploop
addCleanupcloser   	__class__s    r   r=   zDuckTests.setUpW   0    &&(			(r   c                 f    t               }t        j                  |      }| j                  ||       y r	   )r   r
   wrap_futureassertIsr   r   gs      r   test_wrap_futurezDuckTests.test_wrap_future\   s'    L"ar   c                 f    t               }t        j                  |      }| j                  ||       y r	   )r   r
   ensure_futurerG   rH   s      r   test_ensure_futurezDuckTests.test_ensure_futurea   s'    L!!!$ar   )r5   r6   r7   r=   rJ   rM   __classcell__rC   s   @r   r9   r9   U   s    )

r   r9   c                   j    e Zd Zd Z fdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z ej2                  d      d        Z ej2                  d      d        Z ej2                  d      d        Z ej2                  d      d        Z ej2                  d      d        Z ej2                  d      d        Z ej2                  d      d        Z d Z!d Z"d  Z#d! Z$d" Z%d# Z&d$ Z'd% Z( ej2                  d      d&        Z)d' Z*d( Z+d) Z,d* Z-d+ Z.d, Z/ xZ0S )-BaseFutureTestsc                 &     | j                   |i |S r	   )clsr   argskwargss      r   _new_futurezBaseFutureTests._new_futurei   s    txx(((r   c                     t         |           | j                         | _        | j	                  | j                  j
                         y r	   r;   rB   s    r   r=   zBaseFutureTests.setUpl   rD   r   c                     | j                   t           }| j                  |j                  t        f       | j	                  |t
               y r	   )rS   strassertEqual__args__assertIsInstancer   )r   futures     r   test_generic_aliasz"BaseFutureTests.test_generic_aliasq   s5    #3&1fl3r   c           	          G d d      }| j                  t        j                  |             | j                  t        j                   |                    | j                  t        j                  d             | j                  t        j                  t	        j
                                      | j                  | j                        }| j                  t        j                  |             | j                  t        j                  t        |                   | j                  t        j                  t	        j
                  t        |                         |j                          y )Nc                       e Zd ZdZd Zy)/BaseFutureTests.test_isfuture.<locals>.MyFutureNc                     d| _         y NF)r2   r   s    r   __init__z8BaseFutureTests.test_isfuture.<locals>.MyFuture.__init__z   s
    05-r   )r5   r6   r7   r2   re   r   r   r   MyFuturerb   w   s    '+$6r   rf      r?   )
r'   r
   isfuturer3   r   MockrW   r?   typer    )r   rf   r   s      r   test_isfuturezBaseFutureTests.test_isfuturev   s    	6 	6 	))(34((45))!,- 	))$))+67$)),((+,))$q'23 	((47);<=	
r   c                    | j                  | j                        }| j                  |j                                | j                  |j	                                |j                          | j                  |j                                y Nrh   )rW   r?   r'   r"   r   r    r3   r   r   s     r   test_initial_statez"BaseFutureTests.test_initial_state   s\    $)),'"	
&r   c                 z    | j                  t        d      5  | j                          d d d        y # 1 sw Y   y xY w)Nno current event loop)assertRaisesRegexRuntimeErrorrW   r   s    r   test_constructor_without_loopz-BaseFutureTests.test_constructor_without_loop   s4    ##L2IJ 		 	 	s   1:c                       fd} j                   j                   |             } j                  |j                   j                           j                  |j	                          j                          y )Nc                  ,   K    j                         S wr	   )rW   r   s   r   testz?BaseFutureTests.test_constructor_use_running_loop.<locals>.test   s     ##%%s   )r?   run_until_completerG   _loopget_loop)r   rx   r   s   `  r   !test_constructor_use_running_loopz1BaseFutureTests.test_constructor_use_running_loop   sL    	&II((0aggtyy)ajjlDII.r   c                 B   t        j                  | j                         | j                  t         j                  d        | j	                         }| j                  |j                  | j                         | j                  |j                         | j                         y r	   )r
   set_event_loopr?   r@   rW   rG   rz   r{   ro   s     r    test_constructor_use_global_loopz0BaseFutureTests.test_constructor_use_global_loop   sd    tyy)..5aggtyy)ajjlDII.r   c                 F    | j                  t        | j                  d       y )N*   )assertRaises	TypeErrorrW   r   s    r   test_constructor_positionalz+BaseFutureTests.test_constructor_positional   s    )T%5%5r:r   c                    | j                   j                  | j                   | j                        }| j                  t        j
                  |j                         | j                   j                  | j                   | j                        }| j                  t        j
                  |j                         | j                   j                  | j                   | j                        }| j                  t        t        f      5  |j                  d        d d d        | j                   j                  | j                   | j                        }| j                  t        t        f      5  |j                  t               d d d        | j                   j                  | j                   | j                        }| j                  t        t        f      5  |j                          d d d        | j                   j                  | j                   | j                        }| j                  t        t        f      5  |j                  d        d d d        | j                   j                  | j                   | j                        }| j                  t        t        f      5  |j                  d        d d d        | j                   j                  | j                   | j                        }	 t!        |       | j                   j                  | j                   | j                        }	 |j#                          | j                   j                  | j                   | j                        }	 t%        |       | j                   j                  | j                   | j                        }| j'                  |j)                                | j'                  |j+                                y # 1 sw Y   xY w# 1 sw Y   vxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   jxY w# t        t        f$ r Y Bw xY w# t        $ r Y w xY w# t        $ r Y w xY w)Nrh   c                      y r	   r   r   s    r   <lambda>z4BaseFutureTests.test_uninitialized.<locals>.<lambda>       r   c                      y r	   r   r   s    r   r   z4BaseFutureTests.test_uninitialized.<locals>.<lambda>   r   r   )rS   __new__r?   r   r
   InvalidStateErrorr(   r*   rt   AttributeErrorr-   r/   	Exceptionr    add_done_callbackremove_done_callbackrepr	__await__iterr'   r"   r   r   futs     r   test_uninitializedz"BaseFutureTests.test_uninitialized   sG    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=> 	2!!.1	2 hhtxxdii8n=> 	5$$^4	5 hhtxxdii8	I hhtxxdii8	MMO hhtxxdii8	I hhtxxdii8)$O	! 	!	) 	)	 		2 	2	5 	5 n- 		  		  		sr   O&)O3P 8PP,P' )P= +Q &O03O= P
PP$'P:9P:=	Q
	Q
	QQc                    | j                  | j                        }| j                  t        |d             | j	                  |j
                  d        |j                  d       | j                  t        j                        5  | j                  j                  |       d d d        | j	                  |j
                  d       y # 1 sw Y   &xY w)Nrh   _cancel_message
my message)rW   r?   r3   hasattrr[   r   r    r   r
   CancelledErrorry   ro   s     r   !test_future_cancel_message_getterz1BaseFutureTests.test_future_cancel_message_getter   s    $)),#456**D1	w556 	,II((+	,**L9	, 	,s   CCc                 z   | j                  | j                        }|j                  d       d|_        | j	                  |j                  d       | j                  t        j                        5  | j                  j                  |       d d d        | j	                  |j                  d       y # 1 sw Y   &xY w)Nrh   r   zmy new message)	rW   r?   r    r   r[   r   r
   r   ry   ro   s     r   !test_future_cancel_message_setterz1BaseFutureTests.test_future_cancel_message_setter   s    $)),	,**,<= w556 	,II((+	,**,<=	, 	,s   0B11B:c                    | j                  | j                        }| j                  |j                                | j                  |j	                                | j                  |j                                | j                  t        j                  |j                         | j                  t        j                  |j                         | j                  t        j                  |j                  d        | j                  t        j                  |j                  d        | j                  |j                                y rn   )rW   r?   r3   r    r"   r   r   r
   r   r(   r*   r   r-   r/   r'   ro   s     r   test_cancelzBaseFutureTests.test_cancel   s    $)),
#&!'00!((;'00!++>'33Q\\4H'33Q__dK$r   c                    | j                  | j                        }| j                  t        j                  |j
                         |j                  d       | j                  |j                                | j                  |j                                | j                  |j                         d       | j                  |j                         d        | j                  t        j                  |j                  d        | j                  t        j                  |j                  d        | j                  |j                                y Nrh   r   )rW   r?   r   r
   r   r(   r-   r'   r"   r3   r   r[   r*   r/   r    ro   s     r   test_resultzBaseFutureTests.test_result   s    $)),'33QXX>	R'!R(-'33Q\\4H'33Q__dK$r   c                    t               }| j                  | j                        }| j                  t        j
                  |j                         | j                  t        d|j                  t               |j                  |       | j                  |j                                | j                  |j                                | j                  t         |j                         | j!                  |j                         |       | j                  t        j
                  |j"                  d        | j                  t        j
                  |j                  d        | j                  |j%                                y )Nrh   z!StopIteration .* cannot be raised)rt   rW   r?   r   r
   r   r*   rs   r   r/   StopIterationr'   r"   r3   r   r(   r[   r-   r    )r   excr   s      r   test_exceptionzBaseFutureTests.test_exception  s   n$)),'33Q[[A 	y*M 	? 	
'!,1,'33Q\\4H'33Q__dK$r   c                     | j                  | j                        }|j                  t               | j	                  |j                         t               y rn   )rW   r?   r/   rt   r]   r*   ro   s     r   test_exception_classz$BaseFutureTests.test_exception_class  s;    $)),	%akkm\:r   c                 P   | j                  | j                        fd} |       }| j                  t        |      d       | j                  t        |             j	                  d       | j                  t        |      d       | j                  t        |      d       y )Nrh   c               3   ^   K   d E d {   } d| f E d {   }d|f y 7 7 w)NABCr   )xyr   s     r   fixturez6BaseFutureTests.test_yield_from_twice.<locals>.fixture&  s5     IAq&LAq&L s   
-)-+--r   r   )r   r   )r   r   )rW   r?   r[   nextr-   )r   r   rI   r   s      @r   test_yield_from_twicez%BaseFutureTests.test_yield_from_twice#  s    $)),	 Ia#&a!$	Ra),a),r   c           
      x	   | j                   j                  d       | j                  | j                         }|j                  d   }| j	                  t        |      d| j                  j                   d|d    d|d    d	       |j                          | j                   j                  d
       | j                  | j                         }| j	                  t        |      d| j                  j                   d       |j                          | j                  | j                         }|j                          | j	                  t        |      d| j                  j                   d       | j                  | j                         }|j                  d       | j	                  t        |      d| j                  j                   d       | j	                  |j                         d       t               }| j                  | j                         }|j                  |       | j	                  t        |      d| j                  j                   d       | j                  |j                         |       d }| j                  | j                         }	|	j                  t                 |t               }
| j#                  t        |	      d| j                  j                  z   d|
z  z          |	j                          | j	                  t        |	      d| j                  j                   d       | j                  | j                         }|j                  t$               |j                  t&                |t$              } |t&              }| j#                  t        |      d| j                  j                  z   d|d|dz          | j                  | j                         }|j                  t$               t)        d      D ]  }|j                  t                 |j                  t&               |d|}| j#                  t        |      d| j                  j                  z   d|z  z          |j                          | j	                  t        |      d| j                  j                   d       y )NTrh   <z pending created at r   :rg   >Fz	 pending>z cancelled>   z finished result=4>z# finished exception=RuntimeError()>c                     t        j                  |       \  }}| j                  d|d|}t        j                  |      S )Nz() at r   )
test_utilsget_function_sourcer7   reescape)funcfilenamelinenotexts       r   	func_reprz3BaseFutureTests.test_future_repr.<locals>.func_reprU  s7    )==dCHf&*&7&76JD99T?"r   z pending cb=\[%s\]>z pending cb=\[z, z\]>   z, <8 more>, )r?   	set_debugrW   _source_tracebackr[   r   rS   r5   r    r-   r(   rt   r/   rG   r*   r   r   assertRegexr   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_reprz BaseFutureTests.test_future_repr5  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                 D   ddl m} | j                  | j                        }|j	                  d       | j                  | j                        } |||       | j                  |j                                | j                  |j                         d       | j                  | j                        }|j                  t                      | j                  | j                        } |||       | j                  |j                                | j                  t        |j                         | j                  | j                        }|j                          | j                  | j                        } |||       | j                  |j                                y )Nr   )_copy_future_staterh   
   )asyncio.futuresr   rW   r?   r-   r3   r   r[   r(   r/   rt   r   r    r"   )r   r   r   newfr   newf_exceptionr   newf_cancelleds           r   test_copy_statezBaseFutureTests.test_copy_statez  s=   6$)),	RTYY/1d#		$+&&DII&6!!,.1))tyy)9;7++-.,(=(=>&&DII&6))tyy)9;70023r   c                     | j                  | j                        fdfd}| j                  t        d      5   |        d d d        j	                          y # 1 sw Y   xY w)Nrh   c               3   &   K    E d {    y 7 wr	   r   r   s   r   coroz'BaseFutureTests.test_iter.<locals>.coro  s     NNs   c                              \  } }y r	   r   )arg1arg2r   s     r   rx   z'BaseFutureTests.test_iter.<locals>.test  s    JD$r   zawait wasn't used)rW   r?   rs   rt   r    )r   rx   r   r   s     @@r   	test_iterzBaseFutureTests.test_iter  sZ    DII.		  ##L2EF 	F	

	 	s   A  A)c                     | j                  | j                        }| j                  t        d      5  d|_        d d d        y # 1 sw Y   y xY w)Nrh   zcan only be set to FalseT)rW   r?   rs   
ValueError_log_tracebackr   s     r   test_log_tracebackz"BaseFutureTests.test_log_traceback  sG    DII.##J0JK 	&!%C	& 	& 	&s   AAzasyncio.base_events.loggerc                     | j                  | j                        }~| j                  |j                  j                         y rn   )rW   r?   r'   errorcalledr   m_logr   s      r   test_tb_logger_abandonedz(BaseFutureTests.test_tb_logger_abandoned  s4    DII.++,r   c                     | j                  | j                        }|j                  t                      |j	                          ~| j                  |j                  j                         y rn   )rW   r?   r/   r   r    r'   r   r   r   s      r   &test_tb_logger_not_called_after_cancelz6BaseFutureTests.test_tb_logger_not_called_after_cancel  sM    DII.)+&

++,r   c                     | j                  | j                        }|j                  d       ~| j                  |j                  j
                         y r   )rW   r?   r-   r'   r   r   r   s      r   !test_tb_logger_result_unretrievedz1BaseFutureTests.test_tb_logger_result_unretrieved  s@    DII.r++,r   c                     | j                  | j                        }|j                  d       |j                          ~| j	                  |j
                  j                         y r   )rW   r?   r-   r(   r'   r   r   r   s      r   test_tb_logger_result_retrievedz/BaseFutureTests.test_tb_logger_result_retrieved  sI    DII.r

++,r   c                 "   | j                  | j                        }|j                  t        d             ~t	        j
                  | j                         t        j                          | j                  |j                  j                         y Nrh   boom)rW   r?   r/   rt   r   run_brieflyr   
gc_collectr3   r   r   r   s      r   $test_tb_logger_exception_unretrievedz4BaseFutureTests.test_tb_logger_exception_unretrieved  sc    DII.,v./tyy)**+r   c                     | j                  | j                        }|j                  t        d             |j	                          ~| j                  |j                  j                         y r   )rW   r?   r/   rt   r*   r'   r   r   r   s      r   "test_tb_logger_exception_retrievedz2BaseFutureTests.test_tb_logger_exception_retrieved  sP    DII.,v./++,r   c                     | j                  | j                        }|j                  t        d             | j	                  t        |j
                         ~| j                  |j                  j                         y r   )	rW   r?   r/   rt   r   r(   r'   r   r   r   s      r   )test_tb_logger_exception_result_retrievedz9BaseFutureTests.test_tb_logger_exception_result_retrieved  s[    DII.,v./,

3++,r   c                    d }t         j                  j                  d      }|j                  |d      }t	        j
                  || j                        }| j                  j                  |      \  }}| j                  t	        j                  |             | j                  |d       | j                  |t        j                                |j                  d       y )Nc                 .    | t        j                         fS r	   	threading	get_identargs    r   runz-BaseFutureTests.test_wrap_future.<locals>.run      ,,.//r   rg   oirh   Twait)
concurrentr   ThreadPoolExecutorsubmitr
   rF   r?   ry   r3   ri   r[   assertNotEqualr  r  shutdown)r   r  exf1f2residents          r   rJ   z BaseFutureTests.test_wrap_future  s    	02215YYsD!  $))4YY11"5
U((,-d#E9#6#6#89
r   c                     | j                  | j                        }t        j                  |      }| j	                  ||       y rn   )rW   r?   r
   rF   rG   r   r  r  s      r   test_wrap_future_futurez'BaseFutureTests.test_wrap_future_future  s7    499-  $b"r   c                    d }t         j                  j                  d      }|j                  |d      }| j	                  t
        d      5  t        j                  |       d d d        |j                  d       y # 1 sw Y   xY w)Nc                 .    | t        j                         fS r	   r  r  s    r   r  z:BaseFutureTests.test_wrap_future_without_loop.<locals>.run  r	  r   rg   r
  rr   Tr  )	r  r   r  r  rs   rt   r
   rF   r  )r   r  r  r  s       r   test_wrap_future_without_loopz-BaseFutureTests.test_wrap_future_without_loop  so    	02215YYsD!##L2IJ 	$#	$
	$ 	$s   A<<Bc                 (   d }t         j                  j                  d      }|j                  |d      fd}| j                  j                   |             }| j                  | j                  |j                         |j                  d       y )Nc                 .    | t        j                         fS r	   r  r  s    r   r  z>BaseFutureTests.test_wrap_future_use_running_loop.<locals>.run  r	  r   rg   r
  c                  6   K   t        j                         S wr	   )r
   rF   )r  s   r   rx   z?BaseFutureTests.test_wrap_future_use_running_loop.<locals>.test  s     &&r**s   Tr  )	r  r   r  r  r?   ry   rG   rz   r  )r   r  r  rx   r  r  s        @r   !test_wrap_future_use_running_loopz1BaseFutureTests.test_wrap_future_use_running_loop  sm    	02215YYsD!	+YY))$&1dii*
r   c                    t        j                  | j                         | j                  t         j                  d        d }t        j
                  j                  d      }|j                  |d      }t        j                  |      }| j                  | j                  |j                         |j                  d       y )Nc                 .    | t        j                         fS r	   r  r  s    r   r  z=BaseFutureTests.test_wrap_future_use_global_loop.<locals>.run  r	  r   rg   r
  Tr  )r
   r~   r?   r@   r  r   r  r  rF   rG   rz   r  )r   r  r  r  r  s        r    test_wrap_future_use_global_loopz0BaseFutureTests.test_wrap_future_use_global_loop  s    tyy)..5	02215YYsD!  $dii*
r   c                 \   t         j                  j                         }t        j                  || j
                        }|j                          t        j                  | j
                         | j                  |j                                | j                  |j                                y rn   )r  r   Futurer
   rF   r?   r    r   r   r3   r"   r  s      r   test_wrap_future_cancelz'BaseFutureTests.test_wrap_future_cancel  sk    &&(  $))4
		tyy)''r   c                    t         j                  j                         }t        j                  || j
                        }|j                  d       |j                          t        j                  | j
                         | j                  |j                                | j                  |j                         d       | j                  |j                                y r   )r  r   r%  r
   rF   r?   r-   r    r   r   r'   r"   r[   r(   r3   r  s      r   test_wrap_future_cancel2z(BaseFutureTests.test_wrap_future_cancel2  s    &&(  $))4
b
		tyy)(b)'r   c                 F   | j                   j                  d       | j                  | j                         }t        j                         j
                  dz
  }| j                  |j                  t               | j                  |j                  d   d d t        |df       y )NTrh   rg      test_future_source_traceback)r?   r   rW   sys	_getframef_linenor]   r   listr[   __file__)r   r^   r   s      r   r,  z,BaseFutureTests.test_future_source_traceback   s    		D!!!tyy!1))A-f66=11"5bq9" 8:	;r   c                 l   | j                   j                  |       d } |       }| j                  | j                         }|j                  |       d }t	        j
                  | j                          t        j                          d| j                  j                   d}t        |      ||j                  f}|j                  j                  t        j                  |       |j                  j                   d   d   }| j#                  |t%        j&                  |t$        j(                               y )Nc                  H    	 t               # t        $ r} | cY d } ~ S d } ~ ww xY wr	   )MemoryErrorBaseException)r   s    r   memory_errorzLBaseFutureTests.check_future_exception_never_retrieved.<locals>.memory_error/  s$    !m#  
s   
 	!!!rh   ^z exception was never retrieved
)exc_infor   )r?   r   rW   r/   r   r   r   r   rS   r5   rk   __traceback__r   assert_called_once_withr   ANY	call_argsr   r   compileDOTALL)	r   debugr   r6  r   r^   regexr8  messages	            r   &check_future_exception_never_retrievedz6BaseFutureTests.check_future_exception_never_retrieved+  s    		E"	
 n!!tyy!1S!tyy)DHH%%&&FGIsC$5$56++DHHx+H++''*1-"**UBII">?r   c                 &    | j                  d       y rd   rB  r   s    r   %test_future_exception_never_retrievedz5BaseFutureTests.test_future_exception_never_retrievedC  s    33E:r   c                 &    | j                  d       y r1   rD  r   s    r   +test_future_exception_never_retrieved_debugz;BaseFutureTests.test_future_exception_never_retrieved_debugF  s    33D9r   c                     | j                  | j                        }|j                          t        j                  |d       | j                  |j                                y )Nrh      )rW   r?   r    r   _set_result_unless_cancelledr3   r"   r   s     r    test_set_result_unless_cancelledz0BaseFutureTests.test_set_result_unless_cancelledI  sD    DII.

,,S!4(r   c                 6   | j                  | j                        }|j                  d       |j                         }d }	 |j	                  d        | j                  d       | j                  |d       y # t        $ r}|j                  d   }Y d }~0d }~ww xY w)Nrh   )rg   rI  zStopIteration was expectedr   )	rW   r?   r-   r4   sendfailr   rU   r[   )r   r   fir(   r  s        r   test_future_stop_iteration_argsz/BaseFutureTests.test_future_stop_iteration_argsO  s    DII.v\\^	4GGDM II23(	  	 WWQZF	 s   A6 6	B?BBc           	         | j                  | j                        }t        |      }| j                  t              5  | j                  t        |j                  t        t        d      d        d d d        t        j                         5  t        j                  dt               | j                  t        |j                  t        t        d      d       | j                  t        |j                  t        d      t        d             | j                  t        |j                  t        d d        d d d        | j                  t        |j                  t               y # 1 sw Y   xY w# 1 sw Y   ;xY w)Nrh   zebraignore)categoryelephant    )rW   r?   r   assertWarnsDeprecationWarningr   r   throwwarningscatch_warningsfilterwarningsr   r   r0  )r   r   rO  s      r   test_future_iter_throwz&BaseFutureTests.test_future_iter_throw\  s   DII.#Y01 	Xi9i>PRVW	X$$& 	L##H7IJi%y'<bBi%j19Z3HJ j"((JdK	L 	)RXXt4	X 	X	L 	Ls   1E
B'E+E(+E4c                      G d d      }t        d      D ]4  }| j                  | j                        }|j                   |              6 y )Nc                       e Zd Zd Zy)5BaseFutureTests.test_future_del_collect.<locals>.Evilc                 ,    t        j                          y r	   )gccollectr   s    r   __del__z=BaseFutureTests.test_future_del_collect.<locals>.Evil.__del__m  s    

r   N)r5   r6   r7   rd  r   r   r   Evilr`  l  s    r   re  d   rh   )r   rW   r?   r-   )r   re  r   r   s       r   test_future_del_collectz'BaseFutureTests.test_future_del_collectk  sF    	 	 s 	#A""		"2CNN46"	#r   )1r5   r6   r7   rW   r=   r_   rl   rp   ru   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   patchr   r   r   r   r   r   r   rJ   r  r  r   r#  r&  r(  r,  rB  rE  rG  rK  rP  r]  rg  rN   rO   s   @r   rQ   rQ   g   s   ))
4
.'//;2%h:	>	%%%$;
-$C=J44&
 TZZ,-- .-
 TZZ,-- .- TZZ,-- .- TZZ,-- .- TZZ,-, ., TZZ,-- .- TZZ,-- .-
	
((	; TZZ,-@ .@.;:))5#r   rQ   _CFuturezrequires the C _asyncio modulec                   L    e Zd Z	 ej                  Zd Zy# e$ r dZY d Zyw xY w)CFutureTestsNc                     | j                  | j                        }| j                  t              5  |`d d d        | j                  t              5  |`d d d        y # 1 sw Y   *xY w# 1 sw Y   y xY wrn   )rW   r?   r   r   r2   r   r   s     r   test_future_del_segfaultz%CFutureTests.test_future_del_segfault}  sp    DII.~. 	-,	-~. 	#"	# 	#	- 	-	# 	#s   AA*A'*A3)r5   r6   r7   r   ri  rS   r   rm  r   r   r   rk  rk  u  s2    #  #s    ##rk  c                   V    e Zd Z	  G d dej                        ZeZy# e$ r dZY yw xY w)CSubFutureTestsc                       e Zd Zy)CSubFutureTests.CSubFutureNr5   r6   r7   r   r   r   
CSubFuturerq        r   rs  N)r5   r6   r7   r   ri  rs  rS   r   r   r   r   ro  ro    s4    	)) 	  s    ((ro  c                   $    e Zd Zej                  Zy)PyFutureTestsN)r5   r6   r7   r   	_PyFuturerS   r   r   r   rv  rv    s    


Cr   rv  c                   l     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Z xZS )BaseFutureDoneCallbackTestsc                 L    t         |           | j                         | _        y r	   )r<   r=   r>   r?   rB   s    r   r=   z!BaseFutureDoneCallbackTests.setUp  s    &&(	r   c                 B    t        j                  | j                         y r	   )r   r   r?   r   s    r   r   z'BaseFutureDoneCallbackTests.run_briefly  s    tyy)r   c                     fd}|S )Nc                 (    j                         y r	   )append)r^   bagthings    r   bag_appenderz@BaseFutureDoneCallbackTests._make_callback.<locals>.bag_appender  s    JJur   r   )r   r  r  r  s    `` r   _make_callbackz*BaseFutureDoneCallbackTests._make_callback  s    	r   c                     t         r	   NotImplementedErrorr   s    r   rW   z'BaseFutureDoneCallbackTests._new_future      !!r   c                    g }| j                         }| j                  |d      }| j                  |d      }| j                  |d      }|j                  |       |j                  |       |j                  |       |j                  |       |j                  |       | j	                  |g        |j                  d       | j                          | j	                  |ddg       | j	                  |j                         d       y Nr      rf  foorW   r  r   r   r[   r-   r   r(   r   r  r   cb1cb2cb3s         r   $test_callbacks_remove_first_callbackz@BaseFutureDoneCallbackTests.test_callbacks_remove_first_callback  s    !!#r*!!#r*!!#s+	C 	C 	C 	s#	s#b!	Ur3i(U+r   c                 ,   g }| j                         }| j                  |d      }| j                  |d      }| j                  |d      }|j                  |       |j                  |       |j                  |       |j                  |       |j                  |       |j                  |       | j	                  |g        |j                  d       | j                          | j	                  |dg       | j	                  |j                         d       y r  r  r  s         r   /test_callbacks_remove_first_and_second_callbackzKBaseFutureDoneCallbackTests.test_callbacks_remove_first_and_second_callback  s    !!#r*!!#r*!!#s+	C 	C 	C 	s#	s#	s#b!	Use$U+r   c                    g }| j                         }| j                  |d      }| j                  |d      }| j                  |d      }|j                  |       |j                  |       |j                  |       |j                  |       |j                  |       | j	                  |g        |j                  d       | j                          | j	                  |ddg       | j	                  |j                         d       y r  r  r  s         r   $test_callbacks_remove_third_callbackz@BaseFutureDoneCallbackTests.test_callbacks_remove_third_callback  s    !!#r*!!#r*!!#s+	C 	C 	C 	s#	s#b!	Ur2h'U+r   c                 z   g }| j                         }|j                  | j                  |d             |j                  | j                  |d             | j                  |g        |j	                  d       | j                          | j                  |ddg       | j                  |j                         d       y )Nr   r  r  )rW   r   r  r[   r-   r   r(   )r   r  r   s      r   $test_callbacks_invoked_on_set_resultz@BaseFutureDoneCallbackTests.test_callbacks_invoked_on_set_result  s    	D//R89	D//R89b!	Ur2h'U+r   c                 J   g }| j                         }|j                  | j                  |d             | j                  |g        t	               }|j                  |       | j                          | j                  |dg       | j                  |j                         |       y )Nrf  )rW   r   r  r[   rt   r/   r   r*   )r   r  r   r   s       r   'test_callbacks_invoked_on_set_exceptionzCBaseFutureDoneCallbackTests.test_callbacks_invoked_on_set_exception  s    	D//S9:b!n	se$,r   c                    g }| j                         }| j                  |d      }| j                  |d      }| j                  |d      }|j                  |       |j                  |       | j                  |j	                  |      d       | j                  |j	                  |      d       |j                  |       t        d      D ]  }|j                  |        | j                  |j	                  |      d       | j                  |g        |j                  d       | j                          | j                  |dg       | j                  |j                         d       y )Nrg   rI  r+  r         r  )	rW   r  r   r[   r   r   r-   r   r(   )r   r  r   r  r  r  r   s          r   test_remove_done_callbackz5BaseFutureDoneCallbackTests.test_remove_done_callback	  sA   !!#q)!!#q)!!#q) 	
C 	C  	//4a8 	//4a8 	
C q 	%A$	% 	//4a8b!	Uqc"U+r   c                     | j                         j                  t               t        d      D ]  }j                  t                 G fdd      }j                   |              y )N?   c                       e Zd Z fdZy)RBaseFutureDoneCallbackTests.test_remove_done_callbacks_list_mutation.<locals>.evilc                 0    j                  t               yrd   )r   idr   otherr   s     r   __eq__zYBaseFutureDoneCallbackTests.test_remove_done_callbacks_list_mutation.<locals>.evil.__eq__4  s    ((,r   Nr5   r6   r7   r  r   s   r   evilr  3  s    r   r  rW   r   rZ   r   r  r   r   _r  r   s      @r   (test_remove_done_callbacks_list_mutationzDBaseFutureDoneCallbackTests.test_remove_done_callbacks_list_mutation*  s^      c"r 	&A!!"%	&	 	
 	  (r   c                     | j                         j                  t               t        d      D ]  }j                  t                 G fdd      }j                   |              y )Nr  c                       e Zd Z fdZy)OBaseFutureDoneCallbackTests.test_remove_done_callbacks_list_clear.<locals>.evilc                 (    j                  |       y r	   )r   r  s     r   r  zVBaseFutureDoneCallbackTests.test_remove_done_callbacks_list_clear.<locals>.evil.__eq__D  s    ((/r   Nr  r   s   r   r  r  C  s    0r   r  r  r  s      @r   %test_remove_done_callbacks_list_clearzABaseFutureDoneCallbackTests.test_remove_done_callbacks_list_clear:  s^      c"r 	&A!!"%	&	0 	0 	  (r   c                     d }| j                         }|j                  |       |j                  t               |j                  t               |j                  d       t	        j
                  | j                         y )Nc                 .    | j                  t               y r	   )r   rZ   r   s    r   mutzPBaseFutureDoneCallbackTests.test_schedule_callbacks_list_mutation_1.<locals>.mutL  s    ""3'r   rg   )rW   r   rZ   r-   r   r   r?   )r   r  r   s      r   'test_schedule_callbacks_list_mutation_1zCBaseFutureDoneCallbackTests.test_schedule_callbacks_list_mutation_1I  s_    	(  c"c"c"qtyy)r   c                     | j                         j                  t               t        d      D ]  }j                  t                dd G fdd      }j                   |              y )Nr  rf  r   c                       e Zd Z fdZy)QBaseFutureDoneCallbackTests.test_schedule_callbacks_list_mutation_2.<locals>.evilc                 D    dz  k  rj                  t               y)Nrg   F)r   r  )r   r  	extra_cbsr   max_extra_cbss     r   r  zXBaseFutureDoneCallbackTests.test_schedule_callbacks_list_mutation_2.<locals>.evil.__eq__c  s%    Q	},))"-r   Nr  )r  r   r  s   r   r  r  b  s    r   r  r  )r   r  r  r  r   r  s      @@@r   'test_schedule_callbacks_list_mutation_2zCBaseFutureDoneCallbackTests.test_schedule_callbacks_list_mutation_2V  sj      c"r 	&A!!"%	& 		 	 	  (r   )r5   r6   r7   r=   r   r  rW   r  r  r  r  r  r  r  r  r  r  rN   rO   s   @r   ry  ry    sJ    )*",.,0,.,-,B) )*)r   ry  c                       e Zd Zd Zy)CFutureDoneCallbackTestsc                 B    t        j                  | j                        S rn   r   ri  r?   r   s    r   rW   z$CFutureDoneCallbackTests._new_futurer  s    TYY//r   Nr5   r6   r7   rW   r   r   r   r  r  m  s    
0r   r  c                       e Zd Zd Zy)CSubFutureDoneCallbackTestsc                 Z     G d dt         j                        } || j                        S )Nc                       e Zd Zy);CSubFutureDoneCallbackTests._new_future.<locals>.CSubFutureNrr  r   r   r   rs  r  |  rt  r   rs  rh   r  )r   rs  s     r   rW   z'CSubFutureDoneCallbackTests._new_future{  s#    	)) 	tyy))r   Nr  r   r   r   r  r  v  s    
*r   r  c                       e Zd Zd Zy)PyFutureDoneCallbackTestsc                 B    t        j                  | j                        S rn   )r   rw  r?   r   s    r   rW   z%PyFutureDoneCallbackTests._new_future  s      dii00r   Nr  r   r   r   r  r    s    1r   r  c                   *     e Zd Zd Z fdZd Z xZS )BaseFutureInheritanceTestsc                     t         r	   r  r   s    r   _get_future_clsz*BaseFutureInheritanceTests._get_future_cls  r  r   c                     t         |           | j                         | _        | j	                  | j                  j
                         y r	   r;   rB   s    r   r=   z BaseFutureInheritanceTests.setUp  rD   r   c                     | j                         } G d d|      } || j                        }| j                  t        d      5  |j	                          d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zd Zy)QBaseFutureInheritanceTests.test_inherit_without_calling_super_init.<locals>.MyFutc                      y r	   r   rT   s      r   re   zZBaseFutureInheritanceTests.test_inherit_without_calling_super_init.<locals>.MyFut.__init__  s    r   N)r5   r6   r7   re   r   r   r   MyFutr    s    r   r  rh   z!Future object is not initialized.)r  r?   rs   rt   r{   )r   rS   r  r   s       r   'test_inherit_without_calling_super_initzBBaseFutureInheritanceTests.test_inherit_without_calling_super_init  s`    ""$	C 	
 ###/
 	 LLN		 	 	s   AA()r5   r6   r7   r  r=   r  rN   rO   s   @r   r  r    s    ")
r   r  c                       e Zd Zd Zy)PyFutureInheritanceTestsc                 "    t         j                  S r	   )r   rw  r   s    r   r  z(PyFutureInheritanceTests._get_future_cls  s       r   Nr5   r6   r7   r  r   r   r   r  r    s    !r   r  c                       e Zd Zd Zy)CFutureInheritanceTestsc                 "    t         j                  S r	   )r   ri  r   s    r   r  z'CFutureInheritanceTests._get_future_cls  s    r   Nr  r   r   r   r  r    s     r   r  __main__))__doc__concurrent.futuresr  rb  r   r-  r  unittestr   typesr   r
   r   rZ  test.test_asyncior   r   rx   r   r   r   r   r   r   TestCaser9   rQ   
skipUnlessr   rk  ro  rv  ry  r  r  r  r  r  r  r5   mainr   r   r   <module>r     s     	 	 
        1 (		0 0f
## $K# K#\ WWj157#?J$7$7 #7# WWj157oz':': 7OZ%8%8 U) U)p 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HMMO r   