B
    in¦dÍ  ã               @   sâ   d dl Z d dlZd dl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 e d¡Z	edƒZ
ejejef ddœdd„Zeje
e	f e
je
je	d	œd
d„ZG dd„ deƒZeje	 e	dœdd„Zeje	 eje	 dœdd„ZdS )é    N)é   é
   )Ú	ParamSpecÚTÚP)ÚargsÚreturnc           
   ‡   sz   t  dt¡ t ¡ 4 I d H šN‰ tjg tjf d dœ‡ fdd„}x&| D ]\}}ˆ  |t	j
|f|Ž¡ qDW W d Q I d H R X d S )NzOrun_until_first_complete is deprecated and will be removed in a future version.)Úfuncr   c             “   s   | ƒ I d H  ˆ j  ¡  d S )N)Zcancel_scopeÚcancel)r	   )Ú
task_group© ú9/tmp/pip-unpacked-wheel-_bom8ime/starlette/concurrency.pyÚrun   s    z%run_until_first_complete.<locals>.run)ÚwarningsÚwarnÚDeprecationWarningÚanyioZcreate_task_groupÚtypingÚCallableÚ	CoroutineZ
start_soonÚ	functoolsÚpartial)r   r   r	   Úkwargsr   )r   r   Úrun_until_first_complete   s     r   )r	   r   r   r   c             Ï   s*   |rt j| f|Ž} tjj| f|žŽ I d H S )N)r   r   r   Ú	to_threadÚrun_sync)r	   r   r   r   r   r   Úrun_in_threadpool#   s    r   c               @   s   e Zd ZdS )Ú_StopIterationN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   ,   s   r   )Úiteratorr   c             C   s&   yt | ƒS  tk
r    t‚Y nX d S )N)ÚnextÚStopIterationr   )r!   r   r   r   Ú_next0   s    r$   c             C  s<   x6yt j t| ¡I d H V  W q tk
r2   P Y qX qW d S )N)r   r   r   r$   r   )r!   r   r   r   Úiterate_in_threadpool:   s
    r%   )r   Úsysr   r   r   Úversion_infor   Útyping_extensionsÚTypeVarr   r   ÚTupler   Údictr   r   r   r   Ú	Exceptionr   ÚIteratorr$   ÚAsyncIteratorr%   r   r   r   r   Ú<module>   s    

