o
    'h                     @  sZ   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 dej	Z
dddddZdS )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                      sH   e Zd Zddd fd	d
Zdd fddZdddZdddZ  ZS )_TaskNnamecoroCoroutine[Any, Any, Any]r   Optional[str]returnNonec                  s$   t  j||d d| _t|  d S )Nr   r   )super__init___cancel_requestsasyncio_register_task)selfr	   r   	__class__ Q/var/www/html/olx_land/venv/lib/python3.10/site-packages/pymongo/_asyncio_task.pyr      s   z_Task.__init__msgboolc                   s   |  j d7  _ t j|dS )N   )r   )r   r   cancel)r   r   r   r   r   r   !   s   z_Task.cancelintc                 C  s   | j dkr|  j d8  _ | j S )Nr   r   r   r   r   r   r   uncancel%   s   
z_Task.uncancelc                 C  s   | j S Nr   r   r   r   r   
cancelling*   s   z_Task.cancelling)r	   r
   r   r   r   r   r    )r   r   r   r   )r   r   )__name__
__module____qualname__r   r   r   r!   __classcell__r   r   r   r   r      s
    
r   r   r	   r
   r   r   r   asyncio.Taskc                C  s$   t jdkrtj| |dS t| |dS )N)      r   )sysversion_infor   create_taskr   )r	   r   r   r   r   r+   .   s   
r+   )r	   r
   r   r   r   r&   )__doc__
__future__r   r   r)   typingr   r   r   Taskr   r+   r   r   r   r   <module>   s   