File: //lib/python3.12/__pycache__/queue.cpython-312.pyc
�
    )!�h�,  �                   �  � d Z ddlZddlZddlmZ ddlmZmZ ddlm	Z 	 ddl
mZ g d�Z
	 ddl
mZ  G d� de�      Z G d
� d�      Z G d� de�      Z G d� de�      Z G d� d�      Ze�eZyy# e$ r dZY �Ow xY w# e$ r  G d	� d
e�      ZY �Zw xY w)z'A multi-producer, multi-consumer queue.�    N)�deque)�heappush�heappop)�	monotonic)�SimpleQueue)�Empty�Full�Queue�
PriorityQueue�	LifoQueuer   )r   c                   �   � e Zd ZdZy)r   z4Exception raised by Queue.get(block=0)/get_nowait().N��__name__�
__module__�__qualname__�__doc__� �    �/usr/lib/python3.12/queue.pyr   r      s   � �>�r   r   c                   �   � e Zd ZdZy)r	   z4Exception raised by Queue.put(block=0)/put_nowait().Nr   r   r   r   r	   r	      s   � �:�r   r	   c                   �   � e Zd ZdZdd�Zd� Zd� Zd� Zd� Zd� Z	dd	�Z
dd
�Zd� Zd� Z
d
� Zd� Zd� Zd� Z eej(                  �      Zy)r
   zjCreate a queue object with a given maximum size.
    If maxsize is <= 0, the queue size is infinite.
    c                 �L  � || _         | j                  |�       t        j                  �       | _        t        j
                  | j                  �      | _        t        j
                  | j                  �      | _        t        j
                  | j                  �      | _        d| _	        y �Nr   )
�maxsize�_init�	threading�Lock�mutex�	Condition�	not_empty�not_full�all_tasks_done�unfinished_tasks��selfr   s     r   �__init__zQueue.__init__"