a
    "Rhq                      @   s   d Z ddlZddlZddlZddlmZ ddlmZ ddlmZ G dd de	Z
G d	d
 d
e	ZG dd dZG dd deZG dd deZdS ))QueuePriorityQueue	LifoQueue	QueueFull
QueueEmpty    N)GenericAlias   )events)locksc                   @   s   e Zd ZdS )r   N__name__
__module____qualname__ r   r   6/opt/python-3.9.24/usr/lib/python3.9/asyncio/queues.pyr      s   r   c                   @   s   e Zd ZdS )r   Nr   r   r   r   r   r      s   r   c                   @   s   e Zd Zd(ddddZdd Zdd	 Zd
d Zdd Zdd Zdd Z	e
eZdd Zdd Zedd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' ZdS ))r   r   Nloopc                C   sp   |d u rt  | _n|| _tjdtdd || _t | _	t | _
d| _tj|d| _| j  | | d S )Nz[The loop argument is deprecated since Python 3.8, and scheduled for removal in Python 3.10.   )
stacklevelr   r   )r	   Zget_event_loop_loopwarningswarnDeprecationWarning_maxsizecollectionsdeque_getters_putters_unfinished_tasksr
   Event	_finishedset_init)selfmaxsizer   r   r   r   __init__"   s    


zQueue.__init__c                 C   s   t  | _d S N)r   r   _queuer#   r$   r   r   r   r"   7   s    zQueue._initc                 C   s
   | j  S r&   )r'   popleftr#   r   r   r   _get:   s    z
Queue._getc                 C   s   | j | d S r&   r'   appendr#   itemr   r   r   _put=   s    z
Queue._putc                 C   s&   |r"|  }| s |d  q"q d S r&   )r)   done
set_result)r#   waiterswaiterr   r   r   _wakeup_nextB   s
    
zQueue._wakeup_nextc                 C   s(   dt | j dt| dd|   dS )N<z at z#x >)typer   id_formatr*   r   r   r   __repr__J   s    zQueue.__repr__c                 C   s   dt | j d|   dS )Nr6   r7   r8   )r9   r   r;   r*   r   r   r   __str__M   s    zQueue.__str__c                 C   s~   d| j }t| dd r,|dt| j7 }| jrH|dt| j d7 }| jrd|dt| j d7 }| jrz|d| j 7 }|S )Nzmaxsize=r'   z _queue=z
 _getters[]z
 _putters[z tasks=)r   getattrlistr'   r   lenr   r   )r#   resultr   r   r   r;   R   s    zQueue._formatc                 C   s
   t | jS r&   )rA   r'   r*   r   r   r   qsize^   s    zQueue.qsizec                 C   s   | j S r&   )r   r*   r   r   r   r$   b   s    zQueue.maxsizec                 C   s   | j  S r&   r'   r*   r   r   r   emptyg   s    zQueue.emptyc                 C   s    | j dkrdS |  | j kS d S )Nr   F)r   rC   r*   r   r   r   fullk   s    
z
Queue.fullc                    s   |   r| j }| j| z|I d H  W q    |  z| j| W n ty^   Y n0 |   s|| s|| 	| j  Y q 0 q | 
|S r&   )rF   r   create_futurer   r-   cancelremove
ValueError	cancelledr5   
put_nowait)r#   r/   Zputterr   r   r   putv   s    

z	Queue.putc                 C   s>   |   rt| | |  jd7  _| j  | | j d S )Nr   )rF   r   r0   r   r    clearr5   r   r.   r   r   r   rL      s    

zQueue.put_nowaitc                    s   |   r| j }| j| z|I d H  W q    |  z| j| W n ty^   Y n0 |   s|| s|| 	| j  Y q 0 q | 
 S r&   )rE   r   rG   r   r-   rH   rI   rJ   rK   r5   
get_nowait)r#   getterr   r   r   get   s    

z	Queue.getc                 C   s$   |   rt|  }| | j |S r&   )rE   r   r+   r5   r   r.   r   r   r   rO      s
    zQueue.get_nowaitc                 C   s8   | j dkrtd|  j d8  _ | j dkr4| j  d S )Nr   z!task_done() called too many timesr   )r   rJ   r    r!   r*   r   r   r   	task_done   s
    

zQueue.task_donec                    s   | j dkr| j I d H  d S )Nr   )r   r    waitr*   r   r   r   join   s    
z
Queue.join)r   )r   r   r   r%   r"   r+   r0   r5   r<   r=   classmethodr   __class_getitem__r;   rC   propertyr$   rE   rF   rM   rL   rQ   rO   rR   rT   r   r   r   r   r      s(   
r   c                   @   s0   e Zd Zdd ZejfddZejfddZdS )r   c                 C   s
   g | _ d S r&   rD   r(   r   r   r   r"      s    zPriorityQueue._initc                 C   s   || j | d S r&   rD   )r#   r/   heappushr   r   r   r0      s    zPriorityQueue._putc                 C   s
   || j S r&   rD   )r#   heappopr   r   r   r+      s    zPriorityQueue._getN)	r   r   r   r"   heapqrX   r0   rY   r+   r   r   r   r   r      s   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )r   c                 C   s
   g | _ d S r&   rD   r(   r   r   r   r"      s    zLifoQueue._initc                 C   s   | j | d S r&   r,   r.   r   r   r   r0      s    zLifoQueue._putc                 C   s
   | j  S r&   )r'   popr*   r   r   r   r+      s    zLifoQueue._getN)r   r   r   r"   r0   r+   r   r   r   r   r      s   r   )__all__r   rZ   r   typesr    r	   r
   	Exceptionr   r   r   r   r   r   r   r   r   <module>   s    M