o
    Þ­j  ã                   @  s‚   d dl mZ d dlZd dlZejdkrd dlmZ nd dlmZ d dlmZ d dl	m
Z
 edƒZG dd	„ d	ƒZG d
d„ deƒZdS )é    )ÚannotationsN)é   é
   )Ú	ParamSpec)Úis_async_callable)Úrun_in_threadpoolÚPc                   @  s    e Zd Zdd	d
„Zddd„ZdS )ÚBackgroundTaskÚfuncútyping.Callable[P, typing.Any]ÚargsúP.argsÚkwargsúP.kwargsÚreturnÚNonec                 O  s    || _ || _|| _t|ƒ| _d S ©N)r
   r   r   r   Úis_async)Úselfr
   r   r   © r   úQ/var/www/html/CropPilot/venv/lib/python3.10/site-packages/starlette/background.pyÚ__init__   s   zBackgroundTask.__init__c                 Ã  sL   �| j r| j| ji | j¤ŽI d H  d S t| jg| j¢R i | j¤ŽI d H  d S r   )r   r
   r   r   r   )r   r   r   r   Ú__call__   s   €&zBackgroundTask.__call__N©r
   r   r   r   r   r   r   r   ©r   r   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r	      s    
r	   c                   @  s,   e Zd Zdddd„Zddd„Zddd„ZdS )ÚBackgroundTasksNÚtasksú&typing.Sequence[BackgroundTask] | Nonec                 C  s   |r	t |ƒ| _d S g | _d S r   )Úlistr   )r   r   r   r   r   r   "   s   zBackgroundTasks.__init__r
   r   r   r   r   r   r   r   c                 O  s&   t |g|¢R i |¤Ž}| j |¡ d S r   )r	   r   Úappend)r   r
   r   r   Útaskr   r   r   Úadd_task%   s   zBackgroundTasks.add_taskc                 Ã  s   �| j D ]}|ƒ I d H  qd S r   )r   )r   r#   r   r   r   r   +   s   €
ÿzBackgroundTasks.__call__r   )r   r    r   r   )r   r   r   r   r$   r   r   r   r   r   r   !   s    
r   )Ú
__future__r   ÚsysÚtypingÚversion_infor   Útyping_extensionsÚstarlette._utilsr   Ústarlette.concurrencyr   r   r	   r   r   r   r   r   Ú<module>   s    
