
    nh                    p    d Z ddlmZ ddlZddlZddlmZmZmZ  G d dej                        Z
ddd	dZy)
zA custom asyncio.Task that allows checking if a task has been sent a cancellation request.
Can be removed once we drop Python 3.10 support in favor of asyncio.Task.cancelling.    )annotationsN)Any	CoroutineOptionalc                  D     e Zd Zddd fdZdd	 fdZd
dZd
dZ xZS )_TaskNnamec               `    t         |   ||       d| _        t        j                  |        y )Nr	   r   )super__init___cancel_requestsasyncio_register_task)selfcoror
   	__class__s      {/var/www/html/SchoolMeal/SchoolMeal/pds_admin_SchoolMeal/Backend/venv/lib/python3.12/site-packages/pymongo/_asyncio_task.pyr   z_Task.__init__   s+    D) !t$    c                N    | xj                   dz  c_         t        | 	  |      S )N   )msg)r   r   cancel)r   r   r   s     r   r   z_Task.cancel!   s%    "w~#~&&r   c                b    | j                   dkD  r| xj                   dz  c_         | j                   S )Nr   r   r   r   s    r   uncancelz_Task.uncancel%   s-      1$!!Q&!$$$r   c                    | j                   S Nr   r   s    r   
cancellingz_Task.cancelling*   s    $$$r   )r   Coroutine[Any, Any, Any]r
   Optional[str]returnNoner   )r   r"   r#   bool)r#   int)__name__
__module____qualname__r   r   r   r    __classcell__)r   s   @r   r   r      s    PT %
'%
%r   r   r	   c               p    t         j                  dk\  rt        j                  | |      S t	        | |      S )N)      r	   )sysversion_infor   create_taskr   )r   r
   s     r   r0   r0   .   s0    
7"""4d33D!!r   )r   r!   r
   r"   r#   zasyncio.Task)__doc__
__future__r   r   r.   typingr   r   r   Taskr   r0    r   r   <module>r6      s8   X #  
 + +%GLL %& JN "r   