o
0i, @ s d dl Z d dlZd dlmZ d dlmZmZ d dlmZ zd dl m
Z
W n ey0 dZ
Y nw g dZzd dl m
Z
W n eyN G dd d eZ
Y nw G d
d deZG dd
d
ZG dd deZG dd deZG dd dZe
du r}eZ
dS dS ) N)deque)heappushheappop) monotonic)SimpleQueue)EmptyFullQueue
PriorityQueue LifoQueuer )r c @ e Zd Z dS )r N__name__
__module____qualname__ r r ,/opt/alt/python310/lib64/python3.10/queue.pyr r c @ r )r Nr
r r r r r r r c @ s e Zd Z d ddZdd Zdd Zdd Zd
d Zdd
Zd!ddZ d!ddZ
dd Zdd Zdd Z
dd Zdd Zdd ZeejZdS )"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_tasksselfr r r r __init__" s
zQueue.__init__c C s` | j " | jd }|dkr|dk rtd| j || _W d d S 1 s)w Y d S )N r z!task_done() called too many times)r r
ValueErrorZ
notify_all)r Z
unfinishedr r r task_done9 s
"zQueue.task_donec C sT | j | jr| j | jsW d d S W d d S 1 s#w Y d S N)r r waitr r r r joinO s
"z
Queue.joinc C s4 | j | W d S 1 sw Y d S r# r _qsizer% r r r qsize\ s $zQueue.qsizec C s6 | j
| W d S 1 sw Y d S r# r' r% r r r emptya s
$zQueue.emptyc C sJ | j d| j k o| kn W d S 1 sw Y d S r )r r r( r% r r r fullo s $z
Queue.fullTNc C s | j o | jdkrZ|s| | jkrtnD|d u r.| | jkr-| j | | jks!n,|dk r6tdt | }| | jkrZ|t }|dkrMt| j | | | jksB| | | jd7 _| j
W d d S 1 svw Y d S )Nr ''timeout' must be a non-negative number r )r r r( r r$ r! time_putr r notify)r itemblocktimeoutendtime remainingr r r putz s2
"z Queue.putc C s | j T |s| s
tn8|d u r | s| j | rn&|dk r(tdt | }| sF|t }|dkr