o
     d                     @   sv   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 )    N)   
   )	ParamSpec)is_async_callable)run_in_threadpoolPc                   @   s@   e Zd Zdejeejf dejdejddfddZ	d
dd	Z
dS )BackgroundTaskfuncargskwargsreturnNc                 O   s    || _ || _|| _t|| _d S N)r	   r
   r   r   is_async)selfr	   r
   r    r   ?/usr/local/lib/python3.10/dist-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__r   N)__name__
__module____qualname__typingCallabler   Anyr
   r   r   r   r   r   r   r   r      s    
r   c                   @   s\   e Zd Zddejeje  fddZdeje	ej
f de	jde	jddfd	d
ZdddZdS )BackgroundTasksNtasksc                 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   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   OptionalSequencer   r   r   r   r   r
   r   r    r   r   r   r   r   r      s    
r   )sysr   version_infor   typing_extensionsstarlette._utilsr   starlette.concurrencyr   r   r   r   r   r   r   r   <module>   s    
