
     h>                         d Z ddlmZ ddlmZ dZdddd	Z G d
 d          Z G d d          Z G d de          Z	 G d de	          Z
d ZdS )zScheduling Utilities.    )count   )symbol_by_name)	FairCyclepriority_cycleround_robin_cyclesorted_cyclez%kombu.utils.scheduling:priority_cyclez(kombu.utils.scheduling:round_robin_cyclez#kombu.utils.scheduling:sorted_cycle)priorityround_robinsortedc                   4    e Zd ZdZefdZd Zd Zd Zd Z	dS )r   a$  Cycle between resources.

    Consume from a set of resources, where each resource gets
    an equal chance to be consumed from.

    Arguments:
        fun (Callable): Callback to call.
        resources (Sequence[Any]): List of resources.
        predicate (type): Exception predicate.
    c                 >    || _         || _        || _        d| _        d S )Nr   )fun	resources	predicatepos)selfr   r   r   s       R/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/kombu/utils/scheduling.py__init__zFairCycle.__init__   s"    ""    c                     	 	 | j         | j                 }| xj        dz  c_        |S # t          $ r% d| _        | j         s|                                 Y nw xY wX)Nr   r   )r   r   
IndexErrorr   )r   resources     r   _nextzFairCycle._next$   sy    	++>$(3A + + +~ +..***+ ++	+s   #' ,AAc                     t          d          D ]S}|                                 }	  | j        ||fi |c S # | j        $ r |t	          | j                  dz
  k    r Y Pw xY wdS )zGet from next resource.r   r   N)r   r   r   r   lenr   )r   callbackkwargstriedr   s        r   getzFairCycle.get/   s    1XX 	 	Ezz||Htx(==f=====>   C//!333 43		 	s   8&A! A!c                     dS )zClose cycle.N r   s    r   closezFairCycle.close:         r   c                 T    d                     | t          | j                            S )z``repr(cycle)``.z/<FairCycle: {self.pos}/{size} {self.resources}>)r   size)formatr   r   r#   s    r   __repr__zFairCycle.__repr__=   s/    @GGC// H 1 1 	1r   N)
__name__
__module____qualname____doc__	Exceptionr   r   r    r$   r)   r"   r   r   r   r      ss        	 	 2;    	+ 	+ 	+	 	 	  1 1 1 1 1r   r   c                   ,    e Zd ZdZddZd Zd Zd ZdS )r   z2Iterator that cycles between items in round-robin.Nc                     ||ng | _         d S Nitemsr   its     r   r   zround_robin_cycle.__init__F   s    >RRr


r   c                     || j         dd<   dS )zUpdate items from iterable.Nr2   r4   s     r   updatezround_robin_cycle.updateI   s    
111r   c                      | j         d|         S zConsume n items.Nr2   r   ns     r   consumezround_robin_cycle.consumeM   s    z"1"~r   c                     | j         }	 |                    |                    |                    |                               n# t          $ r Y nw xY w|S )z,Move most recently used item to end of list.)r3   appendpopindex
ValueError)r   	last_usedr3   s      r   rotatezround_robin_cycle.rotateQ   sa    
	LL5;;y#9#9::;;;; 	 	 	D	s   ;A 
AAr1   )r*   r+   r,   r-   r   r7   r<   rC   r"   r   r   r   r   C   s[        <<2 2 2 2        r   r   c                       e Zd ZdZd ZdS )r   z"Cycle that repeats items in order.c                     dS )zUnused in this implementation.Nr"   )r   rB   s     r   rC   zpriority_cycle.rotate^   r%   r   N)r*   r+   r,   r-   rC   r"   r   r   r   r   [   s)        ,,- - - - -r   r   c                       e Zd ZdZd ZdS )r	   zCycle in sorted order.c                 :    t          | j        d|                   S r9   )r   r3   r:   s     r   r<   zsorted_cycle.consumee   s    dj!n%%%r   N)r*   r+   r,   r-   r<   r"   r   r   r	   r	   b   s)          & & & & &r   r	   c                 ,    t          | t                    S )zGet cycle class by name.)r   CYCLE_ALIASES)names    r   cycle_by_namerK   j   s    $...r   N)r-   	itertoolsr   importsr   __all__rI   r   r   r   r	   rK   r"   r   r   <module>rO      s           # # # # # #
 8=3 .1 .1 .1 .1 .1 .1 .1 .1b       0- - - - -& - - -& & & & &> & & &/ / / / /r   