a
    	3jY                      @   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 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   )events)locksc                   @   s   e Zd ZdS )r   N__name__
__module____qualname__ r   r   J/www/server/python_manager/versions/3.9.10/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	dd 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!   6   s    zQueue._initc                 C   s
   | j  S r%   )r&   popleftr"   r   r   r   _get9   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_nextA   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__I   s    zQueue.__repr__c                 C   s   dt | j d|   dS )Nr5   r6   r7   )r8   r   r:   r)   r   r   r   __str__L   s    zQueue.__str__c                 C   s   | S r%   r   )clsr8   r   r   r   __class_getitem__O   s    zQueue.__class_getitem__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%   )rB   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   rD   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%   )rG   r   create_futurer   r,   cancelremove
ValueError	cancelledr4   
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   )rG   r   r/   r   r   clearr4   r   r-   r   r   r   rM      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%   )rF   r   rH   r   r,   rI   rJ   rK   rL   r4   
get_nowait)r"   getterr   r   r   get   s    

z	Queue.getc                 C   s$   |   rt|  }| | j |S r%   )rF   r   r*   r4   r   r-   r   r   r   rP      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   rK   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*   r/   r4   r;   r<   r>   r:   rD   propertyr#   rF   rG   rN   rM   rR   rP   rS   rU   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%   rE   r'   r   r   r   r!      s    zPriorityQueue._initc                 C   s   || j | d S r%   rE   )r"   r.   heappushr   r   r   r/      s    zPriorityQueue._putc                 C   s
   || j S r%   rE   )r"   heappopr   r   r   r*      s    zPriorityQueue._getN)	r   r   r   r!   heapqrW   r/   rX   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%   rE   r'   r   r   r   r!      s    zLifoQueue._initc                 C   s   | j | d S r%   r+   r-   r   r   r   r/      s    zLifoQueue._putc                 C   s
   | j  S r%   )r&   popr)   r   r   r   r*      s    zLifoQueue._getN)r   r   r   r!   r/   r*   r   r   r   r   r      s   r   )__all__r   rY   r    r   r	   	Exceptionr   r   r   r   r   r   r   r   r   <module>   s    N