
    n i5                       U d dl mZ d dl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 ddlmZ ddlmZ  e	d	          Z e	d
          ZddZddZddZe
 edd           G d d                                  ZddZ e            Zded<    G d dej                  Z G d dee                   Z G d dee                   ZdS )     )annotationsN)	dataclass)AnyGenericLiteralTypeVarfinaloverload)WeakKeyDictionary   )get_async_backend)AsyncBackendTDreturnNonec                 V   K   t                                                       d{V  dS )z
    Check for cancellation and allow the scheduler to switch to another task.

    Equivalent to (but more efficient than)::

        await checkpoint_if_cancelled()
        await cancel_shielded_checkpoint()


    .. versionadded:: 3.0

    N)r   
checkpoint     E/var/www/findabus/venv/lib/python3.11/site-packages/anyio/lowlevel.pyr   r      s8       


(
(
*
**********r   c                 V   K   t                                                       d{V  dS )z
    Enter a checkpoint if the enclosing cancel scope has been cancelled.

    This does not allow the scheduler to switch to a different task.

    .. versionadded:: 3.0

    N)r   checkpoint_if_cancelledr   r   r   r   r      s8       


5
5
7
7777777777r   c                 V   K   t                                                       d{V  dS )z
    Allow the scheduler to switch to another task but without checking for cancellation.

    Equivalent to (but potentially more efficient than)::

        with CancelScope(shield=True):
            await checkpoint()


    .. versionadded:: 3.0

    N)r   cancel_shielded_checkpointr   r   r   r   r   +   s8       


8
8
:
::::::::::r   TF)frozenreprc                  (    e Zd ZU dZded<   ded<   dS )EventLoopTokenza
    An opaque object that holds a reference to an event loop.

    .. versionadded:: 4.11.0
    ztype[AsyncBackend]backend_classobjectnative_tokenN)__name__
__module____qualname____doc____annotations__r   r   r   r   r   ;   s6           &%%%r   r   c                 f    t                      } |                                 }t          | |          S )z
    Return a token object that can be used to call code in the current event loop from
    another thread.

    .. versionadded:: 4.11.0

    )r   current_tokenr   )r    	raw_tokens     r   r)   r)   H   s0     &''M++--I-333r   z1WeakKeyDictionary[object, dict[RunVar[Any], Any]]	_run_varsc                  ,    e Zd Z ej                    ZdS )_NoValueSetN)r#   r$   r%   enumautoNO_VALUE_SETr   r   r   r-   r-   X   s        49;;LLLr   r-   c                      e Zd ZdZddZdS )	RunvarToken_var_value	_redeemedvar	RunVar[T]value%T | Literal[_NoValueSet.NO_VALUE_SET]c                0    || _         || _        d| _        d S )NFr3   )selfr7   r9   s      r   __init__zRunvarToken.__init___   s    	=Br   N)r7   r8   r9   r:   )r#   r$   r%   	__slots__r=   r   r   r   r2   r2   \   s-        -I     r   r2   c                      e Zd ZU dZdZej        Zded<   efdd	Ze	dd            Z
edd            Zedd            Zefd dZd!dZd"dZd#dZdS )$RunVarz[
    Like a :class:`~contextvars.ContextVar`, except scoped to the running event loop.
    _name_defaultz!Literal[_NoValueSet.NO_VALUE_SET]r0   namestrdefaultr:   c                "    || _         || _        d S NrA   )r<   rD   rF   s      r   r=   zRunVar.__init__n   s     
r   r   dict[RunVar[T], T]c                    t                      j        }	 t          |         S # t          $ r i x}t          |<   |cY S w xY wrH   )r)   r"   r+   KeyError)r<   r"   run_varss      r   _current_varszRunVar._current_varst   sQ    $3	\** 	 	 	133Hy.OOO	s   " ==r   T | Dc                    d S rH   r   r<   rF   s     r   getz
RunVar.get}   s    (+r   r   c                    d S rH   r   r<   s    r   rQ   z
RunVar.get   s    r   %D | Literal[_NoValueSet.NO_VALUE_SET]c                    	 | j         |          S # t          $ r1 |t          j        ur|cY S | j        t          j        ur	| j        cY S Y nw xY wt          d| j         d          )NzRun variable "z!" has no value and no default set)rM   rK   r@   r0   rC   LookupErrorrB   rP   s     r   rQ   z
RunVar.get   s    	%%d++ 	% 	% 	%f111f&999}$$$ :9	% JTZJJJ
 
 	
s    A
A
	A
r9   RunvarToken[T]c                z    | j         }t          | |                    | t          j                            }||| <   |S rH   )rM   r2   rQ   r@   r0   )r<   r9   current_varstokens       r   setz
RunVar.set   s;    )D,"2"249L"M"MNN"Tr   rZ   r   c                    |j         | urt          d          |j        rt          d          |j        t          j        u r	 | j        | = n# t          $ r Y nw xY w|j        | j        | <   d|_        d S )Nz)This token does not belong to this RunVarz This token has already been usedT)r4   
ValueErrorr6   r5   r-   r0   rM   rK   )r<   rZ   s     r   resetzRunVar.reset   s    :T!!HIII? 	A?@@@<;333&t,,    (-|Dt$s   A 
AAc                    d| j         dS )Nz<RunVar name=>)rB   rS   s    r   __repr__zRunVar.__repr__   s    .tz....r   N)rD   rE   rF   r:   )r   rI   )rF   r   r   rN   )r   r   )rF   rT   r   rN   )r9   r   r   rW   )rZ   rW   r   r   )r   rE   )r#   r$   r%   r&   r>   r-   r0   r'   r=   propertyrM   r
   rQ   r[   r^   ra   r   r   r   r@   r@   e   s          $I6A6NLNNNN KW             X +++ X+ X @L
 
 
 
 
      "/ / / / / /r   r@   )r   r   )r   r   )
__future__r   r.   dataclassesr   typingr   r   r   r   r	   r
   weakrefr   _core._eventloopr   abcr   r   r   r   r   r   r   r)   r+   r'   Enumr-   r2   r@   r   r   r   <module>rj      s   " " " " " " "  ! ! ! ! ! ! B B B B B B B B B B B B B B B B % % % % % % / / / / / /      GCLLGCLL+ + + + 	8 	8 	8 	8; ; ; ;  
$U###       $# 
4 
4 
4 
4 @Q?P?R?R	 R R R R    $)       '!*   E/ E/ E/ E/ E/WQZ E/ E/ E/ E/ E/r   