Ë
    ómxiŒ  ã                   óÔ   — d Z ddlZddlZddlmZ  e«       Z ej                  e«      Z	 G d„ dej                  «      Z G d„ dej                  «      Z G d„ d	ej                  «      Zy)
z/Helpful utilities related to the stream module.é    N)Ústreamc                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)ÚTransformingConsumerzGA stream.Consumer that passes a transformation of its input to another.c                 ó    — || _         || _        y ©N)Ú_transformationÚ_downstream)ÚselfÚtransformationÚ
downstreams      ú\/home/htdocs/ttos/venv/lib/python3.12/site-packages/grpc/framework/foundation/stream_util.pyÚ__init__zTransformingConsumer.__init__   s   € Ø-ˆÔØ%ˆÕó    c                 óX   — | j                   j                  | j                  |«      «       y r   )r	   Úconsumer   ©r
   Úvalues     r   r   zTransformingConsumer.consume    s!   € Ø×Ñ× Ñ  ×!5Ñ!5°eÓ!<Õ=r   c                 ó8   — | j                   j                  «        y r   )r	   Ú	terminate©r
   s    r   r   zTransformingConsumer.terminate#   s   € Ø×Ñ×"Ñ"Õ$r   c                 óX   — | j                   j                  | j                  |«      «       y r   )r	   Úconsume_and_terminater   r   s     r   r   z*TransformingConsumer.consume_and_terminate&   s!   € Ø×Ñ×.Ñ.¨t×/CÑ/CÀEÓ/JÕKr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   © r   r   r   r      s   „ ÙQò&ò>ò%óLr   r   c                   ó:   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
ÚIterableConsumerzDA Consumer that when iterated over emits the values it has consumed.c                 óR   — t        j                  «       | _        g | _        d| _        y )NT)Ú	threadingÚ	ConditionÚ
_conditionÚ_valuesÚ_activer   s    r   r   zIterableConsumer.__init__-   s    € Ü#×-Ñ-Ó/ˆŒØˆŒØˆ�r   c                 óÈ   — | j                   5  | j                  r5| j                  j                  |«       | j                   j	                  «        d d d «       y # 1 sw Y   y xY wr   ©r#   r%   r$   ÚappendÚnotifyr   s     r   r   zIterableConsumer.consume2   sG   € Ø�_‰_ñ 	)Ø�|Š|Ø—‘×#Ñ# EÔ*Ø—‘×&Ñ&Ô(÷	)÷ 	)ñ 	)ús   �AAÁA!c                 óˆ   — | j                   5  d| _        | j                   j                  «        d d d «       y # 1 sw Y   y xY w©NF)r#   r%   r)   r   s    r   r   zIterableConsumer.terminate8   s5   € Ø�_‰_ñ 	%Ø ˆDŒLØ�O‰O×"Ñ"Ô$÷	%÷ 	%ñ 	%ús	   �"8¸Ac                 óÖ   — | j                   5  | j                  r<| j                  j                  |«       d| _        | j                   j	                  «        d d d «       y # 1 sw Y   y xY wr+   r'   r   s     r   r   z&IterableConsumer.consume_and_terminate=   sN   € Ø�_‰_ñ 	)Ø�|Š|Ø—‘×#Ñ# EÔ*Ø$�”Ø—‘×&Ñ&Ô(÷		)÷ 	)ñ 	)ús   �A	AÁA(c                 ó   — | S r   r   r   s    r   Ú__iter__zIterableConsumer.__iter__D   s   € Øˆr   c                 ó"   — | j                  «       S r   )Únextr   s    r   Ú__next__zIterableConsumer.__next__G   s   € Ø�y‰y‹{Ðr   c                 ó>  — | j                   5  | j                  r?| j                  s3| j                   j                  «        | j                  r| j                  sŒ3| j                  r$| j                  j	                  d«      cd d d «       S t        «       ‚# 1 sw Y   y xY w)Nr   )r#   r%   r$   ÚwaitÚpopÚStopIterationr   s    r   r0   zIterableConsumer.nextJ   sr   € Ø�_‰_ñ 	"Ø—,’, t§|¢|Ø—‘×$Ñ$Ô&ð —,’, t§|£|à�|Š|Ø—|‘|×'Ñ'¨Ó*÷		"ñ 	"ô
  “/Ð!÷	"ð 	"ús   �ABÁ&BÂ	
BÂBN)r   r   r   r   r   r   r   r   r.   r1   r0   r   r   r   r   r   *   s(   „ ÙNòò
)ò%ò
)òòó"r   r   c                   ó.   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚThreadSwitchingConsumerz?A Consumer decorator that affords serialization and asynchrony.c                 ó|   — t        j                  «       | _        || _        || _        d| _        g | _        d| _        y ©NFT)r!   ÚLockÚ_lockÚ_sinkÚ_poolÚ	_spinningr$   r%   )r
   ÚsinkÚpools      r   r   z ThreadSwitchingConsumer.__init__V   s5   € Ü—^‘^Ó%ˆŒ
ØˆŒ
ØˆŒ
ð ˆŒØˆŒØˆ�r   c                 ó  — 	 	 |t         u r|j                  «        n%|r|j                  |«       n|j                  |«       | j                  5  |rd| _        	 d d d «       y | j                  r8| j                  j                  d«      }| j                   xr | j                   }n&| j                  s	t         }d}nd| _        	 d d d «       y d d d «       ŒÒ# t        $ r}t
        j                  |«       Y d }~Œ¶d }~ww xY w# 1 sw Y   Œ5xY w)NTFr   )Ú	_NO_VALUEr   r   r   Ú	ExceptionÚ_LOGGERÚ	exceptionr;   r>   r$   r4   r%   )r
   r?   r   r   Úes        r   Ú_spinzThreadSwitchingConsumer._spin`   sð   € Øð%ØœIÑ%Ø—N‘NÕ$ÙØ×.Ñ.¨uÕ5à—L‘L Ô'ð —‘ñ ÙØ%*�D”NØ÷ð ð —<’<Ø ŸL™L×,Ñ,¨QÓ/�EØ$(§L¡LÐ 0Ò E¸¿¹Ð5E‘IØŸšÜ%�EØ $‘Ià%*�D”NØ÷÷ ð ð øô ò %Ü×!Ñ! !×$Ñ$ûð%ú÷ð ús*   ƒ>C ÁC?Á!A!C?Ã	C<ÃC7Ã7C<Ã?Dc                 ó   — | j                   5  | j                  ra| j                  r| j                  j	                  |«       n9| j
                  j                  | j                  | j                  |d«       d| _        d d d «       y # 1 sw Y   y xY wr9   ©	r;   r%   r>   r$   r(   r=   ÚsubmitrG   r<   r   s     r   r   zThreadSwitchingConsumer.consumez   se   € Ø�Z‰Zñ 	*Ø�|Š|Ø—>’>Ø—L‘L×'Ñ'¨Õ.à—J‘J×%Ñ% d§j¡j°$·*±*¸eÀUÔKØ%)�D”N÷	*÷ 	*ñ 	*ús   �A.BÂBc                 óþ   — | j                   5  | j                  rPd| _        | j                  s=| j                  j	                  | j
                  | j                  t        d«       d| _        d d d «       y # 1 sw Y   y xY wr9   )r;   r%   r>   r=   rJ   rG   r<   rB   r   s    r   r   z!ThreadSwitchingConsumer.terminateƒ   sZ   € Ø�Z‰Zñ 	*Ø�|Š|Ø$�”Ø—~’~Ø—J‘J×%Ñ% d§j¡j°$·*±*¼iÈÔNØ%)�D”N÷	*÷ 	*ñ 	*ús   �AA3Á3A<c                 ó.  — | j                   5  | j                  rhd| _        | j                  r| j                  j	                  |«       n9| j
                  j                  | j                  | j                  |d«       d| _        d d d «       y # 1 sw Y   y xY wr9   rI   r   s     r   r   z-ThreadSwitchingConsumer.consume_and_terminate‹   sl   € Ø�Z‰Zñ 	*Ø�|Š|Ø$�”Ø—>’>Ø—L‘L×'Ñ'¨Õ.à—J‘J×%Ñ% d§j¡j°$·*±*¸eÀTÔJØ%)�D”N÷	*÷ 	*ñ 	*ús   �A5BÂBN)	r   r   r   r   r   rG   r   r   r   r   r   r   r7   r7   S   s   „ ÙIòòò4*ò*ó*r   r7   )r   Úloggingr!   Úgrpc.framework.foundationr   ÚobjectrB   Ú	getLoggerr   rD   ÚConsumerr   r   r7   r   r   r   ú<module>rR      sa   ðñ 6ã Û å ,á‹H€	Ø
ˆ'×
Ñ
˜HÓ
%€ôL˜6Ÿ?™?ô Lô"&"�v—‘ô &"ôR@*˜fŸo™oõ @*r   