
    +h'                       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j8                        Z G d dee         Z G d dee         Zy)     )annotationsN)	dataclass)AnyGenericTypeVaroverload)WeakKeyDictionary   )get_asynclib)      )LiteralTDc                 P   K   t               j                          d{    y7 w)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     A/var/www/html/venv/lib/python3.12/site-packages/anyio/lowlevel.pyr   r      s      .
#
#
%%%   &$&c                 P   K   t               j                          d{    y7 w)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   $   s      .
0
0
222r   c                 P   K   t               j                          d{    y7 w)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   s      .
3
3
555r   c                 2    t               j                         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<   y)_TokenWrapper)_token__weakref__objectr"   N)__name__
__module____qualname__	__slots____annotations__r   r   r   r!   r!   I   s    'INr   r!   c                  .    e Zd Z ej                         Zy)_NoValueSetN)r%   r&   r'   enumautoNO_VALUE_SETr   r   r   r+   r+   O   s    499;Lr   r+   c                      e Zd ZdZddZy)RunvarToken_var_value	_redeemedc                .    || _         || _        d| _        y )NFr1   )selfvarvalues      r   __init__zRunvarToken.__init__V   s    	=Br   N)r7   z	RunVar[T]r8   %T | Literal[_NoValueSet.NO_VALUE_SET])r%   r&   r'   r(   r9   r   r   r   r0   r0   S   s    -Ir   r0   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y)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   c                     || _         || _        y Nr=   )r6   namedefaults      r   r9   zRunVar.__init__g   s    
 
r   c                    t               }	 	 t        |   S # t        $ r) t        |      }| j                  j                  |       Y nt        $ r i x}t        |<   |cY S w xY wWrA   )r   r   	TypeErrorr!   r   addKeyError)r6   tokenrun_varss      r   _current_varszRunVar._current_varso   sl    
  '' 0 &e,$$((/  .009U+  s    /AAAc                     y rA   r   r6   rC   s     r   getz
RunVar.get       r   c                     y rA   r   r6   s    r   rM   z
RunVar.get   rN   r   c                   	 | j                   | j                     S # t        $ rC |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)rJ   r>   rG   r<   r.   r?   LookupErrorrL   s     r   rM   z
RunVar.get   s    	%%%djj11 	%f111f&9&99}}$ :	% TZZL(IJ
 	
s    A'(A'&A'c                    | j                   }t        | |j                  | j                  t        j
                              }||| j                  <   |S rA   )rJ   r0   rM   r>   r<   r.   )r6   r8   current_varsrH   s       r   setz
RunVar.set   sC    ))D,"2"24::v?R?R"ST#(TZZ r   c                \   |j                   | urt        d      |j                  rt        d      |j                  t        j
                  u r 	 | j                  | j                  = d|_        y |j                  | j                  | j                  <   d|_        y # t        $ r
 Y d|_        y w xY w)Nz)This token does not belong to this RunVarz This token has already been usedT)	r2   
ValueErrorr4   r3   r+   r.   rJ   r>   rG   )r6   rH   s     r   resetzRunVar.reset   s    ::T!HII???@@<<;333&&tzz2  .3\\Dtzz*   s   B 	B+*B+c                "    d| j                   dS )Nz<RunVar name=>)r>   rP   s    r   __repr__zRunVar.__repr__   s    tzznA..r   N)rB   strrC   r:   )returnzdict[str, T])rC   r   r]   T | D)r]   r   )rC   z%D | Literal[_NoValueSet.NO_VALUE_SET]r]   r^   )r8   r   r]   RunvarToken[T])rH   r_   r]   None)r]   r\   )r%   r&   r'   __doc__r(   r+   r.   r)   rU   r   r9   propertyrJ   r   rM   rX   r[   r   r   r   r<   r<   \   s     $I6A6N6NL3N*-%O'/
 :F   7          @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+   r0   r<   r   r   r   <module>rl      s    "  
 ! 2 2 % *v)CLCL& 	36 *
 5F4G	1 G,.) . $  
$)) '!* R/WQZ R/r   