o
    [h                     @   s  d dl Z d dlZd dlZd dlZd dlmZmZmZ zd dlZW n ey+   dZY nw ej	dkr8d dl m
Z
 nd dl mZ
 edZdejejef ddfd	d
Zdejdef dejdejdefddZG dd deZdedefddZdedefddZdS )    N)AnyAsyncGeneratorIterator)      create_task)ensure_futureTargsreturnc                     sJ   dd | D }t j|t jdI d H \}}dd |D  dd |D  d S )Nc                 S   s"   g | ]\}}t |d i |qS ) r   ).0handlerkwargsr   r   |/home/ubuntu/experiments/live_experiments/Pythonexperiments/Otree/venv/lib/python3.10/site-packages/starlette/concurrency.py
<listcomp>   s   " z,run_until_first_complete.<locals>.<listcomp>)Zreturn_whenc                 S      g | ]}|  qS r   )cancelr   taskr   r   r   r          c                 S   r   r   )resultr   r   r   r   r      r   )asynciowaitZFIRST_COMPLETED)r   tasksdonependingr   r   r   run_until_first_complete   s
   r   func.r   c                    sp   t  }td ur tj| g|R i |}t }|j} |f}n|r+tj| fi |} |jd | g|R  I d H S N)r   Zget_event_loopcontextvars	functoolspartialZcopy_contextrunZrun_in_executor)r   r   r   loopchildcontextr   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)   iteratorc                 C   s   zt | W S  ty   tw r    )nextStopIterationr)   r-   r   r   r   _next/   s
   
r1   c                 C  s2   	 zt t| I d H V  W n
 ty   Y d S w qr    )r(   r1   r)   r0   r   r   r   iterate_in_threadpool9   s   r2   )r   r"   systypingr   r   r   r!   ImportErrorversion_infor   r	   TypeVarr
   TupleCallabledictr   r(   	Exceptionr)   r1   r2   r   r   r   r   <module>   s6    



