o
    OÊÆhë  ã                   @   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   úa/var/www/html/HyperOracle/crypto_trader/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__©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    
