B k:pu @ s d dl Z d dlmZ d dlmZmZ d dlmZ yd dlm Z W n e k rX dZ Y nX dddd d dgZyd dlmZ W n$ e k r G d d deZY nX G dd deZG dd dZG dd d eZG dd d eZG dd dZe dkreZ dS ) N)deque)heappushheappop) monotonic)SimpleQueueEmptyFullQueue PriorityQueue LifoQueuer )r c @ s e Zd ZdS )r N)__name__ __module____qualname__ r r */opt/alt/python37/lib64/python3.7/queue.pyr s c @ s e Zd ZdS )r N)r r r r r r r r s c @ s e Zd Zd ddZdd Zdd Zdd Zd d Zdd Zd!ddZ d"ddZ dd Zdd Zdd Z dd Zdd Zdd ZdS )#r r c C sN || _ | | t | _t| j| _t| j| _t| j| _d| _ d S )Nr ) maxsize_init threadingZLockmutexZ Condition not_emptynot_fullall_tasks_doneunfinished_tasks)selfr r r r __init__! s zQueue.__init__c C sH | j 8 | jd }|dkr4|dk r*td| j || _W d 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 zQueue.task_donec C s, | j x| jr| j q W W d Q R X d S )N)r r wait)r r r r joinN s z Queue.joinc C s | j | S Q R X d S )N)r _qsize)r r r r qsize[ s zQueue.qsizec C s | j | S Q R X d S )N)r r )r r r r empty` s zQueue.emptyc C s0 | j d| j k o | kS S Q R X d S )Nr )r r r )r r r r fulln s z Queue.fullTNc C s | j | jdkr|s*| | jkrtnz|d krRxp| | jkrN| j q4W nR|dk rdtdn@t | }x4| | jkr|t }|dkrt| j | qpW | | | jd7 _| j W d Q R X d S )Nr z''timeout' must be a non-negative numberg r )r r r r r r time_putr r notify)r itemblocktimeoutendtime remainingr r r puty s&