
    c3                         d Z dZddlmZmZ ddlmZ ddlZdZdZ	dZ
ee	e
dZ ed	 ej                         D              Z G d
 dej                        Z G d d      Zy)zPrioritized tasks queuezrestructuredtext en    )IteratorList)insort_leftN
   d   )LOWMEDIUMHIGHc              #   *   K   | ]  \  }}||f  y wN ).0keyvaluess      ;/usr/lib/python3/dist-packages/logilab/common/tasksqueue.py	<genexpr>r   $   s     J+#vJs   c                   N    e Zd ZdeddfdZddZddZded   fdZd	e	ddfd
Z
y)PrioritizedTasksQueuemaxsizereturnNc                      || _         g | _        y)z#Initialize the queue representationN)r   queue)selfr   s     r   _initzPrioritizedTasksQueue._init(   s    #%
    Taskc                     t        | j                        D ]B  \  }}||k(  s||k  r |j                  |       | j                  |=  n|j                  |        y t        | j                  |       y)zPut a new item in the queueN)	enumerater   merger   )r   itemitasks       r   _putzPrioritizedTasksQueue._put.   sg     , 	GAtt| $;JJt$

1

4 	 	DJJ%r   c                 6    | j                   j                         S )zGet an item from the queue)r   popr   s    r   _getzPrioritizedTasksQueue._get>   s    zz~~r   c                 ,    t        | j                        S r   )iterr   r&   s    r   __iter__zPrioritizedTasksQueue.__iter__B   s    DJJr   tidc                     t        |       D ]1  \  }}|j                  |k(  s| j                  j                  |        y t	        d|z        )z%remove a specific task from the queueNznot task of id %s in queue)r   idr   r%   
ValueError)r   r+   r!   r"   s       r   removezPrioritizedTasksQueue.removeE   sL     ! 	GAtww#~

q!	 5;<<r   )r    r   r   N)r   r   )__name__
__module____qualname__intr   r#   r'   r   r*   strr/   r   r   r   r   r   '   sC    &S &T &&   (6*  =# =$ =r   r   c                   p    e Zd ZefdededdfdZdefdZdd defdZ	de
defd	Ze
j                  Zdd
Zy)r   r+   priorityr   Nc                      || _         || _        y r   )r-   r6   )r   r+   r6   s      r   __init__zTask.__init__P   s     r   c                 6    d| j                   t        |       fz  S )Nz<Task %s @%#x>)r-   r&   s    r   __repr__zTask.__repr__V   s    477BtH"555r   otherc                 4    | j                   |j                   k  S r   )r6   r   r;   s     r   __lt__zTask.__lt__Y   s    }}u~~--r   c                 b    t        |t        |             xr | j                  |j                  k(  S r   )
isinstancetyper-   r=   s     r   __eq__zTask.__eq__\   s%    %d,DEHH1DDr   c                      y r   r   r=   s     r   r   z
Task.mergea   s    r   )r;   r   r   N)r0   r1   r2   r   r4   r3   r8   r:   boolr>   objectrB   __hash__r   r   r   r   r   r   O   sd    14 !C !3 ! !6# 6.F .t .EF Et E Hr   r   )__doc____docformat__typingr   r   bisectr   r   r   r	   r
   PRIORITYdictitemsREVERSE_PRIORITYQueuer   r   r   r   r   <module>rP      sp   $ % "  	
 
 J9IJJ %=EKK %=P r   