
    MhI                       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
 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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LiteralTypeVaroverload)WeakKeyDictionary   )get_async_backend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     N/var/www/html/test/jupyter/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   objectc                 B    t                                                      S )ze
    Return 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!   G   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*   M   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 )NFr0   )selfr4   r6   s      r   __init__zRunvarToken.__init__T   s    	=Br   N)r4   r5   r6   r7   )r$   r%   r&   r'   r:   r   r   r   r/   r/   Q   s-        -I     r   r/   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defaultr7   c                "    || _         || _        d S Nr=   )r9   r@   rB   s      r   r:   zRunVar.__init__e   s     
r   r   dict[str, T]c                v    t                      }	 t          |         S # t          $ r i x}t          |<   |cY S w xY wrD   )r   r   KeyError)r9   tokenrun_varss      r   _current_varszRunVar._current_varsk   sN    	U## 	 	 	*,,Hy'OOO	s    88r   T | Dc                    d S rD   r   r9   rB   s     r   getz
RunVar.gett   s    (+r   r   c                    d S rD   r   r9   s    r   rN   z
RunVar.getw   s    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)rJ   r>   rG   r<   r-   r?   LookupErrorrM   s     r   rN   z
RunVar.getz   s    	%%dj11 	% 	% 	%f111f&999}$$$ :9	% JTZJJJ
 
 	
s    AAAr6   RunvarToken[T]c                    | j         }t          | |                    | j        t          j                            }||| j        <   |S rD   )rJ   r/   rN   r>   r<   r-   )r9   r6   current_varsrH   s       r   setz
RunVar.set   s?    )D,"2"24:v?R"S"STT#(TZ r   rH   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)	r1   
ValueErrorr3   r2   r*   r-   rJ   r>   rG   )r9   rH   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>   rP   s    r   __repr__zRunVar.__repr__   s    .tz....r   N)r@   rA   rB   r7   )r   rE   )rB   r   r   rK   )r   r   )rB   rQ   r   rK   )r6   r   r   rT   )rH   rT   r   r   )r   rA   )r$   r%   r&   __doc__r'   r*   r-   r(   rW   r   r:   propertyrJ   r	   rN   rZ   r]   r   r   r   r<   r<   Z   s          $I6A6NLNNNN*-#%%O//// KW             X +++ X+ X @L
 
 
 
 
      "/ / / / / /r   r<   )r   r   )r   r   )
__future__r   r+   dataclassesr   typingr   r   r   r   r	   weakrefr
   _core._eventloopr   r   r   r   r   r   r   r   r(   r   r!   Enumr*   r/   r<   r   r   r   <module>rf      s   " " " " " " "  ! ! ! ! ! ! ; ; ; ; ; ; ; ; ; ; ; ; ; ; % % % % % % / / / / / /GCLLGCLL+ + + + 	8 	8 	8 	8; ; ; ; / / / / 5F4E4G4G	 G G G G,. . . . . $       
    $)       '!*   G/ G/ G/ G/ G/WQZ G/ G/ G/ G/ G/r   