a  zehm@sdZddlZddlZddlZddlZddlZddlZddlmZddl Z ddl m Z ddl m Z ddlmZddZd d Zd d Zd dZGdddZGddde jZGdddZeee ddGdddee jZeee ddGdddee jZGdddee jZGdddZeee ddGdd d ee jZeee ddGd!d"d"ee jZGd#d$d$ee jZ Gd%d&d&Z!Gd'd(d(e!e jZ"eee ddGd)d*d*e!e jZ#e$d+kre%dS),zTests for futures.py.N)mock)futures)utils)supportcCstddSN)asyncioZset_event_loop_policyrrR/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_asyncio/test_futures.pytearDownModulesr cCs|Srrfrrr _fakefuncsr cCsdSrrrrrr first_cbsrcCsdSrrrrrr last_cbsrc@s\eZdZdZdZdZdZddZddZddZ d d Z d d Z d dZ ddZ ddZdS) DuckFutureFNcCs|r dSd|_dS)NFT)done_DuckFuture__cancelledselfrrr 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|jSrrrrrr exception>szDuckFuture.exceptioncCs ||_dSr)r)rrrrr set_resultBszDuckFuture.set_resultcCs ||_dSrr)rrrrr set_exceptionGszDuckFuture.set_exceptionccs|sd|_|V|SNT)r_asyncio_future_blockingrrrrr __iter__LszDuckFuture.__iter__)__name__ __module__ __qualname__rrrrrrrrrrrr rrrr r!srcs,eZdZfddZddZddZZS) DuckTestscs&t||_||jjdSrsupersetUp new_test_looploopZ addCleanupcloser __class__rr r'Vs  zDuckTests.setUpcCst}t|}dSr)rr wrap_futurerr 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$cseZdZddZfddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zed%d&d'Zed%d(d)Zed%d*d+Zed%d,d-Zed%d.d/Zed%d0d1Zed%d2d3Zd4d5Zd6d7Zd8d9Z d:d;Z!dd?Z#ed%d@dAZ$dBdCZ%dDdEZ&dFdGZ'dHdIZ(dJdKZ)dLdMZ*Z+S)NBaseFutureTestscOs|j|i|Sr)clsrargskwargsrrr _new_futurehszBaseFutureTests._new_futurecs&t||_||jjdSrr%rr+rr r'ks  zBaseFutureTests.setUpcCsGddd}|t||t||td|tt|j|jd}|t||tt||ttt|| dS)Nc@seZdZdZddZdS)z/BaseFutureTests.test_isfuture..MyFutureNcSs d|_dSNF)rrrrr __init__tsz8BaseFutureTests.test_isfuture..MyFuture.__init__)r!r"r#rr:rrrr MyFutureqsr;r)) assertFalserisfuture assertTruerZMockr8r)typer)rr;r rrr test_isfuturepszBaseFutureTests.test_isfuturecCsD|j|jd}|||||||dSNr=)r8r)r>rrrr@rr rrr test_initial_states z"BaseFutureTests.test_initial_statecCs:t|j|}||j|j|||jdSr)rZset_event_loopr)r8assertIs_loopget_looprDrrr "test_init_constructor_default_loops z2BaseFutureTests.test_init_constructor_default_loopcCs|t|jddS)N*) assertRaises TypeErrorr8rrrr test_constructor_positionalsz+BaseFutureTests.test_constructor_positionalc Cs|jj|j|jd}|tj|j|jj|j|jd}|tj|j|jj|j|jd}|tt f| dWdn1s0Y|jj|j|jd}|tt f| t Wdn1s0Y|jj|j|jd}|tt f| Wdn1s"0Y|jj|j|jd}|tt f|ddWdn1st0Y|jj|j|jd}|tt f|ddWdn1s0Y|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 rNrO)r4__new__r)rKrInvalidStateErrorrr RuntimeErrorAttributeErrorrr Exceptionradd_done_callbackremove_done_callbackrepr __await__iterr>rrrfutrrr test_uninitializedsJ(((..   z"BaseFutureTests.test_uninitializedcCs|j|jd}|t|d||jd|d|tj |j |Wdn1sd0Y||jddS)Nr=_cancel_message my message) r8r)r@hasattr assertEqualr]rrKrCancelledErrorrun_until_completerDrrr !test_future_cancel_message_getters *z1BaseFutureTests.test_future_cancel_message_gettercCsv|j|jd}|dd|_||jd|tj|j|Wdn1sZ0Y||jddS)Nr=r^zmy new message) r8r)rr]r`rKrrarbrDrrr !test_future_cancel_message_setters *z1BaseFutureTests.test_future_cancel_message_settercCs|j|jd}|||||||tj|j |tj|j |tj |j d|tj |j d||dSrC)r8r)r@rrrrKrrarrrQrrr>rDrrr test_cancelszBaseFutureTests.test_cancelcCs|j|jd}|tj|j|d||| | | |d| | d|tj|jd|tj|j d||dSNr=rJ)r8r)rKrrQrrr>rr@rr`rrrrDrrr test_results zBaseFutureTests.test_resultcCst}|j|jd}|tj|j|td|j t | || | | ||t|j||||tj|jd|tj|j d| |dS)Nr=z!StopIteration .* cannot be raised)rRr8r)rKrrQrassertRaisesRegexrLr StopIterationr>rr@rrr`rr)rexcr rrr test_exceptions zBaseFutureTests.test_exceptioncCs,|j|jd}|t||tdSrC)r8r)rrRassertIsInstancerrDrrr test_exception_class s z$BaseFutureTests.test_exception_classcsn|j|jdfdd}|}|t|d|t|d|t|d|t|ddS)Nr=c3s2dVEdH}d|fVEdH}d|fVdS)NABCr)xyr 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|jd|j|jd}|jd}|t|d|jjd|dd|dd ||jd |j|jd}|t|d|jjd ||j|jd}||t|d|jjd |j|jd}| d |t|d|jjd|| d t }|j|jd}| ||t|d|jjd| ||dd}|j|jd} | t|t} |t| d|jjd| | |t| d|jjd |j|jd} | t| t|t} |t} |t| d|jjd| | f|j|jd}|ttdD]}|tq<|td| | f}|t|d|jjd|||t|d|jjd 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#reescape)funcfilenamelinenotextrrr 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 assertRegexrrrange)rZf_pending_debugframeZ f_pending f_cancelledZf_resultrj f_exceptionrZf_one_callbacksZ fake_reprZf_two_callbacksZ first_reprZ last_reprZf_many_callbacksiZcb_regexrrr test_future_repr"s  "              z BaseFutureTests.test_future_reprcCsddlm}|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 ZnewfrZnewf_exceptionrZnewf_cancelledrrr test_copy_stategs$      zBaseFutureTests.test_copy_statecsd|j|jdfddfdd}|td|Wdn1sN0YdS)Nr=c3sEdHdSrrrr[rr corosz'BaseFutureTests.test_iter..corocs\}}dSrr)Zarg1Zarg2)rrr testsz'BaseFutureTests.test_iter..testzawait wasn't used)r8r)rhrRr)rrr)rr[r test_iters   $zBaseFutureTests.test_itercCsD|j|jd}|tdd|_Wdn1s60YdS)Nr=zcan only be set to FalseT)r8r)rh ValueError_log_tracebackrZrrr test_log_tracebacksz"BaseFutureTests.test_log_tracebackzasyncio.base_events.loggercCs"|j|jd}~||jjdSrC)r8r)r>errorcalledrm_logr[rrr test_tb_logger_abandonedsz(BaseFutureTests.test_tb_logger_abandonedcCs6|j|jd}|t|~||jjdSrC)r8r)rrTrr>rrrrrr &test_tb_logger_not_called_after_cancels  z6BaseFutureTests.test_tb_logger_not_called_after_cancelcCs,|j|jd}|d~||jjdSrf)r8r)rr>rrrrrr !test_tb_logger_result_unretrieveds z1BaseFutureTests.test_tb_logger_result_unretrievedcCs4|j|jd}|d|~||jjdSrf)r8r)rrr>rrrrrr test_tb_logger_result_retrieveds  z/BaseFutureTests.test_tb_logger_result_retrievedcCsD|j|jd}|td~t|jt||j j dSNr=Zboom) r8r)rrRr{ run_brieflyr gc_collectr@rrrrrr $test_tb_logger_exception_unretrieveds  z4BaseFutureTests.test_tb_logger_exception_unretrievedcCs8|j|jd}|td|~||jjdSr)r8r)rrRrr>rrrrrr "test_tb_logger_exception_retrieveds z2BaseFutureTests.test_tb_logger_exception_retrievedcCs>|j|jd}|td|t|j~||jjdSr) r8r)rrRrKrr>rrrrrr )test_tb_logger_exception_result_retrieveds z9BaseFutureTests.test_tb_logger_exception_result_retrievedcCs|dd}tjd}||d}tj||jd}|j|\}}|t || |d| |t |jdddS)NcSs |tfSr threading get_identargrrr runsz-BaseFutureTests.test_wrap_future..runr<oir=Twait) concurrentrThreadPoolExecutorsubmitrr-r)rbr@r?r`ZassertNotEqualrrshutdown)rrexf1f2residentrrr r0s   z BaseFutureTests.test_wrap_futurecCs(|j|jd}t|}|||dSrC)r8r)rr-rFrrrrrr test_wrap_future_futures z'BaseFutureTests.test_wrap_future_futurecstdd}fdd|_dd}tjd}||d}t|} j |j |j dd Wdn1st0YdS) Nzasyncio.futures.eventscsjSrr=rrrr rNrOzBBaseFutureTests.test_wrap_future_use_global_loop..cSs |tfSrrrrrr rsz=BaseFutureTests.test_wrap_future_use_global_loop..runr<rTr) rpatchZget_event_looprrrrrr-rFr)rGr)reventsrrrrrrr test_wrap_future_use_global_loops    z0BaseFutureTests.test_wrap_future_use_global_loopcCsNtj}tj||jd}|t|j| | | | dSrC) rrFuturerr-r)rr{rr@rrrrr test_wrap_future_cancels   z'BaseFutureTests.test_wrap_future_cancelcCshtj}tj||jd}|d|t |j| | | | d|| dSrf)rrrrr-r)rrr{rr>rr`rr@rrrr test_wrap_future_cancel2s   z(BaseFutureTests.test_wrap_future_cancel2cCsZ|jd|j|jd}tjd}||jt| |jdddt |dfdS)NTr=r<test_future_source_traceback) r)rr8sys _getframef_linenorlrlistr`__file__)rfuturerrrr rs z,BaseFutureTests.test_future_source_tracebackc Cs|j|dd}|}|j|jd}||d}t|jttj dkrd|j j d}t |||j f}|jjtj|dnd}|jjtjd d|jjd d }||t|tjdS) Nc Ss8z tWn(ty2}z|WYd}~Sd}~00dSr) MemoryError BaseException)rjrrr memory_errors zLBaseFutureTests.check_future_exception_never_retrieved..memory_errorr=)rrz^z exception was never retrieved )exc_infoz,^Future/Task exception was never retrieved\nFr)r)rr8rr{rrrr version_infor4r!rA __traceback__rZassert_called_once_withrANYZ call_argsrr|compileDOTALL) rdebugrrrjrZregexrmessagerrr &check_future_exception_never_retrieveds     z6BaseFutureTests.check_future_exception_never_retrievedcCs|ddSr9rrrrr %test_future_exception_never_retrievedsz5BaseFutureTests.test_future_exception_never_retrievedcCs|ddSrrrrrr +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|dWn.ty`}z|jd}WYd}~nd}~00|d||ddS)Nr=)r<rrzStopIteration was expected) r8r)rr sendrir6Zfailr`)rr[firrrrr test_future_stop_iteration_args*s   z/BaseFutureTests.test_future_stop_iteration_argscCs\|j|jd}t|}|t|jttdd|t|jtdtd|t|jtdS)Nr=Zelephant )r8r)rYrKrLthrowrTr)rr[rrrr test_future_iter_throw7s    z&BaseFutureTests.test_future_iter_throwcCs:Gddd}tdD]}|j|jd}||qdS)Nc@seZdZddZdS)z5BaseFutureTests.test_future_del_collect..EvilcSs tdSr)gcZcollectrrrr __del__Bsz=BaseFutureTests.test_future_del_collect..Evil.__del__N)r!r"r#rrrrr EvilAsrdr=)rr8r)r)rrrr[rrr test_future_del_collect@s z'BaseFutureTests.test_future_del_collect),r!r"r#r8r'rBrErIrMr\rcrdrergrkrmrurrrrrrrrrrrrrr0rrrrrrrrrrrrr2rrr+r r3fs\ 4    E               r3_CFuturezrequires the C _asyncio modulec@s6eZdZz ejZWney(dZYn0ddZdS) CFutureTestsNcCsn|j|jd}|t|`Wdn1s20Y|t|`Wdn1s`0YdSrC)r8r)rKrSrrrZrrr test_future_del_segfaultRs  " z%CFutureTests.test_future_del_segfault)r!r"r#rrr4rSrrrrr rJs    rc@s>eZdZzGdddejZeZWney8dZYn0dS)CSubFutureTestsc@s eZdZdS)zCSubFutureTests.CSubFutureNr!r"r#rrrr CSubFuture^srN)r!r"r#rrrr4rSrrrr rZs  rc@seZdZejZdS) PyFutureTestsN)r!r"r#r _PyFuturer4rrrr rfsrcs|eZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZZS)BaseFutureDoneCallbackTestscst||_dSr)r&r'r(r)rr+rr r'ls z!BaseFutureDoneCallbackTests.setUpcCst|jdSr)r{rr)rrrr rpsz'BaseFutureDoneCallbackTests.run_brieflycsfdd}|S)NcsdSr)append)rbagthingrr bag_appenderusz@BaseFutureDoneCallbackTests._make_callback..bag_appenderr)rrrrrrr _make_callbackssz*BaseFutureDoneCallbackTests._make_callbackcCstdSrNotImplementedErrorrrrr r8ysz'BaseFutureDoneCallbackTests._new_futurecCsg}|}||d}||d}||d}||||||||||||g|d|||ddg||ddSNrJrfoor8rrUrVr`rrrrrr cb1cb2cb3rrr $test_callbacks_remove_first_callback|s          z@BaseFutureDoneCallbackTests.test_callbacks_remove_first_callbackcCsg}|}||d}||d}||d}||||||||||||||g|d|||dg||ddSrrrrrr /test_callbacks_remove_first_and_second_callbacks            zKBaseFutureDoneCallbackTests.test_callbacks_remove_first_and_second_callbackcCsg}|}||d}||d}||d}||||||||||||g|d|||ddg||ddSrrrrrr $test_callbacks_remove_third_callbacks          z@BaseFutureDoneCallbackTests.test_callbacks_remove_third_callbackcCsrg}|}|||d|||d||g|d|||ddg||ddS)NrJrr)r8rUrr`rrr)rrr rrr $test_callbacks_invoked_on_set_results  z@BaseFutureDoneCallbackTests.test_callbacks_invoked_on_set_resultcCsdg}|}|||d||gt}|||||dg|||dS)Nr)r8rUrr`rRrrr)rrr rjrrr 'test_callbacks_invoked_on_set_exceptions  zCBaseFutureDoneCallbackTests.test_callbacks_invoked_on_set_exceptioncCsg}|}||d}||d}||d}|||||||d|||d||tdD]}||qz|||d||g|d|||dg||ddS)Nr<rrrr) r8rrUr`rVrrrr)rrr rrrrrrr test_remove_done_callbacks$          z5BaseFutureDoneCallbackTests.test_remove_done_callbackcsL|ttdD]}tqGfddd}|dS)N?cseZdZfddZdS)zRBaseFutureDoneCallbackTests.test_remove_done_callbacks_list_mutation..evilcstdSr9)rVidrotherrrr __eq__ s zYBaseFutureDoneCallbackTests.test_remove_done_callbacks_list_mutation..evil.__eq__Nr!r"r#r rrrr evilsr r8rUstrrrrVr_r rrr (test_remove_done_callbacks_list_mutations    zDBaseFutureDoneCallbackTests.test_remove_done_callbacks_list_mutationcCsHdd}|}|||t|t|dt|jdS)NcSs|tdSr)rVrr rrr mutszPBaseFutureDoneCallbackTests.test_schedule_callbacks_list_mutation_1..mutr<)r8rUrrr{rr))rrr[rrr 'test_schedule_callbacks_list_mutation_1s    zCBaseFutureDoneCallbackTests.test_schedule_callbacks_list_mutation_1csX|ttdD]}tqddGfddd}|dS)NrrrcseZdZfddZdS)zQBaseFutureDoneCallbackTests.test_schedule_callbacks_list_mutation_2..evilcsd7krtdS)Nr<F)rUrrZ 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'rrr8rrrrrrrrrr2rrr+r rjs ! rc@seZdZddZdS)CFutureDoneCallbackTestscCstj|jdSrCrrr)rrrr r88sz$CFutureDoneCallbackTests._new_futureNr!r"r#r8rrrr r3src@seZdZddZdS)CSubFutureDoneCallbackTestscCsGdddtj}||jdS)Nc@s eZdZdS)z;CSubFutureDoneCallbackTests._new_future..CSubFutureNrrrrr rBsrr=r)rrrrr r8Asz'CSubFutureDoneCallbackTests._new_futureNrrrrr r<src@seZdZddZdS)PyFutureDoneCallbackTestscCstj|jdSrC)rrr)rrrr r8Jsz%PyFutureDoneCallbackTests._new_futureNrrrrr rGsrcs,eZdZddZfddZddZZS)BaseFutureInheritanceTestscCstdSrrrrrr _get_future_clsPsz*BaseFutureInheritanceTests._get_future_clscs&t||_||jjdSrr%rr+rr r'Ss  z BaseFutureInheritanceTests.setUpcCs\|}Gddd|}||jd}|td|Wdn1sN0YdS)Nc@seZdZddZdS)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@seZdZddZdS)PyFutureInheritanceTestscCstjSr)rrrrrr rksz(PyFutureInheritanceTests._get_future_clsNr!r"r#rrrrr risrc@seZdZddZdS)CFutureInheritanceTestscCstjSr)rrrrrr rssz'CFutureInheritanceTests._get_future_clsNr rrrr r!osr!__main__)&__doc__concurrent.futuresrrr|rrZunittestrrrZtest.test_asynciorr{rrr r rrrZTestCaser$r3Z skipUnlessr_rrrrrrrrrr!r!mainrrrr sv    3g   J