
    "dG                        U d dl 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
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efdZ e            Zi Zeedf         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 )    N)	dataclass)AnyDictGenericSetTypeVarUnionoverload)WeakKeyDictionary   )get_asynclib)      )LiteralTDreturnc                  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     2D:\api_v1\venv\Lib\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   -   s6       ..
3
3
5
5555555555r   c                  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   _TokenWrapper_token_wrappersT)frozenc                       e Zd ZU dZeed<   dS )r   )_token__weakref__r#   N)__name__
__module____qualname__	__slots__object__annotations__r   r   r   r   r   E   s         'INNNNNr   c                   ,    e Zd Z ej                    ZdS )_NoValueSetN)r%   r&   r'   enumautoNO_VALUE_SETr   r   r   r,   r,   K   s        49;;LLLr   r,   c                   H    e Zd ZdZdddeeeej                 f         fdZ	dS )RunvarToken_var_value	_redeemedvarz	RunVar[T]valuec                 0    || _         || _        d| _        d S )NFr2   )selfr6   r7   s      r   __init__zRunvarToken.__init__R   s     	CHr   N)
r%   r&   r'   r(   r	   r   r   r,   r/   r:   r   r   r   r1   r1   O   sO        -I',Q8P0Q-Q'R     r   r1   c                      e Zd ZU dZdZej        Zeej                 ed<    e	            Z
ee         ed<   efdedeeeej                 f         fdZedeeef         fd	            Zededeeef         fd
            Zedefd            Zefdeeeej                 f         deeef         fdZdedee         fdZ	dee         ddfdZdefdZdS )RunVarzQLike a :class:`~contextvars.ContextVar`, expect scoped to the running event loop._name_defaultr/   r    namedefaultc                 "    || _         || _        d S Nr=   )r9   r@   rA   s      r   r:   zRunVar.__init__c   s    
 
r   r   c                     t                      }	 	 t          |         S # t          $ r, t          |          }| j                            |           Y nt          $ r i x}t          |<   |cY S w xY warC   )r   	_run_vars	TypeErrorr   r    addKeyError)r9   tokenrun_varss      r   _current_varszRunVar._current_varsk   s    	 
  '' 0 0 0 &e,,$((/////      .009U+ 	 s    3A-A-,A-c                     d S rC   r   r9   rA   s     r   getz
RunVar.get{       r   c                     d S rC   r   r9   s    r   rN   z
RunVar.get   rO   r   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)rK   r>   rH   r<   r/   r?   LookupErrorrM   s     r   rN   z
RunVar.get   s    	%%dj11 	% 	% 	%f111f&999}$$$ :9	% JTZJJJ
 
 	
s    AAAr7   c                     | j         }t          | |                    | j        t          j                            }||| j        <   |S rC   )rK   r1   rN   r>   r<   r/   )r9   r7   current_varsrI   s       r   setz
RunVar.set   s?    )D,"2"24:v?R"S"STT#(TZ r   rI   Nc                     |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/   rK   r>   rH   )r9   rI   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>   rQ   s    r   __repr__zRunVar.__repr__   s    .tz....r   )r%   r&   r'   __doc__r(   r,   r/   r   r*   rV   r    r   r   strr	   r   r:   propertyr   rK   r
   r   rN   r1   rY   r\   r   r   r   r<   r<   Z   s        [[#I6A6NL'+23NNN*-#%%OS'///
 @L     q'+":;;<         tCF|       X  1 q!t    X Q    X FR
 
Q(@ AAB
	q!t
 
 
 
 {1~    ;q> d    "/# / / / / / /r   r<   )r   N)"r-   sysdataclassesr   typingr   r   r   r   r   r	   r
   weakrefr   _core._eventloopr   version_infor   typing_extensionsr   r   r   r   r   r)   r   rE   r    r*   r   Enumr,   r1   r<   r   r   r   <module>rh      s3    



 ! ! ! ! ! ! D D D D D D D D D D D D D D D D D D % % % % % % * * * * * *v))))))GCLLGCLL& & & &	3 	3 	3 	36 6 6 6*v * * * *
 	.0c?*+ 0 0 0 $       
    $)       '!*   P/ P/ P/ P/ P/WQZ P/ P/ P/ P/ P/r   