
     @g'                       U d dl mZ d dlZd dlZd dlmZ d dlmZmZm	Z	m
Z
 d dlmZ ddlmZ ej        dk    rd d	lmZ nd d	lmZ  e	d
          Z e	d          Zd!dZd!dZd!dZd"dZ e            Zded<   i Zded<    ed           G d d                      Z G d dej                  Z G d dee                   Z G d d ee                   ZdS )#    )annotationsN)	dataclass)AnyGenericTypeVaroverload)WeakKeyDictionary   )get_asynclib)      )Literal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     B/var/www/piapp/venv/lib/python3.11/site-packages/anyio/lowlevel.pyr   r      s6       ..
#
#
%
%%%%%%%%%%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   $   s6       ..
0
0
2
2222222222r   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   0   s6       ..
3
3
5
5555555555r   objectc                 B    t                                                      S )zVReturn a backend specific token object that can be used to get back to the event loop.)r   current_tokenr   r   r   r   r   @   s    >>'')))r   z&WeakKeyDictionary[Any, dict[str, Any]]	_run_varszdict[Any, _TokenWrapper]_token_wrappersT)frozenc                      e Zd ZU dZded<   dS )_TokenWrapper)_token__weakref__r   r$   N)__name__
__module____qualname__	__slots____annotations__r   r   r   r#   r#   I   s         'INNNNNr   r#   c                  ,    e Zd Z ej                    ZdS )_NoValueSetN)r&   r'   r(   enumautoNO_VALUE_SETr   r   r   r,   r,   O   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 )NFr2   )selfr6   r8   s      r   __init__zRunvarToken.__init__V   s    	=Br   N)r6   r7   r8   r9   )r&   r'   r(   r)   r<   r   r   r   r1   r1   S   s-        -I     r   r1   c                      e Zd ZU dZdZej        Zded<    e            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]r/   zset[_TokenWrapper]r    namestrdefaultr9   c                "    || _         || _        d S Nr?   )r;   rB   rD   s      r   r<   zRunVar.__init__g   s    
 
r   r   dict[str, T]c                    t                      }	 	 t          |         S # t          $ r, t          |          }| j                            |           Y nt          $ r i x}t          |<   |cY S w xY warF   )r   r   	TypeErrorr#   r    addKeyError)r;   tokenrun_varss      r   _current_varszRunVar._current_varso   s    	 
  '' 0 0 0 &e,,$((/////      .009U+ 	 s    3A-A-,A-r   T | Dc                    d S rF   r   r;   rD   s     r   getz
RunVar.get       r   r   c                    d S rF   r   r;   s    r   rR   z
RunVar.get   rS   r   %D | Literal[_NoValueSet.NO_VALUE_SET]c                    	 | j         | 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)rN   r@   rK   r>   r/   rA   LookupErrorrQ   s     r   rR   z
RunVar.get   s    	%%dj11 	% 	% 	%f111f&999}$$$ :9	% JTZJJJ
 
 	
s    AAAr8   RunvarToken[T]c                    | j         }t          | |                    | j        t          j                            }||| j        <   |S rF   )rN   r1   rR   r@   r>   r/   )r;   r8   current_varsrL   s       r   setz
RunVar.set   s?    )D,"2"24:v?R"S"STT#(TZ r   rL   r   c                    |j         | urt          d          |j        rt          d          |j        t          j        u r	 | j        | j        = n$# t          $ r Y nw xY w|j        | j        | j        <   d|_        d S )Nz)This token does not belong to this RunVarz This token has already been usedT)	r3   
ValueErrorr5   r4   r,   r/   rN   r@   rK   )r;   rL   s     r   resetzRunVar.reset   s    :T!!HIII? 	A?@@@<;333&tz22    .3\Dtz*s   A 
AAc                    d| j         dS )Nz<RunVar name=>)r@   rU   s    r   __repr__zRunVar.__repr__   s    .tz....r   N)rB   rC   rD   r9   )r   rG   )rD   r   r   rO   )r   r   )rD   rV   r   rO   )r8   r   r   rY   )rL   rY   r   r   )r   rC   )r&   r'   r(   __doc__r)   r,   r/   r*   r\   r    r<   propertyrN   r   rR   r_   rb   r   r   r   r>   r>   \   s-          $I6A6NLNNNN*-#%%O////
 :F                X     X    X @L
 
 
 
 
      "/ / / / / /r   r>   )r   r   )r   r   ) 
__future__r   r-   sysdataclassesr   typingr   r   r   r   weakrefr	   _core._eventloopr   version_infor   typing_extensionsr   r   r   r   r   r   r   r*   r    r#   Enumr,   r1   r>   r   r   r   <module>rn      s1   " " " " " " "  



 ! ! ! ! ! ! 2 2 2 2 2 2 2 2 2 2 2 2 % % % % % % * * * * * *v))))))GCLLGCLL& & & & 	3 	3 	3 	36 6 6 6 * * * *
 5F4E4G4G	 G G G G,. . . . . $       
    $)       '!*   R/ R/ R/ R/ R/WQZ R/ R/ R/ R/ R/r   