Ë
    UV.jo  ã                  ó–   — d Z ddlm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y)zScheduling Utilities.é    )Úannotations)Ú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                  ó2   — e Zd ZdZefd„Zd„ Zd„ Zd„ Zd„ Z	y)r   a2  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| _        y )Nr   )ÚfunÚ	resourcesÚ	predicateÚpos)Úselfr   r   r   s       úXC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\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| j                  «       ‚Y nw xY wŒd)Nr   r   )r   r   Ú
IndexErrorr   )r   Úresources     r   Ú_nextzFairCycle._next'   sb   € Øð+ØŸ>™>¨$¯(©(Ñ3�Ø—’˜A‘•Ø�øÜò +Ø�”Ø—~’~ØŸ.™.Ó*Ð*ñ &ð+úð s   ƒ/3 ³,A"Á!A"c                óÒ   — t        d«      D ](  }| j                  «       }	  | j                  ||fi |¤Žc S  y# | j                  $ r |t	        | j
                  «      dz
  k\  r‚ Y ŒYw xY w)zGet from next resource.r   r   N)r   r   r   r   Úlenr   )r   ÚcallbackÚkwargsÚtriedr   s        r   ÚgetzFairCycle.get2   sk   € ä˜1–XˆEØ—z‘z“|ˆHðØ�t—x‘x ¨(Ñ=°fÑ=Ò=ñ øð —>‘>ò àœC §¡Ó/°!Ñ3Ò3Øñ 4ðús    8¸+A&Á%A&c                 ó   — y)zClose cycle.N© ©r   s    r   ÚclosezFairCycle.close=   ó   � r   c                óN   — dj                  | 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ð 	1r   N)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	Exceptionr   r   r!   r%   r*   r#   r   r   r   r      s%   „ ñ
ð 2;ó ò	+ò	òó1r   r   c                  ó*   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zy)r	   z2Iterator that cycles between items in round-robin.Nc                ó&   — |�|| _         y g | _         y ©N©Úitems©r   Úits     r   r   zround_robin_cycle.__init__I   s   € Ø˜>�Rˆ�
¨rˆ�
r   c                ó"   — || j                   dd y)zUpdate items from iterable.Nr3   r5   s     r   Úupdatezround_robin_cycle.updateL   s   € àˆ�
‰
‘1‰r   c                ó    — | j                   d| S ©zConsume n items.Nr3   ©r   Úns     r   Úconsumezround_robin_cycle.consumeP   s   € à�z‰z˜"˜1ˆ~Ðr   c                óž   — | j                   }	 |j                  |j                  |j                  |«      «      «       |S # t        $ r Y |S w xY w)z,Move most recently used item to end of list.)r4   ÚappendÚpopÚindexÚ
ValueError)r   Ú	last_usedr4   s      r   Úrotatezround_robin_cycle.rotateT   sP   € à—
‘
ˆð	Ø�L‰L˜Ÿ™ 5§;¡;¨yÓ#9Ó:Ô;ð Ðøô ò 	ØØÐð	ús   Ž/? ¿	AÁAr2   )r+   r,   r-   r.   r   r8   r=   rD   r#   r   r   r	   r	   F   s   „ Ù<ó2òòór   r	   c                  ó   — e Zd ZdZd„ Zy)r   z"Cycle that repeats items in order.c                 ó   — y)zUnused in this implementation.Nr#   )r   rC   s     r   rD   zpriority_cycle.rotatea   r&   r   N)r+   r,   r-   r.   rD   r#   r   r   r   r   ^   s
   „ Ù,ó-r   r   c                  ó   — e Zd ZdZd„ Zy)r
   zCycle in sorted order.c                ó2   — t        | j                  d| «      S r:   )r   r4   r;   s     r   r=   zsorted_cycle.consumeh   s   € ä�d—j‘j  !�nÓ%Ð%r   N)r+   r,   r-   r.   r=   r#   r   r   r
   r
   e   s
   „ Ù ó&r   r
   c                ó"   — t        | t        «      S )zGet cycle class by name.)r   ÚCYCLE_ALIASES)Únames    r   Úcycle_by_namerL   m   s   € ä˜$¤Ó.Ð.r   N)r.   Ú
__future__r   Ú	itertoolsr   Úimportsr   Ú__all__rJ   r   r	   r   r
   rL   r#   r   r   Ú<module>rQ      s]   ðÙ å "å å #ð€ð
 8Ø=Ø3ñ€÷/1ñ /1÷dñ ô0-Ð&ô -ô&�>ô &ó/r   