o
    hU                     @  s   d dl mZ d dlZd dlmZmZ d dlmZ d dlm	Z	m
Z
mZmZmZmZ d dlmZ ejdkr:d dlmZ nd dlmZ e	rHd d	lmZ ed
ZedddZG dd dee ZG dd dedZdS )    )annotationsN)ABCMetaabstractmethod)TracebackType)TYPE_CHECKINGAny	AwaitableCallableTypeVaroverload)warn)      )Protocol)CancelScopeT_RetvalT_contraT)contravariantc                   @  s4   e Zd ZedddZedd	dZddddZd
S )
TaskStatusselfTaskStatus[None]returnNonec                 C     d S N r   r   r   F/var/www/html/ai/venv/lib/python3.10/site-packages/anyio/abc/_tasks.pystarted      zTaskStatus.startedvaluer   c                 C  r   r   r   r   r    r   r   r   r      r   NT_contra | Nonec                 C     dS )zx
        Signal that the task has started.

        :param value: object passed back to the starter of the task
        Nr   r!   r   r   r   r          )r   r   r   r   )r    r   r   r   r   )r    r"   r   r   )__name__
__module____qualname__r   r   r   r   r   r   r      s    r   c                   @  sn   e Zd ZU dZded< dddddZedddddZeddd ddZed!ddZ	ed"ddZ
dS )#	TaskGroupz
    Groups several asynchronous tasks together.

    :ivar cancel_scope: the cancel scope inherited by all child tasks
    :vartype cancel_scope: CancelScope
    r   cancel_scopeN)namefuncCallable[..., Awaitable[Any]]argsobjectr*   r   r   c                  s(   t dt | j|g|R d|i dS )a  
        Start a new task in this task group.

        :param func: a coroutine function
        :param args: positional arguments to call the function with
        :param name: name of the task, for the purposes of introspection and debugging

        .. deprecated:: 3.0
           Use :meth:`start_soon` instead. If your code needs AnyIO 2 compatibility, you
           can keep using this until AnyIO 4.

        zGspawn() is deprecated -- use start_soon() (without the "await") insteadr*   N)r   DeprecationWarning
start_soonr   r+   r*   r-   r   r   r   spawn0   s   zTaskGroup.spawnc                G  r#   )a  
        Start a new task in this task group.

        :param func: a coroutine function
        :param args: positional arguments to call the function with
        :param name: name of the task, for the purposes of introspection and debugging

        .. versionadded:: 3.0
        Nr   r1   r   r   r   r0   H   r$   zTaskGroup.start_soonr   c                     dS )a  
        Start a new task and wait until it signals for readiness.

        :param func: a coroutine function
        :param args: positional arguments to call the function with
        :param name: name of the task, for the purposes of introspection and debugging
        :return: the value passed to ``task_status.started()``
        :raises RuntimeError: if the task finishes without calling ``task_status.started()``

        .. versionadded:: 3.0
        Nr   r1   r   r   r   startY       zTaskGroup.startc                   r3   )z:Enter the task group context and allow starting new tasks.Nr   r   r   r   r   
__aenter__l   r5   zTaskGroup.__aenter__exc_typetype[BaseException] | Noneexc_valBaseException | Noneexc_tbTracebackType | Nonebool | Nonec                   r3   )z<Exit the task group context waiting for all tasks to finish.Nr   )r   r7   r9   r;   r   r   r   	__aexit__p   r5   zTaskGroup.__aexit__)r+   r,   r-   r.   r*   r.   r   r   )r+   r,   r-   r.   r*   r.   r   r   )r   r(   )r7   r8   r9   r:   r;   r<   r   r=   )r%   r&   r'   __doc____annotations__r2   r   r0   r4   r6   r>   r   r   r   r   r(   &   s   
 r(   )	metaclass)
__future__r   sysabcr   r   typesr   typingr   r   r   r	   r
   r   warningsr   version_infor   typing_extensionsanyio._core._tasksr   r   r   r   r(   r   r   r   r   <module>   s     
