U
    .e                     @  s   d Z ddlmZ ddlmZmZmZ ddlmZm	Z	m
Z
 ddlmZmZ dZerxddlmZ ed	eed
Ze
de	f ZG dd dZG dd deZdS )zThread execution pool.    )annotations)FutureThreadPoolExecutorwait)TYPE_CHECKINGAnyCallable   )BasePoolapply_target)TaskPool)	TypedDictPoolInfozmax-concurrencythreads.c                   @  s.   e Zd ZdddddZddddd	d
ZdS )ApplyResultr   None)futurereturnc                 C  s   || _ | j j| _d S N)fresultget)selfr    r   =/tmp/pip-unpacked-wheel-f4liivr4/celery/concurrency/thread.py__init__   s    zApplyResult.__init__Nzfloat | None)timeoutr   c                 C  s   t | jg| d S r   )r   r   )r   r   r   r   r   r      s    zApplyResult.wait)N)__name__
__module____qualname__r   r   r   r   r   r   r      s   r   c                	      s|   e Zd ZU dZded< dZdZdddd fd	d
Zdd fddZdddddddddddZ	dd fddZ
  ZS )r   zThread Task Pool.intlimitTFr   r   )argskwargsr   c                   s    t  j|| t| jd| _d S )N)max_workers)superr   r   r"   executor)r   r#   r$   	__class__r   r   r   %   s    zTaskPool.__init__)r   c                   s   | j   t   d S r   )r'   shutdownr&   on_stop)r   r(   r   r   r+   )   s    
zTaskPool.on_stopNTargetFunctionztuple[Any, ...] | Nonezdict[str, Any] | NonezCallable[..., Any] | Noner   )targetr#   r$   callbackaccept_callback_r   c                 K  s   | j t|||||}t|S r   )r'   Zsubmitr   r   )r   r-   r#   r$   r.   r/   r0   r   r   r   r   on_apply-   s
    	 zTaskPool.on_applyr   c                   s(   t   }|| jt| jjd |S )Nr   )r&   	_get_infoupdater"   lenr'   _threads)r   infor(   r   r   r2   :   s    

zTaskPool._get_info)NNNN)r   r   r    __doc____annotations__Zbody_can_be_bufferZsignal_safer   r+   r1   r2   __classcell__r   r   r(   r   r      s   
    r   N)r7   
__future__r   concurrent.futuresr   r   r   typingr   r   r   baser
   r   __all__r   r!   r   r,   r   r   r   r   r   r   <module>   s   	