???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................U
    if\,                     @   s   d dl Z d dlmZ d dlmZmZ d dlmZ zd dlm	Z	 W n e
k
rX   dZ	Y nX dddd	d
dgZzd dlmZ W n$ e
k
r   G dd deZY nX G dd deZG dd dZG dd	 d	eZG dd
 d
eZG dd dZe	dkreZ	dS )    N)deque)heappushheappop)	monotonic)SimpleQueueEmptyFullQueuePriorityQueue	LifoQueuer   )r   c                   @   s   e Zd ZdS )r   N__name__
__module____qualname__ r   r   */opt/alt/python38/lib64/python3.8/queue.pyr      s   c                   @   s   e Zd ZdS )r   Nr   r   r   r   r   r      s   c                   @   s   e Zd Zd ddZdd Zdd Zdd	 Zd
d Zdd Zd!ddZ	d"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   c                 C   sN   || _ | | t | _t| j| _t| j| _t| j| _d| _	d S Nr   )
maxsize_init	threadingZLockmutexZ	Condition	not_emptynot_fullall_tasks_doneunfinished_tasksselfr   r   r   r   __init__!   s    

zQueue.__init__c              	   C   sH   | j 8 | jd }|dkr4|dk r*td| j   || _W 5 Q R X d S )N   r   z!task_done() called too many times)r   r   
ValueErrorZ
notify_all)r   Z
unfinishedr   r   r   	task_done8   s    

zQueue.task_donec              	   C   s(   | j  | jr| j   qW 5 Q R X d S N)r   r   waitr   r   r   r   joinN   s    	z
Queue.joinc              
   C   s&   | j  |  W  5 Q R  S Q R X d S r!   r   _qsizer#   r   r   r   qsize[   s    zQueue.qsizec              
   C   s(   | j  |   W  5 Q R  S Q R X d S r!   r%   r#   r   r   r   empty`   s    zQueue.emptyc              
   C   s<   | j , d| j  k o |  kn  W  5 Q R  S Q R X d S r   )r   r   r&   r#   r   r   r   fulln   s    z
Queue.fullTNc              	   C   s   | j  | jdkr|s*|  | jkrtnr|d krN|  | jkr| j   q2nN|dk r`tdn<t | }|  | jkr|t  }|dkrt| j | qj| | |  jd7  _| j	
  W 5 Q R X d S )Nr   ''timeout' must be a non-negative number        r   )r   r   r&   r   r"   r   time_putr   r   notify)r   itemblocktimeoutendtime	remainingr   r   r   puty   s&    




z	Queue.putc              
   C   s   | j  |s|  stnf|d kr8|  s| j   q"nH|dk rJtdn6t | }|  s|t  }|dkrrt| j | qT|  }| j  |W  5 Q R  S Q R X d S )Nr   r*   r+   )	r   r&   r   r"   r   r,   _getr   r.   )r   r0   r1   r2   r3   r/   r   r   r   get   s$    



z	Queue.getc                 C   s   | j |ddS NF)r0   r4   r   r/   r   r   r   
put_nowait   s    zQueue.put_nowaitc                 C   s   | j ddS r7   r6   r#   r   r   r   
get_nowait   s    zQueue.get_nowaitc                 C   s   t  | _d S r!   )r   queuer   r   r   r   r      s    zQueue._initc                 C   s
   t | jS r!   lenr=   r#   r   r   r   r&      s    zQueue._qsizec                 C   s   | j | d S r!   r=   appendr9   r   r   r   r-      s    z
Queue._putc                 C   s
   | j  S r!   )r=   popleftr#   r   r   r   r5      s    z
Queue._get)r   )TN)TN)r   r   r   r   r    r$   r'   r(   r)   r4   r6   r:   r<   r   r&   r-   r5   r   r   r   r   r	      s   

 
c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
r
   c                 C   s
   g | _ d S r!   r=   r   r   r   r   r      s    zPriorityQueue._initc                 C   s
   t | jS r!   r>   r#   r   r   r   r&      s    zPriorityQueue._qsizec                 C   s   t | j| d S r!   )r   r=   r9   r   r   r   r-      s    zPriorityQueue._putc                 C   s
   t | jS r!   )r   r=   r#   r   r   r   r5      s    zPriorityQueue._getNr   r   r   r   r&   r-   r5   r   r   r   r   r
      s   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
r   c                 C   s
   g | _ d S r!   rC   r   r   r   r   r      s    zLifoQueue._initc                 C   s
   t | jS r!   r>   r#   r   r   r   r&      s    zLifoQueue._qsizec                 C   s   | j | d S r!   r@   r9   r   r   r   r-      s    zLifoQueue._putc                 C   s
   | j  S r!   )r=   popr#   r   r   r   r5      s    zLifoQueue._getNrD   r   r   r   r   r      s   c                   @   sH   e Zd Zdd ZdddZdddZd	d
 Zdd Zdd Zdd Z	dS )_PySimpleQueuec                 C   s   t  | _td| _d S r   )r   _queuer   Z	Semaphore_countr#   r   r   r   r   	  s    z_PySimpleQueue.__init__TNc                 C   s   | j | | j  d S r!   )rG   rA   rH   release)r   r/   r0   r1   r   r   r   r4     s    z_PySimpleQueue.putc                 C   s4   |d k	r|dk rt d| j||s*t| j S )Nr   r*   )r   rH   acquirer   rG   rB   )r   r0   r1   r   r   r   r6     s
    z_PySimpleQueue.getc                 C   s   | j |ddS r7   r8   r9   r   r   r   r:   '  s    z_PySimpleQueue.put_nowaitc                 C   s   | j ddS r7   r;   r#   r   r   r   r<   /  s    z_PySimpleQueue.get_nowaitc                 C   s   t | jdkS r   r?   rG   r#   r   r   r   r(   7  s    z_PySimpleQueue.emptyc                 C   s
   t | jS r!   rK   r#   r   r   r   r'   ;  s    z_PySimpleQueue.qsize)TN)TN)
r   r   r   r   r4   r6   r:   r<   r(   r'   r   r   r   r   rF      s   

	
rF   )r   collectionsr   heapqr   r   r,   r   rG   r   ImportError__all__r   	Exceptionr   r	   r
   r   rF   r   r   r   r   <module>   s(   
 BA