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"| ¡r J‚|jdur|j‚|jSr)rrrrrrr Úresult8s  zDuckFuture.resultcCs| ¡r J‚|jSr)rrrrrr Ú exception>s zDuckFuture.exceptioncCs"| ¡r J‚|dusJ‚||_dSr)rr)rrrrr Ú set_resultBs  zDuckFuture.set_resultcCs"| ¡r J‚|dusJ‚||_dSr)rr)rrrrr Ú set_exceptionGs  zDuckFuture.set_exceptionccs(| ¡sd|_|V| ¡s J‚| ¡S©NT)rÚ_asyncio_future_blockingrrrrr Ú__iter__Ls  zDuckFuture.__iter__)Ú__name__Ú __module__Ú __qualname__rrrrrrrrrrrrrrrr 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.setUpcCs tƒ}t |¡}||usJ‚dSr)rrÚ wrap_future©rr Úgrrr Útest_wrap_future[s zDuckTests.test_wrap_futurecCs tƒ}t |¡}||usJ‚dSr)rrZ ensure_futurer-rrr Útest_ensure_future`s zDuckTests.test_ensure_future)r r!r"r&r/r0Ú __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"rr9rrrr ÚMyFutureqsr:é©r() Ú assertFalserÚisfutureÚ assertTruerZMockr7r(Útyper)rr:r rrr Ú test_isfuturepszBaseFutureTests.test_isfuturecCsD|j|jd}| | ¡¡| | ¡¡| ¡| | ¡¡dS©Nr<)r7r(r=rrrr?©rr rrr Útest_initial_state‡s z"BaseFutureTests.test_initial_statecCs:t |j¡| ¡}| |j|j¡| | ¡|j¡dSr)rZset_event_loopr(r7ÚassertIsÚ_loopÚget_looprCrrr Ú"test_init_constructor_default_loopŽs z2BaseFutureTests.test_init_constructor_default_loopcCs| t|jd¡dS)Né*)Ú assertRaisesÚ TypeErrorr7rrrr Ú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 rM´rN)r3Ú__new__r(rJrÚ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) r7r(r?ÚhasattrÚ assertEqualr\rrJrÚCancelledErrorÚrun_until_completerCrrr Ú!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) r7r(rr\r_rJrr`rarCrrr Ú!test_future_cancel_message_setterÖs *z1BaseFutureTests.test_future_cancel_message_settercCsŽ|j|jd}| | ¡¡| | ¡¡| | ¡¡| tj|j ¡| tj|j ¡| tj |j d¡| tj |j d¡| | ¡¡dSrB)r7r(r?rrrrJrr`rrrPrrr=rCrrr Ú test_cancelászBaseFutureTests.test_cancelcCsš|j|jd}| tj|j¡| d¡| | ¡¡|  |  ¡¡|  | ¡d¡|  |  ¡d¡| tj|jd¡| tj|j d¡| | ¡¡dS©Nr<rI)r7r(rJrrPrrr=rr?rr_rrrrCrrr Ú 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)rQr7r(rJrrPrÚassertRaisesRegexrKrÚ StopIterationr=rr?rrr_rr)rÚexcr rrr Útest_exceptionùsÿ zBaseFutureTests.test_exceptioncCs,|j|jd}| t¡| | ¡t¡dSrB)r7r(rrQÚassertIsInstancerrCrrr Ú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..fixturermrI)rnrI)rorI)r7r(r_Únextr)rrrr.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_debugr7Ú_source_tracebackr_rVr3r rrrrQrrErrTr Ú assertRegexrrÚrange)rZf_pending_debugÚframeZ f_pendingÚ f_cancelledZf_resultriÚ f_exceptionrZf_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.futuresrŒr7r(rr?rr_rrrQrJrr)rrŒr Znewfr‰Znewf_exceptionrˆZnewf_cancelledrrr Útest_copy_stategs$      zBaseFutureTests.test_copy_statecsd|j|jd‰‡fdd„‰‡fdd„}| td¡|ƒWdƒn1sN0Yˆ ¡dS)Nr<c3sˆEdHdSrrr©rZrr Úcoro„sz'BaseFutureTests.test_iter..corocsˆƒ\}}dSrr)Zarg1Zarg2)rrr Útest‡sz'BaseFutureTests.test_iter..testzawait wasn't used)r7r(rgrQr)rr‘r)rrZr Ú test_iters   $zBaseFutureTests.test_itercCsD|j|jd}| td¡d|_Wdƒn1s60YdS)Nr<zcan only be set to FalseT)r7r(rgÚ ValueErrorÚ_log_tracebackrYrrr Útest_log_tracebackŽsz"BaseFutureTests.test_log_tracebackzasyncio.base_events.loggercCs"|j|jd}~| |jj¡dSrB)r7r(r=ÚerrorÚcalled©rÚm_logrZrrr Útest_tb_logger_abandoned“sz(BaseFutureTests.test_tb_logger_abandonedcCs6|j|jd}| tƒ¡| ¡~| |jj¡dSrB)r7r(rrSrr=r–r—r˜rrr Ú&test_tb_logger_not_called_after_cancel™s  z6BaseFutureTests.test_tb_logger_not_called_after_cancelcCs,|j|jd}| d¡~| |jj¡dSre)r7r(rr=r–r—r˜rrr Ú!test_tb_logger_result_unretrieved¡s z1BaseFutureTests.test_tb_logger_result_unretrievedcCs4|j|jd}| d¡| ¡~| |jj¡dSre)r7r(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) r7r(rrQrzÚ 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ž)r7r(rrQrr=r–r—r˜rrr Ú"test_tb_logger_exception_retrieved¹s z2BaseFutureTests.test_tb_logger_exception_retrievedcCs>|j|jd}| tdƒ¡| t|j¡~| |jj¡dSrž) r7r(rrQrJrr=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(rar?r>r_ZassertNotEqualr¥r¦Úshutdown)rr©ÚexÚf1Úf2ÚresÚidentrrr r/És   z BaseFutureTests.test_wrap_futurecCs(|j|jd}t |¡}| ||¡dSrB)r7r(rr,rE©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 rMÝrNzBBaseFutureTests.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,rEr(rFr°)rÚeventsr©r±r²r³rrr Ú test_wrap_future_use_global_loopÛs    z0BaseFutureTests.test_wrap_future_use_global_loopcCsNtj ¡}tj||jd}| ¡t |j¡|  |  ¡¡|  |  ¡¡dSrB) r­rÚFuturerr,r(rrzrŸr?rr¶rrr Útest_wrap_future_cancelæs   z'BaseFutureTests.test_wrap_future_cancelcCshtj ¡}tj||jd}| d¡| ¡t  |j¡|  |  ¡¡|  |  ¡d¡| |  ¡¡dSre)r­rr»rr,r(rrrzrŸ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ƒr7ÚsysÚ _getframeÚf_linenorkr„Úlistr_Ú__file__)rÚfuturerrrr 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)rirrr Ú memory_errors zLBaseFutureTests.check_future_exception_never_retrieved..memory_errorr<)r¿ryú^z exception was never retrieved )Úexc_infoz,^Future/Task exception was never retrieved\nFr)r(rƒr7rrzrŸrr rÁÚ version_infor3r r@Ú __traceback__r–Zassert_called_once_withrÚANYZ call_argsr…r{ÚcompileÚDOTALL) rÚdebugr™rÉrirÆZregexrËÚmessagerrr Ú&check_future_exception_never_retrieveds     z6BaseFutureTests.check_future_exception_never_retrievedcCs| d¡dSr8©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<é)r7r(rrZ_set_result_unless_cancelledr?rrYrrr Ú 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) r7r(rrÚsendrhr5Zfailr_)rrZÚ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é )r7r(rXrJrKÚthrowrSrÄ)rrZrÚ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†r7r(r)rrárŠrZrrr Útest_future_del_collect@s z'BaseFutureTests.test_future_del_collect),r r!r"r7r&rArDrHrLr[rbrcrdrfrjrlrtr‹rŽr’r•rr¸ršr›rœrr¡r¢r£r/r·rºr¼r½rÀrÓrÕrÖrØrÛrÞrãr1rrr*r r2fs\ 4    E               r2Ú_CFuturezrequires the C _asyncio modulec@s6eZdZz ejZWney(dZYn0dd„ZdS)Ú CFutureTestsNcCsn|j|jd}| t¡|`Wdƒn1s20Y| t¡|`Wdƒn1s`0YdSrB)r7r(rJrRrr”rYrrr Útest_future_del_segfaultRs  " z%CFutureTests.test_future_del_segfault)r r!r"rrär3rRræ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ér3rRrrrr rçZs  rçc@seZdZejZdS)Ú PyFutureTestsN)r r!r"rÚ _PyFuturer3rrrr 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)rzrŸ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 r7ysz'BaseFutureDoneCallbackTests._new_futurecCs¤g}| ¡}| |d¡}| |d¡}| |d¡}| |¡| |¡| |¡| |¡| |¡| |g¡| d¡| ¡| |ddg¡| | ¡d¡dS©NrIérâÚfoo©r7ròrTrUr_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)NrIrör÷)r7rTrò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â)r7rTròr_rQrrŸr)rrïr rirrr Ú'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÷) r7ròrTr_rUr†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¡dSr8)rUÚid©rÚotherrrr Ú__eq__ s zYBaseFutureDoneCallbackTests.test_remove_done_callbacks_list_mutation..evil.__eq__N©r r!r"r rrrr Úevilsr ©r7rTÚstrr†rrU©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)rUr r rrr ÚmutszPBaseFutureDoneCallbackTests.test_schedule_callbacks_list_mutation_1..mutr;)r7rTr rrzrŸr()rrrZrrr Ú'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)rTrr©Z extra_cbsrZZ 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òr7rýrþrÿrrrrrrr1rrr*r rìjs ! rìc@seZdZdd„ZdS)ÚCFutureDoneCallbackTestscCstj|jdSrB©rrär(rrrr r78sz$CFutureDoneCallbackTests._new_futureN©r r!r"r7rrrr r3src@seZdZdd„ZdS)ÚCSubFutureDoneCallbackTestscCsGdd„dtjƒ}||jdS)Nc@s eZdZdS)z;CSubFutureDoneCallbackTests._new_future..CSubFutureNrèrrrr réBsrér<r)rrérrr r7Asz'CSubFutureDoneCallbackTests._new_futureNrrrrr r<src@seZdZdd„ZdS)ÚPyFutureDoneCallbackTestscCstj|jdSrB)rrër(rrrr r7Jsz%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_sdSrrr4rrr r9]szZBaseFutureInheritanceTests.test_inherit_without_calling_super_init..MyFut.__init__N)r r!r"r9rrrr ÚMyFut\srr<z!Future object is not initialized.)rr(rgrQrG)rr3rrZrrr Ú'test_inherit_without_calling_super_initXs þzBBaseFutureInheritanceTests.test_inherit_without_calling_super_init)r r!r"rr&rr1rrr*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_clsNrrrrr r osr Ú__main__)&Ú__doc__Úconcurrent.futuresr­rßr{rÁr¥ZunittestrrrZtest.test_asynciorrzr‘rr r rrrZTestCaser#r2Z skipUnlessr^rårçrêrìrrrrrr r Úmainrrrr Úsp    3g ÿ ÿ J ÿ ÿ ÿ ÿ ÿ ÿ ÿ