a XC?h1X� @sxdZddlZddlZddlZddlZddlZdZdZdZdZ dZ dZ d Z d Z d Ze e e e egZe d e d e de dediZe�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(�Z e�!d)d*�Z"defd+d,�Z#Gd-d.�d.e�Z$Gd/d0�d0e�Z%Gd1d2�d2e&�Z'dS)4z"Brian Quinlan ([email protected])�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�=/opt/alt/python39/lib64/python3.9/concurrent/futures/_base.pyr-src@s eZdZdS)�CancelledErrorNrrrrrr1src@s eZdZdS)� TimeoutErrorNrrrrrr5src@s eZdZdS)�InvalidStateErrorNrrrrrr9src@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_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@eZdZ�fdd�Z�fdd�Z�fdd�Z�fdd�Z�ZS) �_AsCompletedWaitercstt|���t��|_dSr)�superr(r r�Lock�lockr�� __class__rrr Osz_AsCompletedWaiter.__init__csD|j�*tt|��|�|j��Wd�n1s60YdSr)r+r)r(r%r�setr#r,rrr%Ssz_AsCompletedWaiter.add_resultcsD|j�*tt|��|�|j��Wd�n1s60YdSr)r+r)r(r&rr.r#r,rrr&Xsz _AsCompletedWaiter.add_exceptioncsD|j�*tt|��|�|j��Wd�n1s60YdSr)r+r)r(r'rr.r#r,rrr']sz _AsCompletedWaiter.add_cancelled)rrrr r%r&r'� __classcell__rrr,rr(Ls   r(cs4eZdZ�fdd�Z�fdd�Z�fdd�Z�ZS)�_FirstCompletedWaitercst��|�|j��dSr)r)r%rr.r#r,rrr%es z _FirstCompletedWaiter.add_resultcst��|�|j��dSr)r)r&rr.r#r,rrr&is z#_FirstCompletedWaiter.add_exceptioncst��|�|j��dSr)r)r'rr.r#r,rrr'ms z#_FirstCompletedWaiter.add_cancelled)rrrr%r&r'r/rrr,rr0bs  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 ts z_AllCompletedWaiter.__init__cCsH|j�.|jd8_|js&|j��Wd�n1s: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|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,rr1qs    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|]}|jttfvVqdSr��_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� rMccsd|r`|d}|D]}|�|�q|j�|j�|�Wd�n1sH0Y~|��VqdS)N�����)�remover;rI�pop)rJrL� ref_collectrEZ futures_setrrr�_yield_finished_futures�s  *rRc cs�|dur|t��}t|�}t|�}t|��4tdd�|D��}||}t|t�}Wd�n1sf0Yt|�}�zt|||fd�EdH|�r:|dur�d}n(|t��}|dkr�t dt|�|f��|j � |�|j �&|j }g|_ |j ��Wd�n1�s0Y|��t||||fd�EdHq�W|D]:}|j�|j�|�Wd�n1�sn0Y�q@nB|D]:}|j�|j�|�Wd�n1�s�0Y�q�0dS)Ncss |]}|jttfvr|VqdSrrArCrrrrF�s�zas_completed..)rQrz%d (of %d) futures unfinished)�time� monotonicr.�lenr6rMr�listrRrr�waitr+r�clear�reverser;rIrO) rJ�timeout�end_timeZ total_futuresrr rLZ wait_timeoutrErrr� as_completed�sP  �(�  �� *�2�r\�DoneAndNotDoneFuturesz done not_donec Cs6t|�}t|���dd�|D�}||}|tkrL|rLt||�Wd�S|tkr�|r�tdd�|D��r�t||�Wd�St|�t|�kr�t||�Wd�St||�}Wd�n1s�0Y|j� |�|D]8}|j �|j � |�Wd�q�1�s0Yq�|� |j�t|||�S)NcSsh|]}|jttfvr|�qSrrArCrrr� $s�zwait..css&|]}|��s|��dur|VqdSr)r � exceptionrCrrrrF*s�zwait..)r.r6rr]r�anyrUrMrrWr;rIrO�updater)rJrZrK�doneZnot_donerLrErrrrW s$   ( . rWc@s�eZdZdd�Zdd�Zdd�Zdd�Zd d �Zd d �Zd d�Z dd�Z dd�Z ddd�Z ddd�Z dd�Zdd�Zdd�Zeej�ZdS) �FuturecCs,t��|_t|_d|_d|_g|_g|_dSr) rZ Conditionr;rrB�_result� _exceptionrI�_done_callbacksrrrrr >s  zFuture.__init__c Cs<|jD]0}z ||�Wqty4t�d|�Yq0qdS�Nz!exception calling callback for %r)rf� Exception�LOGGERr_)r�callbackrrr�_invoke_callbacksGs    zFuture._invoke_callbackscCs�|j��|jtkr||jrJd|jjt|�t|j|jjjfWd�Sd|jjt|�t|j|jjjfWd�Sd|jjt|�t|jfWd�S1s�0YdS)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&Wd�dS|jttfvrDWd�dSt|_|j��Wd�n1sh0Y|��dS)NFT)r;rBrr rr � notify_allrkrrrr�cancelbs(z Future.cancelcCs8|j�|jttfvWd�S1s*0YdSr)r;rBrr rrrrr uszFuture.cancelledcCs4|j�|jtkWd�S1s&0YdSr)r;rBrrrrrr zszFuture.runningcCs:|j� |jtttfvWd�S1s,0YdSr)r;rBrr r rrrrrbsz Future.donecCs(|jrz|j�Wd}q$d}0n|jSdSr)rerdrrrrZ __get_result�s zFuture.__get_resultcCs�|j�<|jtttfvr4|j�|�Wd�dSWd�n1sH0Yz ||�Wnty|t� d|�Yn0dSrg) r;rBrr r rfr"rhrir_)r�fnrrr�add_done_callback�s  .  zFuture.add_done_callbackNcCs�z�|j��|jttfvr t��n&|jtkrF|��Wd�Wd}S|j�|�|jttfvrht��n,|jtkr�|��Wd�Wd}St��Wd�n1s�0YWd}nd}0dSr) r;rBrr rr �_Future__get_resultrWr�rrZrrr�result�s"  �  �&z Future.resultcCs�|j��|jttfvrt��n|jtkr<|jWd�S|j�|�|jttfvr^t��n$|jtkr||jWd�St��Wd�n1s�0YdSr) r;rBrr rr rerWrrsrrrr_�s   zFuture.exceptioncCs�|j��|jtkr>t|_|jD]}|�|�qWd�dS|jtkr^t|_Wd�dSt� dt |�|j�t d��Wd�n1s�0YdS)NFTz!Future %s in unexpected state: %szFuture in unexpected state) r;rBrr rIr'rrriZcriticalr9� RuntimeError)rrLrrr�set_running_or_notify_cancel�s    �z#Future.set_running_or_notify_cancelcCs�|j�^|jttthvr*td�|j|���||_t|_|jD]}|� |�q<|j� �Wd�n1sj0Y|� �dS�Nz{}: {!r}) r;rBrr r r�formatrdrIr%rnrk)rrtrLrrr� set_results  (zFuture.set_resultcCs�|j�^|jttthvr*td�|j|���||_t|_|jD]}|� |�q<|j� �Wd�n1sj0Y|� �dSrw) r;rBrr r rrxrerIr&rnrk)rr_rLrrr� set_exceptions  (zFuture.set_exception)N)N)rrrr rkrmror r rbrrrqrtr_rvryrz� classmethod�types� GenericAlias�__class_getitem__rrrrrc;s   # "(rcc@sDeZdZdd�Zddd�dd�Zdd d �d d �Zd d�Zdd�ZdS)�ExecutorcOs t��dSr)�NotImplementedError)rrpr?�kwargsrrr�submit2s zExecutor.submitNr4)rZ� chunksizecsB�dur�t�����fdd�t|�D�����fdd�}|�S)Ncsg|]}�j�g|�R��qSr)r�)rDr?)rprrr� V�z Executor.map..c 3snzT����r@�dur&�����Vq �����t���Vq W�D] }|��qFn�D] }|��qZ0dSr)rYrPrtrSrTro)r$)r[rJrZrr�result_iteratorZs �z%Executor.map..result_iterator)rSrT�zip)rrprZr�� iterablesr�r)r[rprJrrZr�map=s   z Executor.mapTF)�cancel_futurescCsdSrr)rrWr�rrr�shutdowniszExecutor.shutdowncCs|Srrrrrrr=yszExecutor.__enter__cCs|jdd�dS)NT)rWF)r�)r�exc_typeZexc_valZexc_tbrrrr@|s zExecutor.__exit__)T)rrrr�r�r�r=r@rrrrr/s  ,rc@s eZdZdS)�BrokenExecutorNrrrrrr��sr�)N)(� __author__� collectionsZloggingrrSr|rrrrrrrr r Z_FUTURE_STATESrlZ getLoggerrirhrrrr�objectrr(r0r1r6rMrRr\� namedtupler]rWrcrrur�rrrr�s^� �  >�2uR