a d1X @sxdZddlZddlZddlZddlZddlZdZdZdZdZ dZ dZ d Z d Z d Ze e e e egZe d e d e de dediZedZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdd d eZGd!d"d"eZd#d$Zd%d&Zd3d'd(Z e!d)d*Z"defd+d,Z#Gd-d.d.eZ$Gd/d0d0eZ%Gd1d2d2e&Z'dS)4z"Brian Quinlan (brian@sweetapp.com)NFIRST_COMPLETEDFIRST_EXCEPTION ALL_COMPLETED _AS_COMPLETEDPENDINGRUNNING CANCELLEDCANCELLED_AND_NOTIFIEDFINISHEDpendingrunning cancelledfinishedzconcurrent.futuresc@s eZdZdS)ErrorN__name__ __module__ __qualname__rr=/opt/alt/python39/lib64/python3.9/concurrent/futures/_base.pyr-src@s eZdZdS)CancelledErrorNrrrrrr1src@s eZdZdS) TimeoutErrorNrrrrrr5src@s eZdZdS)InvalidStateErrorNrrrrrr9src@s,eZdZddZddZddZddZd S) _WaitercCst|_g|_dSN) threadingZEventeventfinished_futuresselfrrr__init__?s z_Waiter.__init__cCs|j|dSrrappendrfuturerrr add_resultCsz_Waiter.add_resultcCs|j|dSrr!r#rrr add_exceptionFsz_Waiter.add_exceptioncCs|j|dSrr!r#rrr add_cancelledIsz_Waiter.add_cancelledN)rrrr r%r&r'rrrrr=srcs@eZdZfddZfddZfddZfddZZS) _AsCompletedWaitercstt|t|_dSr)superr(r rLocklockr __class__rrr Osz_AsCompletedWaiter.__init__csD|j*tt|||jWdn1s60YdSr)r+r)r(r%rsetr#r,rrr%Ssz_AsCompletedWaiter.add_resultcsD|j*tt|||jWdn1s60YdSr)r+r)r(r&rr.r#r,rrr&Xsz _AsCompletedWaiter.add_exceptioncsD|j*tt|||jWdn1s60YdSr)r+r)r(r'rr.r#r,rrr']sz _AsCompletedWaiter.add_cancelled)rrrr r%r&r' __classcell__rrr,rr(Ls   r(cs4eZdZfddZfddZfddZZS)_FirstCompletedWaitercst||jdSr)r)r%rr.r#r,rrr%es z _FirstCompletedWaiter.add_resultcst||jdSr)r)r&rr.r#r,rrr&is z#_FirstCompletedWaiter.add_exceptioncst||jdSr)r)r'rr.r#r,rrr'ms z#_FirstCompletedWaiter.add_cancelled)rrrr%r&r'r/rrr,rr0bs  r0csHeZdZfddZddZfddZfddZfd d ZZS) _AllCompletedWaitercs$||_||_t|_tdSr)num_pending_callsstop_on_exceptionrr*r+r)r )rr2r3r,rrr ts z_AllCompletedWaiter.__init__cCsH|j.|jd8_|js&|jWdn1s:0YdS)N)r+r2rr.rrrr_decrement_pending_callszsz,_AllCompletedWaiter._decrement_pending_callscst||dSr)r)r%r5r#r,rrr%s z_AllCompletedWaiter.add_resultcs*t||jr|jn|dSr)r)r&r3rr.r5r#r,rrr&s  z!_AllCompletedWaiter.add_exceptioncst||dSr)r)r'r5r#r,rrr's z!_AllCompletedWaiter.add_cancelled) rrrr r5r%r&r'r/rrr,rr1qs    r1c@s$eZdZddZddZddZdS)_AcquireFuturescCst|td|_dS)N)key)sortedidfutures)rr:rrrr sz_AcquireFutures.__init__cCs|jD]}|jqdSr)r: _conditionacquirer#rrr __enter__s z_AcquireFutures.__enter__cGs|jD]}|jqdSr)r:r;release)rargsr$rrr__exit__s z_AcquireFutures.__exit__N)rrrr r=r@rrrrr6sr6cCs|tkrt}nZ|tkr t}nJtdd|D}|tkrHt|dd}n"|tkr^t|dd}n td||D]}|j |qn|S)Ncss|]}|jttfvVqdSr_stater r .0frrr sz._create_and_install_waiters..T)r3FzInvalid return condition: %r) rr(rr0sumrr1r ValueError_waitersr")fs return_whenwaiterZ pending_countrErrr_create_and_install_waiterss rMccsd|r`|d}|D]}||q|j|j|Wdn1sH0Y~|VqdS)N)remover;rIpop)rJrL ref_collectrEZ futures_setrrr_yield_finished_futuress  *rRc cs|dur|t}t|}t|}t|4tdd|D}||}t|t}Wdn1sf0Yt|}zt|||fdEdH|r:|durd}n(|t}|dkrt dt||f|j ||j &|j }g|_ |j Wdn1s0Y|t||||fdEdHqW|D]:}|j|j|Wdn1sn0Yq@nB|D]:}|j|j|Wdn1s0Yq0dS)Ncss |]}|jttfvr|VqdSrrArCrrrrFszas_completed..)rQrz%d (of %d) futures unfinished)time monotonicr.lenr6rMrlistrRrrwaitr+rclearreverser;rIrO) rJtimeoutend_timeZ total_futuresrr rLZ wait_timeoutrErrr as_completedsP  (   *2r\DoneAndNotDoneFuturesz done not_donec Cs6t|}t|dd|D}||}|tkrL|rLt||WdS|tkr|rtdd|Drt||WdSt|t|krt||WdSt||}Wdn1s0Y|j ||D]8}|j |j |Wdq1s0Yq| |jt|||S)NcSsh|]}|jttfvr|qSrrArCrrr $szwait..css&|]}|s|dur|VqdSr)r exceptionrCrrrrF*szwait..)r.r6rr]ranyrUrMrrWr;rIrOupdater)rJrZrKdoneZnot_donerLrErrrrW s$   ( . rWc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ dddZ dddZ ddZddZddZeejZdS) FuturecCs,t|_t|_d|_d|_g|_g|_dSr) rZ Conditionr;rrB_result _exceptionrI_done_callbacksrrrrr >s  zFuture.__init__c Cs<|jD]0}z ||Wqty4td|Yq0qdSNz!exception calling callback for %r)rf ExceptionLOGGERr_)rcallbackrrr_invoke_callbacksGs    zFuture._invoke_callbackscCs|j|jtkr||jrJd|jjt|t|j|jjjfWdSd|jjt|t|j|jjjfWdSd|jjt|t|jfWdS1s0YdS)Nz<%s at %#x state=%s raised %s>z <%s at %#x state=%s returned %s>z<%s at %#x state=%s>) r;rBr rer-rr9_STATE_TO_DESCRIPTION_MAPrdrrrr__repr__Ns( zFuture.__repr__cCs~|j\|jttfvr&WddS|jttfvrDWddSt|_|jWdn1sh0Y|dS)NFT)r;rBrr rr notify_allrkrrrrcancelbs(z Future.cancelcCs8|j|jttfvWdS1s*0YdSr)r;rBrr rrrrr uszFuture.cancelledcCs4|j|jtkWdS1s&0YdSr)r;rBrrrrrr zszFuture.runningcCs:|j |jtttfvWdS1s,0YdSr)r;rBrr r rrrrrbsz Future.donecCs(|jrz|jWd}q$d}0n|jSdSr)rerdrrrrZ __get_results zFuture.__get_resultcCs|j<|jtttfvr4|j|WddSWdn1sH0Yz ||Wnty|t d|Yn0dSrg) r;rBrr r rfr"rhrir_)rfnrrradd_done_callbacks  .  zFuture.add_done_callbackNcCsz|j|jttfvr tn&|jtkrF|WdWd}S|j||jttfvrhtn,|jtkr|WdWd}StWdn1s0YWd}nd}0dSr) r;rBrr rr _Future__get_resultrWrrrZrrrresults"    &z Future.resultcCs|j|jttfvrtn|jtkr<|jWdS|j||jttfvr^tn$|jtkr||jWdStWdn1s0YdSr) r;rBrr rr rerWrrsrrrr_s   zFuture.exceptioncCs|j|jtkr>t|_|jD]}||qWddS|jtkr^t|_WddSt dt ||jt dWdn1s0YdS)NFTz!Future %s in unexpected state: %szFuture in unexpected state) r;rBrr rIr'rrriZcriticalr9 RuntimeError)rrLrrrset_running_or_notify_cancels    z#Future.set_running_or_notify_cancelcCs|j^|jttthvr*td|j|||_t|_|jD]}| |q<|j Wdn1sj0Y| dSNz{}: {!r}) r;rBrr r rformatrdrIr%rnrk)rrtrLrrr set_results  (zFuture.set_resultcCs|j^|jttthvr*td|j|||_t|_|jD]}| |q<|j Wdn1sj0Y| dSrw) r;rBrr r rrxrerIr&rnrk)rr_rLrrr set_exceptions  (zFuture.set_exception)N)N)rrrr rkrmror r rbrrrqrtr_rvryrz classmethodtypes GenericAlias__class_getitem__rrrrrc;s   # "(rcc@sDeZdZddZdddddZdd d d d Zd dZddZdS)ExecutorcOs tdSr)NotImplementedError)rrpr?kwargsrrrsubmit2s zExecutor.submitNr4)rZ chunksizecsBdurtfddt|Dfdd}|S)Ncsg|]}jg|RqSr)r)rDr?)rprrr Vz Executor.map..c 3snzTr@dur&Vq tVq WD] }|qFnD] }|qZ0dSr)rYrPrtrSrTro)r$)r[rJrZrrresult_iteratorZs z%Executor.map..result_iterator)rSrTzip)rrprZr iterablesrr)r[rprJrrZrmap=s   z Executor.mapTF)cancel_futurescCsdSrr)rrWrrrrshutdowniszExecutor.shutdowncCs|Srrrrrrr=yszExecutor.__enter__cCs|jdddS)NT)rWF)r)rexc_typeZexc_valZexc_tbrrrr@|s zExecutor.__exit__)T)rrrrrrr=r@rrrrr/s  ,rc@s eZdZdS)BrokenExecutorNrrrrrrsr)N)( __author__ collectionsZloggingrrSr|rrrrrrrr r Z_FUTURE_STATESrlZ getLoggerrirhrrrrobjectrr(r0r1r6rMrRr\ namedtupler]rWrcrrurrrrrs^   >2uR