
    -2i                       U d dl mZ dZd dlZd dlm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 )"    )annotations)EventLoopTokenRunvarTokenRunVar
checkpointcheckpoint_if_cancelledcancel_shielded_checkpointcurrent_tokenN)	dataclass)TracebackType)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   r        M/var/www/html/pixcura-vrs/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   r   r   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   r	   r   r   r   r	   r	   6   s8       


8
8
:
::::::::::r   TF)frozenreprc                  (    e Zd ZU dZded<   ded<   dS )r   za
    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   F   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   r
   r   )r$   	raw_tokens     r   r
   r
   S   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   r0   r0   c   s        49;;LLLr   r0   c                  *    e Zd ZdZddZdd	ZddZdS )r   _var_value	_redeemedvar	RunVar[T]value%T | Literal[_NoValueSet.NO_VALUE_SET]c                0    || _         || _        d| _        d S )NFr5   )selfr9   r;   s      r   __init__zRunvarToken.__init__j   s    	=Br   r   RunvarToken[T]c                    | S Nr   r>   s    r   	__enter__zRunvarToken.__enter__o   s    r   exc_typetype[BaseException] | Noneexc_valBaseException | Noneexc_tbTracebackType | Noner   c                :    | j                             |            d S rB   )r6   reset)r>   rE   rG   rI   s       r   __exit__zRunvarToken.__exit__r   s     		r   N)r9   r:   r;   r<   )r   r@   )rE   rF   rG   rH   rI   rJ   r   r   )r'   r(   r)   	__slots__r?   rD   rM   r   r   r   r   r   g   sU        -I   
        r   r   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 )$r   a  
    Like a :class:`~contextvars.ContextVar`, except scoped to the running event loop.

    Can be used as a context manager, Just like :class:`~contextvars.ContextVar`, that
    will reset the variable to its previous value when the context block is exited.
    _name_defaultz!Literal[_NoValueSet.NO_VALUE_SET]r3   namestrdefaultr<   c                "    || _         || _        d S rB   rP   )r>   rS   rU   s      r   r?   zRunVar.__init__   s     
r   r   dict[RunVar[T], T]c                    t                      j        }	 t          |         S # t          $ r i x}t          |<   |cY S w xY wrB   )r
   r&   r.   KeyError)r>   r&   run_varss      r   _current_varszRunVar._current_vars   sQ    $3	\** 	 	 	133Hy.OOO	s   " ==r   T | Dc                    d S rB   r   r>   rU   s     r   getz
RunVar.get   s    (+r   r   c                    d S rB   r   rC   s    r   r_   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)r[   rY   r   r3   rR   LookupErrorrQ   r^   s     r   r_   z
RunVar.get   s    	%%d++ 	% 	% 	%f111f&999}$$$ :9	% JTZJJJ
 
 	
s    A
A
	A
r;   r@   c                z    | j         }t          | |                    | t          j                            }||| <   |S rB   )r[   r   r_   r   r3   )r>   r;   current_varstokens       r   setz
RunVar.set   s;    )D,"2"249L"M"MNN"Tr   rf   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)r6   
ValueErrorr8   r7   r0   r3   r[   rY   )r>   rf   s     r   rL   z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=>)rQ   rC   s    r   __repr__zRunVar.__repr__   s    .tz....r   N)rS   rT   rU   r<   )r   rW   )rU   r   r   r\   )r   r   )rU   ra   r   r\   )r;   r   r   r@   )rf   r@   r   r   )r   rT   )r'   r(   r)   r*   rN   r0   r3   r+   r?   propertyr[   r   r_   rg   rL   rl   r   r   r   r   r   {   s          $I6A6NLNNNN KW             X +++ X+ X @L
 
 
 
 
      "/ / / / / /r   r   )r   r   )r   r   )"
__future__r   __all__r1   dataclassesr   typesr   typingr   r   r   r   r   r   weakrefr   _core._eventloopr   abcr   r   r   r   r   r	   r   r
   r.   r+   Enumr0   r   r   r   r   r   <module>rw      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    $)       '!*   (H/ H/ H/ H/ H/WQZ H/ H/ H/ H/ H/r   