
    (ph                         S r SSKrSSKrSSKJr  \" 5       r\R                  " \5      r	 " S S\R                  5      r " S S\R                  5      r " S S	\R                  5      rg)
z/Helpful utilities related to the stream module.    N)streamc                   0    \ rS rSrSrS rS rS rS rSr	g)	TransformingConsumer   zGA stream.Consumer that passes a transformation of its input to another.c                     Xl         X l        g N)_transformation_downstream)selftransformation
downstreams      X/var/www/html/venv/lib/python3.13/site-packages/grpc/framework/foundation/stream_util.py__init__TransformingConsumer.__init__   s    -%    c                 X    U R                   R                  U R                  U5      5        g r   )r
   consumer	   r   values     r   r   TransformingConsumer.consume    s!      !5!5e!<=r   c                 8    U R                   R                  5         g r   )r
   	terminater   s    r   r   TransformingConsumer.terminate#   s    ""$r   c                 X    U R                   R                  U R                  U5      5        g r   )r
   consume_and_terminater	   r   s     r   r   *TransformingConsumer.consume_and_terminate&   s!    ..t/C/CE/JKr   )r
   r	   N)
__name__
__module____qualname____firstlineno____doc__r   r   r   r   __static_attributes__ r   r   r   r      s    Q&>%Lr   r   c                   B    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
rg)IterableConsumer*   zDA Consumer that when iterated over emits the values it has consumed.c                 T    [         R                  " 5       U l        / U l        SU l        g )NT)	threading	Condition
_condition_values_activer   s    r   r   IterableConsumer.__init__-   s     #--/r   c                     U R                      U R                  (       a5  U R                  R                  U5        U R                   R	                  5         S S S 5        g ! , (       d  f       g = fr   r+   r-   r,   appendnotifyr   s     r   r   IterableConsumer.consume2   s<    __||##E*&&( __s   AA
A+c                     U R                      SU l        U R                   R                  5         S S S 5        g ! , (       d  f       g = fNF)r+   r-   r2   r   s    r   r   IterableConsumer.terminate8   s*    __ DLOO""$ __s	   "8
Ac                     U R                      U R                  (       a<  U R                  R                  U5        SU l        U R                   R	                  5         S S S 5        g ! , (       d  f       g = fr5   r0   r   s     r   r   &IterableConsumer.consume_and_terminate=   sC    __||##E*$&&(	 __s   AA$$
A2c                     U $ r   r$   r   s    r   __iter__IterableConsumer.__iter__D   s    r   c                 "    U R                  5       $ r   )nextr   s    r   __next__IterableConsumer.__next__G   s    yy{r   c                 |   U R                      U R                  (       aO  U R                  (       d>  U R                   R                  5         U R                  (       a  U R                  (       d  M>  U R                  (       a$  U R                  R	                  S5      sS S S 5        $ [        5       e! , (       d  f       g = f)Nr   )r+   r-   r,   waitpopStopIterationr   s    r   r=   IterableConsumer.nextJ   si    __,,t||$$& ,,t|||||||''*	 _ $o% _s   AB-.+B-#
B--
B;)r-   r+   r,   N)r   r   r    r!   r"   r   r   r   r   r:   r>   r=   r#   r$   r   r   r&   r&   *   s(    N
)%
)&r   r&   c                   6    \ rS rSrSrS rS rS rS rS r	Sr
g	)
ThreadSwitchingConsumerT   z?A Consumer decorator that affords serialization and asynchrony.c                 z    [         R                  " 5       U l        Xl        X l        SU l        / U l        SU l        g NFT)r)   Lock_lock_sink_pool	_spinningr,   r-   )r   sinkpools      r   r    ThreadSwitchingConsumer.__init__W   s1    ^^%


 r   c                 j     U[         L a  UR                  5         O+U(       a  UR                  U5        OUR                  U5         U R                     U(       a  SU l         S S S 5        g U R                  (       aE  U R                  R                  S5      nU R                  (       + =(       a    U R                  (       + nO+U R                  (       d	  [         nSnOSU l         S S S 5        g S S S 5        M  ! [         a  n[
        R                  U5         S nANS nAff = f! , (       d  f       N<= f)NTFr   )	_NO_VALUEr   r   r   	Exception_LOGGER	exceptionrK   rN   r,   rB   r-   )r   rO   r   r   es        r   _spinThreadSwitchingConsumer._spina   s    %I%NN$..u5LL' %*DN  \\ LL,,Q/E$(LL 0 E5EI%E $I%*DN    %!!!$$% s4   C8 C8 C8 D$-A8D$8
D!DD!$
D2c                 >   U R                      U R                  (       af  U R                  (       a  U R                  R	                  U5        O9U R
                  R                  U R                  U R                  US5        SU l        S S S 5        g ! , (       d  f       g = frI   	rK   r-   rN   r,   r1   rM   submitrX   rL   r   s     r   r   ThreadSwitchingConsumer.consume{   sZ    ZZ||>>LL''.JJ%%djj$**eUK%)DN ZZs   A8B
Bc                    U R                      U R                  (       aU  SU l        U R                  (       d=  U R                  R	                  U R
                  U R                  [        S5        SU l        S S S 5        g ! , (       d  f       g = frI   )rK   r-   rN   rM   r\   rX   rL   rS   r   s    r   r   !ThreadSwitchingConsumer.terminate   sO    ZZ||$~~JJ%%djj$**iN%)DN ZZs   A'A==
Bc                 L   U R                      U R                  (       am  SU l        U R                  (       a  U R                  R	                  U5        O9U R
                  R                  U R                  U R                  US5        SU l        S S S 5        g ! , (       d  f       g = frI   r[   r   s     r   r   -ThreadSwitchingConsumer.consume_and_terminate   sa    ZZ||$>>LL''.JJ%%djj$**eTJ%)DN ZZs   A?B
B#)r-   rK   rM   rL   rN   r,   N)r   r   r    r!   r"   r   rX   r   r   r   r#   r$   r   r   rF   rF   T   s    I4***r   rF   )r"   loggingr)   grpc.framework.foundationr   objectrS   	getLoggerr   rU   Consumerr   r&   rF   r$   r   r   <module>rg      s_    6   ,H	


H
%L6?? L"'&v '&T@*foo @*r   