a 7êdgþlã@sÔdZddlZddlZddlZddlZddlZddlZddlmZddl Z ddl m Z ddl m Z ddlmZdd„Zd d „Zd d „Zd d„ZGdd„dƒZGdd„de jƒZGdd„dƒZe ee dƒd¡Gdd„dee jƒƒZe ee dƒd¡Gdd„dee jƒƒZGdd„dee jƒZGdd„dƒZe ee dƒd¡Gdd „d ee jƒƒZe ee dƒd¡Gd!d"„d"ee jƒƒZGd#d$„d$ee jƒZ Gd%d&„d&ƒZ!Gd'd(„d(e!e jƒZ"Gd)d*„d*e!e jƒZ#e$d+krÐe %¡dS),zTests for futures.py.éN)Úmock)Úfutures)Úutils)ÚsupportcCst d¡dS©N)ÚasyncioZset_event_loop_policy©rrú:/usr/local/lib/python3.9/test/test_asyncio/test_futures.pyÚtearDownModulesr cCs|Srr©Úfrrr Ú _fakefuncsr cCsdSrrrrrr Úfirst_cbsrcCsdSrrrrrr Úlast_cbsrc@s\eZdZdZdZdZdZdd„Zdd„Zdd„Z d d „Z d d „Z d d„Z dd„Z dd„ZdS)Ú DuckFutureFNcCs| ¡r dSd|_dS)NFT)ÚdoneÚ_DuckFuture__cancelled©Úselfrrr Úcancel*szDuckFuture.cancelcCs|jSr)rrrrr Ú cancelled0szDuckFuture.cancelledcCs|jp|jdup|jduSr)rÚ_DuckFuture__resultÚ_DuckFuture__exceptionrrrr r3s ÿþzDuckFuture.donecCs|jdur|j‚|jSr)rrrrrr Úresult8s zDuckFuture.resultcCs|jSr©rrrrr Ú exception>szDuckFuture.exceptioncCs ||_dSr)r)rrrrr Ú set_resultBszDuckFuture.set_resultcCs ||_dSrr)rrrrr Ú set_exceptionGszDuckFuture.set_exceptionccs| ¡sd|_|V| ¡S©NT)rÚ_asyncio_future_blockingrrrrr Ú__iter__LszDuckFuture.__iter__)Ú__name__Ú __module__Ú __qualname__rrrrrrrrrrrr rrrr r!srcs,eZdZ‡fdd„Zdd„Zdd„Z‡ZS)Ú DuckTestscs&tƒ ¡| ¡|_| |jj¡dSr©ÚsuperÚsetUpÚ new_test_loopÚloopZ addCleanupÚcloser©Ú __class__rr r'Vs  zDuckTests.setUpcCstƒ}t |¡}dSr)rrÚ wrap_future©rr Úgrrr Útest_wrap_future[s zDuckTests.test_wrap_futurecCstƒ}t |¡}dSr)rrZ ensure_futurer.rrr Útest_ensure_future`s zDuckTests.test_ensure_future)r!r"r#r'r0r1Ú __classcell__rrr+r r$Ts r$cs”eZdZdd„Z‡fdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Ze d%¡d&d'„ƒZe d%¡d(d)„ƒZe d%¡d*d+„ƒZe d%¡d,d-„ƒZe d%¡d.d/„ƒZe d%¡d0d1„ƒZe d%¡d2d3„ƒZd4d5„Zd6d7„Zd8d9„Z d:d;„Z!dd?„Z#e d%¡d@dA„ƒZ$dBdC„Z%dDdE„Z&dFdG„Z'dHdI„Z(dJdK„Z)dLdM„Z*‡Z+S)NÚBaseFutureTestscOs|j|i|¤ŽSr)Úcls©rÚargsÚkwargsrrr Ú _new_futurehszBaseFutureTests._new_futurecs&tƒ ¡| ¡|_| |jj¡dSrr%rr+rr r'ks  zBaseFutureTests.setUpcCs¬Gdd„dƒ}| t |¡¡| t |ƒ¡¡| t d¡¡| t t ¡¡¡|j|jd}| t |¡¡| t t|ƒ¡¡| t t t|ƒ¡¡¡|  ¡dS)Nc@seZdZdZdd„ZdS)z/BaseFutureTests.test_isfuture..MyFutureNcSs d|_dS©NF)rrrrr Ú__init__tsz8BaseFutureTests.test_isfuture..MyFuture.__init__)r!r"r#rr:rrrr ÚMyFutureqsr;é©r)) Ú assertFalserÚisfutureÚ assertTruerZMockr8r)Útyper)rr;r rrr Ú test_isfuturepszBaseFutureTests.test_isfuturecCsD|j|jd}| | ¡¡| | ¡¡| ¡| | ¡¡dS©Nr=)r8r)r>rrrr@©rr rrr Útest_initial_state‡s z"BaseFutureTests.test_initial_statecCs:t |j¡| ¡}| |j|j¡| | ¡|j¡dSr)rZset_event_loopr)r8ÚassertIsÚ_loopÚget_looprDrrr Ú"test_init_constructor_default_loopŽs z2BaseFutureTests.test_init_constructor_default_loopcCs| t|jd¡dS)Né*)Ú assertRaisesÚ TypeErrorr8rrrr Útest_constructor_positional”sz+BaseFutureTests.test_constructor_positionalc Csª|jj|j|jd}| tj|j¡|jj|j|jd}| tj|j¡|jj|j|jd}| tt f¡|  d¡Wdƒn1sŠ0Y|jj|j|jd}| tt f¡|  t ¡Wdƒn1sÖ0Y|jj|j|jd}| tt f¡|  ¡Wdƒn1s"0Y|jj|j|jd}| tt f¡| dd„¡Wdƒn1st0Y|jj|j|jd}| tt f¡| dd„¡Wdƒn1sÆ0Y|jj|j|jd}z t|ƒWntt fyYn0|jj|j|jd}z | ¡Wnty>Yn0|jj|j|jd}z t|ƒWntytYn0|jj|j|jd}| | ¡¡| | ¡¡dS)Nr=cSsdSrrr rrr Ú°óz4BaseFutureTests.test_uninitialized..cSsdSrrr rrr rN´rO)r4Ú__new__r)rKrÚInvalidStateErrorrrÚ RuntimeErrorÚAttributeErrorrrÚ ExceptionrÚadd_done_callbackÚremove_done_callbackÚreprÚ __await__Úiterr>rr©rÚfutrrr Útest_uninitialized˜sJ(((..   z"BaseFutureTests.test_uninitializedcCs€|j|jd}| t|dƒ¡| |jd¡| d¡| tj ¡|j  |¡Wdƒn1sd0Y| |jd¡dS)Nr=Ú_cancel_messageú my message) r8r)r@ÚhasattrÚ assertEqualr]rrKrÚCancelledErrorÚrun_until_completerDrrr Ú!test_future_cancel_message_getterÌs *z1BaseFutureTests.test_future_cancel_message_gettercCsv|j|jd}| d¡d|_| |jd¡| tj¡|j |¡Wdƒn1sZ0Y| |jd¡dS)Nr=r^zmy new message) r8r)rr]r`rKrrarbrDrrr Ú!test_future_cancel_message_setterÖs *z1BaseFutureTests.test_future_cancel_message_settercCsŽ|j|jd}| | ¡¡| | ¡¡| | ¡¡| tj|j ¡| tj|j ¡| tj |j d¡| tj |j d¡| | ¡¡dSrC)r8r)r@rrrrKrrarrrQrrr>rDrrr Ú test_cancelászBaseFutureTests.test_cancelcCsš|j|jd}| tj|j¡| d¡| | ¡¡|  |  ¡¡|  | ¡d¡|  |  ¡d¡| tj|jd¡| tj|j d¡| | ¡¡dS©Nr=rJ)r8r)rKrrQrrr>rr@rr`rrrrDrrr Ú test_resultìs zBaseFutureTests.test_resultcCs°tƒ}|j|jd}| tj|j¡| td|j t ¡|  |¡|  |  ¡¡|  | ¡¡| t|j¡| | ¡|¡| tj|jd¡| tj|j d¡|  | ¡¡dS)Nr=z!StopIteration .* cannot be raised)rRr8r)rKrrQrÚassertRaisesRegexrLrÚ StopIterationr>rr@rrr`rr)rÚexcr rrr Útest_exceptionùsÿ zBaseFutureTests.test_exceptioncCs,|j|jd}| t¡| | ¡t¡dSrC)r8r)rrRÚassertIsInstancerrDrrr Útest_exception_class s z$BaseFutureTests.test_exception_classcsn|j|jd‰‡fdd„}|ƒ}| t|ƒd¡| t|ƒˆ¡ˆ d¡| t|ƒd¡| t|ƒd¡dS)Nr=c3s2dVˆEdH}d|fVˆEdH}d|fVdS)NÚAÚBÚCr)ÚxÚyr rr Úfixtures    z6BaseFutureTests.test_yield_from_twice..fixturernrJ)rorJ)rprJ)r8r)r`Únextr)rrsr/rr r Útest_yield_from_twices  z%BaseFutureTests.test_yield_from_twicec Cs¬|j d¡|j|jd}|jd}| t|ƒd|jj›d|d›d|d›d ¡| ¡|j d ¡|j|jd}| t|ƒd|jj›d ¡| ¡|j|jd}| ¡| t|ƒd|jj›d ¡|j|jd}|  d ¡| t|ƒd|jj›d¡| |  ¡d ¡t ƒ}|j|jd}|  |¡| t|ƒd|jj›d¡|  | ¡|¡dd„}|j|jd} |  t¡|tƒ} | t| ƒd|jjd| ¡|  ¡| t| ƒd|jj›d ¡|j|jd} |  t¡|  t¡|tƒ} |tƒ} | t| ƒd|jjd| | f¡|j|jd}| t¡tdƒD]}| t¡q<| t¡d| | f}| t|ƒd|jjd|¡| ¡| t|ƒd|jj›d ¡dS)NTr=éÿÿÿÿúFz pending>z cancelled>éz finished result=4>z# finished exception=RuntimeError()>cSs(t |¡\}}d|j||f}t |¡S)Nz %s() at %s:%s)Ú test_utilsZget_function_sourcer#ÚreÚescape)ÚfuncÚfilenameÚlinenoÚtextrrr Ú func_reprBsz3BaseFutureTests.test_future_repr..func_reprz pending cb=\[%s\]>z pending cb=\[%s, %s\]>éz%s, <8 more>, %s)r)Ú set_debugr8Ú_source_tracebackr`rWr4r!rrrrRrrFrrUr Ú assertRegexrrÚrange)rZf_pending_debugÚframeZ f_pendingÚ f_cancelledZf_resultrjÚ f_exceptionr‚Zf_one_callbacksZ fake_reprZf_two_callbacksZ first_reprZ last_reprZf_many_callbacksÚiZcb_regexrrr Útest_future_repr"s‚  "þ  ÿ þ þ ÿ    ÿÿ    þ ÿz BaseFutureTests.test_future_reprcCsèddlm}|j|jd}| d¡|j|jd}|||ƒ| | ¡¡| | ¡d¡|j|jd}|  t ƒ¡|j|jd}|||ƒ| | ¡¡|  t |j¡|j|jd}|  ¡|j|jd}|||ƒ| |  ¡¡dS)Nr)Ú_copy_future_stater=é )Zasyncio.futuresrr8r)rr@rr`rrrRrKrr)rrr ZnewfrŠZnewf_exceptionr‰Znewf_cancelledrrr Útest_copy_stategs$      zBaseFutureTests.test_copy_statecsd|j|jd‰‡fdd„‰‡fdd„}| td¡|ƒWdƒn1sN0Yˆ ¡dS)Nr=c3sˆEdHdSrrr©r[rr Úcoro„sz'BaseFutureTests.test_iter..corocsˆƒ\}}dSrr)Zarg1Zarg2)r‘rr Útest‡sz'BaseFutureTests.test_iter..testzawait wasn't used)r8r)rhrRr)rr’r)r‘r[r Ú test_iters   $zBaseFutureTests.test_itercCsD|j|jd}| td¡d|_Wdƒn1s60YdS)Nr=zcan only be set to FalseT)r8r)rhÚ ValueErrorÚ_log_tracebackrZrrr Útest_log_tracebackŽsz"BaseFutureTests.test_log_tracebackzasyncio.base_events.loggercCs"|j|jd}~| |jj¡dSrC)r8r)r>ÚerrorÚcalled©rÚm_logr[rrr Útest_tb_logger_abandoned“sz(BaseFutureTests.test_tb_logger_abandonedcCs6|j|jd}| tƒ¡| ¡~| |jj¡dSrC)r8r)rrTrr>r—r˜r™rrr Ú&test_tb_logger_not_called_after_cancel™s  z6BaseFutureTests.test_tb_logger_not_called_after_cancelcCs,|j|jd}| d¡~| |jj¡dSrf)r8r)rr>r—r˜r™rrr Ú!test_tb_logger_result_unretrieved¡s z1BaseFutureTests.test_tb_logger_result_unretrievedcCs4|j|jd}| d¡| ¡~| |jj¡dSrf)r8r)rrr>r—r˜r™rrr Útest_tb_logger_result_retrieved¨s  z/BaseFutureTests.test_tb_logger_result_retrievedcCsD|j|jd}| tdƒ¡~t |j¡t ¡| |j j ¡dS©Nr=Zboom) r8r)rrRr{Ú run_brieflyrÚ gc_collectr@r—r˜r™rrr Ú$test_tb_logger_exception_unretrieved°s  z4BaseFutureTests.test_tb_logger_exception_unretrievedcCs8|j|jd}| tdƒ¡| ¡~| |jj¡dSrŸ)r8r)rrRrr>r—r˜r™rrr Ú"test_tb_logger_exception_retrieved¹s z2BaseFutureTests.test_tb_logger_exception_retrievedcCs>|j|jd}| tdƒ¡| t|j¡~| |jj¡dSrŸ) r8r)rrRrKrr>r—r˜r™rrr Ú)test_tb_logger_exception_result_retrievedÁs z9BaseFutureTests.test_tb_logger_exception_result_retrievedcCs|dd„}tj d¡}| |d¡}tj||jd}|j |¡\}}| t  |¡¡|  |d¡|  |t   ¡¡|jdddS)NcSs |t ¡fSr©Ú threadingÚ get_ident©Úargrrr ÚrunËsz-BaseFutureTests.test_wrap_future..runr<Úoir=T©Úwait)Ú concurrentrÚThreadPoolExecutorÚsubmitrr-r)rbr@r?r`ZassertNotEqualr¦r§Úshutdown)rrªÚexÚf1Úf2ÚresÚidentrrr r0És   z BaseFutureTests.test_wrap_futurecCs(|j|jd}t |¡}| ||¡dSrC)r8r)rr-rF©rr³r´rrr Útest_wrap_future_futureÖs z'BaseFutureTests.test_wrap_future_futurecs‚t d¡d}‡fdd„|_dd„}tj d¡}| |d¡}t |¡}ˆ  ˆj |j ¡|j dd Wdƒn1st0YdS) Nzasyncio.futures.eventscsˆjSrr=rrrr rNÝrOzBBaseFutureTests.test_wrap_future_use_global_loop..cSs |t ¡fSrr¥r¨rrr rªÞsz=BaseFutureTests.test_wrap_future_use_global_loop..runr<r«Tr¬) rÚpatchZget_event_loopr®rr¯r°rr-rFr)rGr±)rÚeventsrªr²r³r´rrr Ú test_wrap_future_use_global_loopÛs    z0BaseFutureTests.test_wrap_future_use_global_loopcCsNtj ¡}tj||jd}| ¡t |j¡|  |  ¡¡|  |  ¡¡dSrC) r®rÚFuturerr-r)rr{r r@rr·rrr Útest_wrap_future_cancelæs   z'BaseFutureTests.test_wrap_future_cancelcCshtj ¡}tj||jd}| d¡| ¡t  |j¡|  |  ¡¡|  |  ¡d¡| |  ¡¡dSrf)r®rr¼rr-r)rrr{r r>rr`rr@r·rrr Útest_wrap_future_cancel2îs   z(BaseFutureTests.test_wrap_future_cancel2cCsZ|j d¡|j|jd}t ¡jd}| |jt¡|  |jddd…t |df¡dS)NTr=r<éþÿÿÿéÚtest_future_source_traceback) r)r„r8ÚsysÚ _getframeÚf_linenorlr…Úlistr`Ú__file__)rÚfuturer€rrr rÁøs þÿz,BaseFutureTests.test_future_source_tracebackc CsÈ|j |¡dd„}|ƒ}|j|jd}| |¡d}t |j¡t ¡tj dkrˆd|j j ›d}t |ƒ||j f}|jjtj|dnd}|jjtjd d|jjd d }| |t |tj¡¡dS) Nc Ss8z tƒ‚Wn(ty2}z|WYd}~Sd}~00dSr)Ú MemoryErrorÚ BaseException)rjrrr Ú memory_errors zLBaseFutureTests.check_future_exception_never_retrieved..memory_errorr=)rÀrzú^z exception was never retrieved )Úexc_infoz,^Future/Task exception was never retrieved\nFr)r)r„r8rr{r rr¡rÂÚ version_infor4r!rAÚ __traceback__r—Zassert_called_once_withrÚANYZ call_argsr†r|ÚcompileÚDOTALL) rÚdebugršrÊrjrÇZregexrÌÚmessagerrr Ú&check_future_exception_never_retrieveds     z6BaseFutureTests.check_future_exception_never_retrievedcCs| d¡dSr9©rÔrrrr Ú%test_future_exception_never_retrievedsz5BaseFutureTests.test_future_exception_never_retrievedcCs| d¡dSrrÕrrrr Ú+test_future_exception_never_retrieved_debug!sz;BaseFutureTests.test_future_exception_never_retrieved_debugcCs4|j|jd}| ¡t |d¡| | ¡¡dS)Nr=é)r8r)rrZ_set_result_unless_cancelledr@rrZrrr Ú test_set_result_unless_cancelled$s z0BaseFutureTests.test_set_result_unless_cancelledc Cs||j|jd}| d¡| ¡}d}z| d¡Wn.ty`}z|jd}WYd}~nd}~00| d¡| |d¡dS)Nr=)r<rØrzStopIteration was expected) r8r)rr Úsendrir6Zfailr`)rr[Úfirr²rrr Útest_future_stop_iteration_args*s   z/BaseFutureTests.test_future_stop_iteration_argscCs\|j|jd}t|ƒ}| t|jttdƒd¡| t|jtdƒtdƒ¡| t|jt¡dS)Nr=Zelephanté )r8r)rYrKrLÚthrowrTrÅ)rr[rÛrrr Útest_future_iter_throw7s  ÿ  ÿz&BaseFutureTests.test_future_iter_throwcCs:Gdd„dƒ}tdƒD]}|j|jd}| |ƒ¡qdS)Nc@seZdZdd„ZdS)z5BaseFutureTests.test_future_del_collect..EvilcSs t ¡dSr)ÚgcZcollectrrrr Ú__del__Bsz=BaseFutureTests.test_future_del_collect..Evil.__del__N)r!r"r#rárrrr ÚEvilAsrâédr=)r‡r8r)r)rrâr‹r[rrr Útest_future_del_collect@s z'BaseFutureTests.test_future_del_collect),r!r"r#r8r'rBrErIrMr\rcrdrergrkrmrurŒrr“r–rr¹r›rœrržr¢r£r¤r0r¸r»r½r¾rÁrÔrÖr×rÙrÜrßrär2rrr+r r3fs\ 4    E               r3Ú_CFuturezrequires the C _asyncio modulec@s6eZdZz ejZWney(dZYn0dd„ZdS)Ú CFutureTestsNcCsn|j|jd}| t¡|`Wdƒn1s20Y| t¡|`Wdƒn1s`0YdSrC)r8r)rKrSrr•rZrrr Útest_future_del_segfaultRs  " z%CFutureTests.test_future_del_segfault)r!r"r#rrår4rSrçrrrr ræJs    ræc@s>eZdZzGdd„dejƒZeZWney8dZYn0dS)ÚCSubFutureTestsc@s eZdZdS)zCSubFutureTests.CSubFutureN©r!r"r#rrrr Ú CSubFuture^srêN)r!r"r#rrårêr4rSrrrr rèZs  rèc@seZdZejZdS)Ú PyFutureTestsN)r!r"r#rÚ _PyFuturer4rrrr rëfsrëcs|eZdZ‡fdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Z‡ZS)ÚBaseFutureDoneCallbackTestscstƒ ¡| ¡|_dSr)r&r'r(r)rr+rr r'ls z!BaseFutureDoneCallbackTests.setUpcCst |j¡dSr)r{r r)rrrr r psz'BaseFutureDoneCallbackTests.run_brieflycs‡‡fdd„}|S)Ncsˆ ˆ¡dSr)Úappend)rÇ©ÚbagÚthingrr Ú bag_appenderusz@BaseFutureDoneCallbackTests._make_callback..bag_appenderr)rrðrñròrrïr Ú_make_callbackssz*BaseFutureDoneCallbackTests._make_callbackcCst‚dSr©ÚNotImplementedErrorrrrr r8ysz'BaseFutureDoneCallbackTests._new_futurecCs¤g}| ¡}| |d¡}| |d¡}| |d¡}| |¡| |¡| |¡| |¡| |¡| |g¡| d¡| ¡| |ddg¡| | ¡d¡dS©NrJérãÚfoo©r8rórUrVr`rr r©rrðr Úcb1Úcb2Úcb3rrr Ú$test_callbacks_remove_first_callback|s          z@BaseFutureDoneCallbackTests.test_callbacks_remove_first_callbackcCs¬g}| ¡}| |d¡}| |d¡}| |d¡}| |¡| |¡| |¡| |¡| |¡| |¡| |g¡| d¡| ¡| |dg¡| | ¡d¡dSrörùrúrrr Ú/test_callbacks_remove_first_and_second_callback“s            zKBaseFutureDoneCallbackTests.test_callbacks_remove_first_and_second_callbackcCs¤g}| ¡}| |d¡}| |d¡}| |d¡}| |¡| |¡| |¡| |¡| |¡| |g¡| d¡| ¡| |ddg¡| | ¡d¡dSrörùrúrrr Ú$test_callbacks_remove_third_callback«s          z@BaseFutureDoneCallbackTests.test_callbacks_remove_third_callbackcCsrg}| ¡}| | |d¡¡| | |d¡¡| |g¡| d¡| ¡| |ddg¡| | ¡d¡dS)NrJr÷rø)r8rUrór`rr r)rrðr rrr Ú$test_callbacks_invoked_on_set_resultÂs  z@BaseFutureDoneCallbackTests.test_callbacks_invoked_on_set_resultcCsdg}| ¡}| | |d¡¡| |g¡tƒ}| |¡| ¡| |dg¡| | ¡|¡dS)Nrã)r8rUrór`rRrr r)rrðr rjrrr Ú'test_callbacks_invoked_on_set_exceptionÐs  zCBaseFutureDoneCallbackTests.test_callbacks_invoked_on_set_exceptioncCsÜg}| ¡}| |d¡}| |d¡}| |d¡}| |¡| |¡| | |¡d¡| | |¡d¡| |¡tdƒD]}| |¡qz| | |¡d¡| |g¡| d¡| ¡| |dg¡| | ¡d¡dS)Nr<rØrÀréérø) r8rórUr`rVr‡rr r)rrðr rûrürýr‹rrr Útest_remove_done_callbackÞs$          z5BaseFutureDoneCallbackTests.test_remove_done_callbackcsL| ¡‰ˆ t¡tdƒD]}ˆ t¡qG‡fdd„dƒ}ˆ |ƒ¡dS)Né?cseZdZ‡fdd„ZdS)zRBaseFutureDoneCallbackTests.test_remove_done_callbacks_list_mutation..evilcsˆ t¡dSr9)rVÚid©rÚotherrrr Ú__eq__ s zYBaseFutureDoneCallbackTests.test_remove_done_callbacks_list_mutation..evil.__eq__N©r!r"r#r rrrr Úevilsr ©r8rUÚstrr‡rrV©rÚ_r rrr Ú(test_remove_done_callbacks_list_mutationÿs    zDBaseFutureDoneCallbackTests.test_remove_done_callbacks_list_mutationcCsHdd„}| ¡}| |¡| t¡| t¡| d¡t |j¡dS)NcSs| t¡dSr)rVrr rrr ÚmutszPBaseFutureDoneCallbackTests.test_schedule_callbacks_list_mutation_1..mutr<)r8rUrrr{r r))rrr[rrr Ú'test_schedule_callbacks_list_mutation_1s    zCBaseFutureDoneCallbackTests.test_schedule_callbacks_list_mutation_1csX| ¡‰ˆ t¡tdƒD]}ˆ t¡qd‰d‰G‡‡‡fdd„dƒ}ˆ |ƒ¡dS)NrrãrcseZdZ‡‡‡fdd„ZdS)zQBaseFutureDoneCallbackTests.test_schedule_callbacks_list_mutation_2..evilcsˆd7‰ˆˆkrˆ t¡dS)Nr<F)rUrr©Z extra_cbsr[Z max_extra_cbsrr r )s zXBaseFutureDoneCallbackTests.test_schedule_callbacks_list_mutation_2..evil.__eq__Nr rrrr r (sr r rrrr Ú'test_schedule_callbacks_list_mutation_2s   zCBaseFutureDoneCallbackTests.test_schedule_callbacks_list_mutation_2)r!r"r#r'r rór8rþrÿrrrrrrrr2rrr+r ríjs ! ríc@seZdZdd„ZdS)ÚCFutureDoneCallbackTestscCstj|jdSrC©rrår)rrrr r88sz$CFutureDoneCallbackTests._new_futureN©r!r"r#r8rrrr r3src@seZdZdd„ZdS)ÚCSubFutureDoneCallbackTestscCsGdd„dtjƒ}||jdS)Nc@s eZdZdS)z;CSubFutureDoneCallbackTests._new_future..CSubFutureNrérrrr rêBsrêr=r)rrêrrr r8Asz'CSubFutureDoneCallbackTests._new_futureNrrrrr r<src@seZdZdd„ZdS)ÚPyFutureDoneCallbackTestscCstj|jdSrC)rrìr)rrrr r8Jsz%PyFutureDoneCallbackTests._new_futureNrrrrr rGsrcs,eZdZdd„Z‡fdd„Zdd„Z‡ZS)ÚBaseFutureInheritanceTestscCst‚dSrrôrrrr Ú_get_future_clsPsz*BaseFutureInheritanceTests._get_future_clscs&tƒ ¡| ¡|_| |jj¡dSrr%rr+rr r'Ss  z BaseFutureInheritanceTests.setUpcCs\| ¡}Gdd„d|ƒ}||jd}| td¡| ¡Wdƒn1sN0YdS)Nc@seZdZdd„ZdS)zQBaseFutureInheritanceTests.test_inherit_without_calling_super_init..MyFutc_sdSrrr5rrr r:]szZBaseFutureInheritanceTests.test_inherit_without_calling_super_init..MyFut.__init__N)r!r"r#r:rrrr ÚMyFut\srr=z!Future object is not initialized.)rr)rhrRrH)rr4rr[rrr Ú'test_inherit_without_calling_super_initXs þzBBaseFutureInheritanceTests.test_inherit_without_calling_super_init)r!r"r#rr'rr2rrr+r rNs rc@seZdZdd„ZdS)ÚPyFutureInheritanceTestscCstjSr)rrìrrrr rksz(PyFutureInheritanceTests._get_future_clsN©r!r"r#rrrrr risrc@seZdZdd„ZdS)ÚCFutureInheritanceTestscCstjSr)rrårrrr rqsz'CFutureInheritanceTests._get_future_clsNr rrrr r!osr!Ú__main__)&Ú__doc__Úconcurrent.futuresr®ràr|rÂr¦ZunittestrrrZtest.test_asynciorr{r’rr r rrrZTestCaser$r3Z skipUnlessr_rærèrërírrrrrr!r!Úmainrrrr Úsp    3g ÿ ÿ J ÿ ÿ ÿ ÿ ÿ ÿ ÿ