U e5dYã @spdZddlZddlZddlZddlZdZdZdZdZdZ dZ d Z d Z d Z e e e e e gZe d e d e de de diZe d¡ZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd „d eƒZGd!d"„d"eƒZd#d$„Zd%d&„Zd3d'd(„Ze  d)d*¡Z!defd+d,„Z"Gd-d.„d.eƒZ#Gd/d0„d0eƒZ$Gd1d2„d2e%ƒZ&dS)4z"Brian Quinlan (brian@sweetapp.com)éNÚFIRST_COMPLETEDÚFIRST_EXCEPTIONÚ ALL_COMPLETEDÚ _AS_COMPLETEDÚPENDINGÚRUNNINGÚ CANCELLEDÚCANCELLED_AND_NOTIFIEDÚFINISHEDÚpendingÚrunningÚ cancelledÚfinishedzconcurrent.futuresc@s eZdZdS)ÚErrorN©Ú__name__Ú __module__Ú __qualname__©rrú0/usr/lib64/python3.8/concurrent/futures/_base.pyr,src@s eZdZdS)ÚCancelledErrorNrrrrrr0src@s eZdZdS)Ú TimeoutErrorNrrrrrr4src@s eZdZdS)ÚInvalidStateErrorNrrrrrr8src@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) Ú_WaitercCst ¡|_g|_dS©N)Ú threadingZEventÚeventÚfinished_futures©ÚselfrrrÚ__init__>s z_Waiter.__init__cCs|j |¡dSr©rÚappend©rÚfuturerrrÚ add_resultBsz_Waiter.add_resultcCs|j |¡dSrr!r#rrrÚ add_exceptionEsz_Waiter.add_exceptioncCs|j |¡dSrr!r#rrrÚ add_cancelledHsz_Waiter.add_cancelledN)rrrr r%r&r'rrrrr<srcs@eZdZ‡fdd„Z‡fdd„Z‡fdd„Z‡fdd„Z‡ZS) Ú_AsCompletedWaitercstt|ƒ ¡t ¡|_dSr)Úsuperr(r rÚLockÚlockr©Ú __class__rrr Nsz_AsCompletedWaiter.__init__c s0|j� tt|ƒ |¡|j ¡W5QRXdSr)r+r)r(r%rÚsetr#r,rrr%Rsz_AsCompletedWaiter.add_resultc s0|j� tt|ƒ |¡|j ¡W5QRXdSr)r+r)r(r&rr.r#r,rrr&Wsz _AsCompletedWaiter.add_exceptionc s0|j� tt|ƒ |¡|j ¡W5QRXdSr)r+r)r(r'rr.r#r,rrr'\sz _AsCompletedWaiter.add_cancelled)rrrr r%r&r'Ú __classcell__rrr,rr(Ks   r(cs4eZdZ‡fdd„Z‡fdd„Z‡fdd„Z‡ZS)Ú_FirstCompletedWaitercstƒ |¡|j ¡dSr)r)r%rr.r#r,rrr%ds z _FirstCompletedWaiter.add_resultcstƒ |¡|j ¡dSr)r)r&rr.r#r,rrr&hs z#_FirstCompletedWaiter.add_exceptioncstƒ |¡|j ¡dSr)r)r'rr.r#r,rrr'ls z#_FirstCompletedWaiter.add_cancelled)rrrr%r&r'r/rrr,rr0as  r0csHeZdZ‡fdd„Zdd„Z‡fdd„Z‡fdd„Z‡fd d „Z‡ZS) Ú_AllCompletedWaitercs$||_||_t ¡|_tƒ ¡dSr)Únum_pending_callsÚstop_on_exceptionrr*r+r)r )rr2r3r,rrr ss z_AllCompletedWaiter.__init__c Cs4|j�$|jd8_|js&|j ¡W5QRXdS)Né)r+r2rr.rrrrÚ_decrement_pending_callsysz,_AllCompletedWaiter._decrement_pending_callscstƒ |¡| ¡dSr)r)r%r5r#r,rrr%s z_AllCompletedWaiter.add_resultcs*tƒ |¡|jr|j ¡n| ¡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,rr1ps    r1c@s$eZdZdd„Zdd„Zdd„ZdS)Ú_AcquireFuturescCst|td�|_dS)N)Úkey)ÚsortedÚidÚfutures)rr:rrrr ‘sz_AcquireFutures.__init__cCs|jD]}|j ¡qdSr)r:Ú _conditionÚacquirer#rrrÚ __enter__”s z_AcquireFutures.__enter__cGs|jD]}|j ¡qdSr)r:r;Úrelease)rÚargsr$rrrÚ__exit__˜s z_AcquireFutures.__exit__N)rrrr r=r@rrrrr6Žsr6cCs„|tkrtƒ}nZ|tkr tƒ}nJtdd„|Dƒƒ}|tkrHt|dd�}n"|tkr^t|dd�}n td|ƒ‚|D]}|j   |¡qn|S)Ncss|]}|jttfkVqdSr©Ú_stater r ©Ú.0ÚfrrrÚ ¢sz._create_and_install_waiters..T)r3FzInvalid return condition: %r) rr(rr0Úsumrr1rÚ ValueErrorÚ_waitersr")ÚfsÚ return_whenÚwaiterZ pending_countrErrrÚ_create_and_install_waitersœsÿ rMc csP|rL|d}|D]}| |¡q|j�|j |¡W5QRX~| ¡VqdS)Néÿÿÿÿ)Úremover;rIÚpop)rJrLÚ ref_collectrEZ futures_setrrrÚ_yield_finished_futures²s  rRc csB|dk r|t ¡}t|ƒ}t|ƒ}t|ƒ�*tdd„|Dƒƒ}||}t|tƒ}W5QRXt|ƒ}z¬t |||fd�EdH|�r|dkr�d}n(|t ¡}|dkr¸t dt|ƒ|fƒ‚|j  |¡|j�|j}g|_|j  ¡W5QRX| ¡t ||||fd�EdHq|W5|D]$}|j�|j   |¡W5QRX�qXdS)Ncss |]}|jttfkr|VqdSrrArCrrrrFàsÿzas_completed..)rQrz%d (of %d) futures unfinished)ÚtimeÚ monotonicr.Úlenr6rMrÚlistr;rIrOrRrrÚwaitr+rÚclearÚreverse) rJÚtimeoutÚend_timeZ total_futuresrr rLrEZ wait_timeoutrrrÚ as_completedÈsL  ÿÿ  ÿÿ ÿr\ÚDoneAndNotDoneFuturesz done not_donec Cs t|ƒ�ªtdd„|Dƒƒ}t|ƒ|}|tkrJ|rJt||ƒW5QR£S|tkr~|r~tdd„|Dƒƒr~t||ƒW5QR£St|ƒt|ƒkr¤t||ƒW5QR£St||ƒ}W5QRX|j  |¡|D]"}|j �|j   |¡W5QRXqÈ|  |j¡t|t|ƒ|ƒS)Ncss |]}|jttfkr|VqdSrrArCrrrrF!sÿzwait..css&|]}| ¡s| ¡dk r|VqdSr)r Ú exceptionrCrrrrF(s ÿ)r6r.rr]rÚanyrUrMrrWr;rIrOÚupdater)rJrZrKÚdoneZnot_donerLrErrrrWs"      rWc@s€eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z ddd„Z ddd„Z dd„Zdd„Zdd„ZdS) ÚFuturecCs,t ¡|_t|_d|_d|_g|_g|_dSr) rZ Conditionr;rrBÚ_resultÚ _exceptionrIÚ_done_callbacksrrrrr <s  zFuture.__init__c Cs>|jD]2}z ||ƒWqtk r6t d|¡YqXqdS©Nz!exception calling callback for %r)reÚ ExceptionÚLOGGERr^)rÚcallbackrrrÚ_invoke_callbacksEs   zFuture._invoke_callbacksc Csª|j�š|jtkrx|jrHd|jjt|ƒt|j|jjjfW5QR£Sd|jjt|ƒt|j|jjjfW5QR£Sd|jjt|ƒt|jfW5QR£SQRXdS)Nz<%s at %#x state=%s raised %s>z <%s at %#x state=%s returned %s>z<%s at %#x state=%s>) r;rBr rdr-rr9Ú_STATE_TO_DESCRIPTION_MAPrcrrrrÚ__repr__Ls( üüýzFuture.__repr__c Csf|j�N|jttfkr$W5QR£dS|jttfkr@W5QR£dSt|_|j ¡W5QRX| ¡dS)NFT)r;rBrr rr Ú notify_allrjrrrrÚcancel`sz Future.cancelc Cs,|j�|jttfkW5QR£SQRXdSr)r;rBrr rrrrr sszFuture.cancelledc Cs(|j�|jtkW5QR£SQRXdSr)r;rBrrrrrr xszFuture.runningc Cs.|j�|jtttfkW5QR£SQRXdSr)r;rBrr r rrrrra}sz Future.donecCs$|jrz |j‚W5d}Xn|jSdSr)rdrcrrrrZ __get_result‚s  zFuture.__get_resultc Csn|j�0|jtttfkr2|j |¡W5QR£dSW5QRXz ||ƒWn tk rht  d|¡YnXdSrf) r;rBrr r rer"rgrhr^)rÚfnrrrÚadd_done_callbackŒs   zFuture.add_done_callbackNc Cs¤z˜|j�ˆ|jttfkr tƒ‚n"|jtkrB| ¡W5QR£W¢ZS|j |¡|jttfkrdtƒ‚n(|jtkr†| ¡W5QR£W¢Stƒ‚W5QRXW5d}XdSr) r;rBrr rr Ú_Future__get_resultrWr©rrZrrrÚresult s   z Future.resultc CsŒ|j�||jttfkrtƒ‚n|jtkr:|jW5QR£S|j |¡|jttfkr\tƒ‚n"|jtkrx|jW5QR£Stƒ‚W5QRXdSr) r;rBrr rr rdrWrrrrrrr^Ãs   zFuture.exceptionc Cs„|j�t|jtkrddl}|jdtdd�ntdt|ƒdƒ‚tƒ‚dS) Néz:descriptor 'submit' of 'Executor' object needs an argumentrorz.Passing 'fn' as keyword argument is deprecated)Ú stacklevelz6submit expected at least 1 positional argument, got %dr4)rUÚ TypeErrorÚwarningsÚwarnÚDeprecationWarningÚNotImplementedError)r?Úkwargsr~rrrÚsubmit.s  ÿ ÿzExecutor.submitz($self, fn, /, *args, **kwargs)Nr4)rZÚ chunksizecsBˆdk rˆt ¡‰‡‡fdd„t|ŽDƒ‰‡‡‡fdd„}|ƒS)Ncsg|]}ˆjˆf|žŽ‘qSr)rƒ)rDr?)rorrrÚ `sz Executor.map..c 3s\zBˆ ¡ˆr@ˆdkr&ˆ ¡ ¡Vq ˆ ¡ ˆt ¡¡Vq W5ˆD] }| ¡qHXdSr)rnrYrPrsrSrT)r$)r[rJrZrrÚresult_iteratordsz%Executor.map..result_iterator)rSrTÚzip)rrorZr„Ú iterablesr†r)r[rorJrrZrÚmapGs   z Executor.mapTcCsdSrr)rrWrrrÚshutdownss zExecutor.shutdowncCs|Srrrrrrr=€szExecutor.__enter__cCs|jdd�dS)NT)rWF)rŠ)rÚexc_typeZexc_valZexc_tbrrrr@ƒs zExecutor.__exit__)T) rrrrƒÚ__text_signature__r‰rŠr=r@rrrrrz+s , rzc@s eZdZdS)ÚBrokenExecutorNrrrrrr�ˆsr�)N)'Ú __author__Ú collectionsZloggingrrSrrrrrrrr r Z_FUTURE_STATESrkZ getLoggerrhrgrrrrÚobjectrr(r0r1r6rMrRr\Ú namedtupler]rWrbrzrtr�rrrrÚshû û  >ÿ1s]