Ë
    øÿæiû  ã                   ó|   — d Z ddlZddlZddlmZ ddlmZ ddlmZ ddlmZ dZ	 G d„ d	ej                  «      Zd
„ Zy)z'Utilities for the gRPC Python Beta API.é    N)Úimplementations)Ú
interfaces)Úcallable_util)Úfuturez6Exception calling connectivity future "done" callback!c                   ó`   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dd	„Z
dd
„Zdd„Zd„ Zd„ Zd„ Zy)Ú_ChannelReadyFuturec                 ón   — t        j                  «       | _        || _        d| _        d| _        g | _        y )NF)Ú	threadingÚ	ConditionÚ
_conditionÚ_channelÚ_maturedÚ
_cancelledÚ_done_callbacks)ÚselfÚchannels     úh/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/grpc/beta/utilities.pyÚ__init__z_ChannelReadyFuture.__init__   s/   € Ü#×-Ñ-Ó/ˆŒØˆŒàˆŒØˆŒØ!ˆÕó    c                 ó¬  — |€d nt        j                   «       |z   }| j                  5  	 | j                  rt        j                  «       ‚| j
                  r
	 d d d «       y |€| j                  j                  «        nL|t        j                   «       z
  }|dk  rt        j                  «       ‚| j                  j                  |¬«       Œ # 1 sw Y   y xY w)Nr   )Útimeout)Útimer   r   r   ÚCancelledErrorr   ÚwaitÚTimeoutError)r   r   ÚuntilÚ	remainings       r   Ú_blockz_ChannelReadyFuture._block'   s¨   € Ø˜‘¬T¯Y©Y«[¸7Ñ-BˆØ�_‹_ØØ—?’?Ü ×/Ñ/Ó1Ð1Ø—=’=Ø÷ ˆ_ð �=Ø—O‘O×(Ñ(Õ*à %¬¯	©	«Ñ 3�IØ  1’}Ü$×1Ñ1Ó3Ð3Ø—O‘O×(Ñ(°Ð(Ô;ð ÷ ˆ_ús   ¨/C
Á A*C
Ã
Cc                 ó¶  — | j                   5  | j                  s|t        j                  j                  u rcd| _        | j                  j                  | j                  «       | j                   j                  «        t        | j                  «      }d | _        n
	 d d d «       y 	 d d d «       D ]  }t        j                  |t        | «       Œ y # 1 sw Y   Œ,xY w)NT)r   r   r   ÚChannelConnectivityÚREADYr   r   ÚunsubscribeÚ_updateÚ
notify_allÚtupler   r   Úcall_logging_exceptionsÚ$_DONE_CALLBACK_EXCEPTION_LOG_MESSAGE)r   ÚconnectivityÚdone_callbacksÚdone_callbacks       r   r#   z_ChannelReadyFuture._update7   s§   € Ø�_‹_à—O’OØ ¤J×$BÑ$B×$HÑ$HÑHà $�”Ø—‘×)Ñ)¨$¯,©,Ô7Ø—‘×*Ñ*Ô,Ü!& t×';Ñ';Ó!<�Ø'+�Õ$à÷ ˆ_ð %÷ ó ,ˆMÜ×1Ñ1ØÔCÀTõñ ,÷ ˆ_ús   �BCÃCc                 ó~  — | j                   5  | j                  scd| _        | j                  j	                  | j
                  «       | j                   j                  «        t        | j                  «      }d | _        n
	 d d d «       y	 d d d «       D ]  }t        j                  |t        | «       Œ y# 1 sw Y   Œ,xY w)NTF)r   r   r   r   r"   r#   r$   r%   r   r   r&   r'   )r   r)   r*   s      r   Úcancelz_ChannelReadyFuture.cancelJ   s˜   € Ø�_‹_Ø—=’=Ø"&�”Ø—‘×)Ñ)¨$¯,©,Ô7Ø—‘×*Ñ*Ô,Ü!& t×';Ñ';Ó!<�Ø'+�Õ$à÷ ˆ_ð %÷ ó ,ˆMÜ×1Ñ1ØÔCÀTõð ,ð
 ÷ ˆ_ús   �A1B3Â3B<c                 ó^   — | j                   5  | j                  cd d d «       S # 1 sw Y   y xY w©N)r   r   ©r   s    r   Ú	cancelledz_ChannelReadyFuture.cancelled\   s   € Ø�_‹_Ø—?‘?÷ �_Š_ús   �#£,c                 ó~   — | j                   5  | j                   xr | j                   cd d d «       S # 1 sw Y   y xY wr.   ©r   r   r   r/   s    r   Úrunningz_ChannelReadyFuture.running`   s)   € Ø�_‹_Ø—‘Ð&Ò<¨t¯}©}Ð+<÷ �_Š_ús   �3³<c                 óz   — | j                   5  | j                  xs | j                  cd d d «       S # 1 sw Y   y xY wr.   r2   r/   s    r   Údonez_ChannelReadyFuture.doned   s#   € Ø�_‹_Ø—?‘?Ò3 d§m¡m÷ �_Š_ús   �1±:Nc                 ó&   — | j                  |«       y r.   ©r   ©r   r   s     r   Úresultz_ChannelReadyFuture.resulth   ó   € Ø�‰�GÕr   c                 ó&   — | j                  |«       y r.   r7   r8   s     r   Ú	exceptionz_ChannelReadyFuture.exceptionk   r:   r   c                 ó&   — | j                  |«       y r.   r7   r8   s     r   Ú	tracebackz_ChannelReadyFuture.tracebackn   r:   r   c                 óÐ   — | j                   5  | j                  s1| j                  s%| j                  j	                  |«       	 d d d «       y d d d «        || «       y # 1 sw Y   ŒxY wr.   )r   r   r   r   Úappend)r   Úfns     r   Úadd_done_callbackz%_ChannelReadyFuture.add_done_callbackq   sG   € Ø�_‹_Ø—?’?¨4¯=ª=Ø×$Ñ$×+Ñ+¨BÔ/Ø÷ �_ˆ_ñ
 	ˆ4�÷ ˆ_ús   �5AÁA%c                 ó”   — | j                   5  | j                  j                  | j                  d¬«       d d d «       y # 1 sw Y   y xY w)NT)Útry_to_connect)r   r   Ú	subscriber#   r/   s    r   Ústartz_ChannelReadyFuture.starty   s.   € Ø�_‹_Ø�M‰M×#Ñ# D§L¡LÀÐ#ÔF÷ �_‰_ús	   �(>¾Ac                 óÀ   — | j                   5  | j                  s1| j                  s%| j                  j	                  | j
                  «       d d d «       y # 1 sw Y   y xY wr.   )r   r   r   r   r"   r#   r/   s    r   Ú__del__z_ChannelReadyFuture.__del__}   s6   € Ø�_‹_Ø—?’?¨4¯=ª=Ø—‘×)Ñ)¨$¯,©,Ô7÷ �_‰_ús   �>AÁAr.   )Ú__name__Ú
__module__Ú__qualname__r   r   r#   r,   r0   r3   r5   r9   r<   r>   rB   rF   rH   © r   r   r   r      sD   „ ò"ò<ò ò&ò$#ò=ò4óóóòòGó8r   r   c                 ó<   — t        | «      }|j                  «        |S )a&  Creates a future.Future tracking when an implementations.Channel is ready.

    Cancelling the returned future.Future does not tell the given
    implementations.Channel to abandon attempts it may have been making to
    connect; cancelling merely deactivates the return future.Future's
    subscription to the given implementations.Channel's connectivity.

    Args:
      channel: An implementations.Channel.

    Returns:
      A future.Future that matures when the given Channel has connectivity
        interfaces.ChannelConnectivity.READY.
    )r   rF   )r   Úready_futures     r   Úchannel_ready_futurerO   ƒ   s    € ô ' wÓ/€LØ×ÑÔØÐr   )Ú__doc__r
   r   Ú	grpc.betar   r   Úgrpc.framework.foundationr   r   r'   ÚFuturer   rO   rL   r   r   Ú<module>rT      s@   ðñ .ã Û õ &Ý  Ý 3Ý ,ð =ð %ô
b8˜&Ÿ-™-ô b8óJr   