
    Ng=                    "
   d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
mZmZmZmZmZmZmZmZm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dlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlm Z  ddlm!Z! ddlm"Z" ddlm#Z# ddl$Z ej%        e&          Z'd(                    ej)                  Z*dZ+ ej,        d          duZ-ej.        j/        ej.        j0        ej.        j1        ej.        j2        ej.        j3        ej.        j4        fZ5ej.        j/        ej.        j0        ej.        j1        ej.        j2        ej.        j4        fZ6ej.        j/        ej.        j2        ej.        j3        ej.        j4        fZ7ej.        j/        ej.        j2        ej.        j4        fZ8dZ9dZ:dZ;dee<         dee<         fdZ=deej>                 dee?         de?fdZ@ G d deA          ZBdeBdej>        de?ddfd ZCd!ejD        deBd"ee         dee          fd#ZEdeBd"ee         de#fd$ZFd%edeBd&eejG        ejH        f         d'e"d(ee#         ddfd)ZId*e?d+eBde?fd,ZJ G d- d.ejK        ejL        ejM                  ZN G d/ d0ejK        ejO                  ZP G d1 d2ePejL        ejM                  ZQ G d3 d4ePejL        ejM                  ZRd5e
dee<         d'e"deee<         eeS         eejK                 f         fd6ZTdeBd&ejH        d7eUd8ee<         dee!ee!ejL        f         f         f
d9ZVd:ee         d;eWdeeejX                          fd<ZYd:ee         d;eWdeeeejX                 ee#         f                  fd=ZZd>ee<         dee<         fd?Z[ G d@ dAej\                  Z] G dB dCej^                  Z_ G dD dEej^                  Z` G dF dGeja                  Zb G dH dIejc                  Zd G dJ dKeW          Ze G dL dMeA          ZfdefddfdNZgdeffdOZh G dP dQeA          Zideideeejj        gdf                  fdRZkdeidSejj        dTeeejj        gdf                  ddfdUZldeidVeeejj        gdf                  ddfdWZmdeidXejn        dYeUddfdZZodeid[eejj        gdf         d\eUddfd]Zpdeid[eejj        gdf         ddfd^Zqd_ee         d`eejr                 dee         fdaZsdbee         deee         ee         f         fdcZt G dd deejn                  ZndS )fz.Invocation-side implementation of gRPC Python.    N)
AnyCallableDictIteratorListOptionalSequenceSetTupleUnion)_common)_compression)_grpcio_metadata)_observability)cygrpc)ChannelArgumentType)DeserializingFunction)IntegratedCallFactory)MetadataType)NullaryCallbackType)ResponseType)SerializingFunction)UserTagzgrpc-python/{}!GRPC_SINGLE_THREADED_UNARY_STREAMz0Exception calling channel subscription callback!z?<{} of RPC that terminated with:
	status = {}
	details = "{}"
>zZ<{} of RPC that terminated with:
	status = {}
	details = "{}"
	debug_error_string = "{}"
>timeoutreturnc                 6    | d nt          j                     | z   S N)timer   s    I/var/www/html/ai-engine/env/lib/python3.11/site-packages/grpc/_channel.py	_deadliner"   m   s    ?44	g(==    unknown_cygrpc_codedetailsc                 .    d                     | |          S )Nz,Server sent unknown code {} and details "{}")format)r$   r%   s     r!   _unknown_code_detailsr(   q   s!     :@@W  r#   c                      e Zd ZU ej        ed<   eej                 ed<   e	e
         ed<   eed<   e	e
         ed<   e	ej                 ed<   e	e         ed<   e	e         ed<   eed	<   ee         ed
<   e	e         ed<   e	e         ed<   e	e         ed<   e	e         ed<   e	e         ed<   deej                 de	e
         de	e
         de	ej                 de	e         f
dZd ZdS )	_RPCState	conditiondueinitial_metadataresponsetrailing_metadatacoder%   debug_error_string	cancelled	callbacks
fork_epochrpc_start_timerpc_end_timemethodtargetc                 6   t          j                    | _        t          |          | _        || _        d | _        || _        || _        || _	        d | _
        d | _        d | _        d | _        d | _        d| _        g | _        t#          j                    | _        d S NF)	threading	Conditionr+   setr,   r-   r.   r/   r0   r%   r1   r5   r6   r7   r8   r2   r3   r   get_fork_epochr4   )selfr,   r-   r/   r0   r%   s         r!   __init__z_RPCState.__init__   s     #,.. s88 0!2	"& #   /11r#   c                 6    t          j                    | _        d S r   )r;   r<   r+   r?   s    r!   reset_postfork_childz_RPCState.reset_postfork_child   s    ",..r#   N)__name__
__module____qualname__r;   r<   __annotations__r
   r   OperationTyper   r   r   grpc
StatusCodestrboolr   r   intfloatr	   r@   rC    r#   r!   r*   r*   y   ss        """"	V!	""""|,,,,MMM----
4?
####c] %%%OOO'((((UO###5/!!!SMSM&2f*+&2 #<0&2 $L1	&2
 t'&2 #&2 &2 &2 &2P/ / / / /r#   r*   stater0   c                 ^    | j         %|| _         || _        | j        d| _        d| _        d S d S NrO   )r0   r%   r-   r/   )rP   r0   r%   s      r!   _abortrS      s?    z
!)%'E""$ r#   eventresponse_deserializerc                    g }| j         D ]}|                                }|j                            |           |t          j        j        k    r|                                |_        `|t          j        j        k    rX|	                                }|At          j        ||          }|#d}t          |t          j        j        |           ||_        |t          j        j        k    r|                                |_        |j        t          j                            |                                          }	|	>t          j        j        |_        t/          |	|                                          |_        n9|	|_        |                                |_        |                                |_        t7          j                    |_        t=          j        |           |                     |j!                   d |_!        |S )Nz!Exception deserializing response!)"batch_operationstyper,   remover   rH   receive_initial_metadatar-   receive_messagemessager   deserializerS   rI   rJ   INTERNALr.   receive_status_on_clientr/   r0   !CYGRPC_STATUS_CODE_TO_STATUS_CODEgetUNKNOWNr(   r%   error_stringr1   r   perf_counterr6   r   maybe_record_rpc_latencyextendr3   )
rT   rP   rU   r3   batch_operationoperation_typeserialized_responser.   r%   r0   s
             r!   _handle_eventrj      s   
 I 1 "# "#(--//	(((V1JJJ%4%E%E%G%GE""v3CCC"1"9"9";";".".')>  #AG5$/":GDDDD%-ENv3LLL&5&G&G&I&IE#z!@DD#((**  <!%!8EJ$9o5577% %EMM "&EJ$3$;$;$=$=EM/>/K/K/M/ME,!%!2!4!4E3E:::U_---"EOr#   c                       fd}|S )Nc           	         j         5  t          |           }j                                          j         }d d d            n# 1 swxY w Y   |D ]Y}	  |             # t          $ r?}t          j        dt          |j                  t          |                     Y d }~Rd }~ww xY w|oj	        t          j                    k    S )NzException in callback %s: %s)r+   rj   
notify_allr,   	Exceptionloggingerrorreprfuncr4   r   r>   )rT   r3   donecallbackerU   rP   s        r!   handle_eventz$_event_handler.<locals>.handle_event   s5   _ 	! 	!%eU4IJJIO&&(((y=D	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! " 	 	H



    2D4G4Ga        C(F,A,C,CCCs)   3AAA
A##
B,-5B''B,rO   )rP   rU   rv   s   `` r!   _event_handlerrw      s0    D D D D D D  r#   request_iteratorcallrequest_serializerevent_handlerc                       fd}t          j        |          }|                    d           |                                 dS )z'Consume a request supplied by the user.c            	         	 d} 	 t          j                     t          
          }n# t          $ r Y | st          j                     nmt
          $ r t          j                     d} t          j        j        }d}t          
                    |                               t          j        |         |           t          ||           Y | st          j                     d S d S w xY w	 | st          j                     n# | st          j                     w w xY wt          j        |          }j        5  j        Nj        sF|Xt          j        j        }d}                    t          j        |         |           t          ||           	 d d d            d S j                            t           j        j                   t          j        |t2                    f}                    |	          }|s7j                            t           j        j                   	 d d d            d S fd}t          j        j        j        |t;          j        t           j                             j        	 d d d            d S n	 d d d            d S 	 d d d            n# 1 swxY w Y   j        5  j        j                            t           j        j                    t          j!        t2                    f}                    |	          }|s)j                            t           j        j                    d d d            d S # 1 swxY w Y   d S )NTFzException iterating requests!Exception serializing request!c                  F     j         d upt          j        j         j        vS r   )r0   r   rH   send_messager,   )rP   s   r!   _donezJ_consume_request_iterator.<locals>.consume_request_iterator.<locals>._done=  s*     %
$ 6 !1#)#7#D',y$1r#   )spin_cb)"r   enter_user_request_generatornextStopIteration"return_from_user_request_generatorrn   rI   rJ   rb   _LOGGER	exceptioncancelr   !STATUS_CODE_TO_CYGRPC_STATUS_CODErS   	serializer+   r0   r2   r^   r,   addrH   r   SendMessageOperation_EMPTY_FLAGSoperaterY   wait	functoolspartialblock_if_fork_in_progresssend_close_from_clientSendCloseFromClientOperation)*return_from_user_request_generator_invokedrequestr0   r%   serialized_request
operations	operatingr   ry   r{   rx   rz   rP   s           r!   consume_request_iteratorz;_consume_request_iterator.<locals>.consume_request_iterator  s   ?	9>6@3555/00     B @=???  
 
 
9;;;=A:.9!!'***=dCW   udG,,,A @=?????@ @
  B @=??? B @=????@!(!27<N!O!O ( (:%eo%)1#7"B#EdK#   udG444( ( ( ( ( ( ( ( 	f&:&GHHH"7 2L &

 %)LL]$K$K	( #!I,,V-A-NOOO"+( ( ( ( ( ( ( (.      !O0!$-$5 & @%% %    !:1"M( ( ( ( ( ( ( (J 2 Q( ( ( ( ( ( ( (J 2K( ( ( ( ( ( ( ( ( ( ( ( ( ( (/?	@ _ 
	 
	z!	f2IJJJ7EE
 !LL]CC	  I$$,C  
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	sl   ") D 
C(D BC(D 'C((D D9AJ+$BJ+7AJ+J++J/2J/?BMMMr8   TNr   ForkManagedThread	setDaemonstart)rx   rP   ry   rz   r{   r   consumption_threads   `````  r!   _consume_request_iteratorr     s    M M M M M M M M M^  1'     &&&r#   
class_name	rpc_statec                    |j         5  |j        !d                    |           cddd           S |j        t          j        j        u r2t                              | |j        |j                  cddd           S t                              | |j        |j        |j	                  cddd           S # 1 swxY w Y   dS )z Calculates error string for RPC.Nz<{} object>)
r+   r0   r'   rI   rJ   OK_OK_RENDEZVOUS_REPR_FORMATr%   _NON_OK_RENDEZVOUS_REPR_FORMATr1   )r   r   s     r!   _rpc_state_stringr   b  s4   		  >! ''
33        ^t111-44INI,= 	        288!,	                  s   B3=B3;+B33B7:B7c                      e Zd ZU dZeed<   defdZdee         fdZ	dee         fdZ
deej                 fdZdee         fd	Zdee         fd
ZdefdZdefdZdefdZdefdZdefdZdefdZdefdZ	 ddee         defdZ	 ddee         dee         fdZ	 ddee         deej                 fdZ 	 dde!ej"        gdf         dee         ddfdZ#dS )_InactiveRpcErrorzAn RPC error not tied to the execution of a particular RPC.

    The RPC represented by the state object must not be in-progress or
    cancelled.

    Attributes:
      _state: An instance of _RPCState.
    _staterP   c           
         |j         5  t          dt          j        |j                  t          j        |j                  |j        t          j        |j                            | _        t          j        |j	                  | j        _	        t          j        |j
                  | j        _
        d d d            d S # 1 swxY w Y   d S rR   )r+   r*   copydeepcopyr-   r/   r0   r%   r   r.   r1   r?   rP   s     r!   r@   z_InactiveRpcError.__init__  s    _ 		Q 		Q#e455e566
em,, DK $(9U^#<#<DK -1Yu7O-P-PDK*		Q 		Q 		Q 		Q 		Q 		Q 		Q 		Q 		Q 		Q 		Q 		Q 		Q 		Q 		Q 		Q 		Q 		Qs   B)B>>CCr   c                     | j         j        S r   r   r-   rB   s    r!   r-   z"_InactiveRpcError.initial_metadata  s    {++r#   c                     | j         j        S r   r   r/   rB   s    r!   r/   z#_InactiveRpcError.trailing_metadata  s    {,,r#   c                     | j         j        S r   r   r0   rB   s    r!   r0   z_InactiveRpcError.code  s    {r#   c                 >    t          j        | j        j                  S r   )r   decoder   r%   rB   s    r!   r%   z_InactiveRpcError.details  s    ~dk1222r#   c                 >    t          j        | j        j                  S r   )r   r   r   r1   rB   s    r!   r1   z$_InactiveRpcError.debug_error_string  s    ~dk<===r#   c                 @    t          | j        j        | j                  S r   r   	__class__rD   r   rB   s    r!   _reprz_InactiveRpcError._repr       !8$+FFFr#   c                 *    |                                  S r   r   rB   s    r!   __repr__z_InactiveRpcError.__repr__      zz||r#   c                 *    |                                  S r   r   rB   s    r!   __str__z_InactiveRpcError.__str__  r   r#   c                     dS )zSee grpc.Future.cancel.FrO   rB   s    r!   r   z_InactiveRpcError.cancel      ur#   c                     dS )zSee grpc.Future.cancelled.FrO   rB   s    r!   r2   z_InactiveRpcError.cancelled  r   r#   c                     dS )zSee grpc.Future.running.FrO   rB   s    r!   runningz_InactiveRpcError.running  r   r#   c                     dS )zSee grpc.Future.done.TrO   rB   s    r!   rs   z_InactiveRpcError.done  s    tr#   Nr   c                     | )zSee grpc.Future.result.rO   r?   r   s     r!   resultz_InactiveRpcError.result  s	     
r#   c                     | S )zSee grpc.Future.exception.rO   r   s     r!   r   z_InactiveRpcError.exception  s	     r#   c                 d    	 | # t           j        $ r t          j                    d         cY S w xY w)zSee grpc.Future.traceback.   )rI   RpcErrorsysexc_infor   s     r!   	tracebackz_InactiveRpcError.traceback  s@    	%J} 	% 	% 	%<>>!$$$$	%s    (//fnc                      ||            dS )z"See grpc.Future.add_done_callback.NrO   )r?   r   r   s      r!   add_done_callbackz#_InactiveRpcError.add_done_callback  s     	4r#   r   )$rD   rE   rF   __doc__r*   rG   r@   r   r   r-   r/   rI   rJ   r0   rK   r%   r1   r   r   r   rL   r   r2   r   rs   rN   r   r   rn   r   typesTracebackTyper   r   Futurer   rO   r#   r!   r   r   t  s          
Qi 
Q 
Q 
Q 
Q,(<"8 , , , ,-8L#9 - - - - ht/        3# 3 3 3 3>HSM > > > >Gs G G G G#            4        d    
 *. 	    *. 	)	    *.% %%	%%	&% % % % $( dk]D() % 
	     r#   r   c            	       r    e Zd ZU dZeed<   eej        ej	        f         ed<   e
e         ed<   e
e         ed<   dedeej        ej	        f         de
e         d	e
e         f fd
ZdefdZde
e         fdZdefdZdedefdZd Zd Zd Zd Zde
e         fdZdefdZdefdZdefdZddZ xZS )_Rendezvousa  An RPC iterator.

    Attributes:
      _state: An instance of _RPCState.
      _call: An instance of SegregatedCall or IntegratedCall.
        In either case, the _call object is expected to have operate, cancel,
        and next_event methods.
      _response_deserializer: A callable taking bytes and return a Python
        object.
      _deadline: A float representing the deadline of the RPC in seconds. Or
        possibly None, to represent an RPC with no deadline at all.
    r   _call_response_deserializerr"   rP   ry   rU   deadlinec                     t          t          |                                            || _        || _        || _        || _        d S r   )superr   r@   r   r   r   r"   )r?   rP   ry   rU   r   r   s        r!   r@   z_Rendezvous.__init__  sB     	k4  ))+++
&;#!r#   r   c                 j    | j         j        5  | j         j        du cddd           S # 1 swxY w Y   dS )zSee grpc.RpcContext.is_activeNr   r+   r0   rB   s    r!   	is_activez_Rendezvous.is_active  s~    [" 	, 	,;#t+	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,   (,,c                     | j         j        5  | j        	 ddd           dS t          | j        t	          j                    z
  d          cddd           S # 1 swxY w Y   dS )z"See grpc.RpcContext.time_remainingNr   )r   r+   r"   maxr   rB   s    r!   time_remainingz_Rendezvous.time_remaining  s    [" 	< 	<~%	< 	< 	< 	< 	< 	< 	< 	< 4>DIKK7;;		< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s   	A(AAAc                    | j         j        5  | j         j        t          j        j        }d}| j                            t          j	        |         |           d| j         _
        t          | j         ||           | j         j                                         	 ddd           dS 	 ddd           dS # 1 swxY w Y   dS )zSee grpc.RpcContext.cancelNz!Locally cancelled by application!TF)r   r+   r0   rI   rJ   	CANCELLEDr   r   r   r   r2   rS   rm   )r?   r0   r%   s      r!   r   z_Rendezvous.cancel  s   [" 	 	{'0=
!!=dCW   )-%t{D'222%00222	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   BB4&B44B8;B8rt   c                     | j         j        5  | j         j        	 ddd           dS | j         j                            |           	 ddd           dS # 1 swxY w Y   dS )z See grpc.RpcContext.add_callbackNFT)r   r+   r3   appendr?   rt   s     r!   add_callbackz_Rendezvous.add_callback  s    [" 	 	{$,	 	 	 	 	 	 	 	 %,,X666	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A AAAc                     | S r   rO   rB   s    r!   __iter__z_Rendezvous.__iter__      r#   c                 *    |                                  S r   _nextrB   s    r!   r   z_Rendezvous.next  r   r#   c                 *    |                                  S r   r   rB   s    r!   __next__z_Rendezvous.__next__  r   r#   c                     t                      r   NotImplementedErrorrB   s    r!   r   z_Rendezvous._next!      !###r#   c                     t                      r   r   rB   s    r!   r1   z_Rendezvous.debug_error_string$  r   r#   c                 @    t          | j        j        | j                  S r   r   rB   s    r!   r   z_Rendezvous._repr'  r   r#   c                 *    |                                  S r   r   rB   s    r!   r   z_Rendezvous.__repr__*  r   r#   c                 *    |                                  S r   r   rB   s    r!   r   z_Rendezvous.__str__-  r   r#   Nc                    | j         j        5  | j         j        t          j        j        | j         _        d| j         _        d| j         _        | j        	                    t          j        | j         j                 | j         j                   | j         j                                         d d d            d S # 1 swxY w Y   d S )Nz"Cancelled upon garbage collection!T)r   r+   r0   rI   rJ   r   r%   r2   r   r   r   r   rm   rB   s    r!   __del__z_Rendezvous.__del__0  s    [" 		3 		3{'#'?#< &J#(,%
!!=dk>NOK'   %00222		3 		3 		3 		3 		3 		3 		3 		3 		3 		3 		3 		3 		3 		3 		3 		3 		3 		3s   BB77B;>B;r   N)rD   rE   rF   r   r*   rG   r   r   SegregatedCallIntegratedCallr   r   rN   r@   rL   r   r   r   r   r   r   r   r   r   rK   r1   r   r   r   r  __classcell__r   s   @r!   r   r     s          &(==>>>>$%:;;;;"" F)6+@@A"  ((=>	"
 5/" " " " " ",4 , , , ,
< < < < <     %8 T          $ $ $$HSM $ $ $ $Gs G G G G#        
3 
3 
3 
3 
3 
3 
3 
3r#   r   c                      e Zd ZU dZeed<   defdZdefdZdefdZ	defdZ
dd	ee         defd
Zdd	ee         dee         fdZ	 dd	ee         deej                 fdZdeej        gdf         ddfdZdee         fdZdee         fdZdeej                 fdZdee         fdZdeej                  fdZ!defdZ"defdZ#dee         fdZ$dS )_SingleThreadedRendezvousaN  An RPC iterator operating entirely on a single thread.

    The __next__ method of _SingleThreadedRendezvous does not depend on the
    existence of any other thread, including the "channel spin thread".
    However, this means that its interface is entirely synchronous. So this
    class cannot completely fulfill the grpc.Future interface. The result,
    exception, and traceback methods will never block and will instead raise
    an exception if calling the method would result in blocking.

    This means that these methods are safe to call from add_done_callback
    handlers.
    r   r   c                     | j         j        d uS r   r   rB   s    r!   _is_completez&_SingleThreadedRendezvous._is_completeO      {t++r#   c                 f    | j         j        5  | j         j        cd d d            S # 1 swxY w Y   d S r   r   r+   r2   rB   s    r!   r2   z#_SingleThreadedRendezvous.cancelledR  y    [" 	) 	);(	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)   &**c                 j    | j         j        5  | j         j        d u cd d d            S # 1 swxY w Y   d S r   r   rB   s    r!   r   z!_SingleThreadedRendezvous.runningV  ~    [" 	, 	,;#t+	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,r   c                 j    | j         j        5  | j         j        d ucd d d            S # 1 swxY w Y   d S r   r   rB   s    r!   rs   z_SingleThreadedRendezvous.doneZ  ~    [" 	0 	0;#4/	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0r   Nr   c                 J   ~| j         j        5  |                                 st          j                            d          | j         j        t          j        j        u r| j         j	        cddd           S | j         j
        rt          j                    | # 1 swxY w Y   dS )a9  Returns the result of the computation or raises its exception.

        This method will never block. Instead, it will raise an exception
        if calling this method would otherwise result in blocking.

        Since this method will never block, any `timeout` argument passed will
        be ignored.
        zJ_SingleThreadedRendezvous only supports result() when the RPC is complete.N)r   r+   r
  rI   experimental
UsageErrorr0   rJ   r   r.   r2   FutureCancelledErrorr   s     r!   r   z _SingleThreadedRendezvous.result^  s     [" 	 	$$&& '22(   {4?#555{+	 	 	 	 	 	 	 	 & /111
	 	 	 	 	 	 	 	 	 	s   AB7!BBBc                 N   ~| j         j        5  |                                 st          j                            d          | j         j        t          j        j        u r	 ddd           dS | j         j	        rt          j
                    | cddd           S # 1 swxY w Y   dS )a*  Return the exception raised by the computation.

        This method will never block. Instead, it will raise an exception
        if calling this method would otherwise result in blocking.

        Since this method will never block, any `timeout` argument passed will
        be ignored.
        zM_SingleThreadedRendezvous only supports exception() when the RPC is complete.N)r   r+   r
  rI   r  r  r0   rJ   r   r2   r  r   s     r!   r   z#_SingleThreadedRendezvous.exceptionu  s    [" 	 	$$&& '22,   {4?#555	 	 	 	 	 	 	 	 & /111	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AB- BB!Bc                    ~| j         j        5  |                                 st          j                            d          | j         j        t          j        j        u r	 ddd           dS | j         j	        rt          j
                    	 | # t          j        $ r( t          j                    d         cY cddd           S w xY w# 1 swxY w Y   dS )a;  Access the traceback of the exception raised by the computation.

        This method will never block. Instead, it will raise an exception
        if calling this method would otherwise result in blocking.

        Since this method will never block, any `timeout` argument passed will
        be ignored.
        zM_SingleThreadedRendezvous only supports traceback() when the RPC is complete.Nr   )r   r+   r
  rI   r  r  r0   rJ   r   r2   r  r   r   r   r   s     r!   r   z#_SingleThreadedRendezvous.traceback  sE    [" 	- 	-$$&& '22,   {4?#555	- 	- 	- 	- 	- 	- 	- 	- & -/111-J} - - -<>>!,,,	- 	- 	- 	- 	- 	- 	- 	--	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s6   AC	-C	B(C7C	CC		CCr   c                     | j         j        5  | j         j        @| j         j                            t          j        ||                      	 d d d            d S 	 d d d            n# 1 swxY w Y    ||            d S r   r   r+   r0   r3   r   r   r   r?   r   s     r!   r   z+_SingleThreadedRendezvous.add_done_callback      [" 	 	{'%,,Y->r4-H-HIII	 	 	 	 	 	 	 	'	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 	4   A A''A+.A+c                     | j         j        5  | j         j         |                                  | j         j         | j         j        cddd           S # 1 swxY w Y   dS )See grpc.Call.initial_metadataN)r   r+   r-   _consume_next_eventrB   s    r!   r-   z*_SingleThreadedRendezvous.initial_metadata  s    [" 	0 	0 +.6((*** +.6;/	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   8AAAc                     | j         j        5  | j         j        t          j                            d          | j         j        cddd           S # 1 swxY w Y   dS )See grpc.Call.trailing_metadataNz4Cannot get trailing metadata until RPC is completed.)r   r+   r/   rI   r  r  rB   s    r!   r/   z+_SingleThreadedRendezvous.trailing_metadata  s    [" 	1 	1{,4'22J   ;0	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1   7AAAc                     | j         j        5  | j         j        t          j                            d          | j         j        cddd           S # 1 swxY w Y   dS )See grpc.Call.codeNz'Cannot get code until RPC is completed.)r   r+   r0   rI   r  r  rB   s    r!   r0   z_SingleThreadedRendezvous.code  s    [" 	$ 	${''22=   ;#	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$r$  c                     | j         j        5  | j         j        t          j                            d          t          j        | j         j                  cddd           S # 1 swxY w Y   dS )See grpc.Call.detailsNz*Cannot get details until RPC is completed.)r   r+   r%   rI   r  r  r   r   rB   s    r!   r%   z!_SingleThreadedRendezvous.details  s    [" 	7 	7{"*'22@   >$+"566	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7   A	A##A'*A'c                     | j                                         }| j        j        5  t	          || j        | j                  }|D ]} |             	 d d d            n# 1 swxY w Y   |S r   )r   
next_eventr   r+   rj   r   )r?   rT   r3   rt   s       r!   r!  z-_SingleThreadedRendezvous._consume_next_event  s    
%%''[" 	 	%t{D$? I &   



		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s   +AA"%A"c                    	 |                                   | j        j        5  | j        j        &| j        j        }d | j        _        |cd d d            S t          j        j        | j        j        vr9| j        j        t          j
        j        u rt                      | j        j        | d d d            n# 1 swxY w Y   r   )r!  r   r+   r.   r   rH   r[   r,   r0   rI   rJ   r   r   )r?   r.   s     r!   _next_responsez(_SingleThreadedRendezvous._next_response  s   	#$$&&&& # #;'3#{3H+/DK(#	# # # # # # # # (8OO{'4?+===+oo-)5"
# # # # # # # # # # # # # # #	#s   &B7AB77B;>B;c                    | j         j        5  | j         j        | j         j                            t
          j        j                   | j        	                    t          j
        t                    fd           }|s.| j         j                            t
          j        j                   n-| j         j        t          j        j        u rt!                      | d d d            n# 1 swxY w Y   |                                 S r   )r   r+   r0   r,   r   r   rH   r[   r   r   ReceiveMessageOperationr   rY   rI   rJ   r   r   r-  )r?   r   s     r!   r   z_SingleThreadedRendezvous._next  s   [" 	 	{' ##F$8$HIII J..3LAACT 	 ! QKO**6+?+OPPP!T_%777#oo%
-	 	 	 	 	 	 	 	 	 	 	 	 	 	 	. ""$$$s   CC%%C),C)c                     | j         j        5  | j         j        t          j                            d          t          j        | j         j                  cd d d            S # 1 swxY w Y   d S )Nz5Cannot get debug error string until RPC is completed.)r   r+   r1   rI   r  r  r   r   rB   s    r!   r1   z,_SingleThreadedRendezvous.debug_error_string
  s    [" 	B 	B{-5'22K   >$+"@AA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Br)  r   )%rD   rE   rF   r   r*   rG   rL   r
  r2   r   rs   r   rN   r   r   rn   r   r   r   r   r   rI   r   r   r   r-   r/   rJ   r0   rK   r%   r   	BaseEventr!  r-  r   r1   rO   r#   r!   r  r  =  s_          ,d , , , ,)4 ) ) ) ), , , , ,0d 0 0 0 0 huo     . % HY<O    0 *.- --	%%	&- - - -8Hdk]D-@$A d    0(<"8 0 0 0 018L#9 1 1 1 1$ht/ $ $ $ $7# 7 7 7 7
Xf.>%? 
 
 
 
# # # # # %s % % % %4BHSM B B B B B Br#   r  c                      e Zd ZU dZeed<   dee         fdZdee         fdZ	dee
j                 fdZdee         fdZdee         fdZdefd	Zdefd
ZdefdZdefdZddee         defdZddee         dee         fdZ	 ddee         deej                 fdZdee
j        gdf         ddfdZdefdZ dS )_MultiThreadedRendezvousa  An RPC iterator that depends on a channel spin thread.

    This iterator relies upon a per-channel thread running in the background,
    dequeueing events from the completion queue, and notifying threads waiting
    on the threading.Condition object in the _RPCState object.

    This extra thread allows _MultiThreadedRendezvous to fulfill the grpc.Future interface
    and to mediate a bidirection streaming RPC.
    r   r   c                       j         j        5   fd}t          j         j         j        j        |            j         j        cddd           S # 1 swxY w Y   dS )r   c                        j         j        d uS r   r   rB   s   r!   r   z8_MultiThreadedRendezvous.initial_metadata.<locals>._done&  s    {34??r#   N)r   r+   r   r   r-   r?   r   s   ` r!   r-   z)_MultiThreadedRendezvous.initial_metadata"  s    [" 	0 	0@ @ @ @ @ L.3U;;;;/	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0   5AAAc                       j         j        5   fd}t          j         j         j        j        |            j         j        cddd           S # 1 swxY w Y   dS )r#  c                        j         j        d uS r   r   rB   s   r!   r   z9_MultiThreadedRendezvous.trailing_metadata.<locals>._done0  s    {4D@@r#   N)r   r+   r   r   r/   r6  s   ` r!   r/   z*_MultiThreadedRendezvous.trailing_metadata,  s    [" 	1 	1A A A A A L.3U;;;;0	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1r7  c                       j         j        5   fd}t          j         j         j        j        |            j         j        cddd           S # 1 swxY w Y   dS )r&  c                        j         j        d uS r   r   rB   s   r!   r   z,_MultiThreadedRendezvous.code.<locals>._done:  s    {'t33r#   N)r   r+   r   r   r0   r6  s   ` r!   r0   z_MultiThreadedRendezvous.code6  s    [" 	$ 	$4 4 4 4 4 L.3U;;;;#	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$r7  c                       j         j        5   fd}t          j         j         j        j        |           t          j         j         j                  cddd           S # 1 swxY w Y   dS )r(  c                        j         j        d uS r   )r   r%   rB   s   r!   r   z/_MultiThreadedRendezvous.details.<locals>._doneD  s    {*$66r#   N)r   r+   r   r   r   r%   r6  s   ` r!   r%   z _MultiThreadedRendezvous.details@  s    [" 	7 	77 7 7 7 7 L.3U;;;>$+"566	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7   AA""A&)A&c                       j         j        5   fd}t          j         j         j        j        |           t          j         j         j                  cd d d            S # 1 swxY w Y   d S )Nc                        j         j        d uS r   )r   r1   rB   s   r!   r   z:_MultiThreadedRendezvous.debug_error_string.<locals>._doneM  s    {5TAAr#   )r   r+   r   r   r   r1   r6  s   ` r!   r1   z+_MultiThreadedRendezvous.debug_error_stringJ  s    [" 	B 	BB B B B B L.3U;;;>$+"@AA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Br>  c                 f    | j         j        5  | j         j        cd d d            S # 1 swxY w Y   d S r   r  rB   s    r!   r2   z"_MultiThreadedRendezvous.cancelledS  r  r  c                 j    | j         j        5  | j         j        d u cd d d            S # 1 swxY w Y   d S r   r   rB   s    r!   r   z _MultiThreadedRendezvous.runningW  r  r   c                 j    | j         j        5  | j         j        d ucd d d            S # 1 swxY w Y   d S r   r   rB   s    r!   rs   z_MultiThreadedRendezvous.done[  r  r   c                     | j         j        d uS r   r   rB   s    r!   r
  z%_MultiThreadedRendezvous._is_complete_  r  r#   Nr   c                 b   | j         j        5  t          j        | j         j        j        | j        |          }|rt          j                    | j         j        t
          j        j	        u r| j         j
        cddd           S | j         j        rt          j                    | # 1 swxY w Y   dS )zReturns the result of the computation or raises its exception.

        See grpc.Future.result for the full API contract.
        r    N)r   r+   r   r   r
  rI   FutureTimeoutErrorr0   rJ   r   r.   r2   r  r?   r   	timed_outs      r!   r   z_MultiThreadedRendezvous.resultb  s    
 [" 	 	%*D,=w  I  -///;#t'999;/	 	 	 	 	 	 	 	 [* 3555J	 	 	 	 	 	 	 	 	 	s   A)B$!B$$B(+B(c                 f   | j         j        5  t          j        | j         j        j        | j        |          }|rt          j                    | j         j        t
          j        j	        u r	 ddd           dS | j         j
        rt          j                    | cddd           S # 1 swxY w Y   dS )zvReturn the exception raised by the computation.

        See grpc.Future.exception for the full API contract.
        r    N)r   r+   r   r   r
  rI   rF  r0   rJ   r   r2   r  rG  s      r!   r   z"_MultiThreadedRendezvous.exceptionu  s   
 [" 	  	 %*D,=w  I   -///;#t'999	  	  	  	  	  	  	  	  [*  3555	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   AB&9 B&&B*-B*c                    | j         j        5  t          j        | j         j        j        | j        |          }|rt          j                    | j         j        t
          j        j	        u r	 ddd           dS | j         j
        rt          j                    	 | # t
          j        $ r( t          j                    d         cY cddd           S w xY w# 1 swxY w Y   dS )zAccess the traceback of the exception raised by the computation.

        See grpc.future.traceback for the full API contract.
        r    Nr   )r   r+   r   r   r
  rI   rF  r0   rJ   r   r2   r  r   r   r   rG  s      r!   r   z"_MultiThreadedRendezvous.traceback  sM    [" 	1 	1%*D,=w  I  1-///;#t'999	1 	1 	1 	1 	1 	1 	1 	1 [* 135551"
= 1 1 1"|~~a000	1 	1 	1 	1 	1 	1 	1 	11	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s6   AC9CB(CCCCCCr   c                     | j         j        5  | j         j        @| j         j                            t          j        ||                      	 d d d            d S 	 d d d            n# 1 swxY w Y    ||            d S r   r  r  s     r!   r   z*_MultiThreadedRendezvous.add_done_callback  r  r  c                 ~     j         j        5   j         j        t           j          j                  } j         j                            t          j        j	                    j
                            t          j        t                    f|          }|s. j         j                            t          j        j	                   n- j         j        t          j        j        u rt%                        fd}t'          j         j         j        j        |            j         j        & j         j        }d  j         _        |cd d d            S t          j        j	         j         j        vr9 j         j        t          j        j        u rt%                       j         j         d d d            d S # 1 swxY w Y   d S )Nc                  v     j         j        d up*t          j        j         j         j        vo j         j        d uS r   )r   r.   r   rH   r[   r,   r0   rB   s   r!   _response_readyz7_MultiThreadedRendezvous._next.<locals>._response_ready  s>    {+47 (8O 5(4r#   )r   r+   r0   rw   r   r,   r   r   rH   r[   r   r   r/  r   rY   rI   rJ   r   r   r   r   r.   )r?   r{   r   rN  r.   s   `    r!   r   z_MultiThreadedRendezvous._next  s   ["  	  	{' .K!<! ! ##F$8$HIII J..3LAAC! 	 ! QKO**6+?+OPPP!T_%777#oo%
     L.3_EEE{#/;/'+$7 	  	  	  	  	  	  	  	8 %5T[_LL;#t'999'//)[%1JA 	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	s   D4F2AF22F69F6r   )!rD   rE   rF   r   r*   rG   r   r   r-   r/   rI   rJ   r0   rK   r%   r1   rL   r2   r   rs   r
  rN   r   r   rn   r   r   r   r   r   r   r   r   rO   r#   r!   r3  r3    s          0(<"8 0 0 0 018L#9 1 1 1 1$ht/ $ $ $ $7# 7 7 7 7BHSM B B B B)4 ) ) ) ), , , , ,0d 0 0 0 0,d , , , , huo     &   %  HY<O        ( *.1 11	%%	&1 1 1 10Hdk]D-@$A d    !s ! ! ! ! ! !r#   r3  r   c                     t          |          }t          j        | |          }|6t          dddt          j        j        d          }t          |          }|d |fS ||d fS )NrO   r~   )r"   r   r   r*   rI   rJ   r^   r   )r   r   rz   r   r   rP   rp   s          r!   _start_unary_requestrP    sx    
 !!H *74FGG!O$,
 
 "%((u$$+T11r#   	with_callr   c                     | j         t          j        j        u r$|rt	          | |d |          }| j        |fS | j        S t          |           r   )r0   rI   rJ   r   r3  r.   r   )rP   ry   rQ  r   
rendezvouss        r!   _end_unary_response_blockingrT    sT     zT_''' 	"1%tXNNJ>:-->!&&&r#   metadatainitial_metadata_flagsc                     t          j        | |          t          j        t                    t          j        t                    ft          j        t                    ffS r   )r   SendInitialMetadataOperationr/  r   ReceiveStatusOnClientOperationReceiveInitialMetadataOperationrU  rV  s     r!   #_stream_unary_invocation_operationsr\    sZ    
 /0  *<881,??	
 
	/	=	=?	 	r#   c                 P    t          d t          | |          D                       S )Nc              3      K   | ]}|d fV  	d S r   rO   ).0r   s     r!   	<genexpr>z?_stream_unary_invocation_operations_and_tags.<locals>.<genexpr>  s@        
  	
     r#   )tupler\  r[  s     r!   ,_stream_unary_invocation_operations_and_tagsrb     sD       
 >,
 
     r#   user_deadlinec                 l    t          j                    }|| d S || |S | || S t          ||           S r   )r   get_deadline_from_contextmin)rc  parent_deadlines     r!   _determine_deadlinerh    sR    688O=#8t		$)>		"'>?M222r#   c                      e Zd ZU ej        ed<   eed<   eed<   eed<   ee	         ed<   ee
         ed<   eed<   ee         ed<   g d	Zd
ej        dedededee	         dee
         dee         fdZdedee         dee         dee         deej                 deee         eeej                          ee         eej                 f         fdZ	 	 	 	 	 ddedee         dee         deej                 dee         deej                 deeej        f         fdZ	 	 	 	 	 ddedee         dee         deej                 dee         deej                 defdZ	 	 	 	 	 ddedee         dee         deej                 dee         deej                 deeej        f         fdZ	 	 	 	 	 ddedee         dee         deej                 dee         deej                 de fdZ!dS )_UnaryUnaryMultiCallable_channel_managed_call_method_target_request_serializerr   _context_registered_call_handlerk  rl  rm  rn  ro  r   rp  channelmanaged_callr7   r8   rz   rU   c                     || _         || _        || _        || _        || _        || _        t          j                    | _        || _	        d S r   
rk  rl  rm  rn  ro  r   r   build_census_contextrp  rq  r?   rs  rt  r7   r8   rz   rU   rq  s           r!   r@   z!_UnaryUnaryMultiCallable.__init__/  O      )#5 &;#355'>$$$r#   r   r   rU  wait_for_readycompressionr   c                    t          ||| j                  \  }}}t                                          |          }	t	          j        ||          }
|d d d |fS t          t          d d d d           }t          j	        |
|	          t          j
        |t                    t          j        t                    t          j        t                    t          j        t                    t          j        t                    f}|||d fS r   )rP  ro  _InitialMetadataFlagswith_wait_for_readyr   augment_metadatar*   _UNARY_UNARY_INITIAL_DUEr   rX  r   r   r   rZ  r/  rY  )r?   r   r   rU  rz  r{  r   r   rS  rV  augmented_metadatarP   r   s                r!   _preparez!_UnaryUnaryMultiCallable._prepareB  s    4HWd64
 4
0$j "7!8!8!L!L"
 "
 *:k
 
 %tZ//6dD$OOE3&(>  +,>MM3LAA6|DD.|<<5lCC	J *h44r#   Ncredentialsc                    |                      |||||          \  }}}	}
||
t          j                    |_        t	          j        | j                  |_        t	          j        | j                  |_	        | j
                            t          j        j        | j        d t          |	          ||d n|j        |d ff| j        | j        	  	        }|                                }t)          ||| j                   ||fS r   )r  r   rd   r5   r   r   rm  r7   rn  r8   rk  segregated_callr   PropagationConstantsGRPC_PROPAGATE_DEFAULTSrh  _credentialsrp  rq  r+  rj   r   )r?   r   r   rU  r  rz  r{  rP   r   r   rS  ry   rT   s                r!   	_blockingz"_UnaryUnaryMultiCallable._blockingh  s    37--Wh3
 3
/z8Z =#'#4#6#6E ">$,77EL">$,77EL=00+C#H--#+1I # , D  OO%%E%(CDDD$;r#   c                 `    |                      ||||||          \  }}t          ||dd           S r:   r  rT  	r?   r   r   rU  r  rz  r{  rP   ry   s	            r!   __call__z!_UnaryUnaryMultiCallable.__call__  sC     NNWh^[
 
	
 ,E4EEEr#   c                 `    |                      ||||||          \  }}t          ||dd           S NTr  r  s	            r!   rQ  z"_UnaryUnaryMultiCallable.with_call  sC     NNWh^[
 
	
 ,E4tDDDr#   c                    |                      |||||          \  }}}	}
||
t          || j                  }t          j                    |_        t          j        | j                  |_	        t          j        | j
                  |_        |                     t          j        j        | j        d |	||d n|j        |f|| j        | j        
  
        }t'          ||| j        |	          S r   )r  rw   r   r   rd   r5   r   r   rm  r7   rn  r8   rl  r   r  r  r  rp  rq  r3  )r?   r   r   rU  r  rz  r{  rP   r   r   rS  r{   ry   s                r!   futurez_UnaryUnaryMultiCallable.future  s     37--Wh3
 3
/z8Z =*5$2MNNM#'#4#6#6E ">$,77EL">$,77EL%%+C#+1I, D ,tT8(  r#   NNNNN)"rD   rE   rF   r   ChannelrG   r   bytesr   r   r   r   rM   	__slots__r@   rN   r   rL   rI   Compressionr   r*   r	   	Operationr   r  CallCredentialsr  r  r  CallrQ  r3  r  rO   r#   r!   rj  rj    s        n((((NNNNNN!"56666$%:;;;;MMM%c]***  I?? ,? 	?
 ? %%89?  ((=>? "*#? ? ? ?&$5$5 %$5 <(	$5
 !$5 d./$5 
&*+,	!
$5 $5 $5 $5R $(+/6:)-26$ $$ %$ <(	$
 d23$ !$ d./$ 
y&//	0$ $ $ $R $(+/6:)-26F FF %F <(	F
 d23F !F d./F 
F F F F( $(+/6:)-26E EE %E <(	E
 d23E !E d./E 
sDI~	E E E E( $(+/6:)-26! !! %! <(	!
 d23! !! d./! 
"! ! ! ! ! !r#   rj  c                   B   e Zd ZU ej        ed<   eed<   eed<   ee         ed<   ee	         ed<   e
ed<   ee         ed<   g dZd	ej        d
ededede	dee         fdZ	 	 	 	 	 dde
dee         dee         deej                 dee         deej                 defdZdS )'_SingleThreadedUnaryStreamMultiCallablerk  rm  rn  ro  r   rp  rq  )rk  rm  rn  ro  r   rp  rs  r7   r8   rz   rU   c                     || _         || _        || _        || _        || _        t          j                    | _        || _        d S r   )	rk  rm  rn  ro  r   r   rw  rp  rq  )r?   rs  r7   r8   rz   rU   rq  s          r!   r@   z0_SingleThreadedUnaryStreamMultiCallable.__init__  sG      #5 &;#355'>$$$r#   Nr   r   rU  r  rz  r{  r   c                    t          |          }t          j        || j                  }|1t	          dddt
          j        j        d          }	t          |	          t	          t          d d d d           }	|d n|j
        }
t                                          |          }t          j        ||          }t          j        ||          t          j        |t$                    t          j        t$                    ft          j        t$                    ft          j        t$                    ff}t-          d |D                       }t/          j                    |	_        t          j        | j                  |	_        t          j        | j                  |	_        | j                             t          j!        j"        | j        d tG          |          ||
|| j$        | j%        	  	        }tM          |	|| j'        |          S )NrO   r~   c              3      K   | ]}|d fV  	d S r   rO   )r_  opss     r!   r`  zC_SingleThreadedUnaryStreamMultiCallable.__call__.<locals>.<genexpr>$  s&      #F#FCS$K#F#F#F#F#F#Fr#   )(r"   r   r   ro  r*   rI   rJ   r^   r   _UNARY_STREAM_INITIAL_DUEr  r}  r~  r   r  r   rX  r   r   r   rY  rZ  ra  r   rd   r5   r   rm  r7   rn  r8   rk  r  r  r  rh  rp  rq  r  r   )r?   r   r   rU  r  rz  r{  r   r   rP   call_credentialsrV  r  r   operations_and_tagsry   s                   r!   r  z0_SingleThreadedUnaryStreamMultiCallable.__call__  s    W%%$.T-
 
 %(0 E $E***3T4tLL'DD[-E 	 "7!8!8!L!L"
 "
 *:k
 

 3&(>  +,>MM3LAA 2<@@B3LAAC


 $#F#F:#F#F#FFF#022~dl33~dl33},,'?L))M(

 

 )44h
 
 	
r#   r  )rD   rE   rF   r   r  rG   r  r   r   r   r   rM   r  r@   rN   r   rI   r  rL   r  r  r  rO   r#   r!   r  r    sc        nNNNNNN!"56666$%:;;;;MMM%c]***  I?? ? 	?
 0?  5? "*#? ? ? ?( $(+/6:)-26=
 =
=
 %=
 <(	=

 d23=
 !=
 d./=
 
#=
 =
 =
 =
 =
 =
r#   r  c                   P   e Zd ZU ej        ed<   eed<   eed<   eed<   ee	         ed<   ee
         ed<   eed<   ee         ed<   g d	Zd
ej        dededede	de
dee         fdZ	 	 	 	 	 ddedee         dee         deej                 dee         deej                 defdZdS )_UnaryStreamMultiCallablerk  rl  rm  rn  ro  r   rp  rq  rr  rs  rt  r7   r8   rz   rU   c                     || _         || _        || _        || _        || _        || _        t          j                    | _        || _	        d S r   rv  rx  s           r!   r@   z"_UnaryStreamMultiCallable.__init__M  ry  r#   Nr   r   rU  r  rz  r{  r   c                 l   t          ||| j                  \  }}}	t                                          |          }
||	t	          j        ||          }t          t          d d d d           }t          j	        ||
          t          j
        |t                    t          j        t                    t          j        t                    ft          j        t                    ff}t          j                    |_        t%          j        | j                  |_        t%          j        | j                  |_        |                     t          j        j        | j        d t7          |          ||d n|j        |t;          || j                  | j        | j         
  
        }tC          ||| j        |          S r   )"rP  ro  r}  r~  r   r  r*   r  r   rX  r   r   r   rY  rZ  r   rd   r5   r   r   rm  r7   rn  r8   rl  r  r  rh  r  rw   r   rp  rq  r3  )r?   r   r   rU  r  rz  r{  r   r   rS  rV  r  rP   r   ry   s                  r!   r  z"_UnaryStreamMultiCallable.__call__`  s    4HWd64
 4
0$j "7!8!8!L!L"
 "
 %!-!>+" " 7tT4PPE 7*,B  /*L  7EE9,GG	 7EEGJ $(#4#6#6E ">$,77EL">$,77EL%%+C#H--#+1Iud&ABB, D ,tT8(  r#   r  )rD   rE   rF   r   r  rG   r   r  r   r   r   r   rM   r  r@   rN   r   rI   r  rL   r  r3  r  rO   r#   r!   r  r  8  sy        n((((NNNNNN!"56666$%:;;;;MMM%c]***  I?? ,? 	?
 ? 0?  5? "*#? ? ? ?, $(+/6:)-264 44 %4 <(	4
 d234 !4 d./4 
"4 4 4 4 4 4r#   r  c                      e Zd ZU ej        ed<   eed<   eed<   eed<   ee	         ed<   ee
         ed<   eed<   ee         ed<   g d	Zd
ej        dedededee	         dee
         dee         fdZdedee         dee         deej                 dee         deej                 deeej        f         fdZ	 	 	 	 	 ddedee         dee         deej                 dee         deej                 defdZ	 	 	 	 	 ddedee         dee         deej                 dee         deej                 deeej        f         fdZ	 	 	 	 	 ddedee         dee         deej                 dee         deej                 defdZdS )_StreamUnaryMultiCallablerk  rl  rm  rn  ro  r   rp  rq  rr  rs  rt  r7   r8   rz   rU   c                     || _         || _        || _        || _        || _        || _        t          j                    | _        || _	        d S r   rv  rx  s           r!   r@   z"_StreamUnaryMultiCallable.__init__  ry  r#   rx   r   rU  r  rz  r{  r   c                 V   t          |          }t          t          d d d d           }t                                          |          }	t          j        ||          }
t          j                    |_	        t          j        | j                  |_        t          j        | j                  |_        | j                            t$          j        j        | j        d t+          |          |
|d n|j        t/          |
|	          | j        | j        	  	        }t5          |||| j        d            	 |                                }|j        5  t=          ||| j                   |j                                          |j!        s	 d d d            n	 d d d            n# 1 swxY w Y   x||fS r   )"r"   r*   _STREAM_UNARY_INITIAL_DUEr}  r~  r   r  r   rd   r5   r   r   rm  r7   rn  r8   rk  r  r   r  r  rh  r  rb  rp  rq  r   ro  r+  r+   rj   r   rm   r,   )r?   rx   r   rU  r  rz  r{  r   rP   rV  r  ry   rT   s                r!   r  z#_StreamUnaryMultiCallable._blocking  s     W%%3T4tLL!6!8!8!L!L"
 "
 *:k
 
  $022~dl33~dl33},,'?L))'DD[-E8"$:  M(
 
 	"eT4+CT	
 	
 	
	OO%%E  eUD,GHHH**,,,y 	                    	 d{s   
8FF"FNc                 `    |                      ||||||          \  }}t          ||dd           S r:   r  	r?   rx   r   rU  r  rz  r{  rP   ry   s	            r!   r  z"_StreamUnaryMultiCallable.__call__  sH     NN
 
	
 ,E4EEEr#   c                 `    |                      ||||||          \  }}t          ||dd           S r  r  r  s	            r!   rQ  z#_StreamUnaryMultiCallable.with_call  sH     NN
 
	
 ,E4tDDDr#   c                    t          |          }t          t          d d d d           }t          || j                  }	t                                          |          }
t          j        ||          }t          j
                    |_        t          j        | j                  |_        t          j        | j                  |_        |                     t&          j        j        | j        d |||d n|j        t/          ||
          |	| j        | j        
  
        }t5          |||| j        |	           t9          ||| j        |          S r   )r"   r*   r  rw   r   r}  r~  r   r  r   rd   r5   r   r   rm  r7   rn  r8   rl  r   r  r  r  r\  rp  rq  r   ro  r3  )r?   rx   r   rU  r  rz  r{  r   rP   r{   rV  r  ry   s                r!   r  z _StreamUnaryMultiCallable.future  sO    W%%3T4tLL&ud.IJJ!6!8!8!L!L"
 "
 *:k
 
  $022~dl33~dl33!!'?L'DD[-E/0  M(
 
 	"$	
 	
 	
 (44h
 
 	
r#   r  )rD   rE   rF   r   r  rG   r   r  r   r   r   r   rM   r  r@   r   rN   r   rI   r  rL   r  r   r*   r  r  r  r  rQ  r3  r  rO   r#   r!   r  r    sA        n((((NNNNNN!"56666$%:;;;;MMM%c]***  I?? ,? 	?
 ? %%89?  ((=>? "*#? ? ? ?&+"+ %+ <(	+
 d23+ !+ d./+ 
y&//	0+ + + +` $(+/6:)-26F F"F %F <(	F
 d23F !F d./F 
F F F F2 $(+/6:)-26E E"E %E <(	E
 d23E !E d./E 
sDI~	E E E E2 $(+/6:)-26,
 ,
",
 %,
 <(	,

 d23,
 !,
 d./,
 
",
 ,
 ,
 ,
 ,
 ,
r#   r  c                   h   e Zd ZU ej        ed<   eed<   eed<   eed<   ee	         ed<   ee
         ed<   eed<   ee         ed<   g d	Zd
ej        dedededee	         dee
         dee         fdZ	 	 	 	 	 ddedee         dee         deej                 dee         deej                 defdZdS )_StreamStreamMultiCallablerk  rl  rm  rn  ro  r   rp  rq  rr  rs  rt  r7   r8   rz   rU   c                     || _         || _        || _        || _        || _        || _        t          j                    | _        || _	        d S r   rv  rx  s           r!   r@   z#_StreamStreamMultiCallable.__init__\  ry  r#   Nrx   r   rU  r  rz  r{  r   c                     t          |          }t          t          d d d d           }t                                          |          }	t          j        ||          }
t          j        |
|	          t          j	        t                    ft          j        t                    ff}t          || j                  }t          j                    |_        t#          j        | j                  |_        t#          j        | j                  |_        |                     t          j        j        | j        d t5          |          |
|d n|j        ||| j        | j        
  
        }t=          |||| j        |           tA          ||| j        |          S r   )!r"   r*   _STREAM_STREAM_INITIAL_DUEr}  r~  r   r  r   rX  rY  r   rZ  rw   r   r   rd   r5   r   r   rm  r7   rn  r8   rl  r  r  rh  r  rp  rq  r   ro  r3  )r?   rx   r   rU  r  rz  r{  r   rP   rV  r  r   r{   ry   s                 r!   r  z#_StreamStreamMultiCallable.__call__o  s    W%%4dD$MM!6!8!8!L!L"
 "
 *:k
 

 3&(>  5lCC	 3LAAC

 'ud.IJJ#022~dl33~dl33!!'?L))'DD[-EM(
 
 	"$	
 	
 	
 (44h
 
 	
r#   r  )rD   rE   rF   r   r  rG   r   r  r   r   r   r   rM   r  r@   r   rN   r   rI   r  rL   r  r3  r  rO   r#   r!   r  r  G  s        n((((NNNNNN!"56666$%:;;;;MMM%c]***  I?? ,? 	?
 ? %%89?  ((=>? "*#? ? ? ?, $(+/6:)-263
 3
"3
 %3
 <(	3

 d233
 !3
 d./3
 
"3
 3
 3
 3
 3
 3
r#   r  c                   H     e Zd ZdZefdef fdZdee         defdZ	 xZ
S )r}  z'Stores immutable initial metadata flagsvaluec                 ~    |t           j        j        z  }t          t          |                               | |          S r   )r   InitialMetadataFlags	used_maskr   r}  __new__)clsr  r   s     r!   r  z_InitialMetadataFlags.__new__  s4    ,66*C0088eDDDr#   rz  r   c                     |w|r9|                      | t          j        j        z  t          j        j        z            S |s:|                      | t          j        j         z  t          j        j        z            S | S r   )r   r   r  rz  wait_for_ready_explicitly_set)r?   rz  s     r!   r~  z)_InitialMetadataFlags.with_wait_for_ready  s    % 
~~1@A1OP  
 $ ~~F7FFF1OP   r#   )rD   rE   rF   r   r   rM   r  r   rL   r~  r  r  s   @r!   r}  r}    s        11". E EC E E E E E E(4. S        r#   r}  c                   \    e Zd ZU ej        ed<   eed<   eed<   dej        fdZd	dZ	d Z
dS )
_ChannelCallStaters  managed_callsr;   c                 `    t          j                    | _        || _        d| _        d| _         d S )Nr   F)r;   Locklockrs  r  r?   rs  s     r!   r@   z_ChannelCallState.__init__  s+    N$$	r#   r   Nc                     d| _         d S )Nr   )r  rB   s    r!   rC   z&_ChannelCallState.reset_postfork_child  s    r#   c                     	 | j                             t          j        j        d           d S # t
          t          f$ r Y d S w xY w)NzChannel deallocated!)rs  closer   rJ   r2   	TypeErrorAttributeErrorrB   s    r!   r  z_ChannelCallState.__del__  s`    	L!+-C     >* 	 	 	DD	s   *. AAr  )rD   rE   rF   r   r  rG   rM   rL   r@   rC   r  rO   r#   r!   r  r    sy         ^OOO           r#   r  c                       fd}t          j        |          }|                    d           |                                 d S )Nc                  X   	 t          j                   j                                        } | j        t           j        j        k    rI|                     |           }|rIj        5  xj	        dz  c_	        j	        dk    r	 d d d            d S 	 d d d            n# 1 swxY w Y   )NT   r   )
r   r   rs  next_call_eventcompletion_typeCompletionTypequeue_timeouttagr  r  )rT   call_completedrP   s     r!   channel_spinz._run_channel_spin_thread.<locals>.channel_spin  s   
	,U333M1133E$(=(KKK"YYu--N Z  ''1,''*a//       /              
	s   )B  B$'B$r   Tr   )rP   r  channel_spin_threads   `  r!   _run_channel_spin_threadr    s^         !2,GGG!!$'''r#   c                 f    dt           dt          dt          t                   dt          t                   dt          t
                   dt          t          j                 dt          t          t          j	                          dt          d	t          d
t          t                    dt          j        f fd}|S )Nflagsr7   hostr   rU  r  r   r{   contextrq  r   c
                 *   t          fd|D                       }
j        5  j                            | ||||||
||		  	        }j        dk    rd_        t                     nxj        dz  c_        |cddd           S # 1 swxY w Y   dS )a  Creates a cygrpc.IntegratedCall.

        Args:
          flags: An integer bitfield of call flags.
          method: The RPC method.
          host: A host string for the created call.
          deadline: A float to be the deadline of the created call or None if
            the call is to have an infinite deadline.
          metadata: The metadata for the call or None.
          credentials: A cygrpc.CallCredentials or None.
          operations: A sequence of sequences of cygrpc.Operations to be
            started on the call.
          event_handler: A behavior to call to handle the events resultant from
            the operations on the call.
          context: Context object for distributed tracing.
          _registered_call_handle: An int representing the call handle of the
            method, or None if the method is not registered.
        Returns:
          A cygrpc.IntegratedCall with which to conduct an RPC.
        c              3       K   | ]}|fV  	d S r   rO   )r_  	operationr{   s     r!   r`  zC_channel_managed_call_management.<locals>.create.<locals>.<genexpr>  sA       $
 $

  $
 $
 $
 $
 $
 $
r#   r   r  N)ra  r  rs  integrated_callr  r  )r  r7   r  r   rU  r  r   r{   r  rq  r  ry   rP   s          `    r!   createz0_channel_managed_call_management.<locals>.create  s   @ $ $
 $
 $
 $

 ($
 $
 $
 
 
 Z 	 	=00#'
 
D "a''&'#(////##q(###	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ABBB)rM   r  r   rK   rN   r   r   r  r	   r  r   r   r  )rP   r  s   ` r!    _channel_managed_call_managementr    s    888 sm8 5/	8
 <(8 f458 Xf&6788 8 8 "*#8 
	8 8 8 8 8 8t Mr#   c                       e Zd ZU ej        ed<   ej        ed<   eed<   ej	        ed<   eed<   e
eeeej	        gdf         eej	                 f                           ed<   eed<   dej        fd	ZddZdS )_ChannelConnectivityStater  rs  pollingconnectivitytry_to_connectNcallbacks_and_connectivities
deliveringc                     t          j                    | _        || _        d| _        d | _        d| _        g | _        d| _        d S r:   )	r;   RLockr  rs  r  r  r  r  r  r  s     r!   r@   z"_ChannelConnectivityState.__init__6  sB    O%%	 #,.)r#   r   c                 L    d| _         d | _        d| _        g | _        d| _        d S r:   )r  r  r  r  r  rB   s    r!   rC   z._ChannelConnectivityState.reset_postfork_child?  s,     #,.)r#   r  )rD   rE   rF   r;   r  rG   rI   r  rL   ChannelConnectivityr   r	   r   r   r   r@   rC   rO   r#   r!   r  r  %  s         
/\MMM****"&$23T9:124	
#                        r#   r  c                 x    g }| j         D ]/}|\  }}|| j        ur|                    |           | j        |d<   0|S )Nr  )r  r  r   )rP   callbacks_needing_updatecallback_and_connectivityrt   callback_connectivitys        r!   _deliveriesr  G  sd      "%*%G > >! &	
! (:::$++H555+0+=%a(##r#   initial_connectivityinitial_callbacksc                 R   |}|}	 |D ]Q}t          j        |            	  ||           ## t          $ r" t                              t
                     Y Nw xY w| j        5  t          |           }|r| j        }nd| _	        	 d d d            d S 	 d d d            n# 1 swxY w Y   )NTF)
r   r   rn   r   r   0_CHANNEL_SUBSCRIPTION_CALLBACK_ERROR_LOG_MESSAGEr  r  r  r  )rP   r  r  r  r3   rt   s         r!   _deliverr  V  sF   
 (L!I! 	 	H,U333&&&&   !!D     Z 	 	#E**I $1#( 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s!   +)AA!"BB!$B!r3   c                     t          j        t          | | j        |f          }|                    d           |                                 d| _        d S N)r8   argsT)r   r   r  r  r   r   r  )rP   r3   delivering_threads      r!   _spawn_deliveryr  o  sf     0
   %%%Er#   rs  initial_try_to_connectc                 L   |}|                     |          }| j        5  t          j        |         | _        t          d | j        D                       }| j        D ]}| j        |d<   |rt          | |           d d d            n# 1 swxY w Y   	 |                    |t          j	                    dz             }t          j        |            | j        5  | j        s#| j        sd| _        d | _        	 d d d            d S | j        }d| _        d d d            n# 1 swxY w Y   |j        s|rs|                     |          }| j        5  t          j        |         | _        | j        s!t!          |           }|rt          | |           d d d            n# 1 swxY w Y   )Nc              3       K   | ]	\  }}|V  
d S r   rO   )r_  rt   _s      r!   r`  z%_poll_connectivity.<locals>.<genexpr>  s7       
 
$1H
 
 
 
 
 
r#   r  Tg?F)check_connectivity_stater  r   1CYGRPC_CONNECTIVITY_STATE_TO_CHANNEL_CONNECTIVITYr  ra  r  r  watch_connectivity_stater   r   r   r  r  successr  r  )rP   rs  r  r  r  r3   r  rT   s           r!   _poll_connectivityr    s   
 ,N33NCCL	 . .E 	
  
 
(-(J
 
 
 
 
	 */)K 	> 	>%+0+=%a(( 	.E9---. . . . . . . . . . . . . . .:00$)+++
 
 	(///Z 		) 		)6, !&%)"		) 		) 		) 		) 		) 		) 		) 		) #1N#(E 		) 		) 		) 		) 		) 		) 		) 		) 		) 		) 		) 		) 		) 		) 		) = 	:N 	:";;NKKL 	: 	:M$ "
 ' : +E 2 2I  :'y999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:#:s=   ABBBDDD!$D!A FF Frt   r  c           	         | j         5  | j        s| j        s}t          j        t
          | | j        t          |          f          }|                    d           |	                                 d| _        | j        
                    |d g           n| j        sW| j        Pt          | |f           | xj        t          |          z  c_        | j        
                    || j        g           n9| xj        t          |          z  c_        | j        
                    |d g           d d d            d S # 1 swxY w Y   d S r  )r  r  r  r   r   r  rs  rL   r   r   r   r  r  r  r  )rP   rt   r  polling_threads       r!   
_subscriber    s   
 
 H H1 	H%- 	H#5)U]D,@,@A  N $$T***  """ EM.55x6FGGGG! 	He&8&DEH;///  D$8$88  .555-.      D$8$88  .55x6FGGG%H H H H H H H H H H H H H H H H H Hs   D#D88D<?D<c                     | j         5  t          | j                  D ]*\  }\  }}||k    r| j                            |            n+d d d            d S # 1 swxY w Y   d S r   )r  	enumerater  pop)rP   rt   indexsubscribed_callbackunused_connectivitys        r!   _unsubscriber    s     
  AJ.B
 B
 	 	=E=')< ...266u=== /	                 s   A AAAbase_optionsr{  c                     t          j        |          }t          |           |z   t          j        j        t          ffz   S r   )r   create_channel_optionra  r   ChannelArgKeyprimary_user_agent_string_USER_AGENT)r  r{  compression_options      r!   _augment_optionsr    sJ     &;KHHl
	 $>
	
	r#   optionsc                     g }g }| D ]M}|d         t           j        j        j        k    r|                    |           8|                    |           N||fS )z;Separates core channel options from Python channel options.r   )rI   r  ChannelOptionsSingleThreadedUnaryStreamr   )r  core_optionspython_optionspairs       r!   _separate_channel_optionsr    sw     LN & &G /IJ J !!$''''%%%%<''r#   c                      e Zd ZU dZeed<   ej        ed<   eed<   e	ed<   e
ed<   ee
ef         ed<   de
d	ee         d
eej                 deej                 fdZde
defdZdee         ddfdZ	 d&deej        gdf         dee         ddfdZdeej        gdf         ddfdZ	 	 	 d'de
dee         dee         dee         dej        f
dZ	 	 	 d'de
dee         dee         dee         dej        f
dZ	 	 	 d'de
dee         dee         dee         dej         f
dZ!	 	 	 d'de
dee         dee         dee         dej"        f
dZ#d(dZ$d(d Z%d(d!Z&d" Z'd# Z(d(d$Z)d% Z*dS ))r  z7A cygrpc.Channel-backed implementation of grpc.Channel._single_threaded_unary_streamrk  _call_state_connectivity_statern  _registered_call_handlesr8   r  r  r{  c                    t          |          \  }}t          | _        |                     |           t	          j        t          j        |          t          ||          |          | _	        || _
        t          | j	                  | _        t          | j	                  | _        t	          j        |            t          j        rt	          j                     dS dS )aP  Constructor.

        Args:
          target: The target to which to connect.
          options: Configuration options for the channel.
          credentials: A cygrpc.ChannelCredentials or None.
          compression: An optional value indicating the compression method to be
            used over the lifetime of the channel.
        N)r  %_DEFAULT_SINGLE_THREADED_UNARY_STREAMr  _process_python_optionsr   r  r   encoder  rk  rn  r  r  r  r   fork_register_channelg_gevent_activatedgevent_increment_channel_count)r?   r8   r  r  r{  r  r  s          r!   r@   zChannel.__init__  s      (A'I'I$1 	* 	$$^444N6""\;77
 

 ,T];;#<T]#K#K $T***$ 	4133333	4 	4r#   r7   r   c                 Z    | j                             t          j        |                    S )ah  
        Get the registered call handle for a method.

        This is a semi-private method. It is intended for use only by gRPC generated code.

        This method is not thread-safe.

        Args:
          method: Required, the method name for the RPC.

        Returns:
          The registered call handle pointer in the form of a Python Long.
        )rk  get_registered_call_handler   r%  )r?   r7   s     r!   _get_registered_call_handlez#Channel._get_registered_call_handle&  s$     }77v8N8NOOOr#   r  Nc                 ^    |D ])}|d         t           j        j        j        k    rd| _        *dS )zASets channel attributes according to python-only channel options.r   TN)rI   r  r  r  r  )r?   r  r  s      r!   r$  zChannel._process_python_options6  sG     # 	: 	:DQ$3MN N 6:2	: 	:r#   rt   r  c                 2    t          | j        ||           d S r   )r  r   )r?   rt   r  s      r!   	subscribezChannel.subscribeA  s    
 	4+X~FFFFFr#   c                 0    t          | j        |           d S r   )r  r   r   s     r!   unsubscribezChannel.unsubscribeH  s     	T-x88888r#   Frz   rU   _registered_methodc           	          d }|r|                      |          }t          | j        t          | j                  t          j        |          t          j        | j                  |||          S r   )r+  rj  rk  r  r  r   r%  rn  r?   r7   rz   rU   r1  rq  s         r!   unary_unaryzChannel.unary_unaryN  sq     #' 	O&*&F&Fv&N&N#'M,T-=>>N6""N4<((!#
 
 	
r#   c           	      p   d }|r|                      |          }| j        rBt          | j        t	          j        |          t	          j        | j                  |||          S t          | j        t          | j	                  t	          j        |          t	          j        | j                  |||          S r   )
r+  r  r  rk  r   r%  rn  r  r  r  r3  s         r!   unary_streamzChannel.unary_streamc  s     #' 	O&*&F&Fv&N&N#
 - 	:v&&t|,,"%'   -01ABBv&&t|,,"%'  r#   c           	          d }|r|                      |          }t          | j        t          | j                  t          j        |          t          j        | j                  |||          S r   )r+  r  rk  r  r  r   r%  rn  r3  s         r!   stream_unaryzChannel.stream_unary  sq     #' 	O&*&F&Fv&N&N#(M,T-=>>N6""N4<((!#
 
 	
r#   c           	          d }|r|                      |          }t          | j        t          | j                  t          j        |          t          j        | j                  |||          S r   )r+  r  rk  r  r  r   r%  rn  r3  s         r!   stream_streamzChannel.stream_stream  sq     #' 	O&*&F&Fv&N&N#)M,T-=>>N6""N4<((!#
 
 	
r#   c                 p    | j         }|r,|j        5  |j        d d = d d d            d S # 1 swxY w Y   d S d S r   )r   r  r  r   s     r!   _unsubscribe_allzChannel._unsubscribe_all  s    ( 	: : :6qqq9: : : : : : : : : : : : : : : : : :	: 	:s   )--c                     |                                   | j                            t          j        j        d           t          j        |            t          j        rt          j                     d S d S )NzChannel closed!)	r<  rk  r  r   rJ   r2   fork_unregister_channelr'  gevent_decrement_channel_countrB   s    r!   _closezChannel._close  sn    F-79JKKK&t,,,$ 	4133333	4 	4r#   c                     |                                   | j                            t          j        j        d           d S )NzChannel closed due to fork)r<  rk  close_on_forkr   rJ   r2   rB   s    r!   _close_on_forkzChannel._close_on_fork  sD    ##')E	
 	
 	
 	
 	
r#   c                     | S r   rO   rB   s    r!   	__enter__zChannel.__enter__  r   r#   c                 .    |                                   dS r:   r@  )r?   exc_typeexc_valexc_tbs       r!   __exit__zChannel.__exit__  s    ur#   c                 .    |                                   d S r   rG  rB   s    r!   r  zChannel.close  s    r#   c                 @    	 |                                   d S #  Y d S xY wr   )r<  rB   s    r!   r  zChannel.__del__  s1    	!!#####	 DDs    r   )NNFr  )+rD   rE   rF   r   rL   rG   r   r  r  r  rK   r   rM   r	   r   r   rI   ChannelCredentialsr  r@   r+  r$  r   r  r.  r0  r   r   UnaryUnaryMultiCallabler4  UnaryStreamMultiCallabler6  StreamUnaryMultiCallabler8  StreamStreamMultiCallabler:  r<  r@  rC  rE  rK  r  r  rO   r#   r!   r  r    s        AA#''''n""""2222LLL"38n,,,44 -.4 d56	4
 d./4 4 4 4BP# P# P P P P 	:&':;	:		: 	: 	: 	: *.G GD45t;<G !G 
	G G G G9 $":!;T!AB9	9 9 9 9 =AAE-2
 

 %%89
  ((=>	

 %TN
 
	%
 
 
 
0 =AAE-2     %%89   ((=>	 
 %TN  
	&       L =AAE-2
 

 %%89
  ((=>	

 %TN
 
	&
 
 
 
0 =AAE-2
 

 %%89
  ((=>	

 %TN
 
	'
 
 
 
(: : : :4 4 4 4
 
 
 
           r#   r  )ur   r   r   ro   osr   r;   r   r   typingr   r   r   r   r   r   r	   r
   r   r   rI   r   r   r   r   grpc._cythonr   grpc._typingr   r   r   r   r   r   r   r   grpc.experimental	getLoggerrD   r   r'   __version__r  r   getenvr#  rH   send_initial_metadatar   r   rZ   r[   r_   r  r  r  r  r  r   r   rN   r"   rJ   rK   r(   objectr*   rS   r1  rj   rw   r  r  r   r   r   r  r   r   
RpcContextr   r  r3  r  rP  rL   rT  rM   r  r\  rb  rh  rO  rj  rP  r  r  rQ  r  rR  r  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rO   r#   r!   <module>r^     sY   5 4       				 



                                           ! ! ! ! ! !             , , , , , , . . . . . . . . . . . . % % % % % % , , , , , , % % % % % % , , , , , ,                
'
H
%
%%%&6&BCC
 BI122$> &
 .
%
/
1
(
1  .
%
/
1
1  .
1
(
1	  .
1
1  7 1
 K 
 >x >8E? > > > >!$/2=Ec]   :/ :/ :/ :/ :/ :/ :/ :/z%) %4? %S %T % % % %))) $$9:) 

	) ) ) )X-56K-L   0\\\ %v'<<
=\ ,	\
 G$\ 
\ \ \ \~# )     $[ [ [ [ [ty$+ [ [ [|h3 h3 h3 h3 h3$- h3 h3 h3VSB SB SB SB SBDKSB SB SBlv v v v vDKv v vr22e_2 ,2 8E?HUOXdm-DDE	2 2 2 2*''

' ' uo	'
 <|TY6778' ' ' ' |$>Ahv'()   |$>AeHV-.0AABC   	3x 	38E? 	3 	3 	3 	3w w w w wt; w w wta
 a
 a
 a
 a
d.K a
 a
 a
H\ \ \ \ \ = \ \ \~m
 m
 m
 m
 m
 = m
 m
 m
`[
 [
 [
 [
 [
!? [
 [
 [
|    C   .       . $5  $        &<,= < < < <~               D$$$	(D,-t3
45$ $ $ $$2  $*B)CT)I JK 
	   2$$":!;T!ABC 
   $.:$.:\.: !.: 
	.: .: .: .:bH$H01478H H 
	H H H H4
$
01478
 

 
 
 
./$*+ !"   "()*(
8'((3F*GGH( ( ( ("` ` ` ` `dl ` ` ` ` `r#   