Ë
    åU.j�  ã                   ó^   — d Z ddlmZ ddlmZ dgZ G d„ d«      Z ej                  e«       y)zSynchronization primitives.é   )ÚThenable)ÚpromiseÚbarrierc                   óL   — e Zd ZdZ	 	 dd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	dd	„Z
d
„ ZeZy)r   a…  Barrier.

    Synchronization primitive to call a callback after a list
    of promises have been fulfilled.

    Example:

    .. code-block:: python

        # Request supports the .then() method.
        p1 = http.Request('http://a')
        p2 = http.Request('http://b')
        p3 = http.Request('http://c')
        requests = [p1, p2, p3]

        def all_done():
            pass  # all requests complete

        b = barrier(requests).then(all_done)

        # oops, we forgot we want another request
        b.add(http.Request('http://d'))

    Note that you cannot add new promises to a barrier after
    the barrier is fulfilled.
    Nc                 óÈ  — t        «       | _        |xs d| _        |xs i | _        d| _        |xs d| _        | j
                  s!|r|j                  «       }|t        ur|| _        dx| _        | _	        d | _
        d| _        d| _        |xs g D �cg c]  }| j                  |«      ‘Œ c} t        |xs | j
                  «      | _        |r| j                  |«       d}y c c}w )N© é    F)ÚpÚargsÚkwargsÚ_valueÚsizeÚreadyÚreasonÚ	cancelledÚ	finalizedÚ__weakref__Ú__dict__)r   r
   r   r   r   r   Ú__len__ÚNotImplementedr   Úfailedr   r   r   Ú
add_noincrÚboolÚthen)	ÚselfÚpromisesr   r   Úcallbackr   Úplenr
   Ú	__slots__s	            úVC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\vine/synchronization.pyÚ__init__zbarrier.__init__$   sÏ   € ä“ˆŒØ’J˜BˆŒ	Ø’l ˆŒØˆŒØ’I˜AˆŒ	Ø�yŠy™Xð ×#Ñ#Ó%ˆDØœ>Ñ)Ø �”	Ø#(Ð(ˆŒ
�T”[ØˆŒØˆŒØˆŒà%-¢^° ^Ó4¡^ ˆ�‰˜Õ	 ^Ò4Ü˜hÒ3¨$¯)©)Ó4ˆŒÙØ�I‰I�hÔð
‰	ùò 	5s   ÂCc                 ó
  — | j                   sw| j                  sj| xj                  dz  c_        | j                  rH| j                  | j                  k\  r.d| _          | j
                  | j                  i | j                  ¤Ž y y y y y )Nr   T)r   r   r   r   r   r
   r   r   ©r   r   r   s      r    Ú__call__zbarrier.__call__D   sc   € Ø�zŠz $§.¢.Ø�KŠK˜1Ñ�KØ�~Š~ $§+¡+°·±Ò":Ø!�”
Ø�—‘˜Ÿ	™	Ð1 T§[¡[Ó1ð #;ˆ~ð #1ˆzó    c                 ó¨   — | j                   s?| j                  | j                  k\  r& | j                  | j                  i | j
                  ¤Ž d| _         y ©NT)r   r   r   r
   r   r   ©r   s    r    Úfinalizezbarrier.finalizeK   s:   € Ø�~Š~ $§+¡+°·±Ò":ØˆD�F‰F�D—I‘IÐ- §¡Ò-Øˆ�r%   c                 óF   — d| _         | j                  j                  «        y r'   )r   r
   Úcancelr(   s    r    r+   zbarrier.cancelP   s   € ØˆŒØ�‰�‰�r%   c                 ón   — | j                   s)| j                  rt        d«      ‚|j                  | «       y y )Nz"Cannot add promise to full barrier)r   r   Ú
ValueErrorr   ©r   r
   s     r    r   zbarrier.add_noincrT   s,   € Ø�~Š~Ø�zŠzÜ Ð!EÓFÐFØ�F‰F�4�Lð r%   c                 ój   — | j                   s'| j                  |«       | xj                  dz  c_        y y )Nr   )r   r   r   r.   s     r    Úaddzbarrier.addZ   s'   € Ø�~Š~Ø�O‰O˜AÔØ�IŠI˜‰NŽIð r%   c                 ó<   — | j                   j                  ||«       y ©N)r
   r   )r   r   Úerrbacks      r    r   zbarrier.then_   s   € Ø�‰�‰�H˜gÕ&r%   c                 óV   — | j                   s | j                  j                  |i |¤Ž y y r2   )r   r
   Úthrowr#   s      r    r5   zbarrier.throwb   s%   € Ø�~Š~ØˆD�F‰F�L‰L˜$Ð) &Ó)ð r%   )NNNNNr2   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r!   r$   r)   r+   r   r0   r   r5   Úthrow1r   r%   r    r   r      s?   „ ñð6 9=Ø%)ó
ò@2òò
òòó
'ò*ð �Fr%   N)r9   Úabstractr   r   r   Ú__all__r   Úregisterr   r%   r    Ú<module>r>      s4   ðÙ !Ý Ý àˆ+€÷]ñ ]ð@ €× Ñ �'Õ r%   