
    ki                       d Z ddlmZ ddlZddlZddlm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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!m*Z* ddl+m,Z,  e	j-        e.          Z/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8dZ9dZ:d Z;dZ<d!Z=d"Z>dd'Z?dd+Z@dd.ZAdd/ZBdd0ZC G d1 d2 ejD        d2d3          ejE                  ZF G d4 d5ejG                  ZH G d6 d7eH          ZI G d8 d9eH          ZJ G d: d-eK          ZLdd<ZMdd@ZNddBZOddEZPddGZQddKZRddLZSddOZTddPZUddQZV G dR dSejW                  ZX G dT dUeK          ZYddXZZ	 ddd`Z[dddZ\ddiZ]ddkZ^ddlZ_ddoZ`ddpZaddrZbddsZcddtZdddvZeddyZfdd}Zgdd~ZhddZiddZjddZkddZlddZmddZnejo         G d dejp                              Zq G d deK          ZrddZsddZtddZuddZvddZwddZxddZyddZzddZ{ddZ|ddZ}ddZ~ddZddZddZ G d dej                  ZddZdS )z+Service-side implementation of gRPC Python.    )annotationsN)futures)AnyCallableDictIterableIteratorListMappingOptionalSequenceSetTupleUnion)_common)_compression)_interceptor)_observability)cygrpc)ArityAgnosticMethodHandler)ChannelArgumentType)DeserializingFunction)MetadataType)NullaryCallbackType)ResponseType)SerializingFunction)ServerCallbackTag)ServerTagCallbackType)overrideshutdownrequest_callreceive_close_on_serversend_initial_metadatareceive_messagesend_messagez$send_initial_metadata * send_messagesend_status_from_serverz/send_initial_metadata * send_status_from_serveropenclosed	cancelledg      ?g    eArequest_eventcygrpc.BaseEventreturnbytesc                @    | j         d                                         S Nr   )batch_operationsmessage)r*   s    \/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/grpc/_server.py_serialized_requestr3   V   s    )!,44666    codegrpc.StatusCodecygrpc.StatusCodec                j    t           j                            |           }|t          j        j        n|S N)r   !STATUS_CODE_TO_CYGRPC_STATUS_CODEgetr   
StatusCodeunknown)r5   cygrpc_codes     r2   _application_coder?   Z   s.    ;??EEK(3(;6$$Lr4   state	_RPCStatec                Z    | j         t          j        j        S t	          | j                   S r9   )r5   r   r<   okr?   r@   s    r2   _completion_coderE   _   s&    z ##UZ(((r4   c                <    | j         |S t          | j                   S r9   )r5   r?   )r@   r5   s     r2   _abortion_coderG   e   s!     zUZ(((r4   c                "    | j         dn| j         S )Nr4   )detailsrD   s    r2   _detailsrJ   m   s    -'33U]:r4   c                      e Zd ZdS )_HandlerCallDetailsN)__name__
__module____qualname__ r4   r2   rL   rL   q   s         	Dr4   rL   )methodinvocation_metadatac                  R    e Zd Zej        d	d            Zej        d
d            ZdS )_Methodr,   Optional[str]c                    t                      r9   NotImplementedErrorselfs    r2   namez_Method.name   s    !###r4   handler_call_detailsrL   Optional[grpc.RpcMethodHandler]c                    t                      r9   rW   rZ   r\   s     r2   handlerz_Method.handler   s     "###r4   Nr,   rU   r\   rL   r,   r]   )rM   rN   rO   abcabstractmethodr[   r`   rP   r4   r2   rT   rT   ~   sZ        $ $ $ $ 	$ $ $ $ $ $r4   rT   c                  F    e Zd ZddZedd            Zedd            ZdS )_RegisteredMethodr[   strregistered_handlerr]   c                "    || _         || _        d S r9   )_name_registered_handler)rZ   r[   rh   s      r2   __init__z_RegisteredMethod.__init__   s    
 
#5   r4   r,   rU   c                    | j         S r9   )rj   rY   s    r2   r[   z_RegisteredMethod.name   s
    zr4   r\   rL   c                    | j         S r9   )rk   r_   s     r2   r`   z_RegisteredMethod.handler   s     ''r4   N)r[   rg   rh   r]   ra   rb   rM   rN   rO   rl   r   r[   r`   rP   r4   r2   rf   rf      sh        6 6 6 6    X ( ( ( X( ( (r4   rf   c                  F    e Zd ZddZedd            Zedd
            ZdS )_GenericMethodgeneric_handlersList[grpc.GenericRpcHandler]c                    || _         d S r9   )_generic_handlers)rZ   rr   s     r2   rl   z_GenericMethod.__init__   s     "2r4   r,   rU   c                    d S r9   rP   rY   s    r2   r[   z_GenericMethod.name   s    tr4   r\   rL   r]   c                P    | j         D ]}|                    |          }||c S d S r9   )ru   service)rZ   r\   generic_handlermethod_handlers       r2   r`   z_GenericMethod.handler   sF      $5 	& 	&O,445IJJN)%%%% *tr4   N)rr   rs   ra   rb   ro   rP   r4   r2   rq   rq      sh        2 2 2 2    X 	 	 	 X	 	 	r4   rq   c                      e Zd ZU ded<   ded<   ee         Zded<   ded<   d	ed
<   ded<   d	ed<   ded<   ded<   ded<   d	ed<   ded<   ded<   d	ed<   d ZdS )rA   zcontextvars.Contextcontextzthreading.Condition	conditionr   requestrg   clientboolinitial_metadata_allowedOptional[grpc.Compression]compression_algorithmdisable_next_compressionOptional[MetadataType]trailing_metadatazOptional[grpc.StatusCode]r5   Optional[bytes]rI   statusedzList[Exception]
rpc_errorsz#Optional[List[NullaryCallbackType]]	callbacksabortedc                >   t          j                    | _        t          j                    | _        t                      | _        d | _        t          | _
        d| _        d | _        d| _        d | _        d | _        d | _        d| _        g | _        g | _        d| _        d S NTF)contextvarsContextr|   	threading	Conditionr}   setduer~   _OPENr   r   r   r   r   r5   rI   r   r   r   r   rY   s    r2   rl   z_RPCState.__init__   s    "*,,",..55(,%%)"(-%!%	r4   N)rM   rN   rO   __annotations__r   rg   r   rl   rP   r4   r2   rA   rA      s             """"
c(CLLLKKK""""5555""""----####NNN2222MMM    r4   Nonec                `    t          j                    }| j                            |           |r9   )grpcRpcErrorr   append)r@   	rpc_errors     r2   _raise_rpc_errorr      s)    I	I&&&
Or4   tokenrg   r   c                    | j                             |           t          |           s| j         s| j        }d | _        | |fS dS )NNrP   )r   remove_is_rpc_state_activer   )r@   r   r   s      r2   _possibly_finish_callr      sQ     
IU&&  uy  O	i8r4   r   c                      fd}|S )Nc                f    j         5  t                    cd d d            S # 1 swxY w Y   d S r9   )r}   r   )$unused_send_status_from_server_eventr@   r   s    r2   r&   z9_send_status_from_server.<locals>.send_status_from_server   s|    _ 	7 	7(66	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   &**rP   )r@   r   r&   s   `` r2   _send_status_from_serverr      s*    7 7 7 7 7 7 #"r4   metadatar   c                    | j         5  | j        rHt          j        | j                  f}||cd d d            S |t	          |          z   cd d d            S |cd d d            S # 1 swxY w Y   d S r9   )r}   r   r   !compression_algorithm_to_metadatatuple)r@   r   compression_metadatas      r2   _get_initial_metadatar      s	    
 
 
& 	:>/ $ 
 +
 
 
 
 
 
 
 
 (%//9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   %A&A&A&&A*-A*cygrpc.Operationc                V    t          j        t          | |          t                    }|S r9   )r   SendInitialMetadataOperationr   _EMPTY_FLAGS)r@   r   	operations      r2   _get_initial_metadata_operationr     s-     3eX.. I r4   callcygrpc.CallrI   c                   | j         t          urt          | |          }| j        |n| j        }| j        r9t          | d           t          j        | j        ||t                    f}t          }n)t          j        | j        ||t                    f}t          }|                    |t          | |                     d| _        | j                            |           d S d S NT)r   
_CANCELLEDrG   rI   r   r   r   SendStatusFromServerOperationr   r   8_SEND_INITIAL_METADATA_AND_SEND_STATUS_FROM_SERVER_TOKEN_SEND_STATUS_FROM_SERVER_TOKENstart_server_batchr   r   r   add)r@   r   r5   rI   effective_codeeffective_details
operationsr   s           r2   _abortr     s     |:%%'t44',}'<GG%-) 	3/t<<4+"% 	 J MEE 4+"% 	 J 3E0>>	
 	
 	
 	e9 &%r4   c                      fd}|S )Nc                .   j         5  | j        d                                         rt          _        nj        t
          u rt          _        j                                          t          t                    cd d d            S # 1 swxY w Y   d S r/   )
r}   r0   r)   r   r   r   _CLOSED
notify_allr   _RECEIVE_CLOSE_ON_SERVER_TOKEN)receive_close_on_server_eventr@   s    r2   r"   z9_receive_close_on_server.<locals>.receive_close_on_server.  s    _ 	P 	P,=a@JJLL ')&&&O&&((((0NOO	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	Ps   A4B

BBrP   )r@   r"   s   ` r2   _receive_close_on_serverr   -  s)    P P P P P #"r4   request_deserializerOptional[DeserializingFunction]c                      fd}|S )Nc                   t          |           }|ij        5  j        t          u rt          _        j                                         t          t                    cd d d            S # 1 swxY w Y   d S t          j	        |          }j        5  |"t          t          j        j        d           n|_        j                                         t          t                    cd d d            S # 1 swxY w Y   d S )Ns    Exception deserializing request!)r3   r}   r   r   r   r   r   _RECEIVE_MESSAGE_TOKENr   deserializer   r   r<   internalr~   )receive_message_eventserialized_requestr~   r   r   r@   s      r2   r$   z)_receive_message.<locals>.receive_message?  s   01FGG% L L<5((#*EL**,,,,U4JKK	L L L L L L L L L L L L L L L L L L )"$8 G  L L?)2;	    %,EM**,,,,U4JKKL L L L L L L L L L L L L L L L L Ls%   AA//A36A3AC>>DDrP   )r@   r   r   r$   s   ``` r2   _receive_messager   :  s7    
L L L L L L L2 r4   c                      fd}|S )Nc                p    j         5  t          t                    cd d d            S # 1 swxY w Y   d S r9   )r}   r   _SEND_INITIAL_METADATA_TOKEN)"unused_send_initial_metadata_eventr@   s    r2   r#   z5_send_initial_metadata.<locals>.send_initial_metadata\  s    _ 	N 	N(0LMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	Ns   +//rP   )r@   r#   s   ` r2   _send_initial_metadatar   [  s)    N N N N N ! r4   c                      fd}|S )Nc                    j         5  j                                          t                    cd d d            S # 1 swxY w Y   d S r9   )r}   r   r   )unused_send_message_eventr@   r   s    r2   r%   z#_send_message.<locals>.send_messaged  s    _ 	7 	7O&&((((66	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   )?AArP   )r@   r   r%   s   `` r2   _send_messager   c  s*    7 7 7 7 7 7
 r4   c                      e Zd ZU ded<   ded<   ded<   d6d	Zd7dZd8dZd9dZd:dZd9dZ	d;dZ
d<dZd=dZd>dZd?dZd@d!ZdAd$ZdBd&Zd;d'ZdCd+ZdDd.ZdEd/ZdFd0ZdGd1ZdHd3Zd9d4Zd5S )I_Contextr+   
_rpc_eventrA   _stater   r   	rpc_eventr@   c                0    || _         || _        || _        d S r9   )r   r   _request_deserializer)rZ   r   r@   r   s       r2   rl   z_Context.__init__q  s      $%9"""r4   r,   r   c                v    | j         j        5  t          | j                   cd d d            S # 1 swxY w Y   d S r9   )r   r}   r   rY   s    r2   	is_activez_Context.is_active{  s~    [" 	5 	5'44	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   .22floatc                h    t          | j        j        j        t	          j                    z
  d          S r/   )maxr   call_detailsdeadlinetimerY   s    r2   time_remainingz_Context.time_remaining  s%    4?/849;;FJJJr4   r   c                B    | j         j                                         d S r9   )r   r   cancelrY   s    r2   r   z_Context.cancel  s    ##%%%%%r4   callbackr   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 )NFT)r   r}   r   r   )rZ   r   s     r2   add_callbackz_Context.add_callback  s    [" 	 	{$,	 	 	 	 	 	 	 	 K!((222		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A AAAc                h    | j         j        5  d| j         _        d d d            d S # 1 swxY w Y   d S r   )r   r}   r   rY   s    r2    disable_next_message_compressionz)_Context.disable_next_message_compression  s{    [" 	8 	837DK0	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8   '++r   c                    | j         j        S r9   )r   rR   rY   s    r2   rR   z_Context.invocation_metadata  s    22r4   rg   c                b    t          j        | j        j                                                  S r9   )r   decoder   r   peerrY   s    r2   r   z_Context.peer  s#    ~do27799:::r4   Optional[Sequence[bytes]]c                >    t          j        | j        j                  S r9   )r   peer_identitiesr   r   rY   s    r2   r   z_Context.peer_identities  s    %do&:;;;r4   rU   c                n    t          j        | j        j                  }||nt	          j        |          S r9   )r   peer_identity_keyr   r   r   r   )rZ   id_keys     r2   r   z_Context.peer_identity_key  s/    )$/*>??vvW^F-C-CCr4   Mapping[str, Sequence[bytes]]c                    t          j        | j        j                  }|i n|}d |                                D             S )Nc                >    i | ]\  }}t          j        |          |S rP   )r   r   ).0keyvalues      r2   
<dictcomp>z)_Context.auth_context.<locals>.<dictcomp>  s8     
 
 
U N3
 
 
r4   )r   auth_contextr   r   items)rZ   r  auth_context_dicts      r2   r  z_Context.auth_context  sS    *4?+?@@"."6BBL
 
/5577
 
 
 	
r4   compressiongrpc.Compressionc                h    | j         j        5  || j         _        d d d            d S # 1 swxY w Y   d S r9   )r   r}   r   )rZ   r  s     r2   set_compressionz_Context.set_compression  s{    [" 	< 	<0;DK-	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<r   initial_metadatar   c                   | j         j        5  | j         j        t          u rt	          | j                    | j         j        ryt          | j         |          }| j        j        	                    |ft          | j                              d| j         _        | j         j                            t                     nd}t          |          	 d d d            d S # 1 swxY w Y   d S )NFz#Initial metadata no longer allowed!)r   r}   r   r   r   r   r   r   r   r   r   r   r   r   
ValueError)rZ   r  r   	error_msgs       r2   r#   z_Context.send_initial_metadata  s'   [" 	, 	,{!Z// ---{3 ,;K!1 	 $77L"8"E"E   8=4##$@AAAAA	 +++ B	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   B>CC Cr   c                h    | j         j        5  || j         _        d d d            d S # 1 swxY w Y   d S r9   )r   r}   r   )rZ   r   s     r2   set_trailing_metadataz_Context.set_trailing_metadata  s{    [" 	> 	>,=DK)	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>r   c                    | j         j        S r9   )r   r   rY   s    r2   r   z_Context.trailing_metadata  s    {,,r4   r5   r6   rI   c                B   |t           j        j        k    r-t                              d           t           j        j        }d}| j        j        5  || j        _        t          j
        |          | j        _        d| j        _        t                      # 1 swxY w Y   d S )Nz4abort() called with StatusCode.OK; returning UNKNOWN T)r   r<   OK_LOGGERerrorUNKNOWNr   r}   r5   r   encoderI   r   	Exception)rZ   r5   rI   s      r2   abortz_Context.abort  s    4?%%%MMF   ?*DG[" 	 	#DK")."9"9DK"&DK++		 	 	 	 	 	 	 	 	 	s   ABBBstatusgrpc.Statusc                h    |j         | j        _         |                     |j        |j                   d S r9   )r   r   r  r5   rI   )rZ   r  s     r2   abort_with_statusz_Context.abort_with_status  s-    (.(@%

6;/////r4   c                h    | j         j        5  || j         _        d d d            d S # 1 swxY w Y   d S r9   )r   r}   r5   )rZ   r5   s     r2   set_codez_Context.set_code  s{    [" 	$ 	$#DK	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$r   c                    | j         j        S r9   )r   r5   rY   s    r2   r5   z_Context.code  s    {r4   c                    | j         j        5  t          j        |          | j         _        d d d            d S # 1 swxY w Y   d S r9   )r   r}   r   r  rI   )rZ   rI   s     r2   set_detailsz_Context.set_details  s    [" 	: 	:")."9"9DK	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s   9= =r-   c                    | j         j        S r9   )r   rI   rY   s    r2   rI   z_Context.details  s    {""r4   c                    d S r9   rP   rY   s    r2   _finalize_statez_Context._finalize_state  s    r4   N)r   r+   r@   rA   r   r   )r,   r   )r,   r   r,   r   )r   r   r,   r   )r,   r   )r,   rg   )r,   r   ra   )r,   r   )r  r  r,   r   )r  r   r,   r   )r   r   r,   r   )r5   r6   rI   rg   r,   r   )r  r  r,   r   )r5   r6   r,   r   )r,   r6   )rI   rg   r,   r   )r,   r-   )rM   rN   rO   r   rl   r   r   r   r   r   rR   r   r   r   r  r
  r#   r  r   r  r  r   r5   r#  rI   r&  rP   r4   r2   r   r   l  s            9999: : : :5 5 5 5K K K K& & & &   8 8 8 83 3 3 3; ; ; ;< < < <D D D D
 
 
 
< < < <, , , ,"> > > >- - - -   0 0 0 0$ $ $ $       : : : :# # # #     r4   r   c                  f    e Zd ZU ded<   ded<   ded<   dd
ZddZddZddZddZddZ	ddZ
dS )_RequestIteratorrA   r   r   _callr   r   r@   r   r   c                0    || _         || _        || _        d S r9   )r   r*  r   )rZ   r@   r   r   s       r2   rl   z_RequestIterator.__init__  s      
%9"""r4   r,   r   c                   | j         j        t          u rt          | j                    d S t	          | j                   st                      | j                            t          j	        t                    ft          | j         | j        | j                             | j         j                            t                     d S r9   )r   r   r   r   r   StopIterationr*  r   r   ReceiveMessageOperationr   r   r   r   r   r   rY   s    r2   _raise_or_start_receive_messagez0_RequestIterator._raise_or_start_receive_message  s    ;++T[)))))%dk22 		8//!J))/==? KT-G    KO 677777r4   r   c                    | j         j        t          u rt          | j                    nG| j         j        !t
          | j         j        vrt                      | j         j        }d | j         _        |S t                      r9   )	r   r   r   r   r~   r   r   r-  AssertionErrorrZ   r~   s     r2   _look_for_requestz"_RequestIterator._look_for_request  sn    ;++T[))))K'&dko==//!k)G"&DKNr4   c                    | j         j        5  |                                  	 | j         j                                         |                                 }||cd d d            S C# 1 swxY w Y   d S r9   )r   r}   r/  waitr3  r2  s     r2   _nextz_RequestIterator._next  s    [" 	# 	#00222#%**,,,0022&"	# 	# 	# 	# 	# 	# 	# 	##	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   AA&%A&&A*-A*c                    | S r9   rP   rY   s    r2   __iter__z_RequestIterator.__iter__  s    r4   c                *    |                                  S r9   r6  rY   s    r2   __next__z_RequestIterator.__next__      zz||r4   c                *    |                                  S r9   r:  rY   s    r2   nextz_RequestIterator.next   r<  r4   N)r@   rA   r   r   r   r   r'  )r,   r   )r,   r)  )rM   rN   rO   r   rl   r/  r3  r6  r8  r;  r>  rP   r4   r2   r)  r)    s         ::::: : : :8 8 8 8   # # # #           r4   r)  r   Callable[[], Any]c                      fd}|S )Nc            	        j         5  t                    s	 d d d            d S j                            t	          j        t                    ft          j                             j        	                    t                     	 j                                          j        j        t          u red                    j        j                  } t%          j        t          j        j        t+          j        |                      	 d d d            d S j        t.          u r	 d d d            d S nj        }d _        |cd d d            S # 1 swxY w Y   d S )NTz*"{}" requires exactly one request message.)r}   r   r   r   r   r.  r   r   r   r   r   r5  r~   r   r   formatr   rQ   r   r<   unimplementedr   r  r   )rI   r~   r   r   r@   s     r2   unary_requestz%_unary_request.<locals>.unary_request)  s   _ 	# 	#'.. 	# 	# 	# 	# 	# 	# 	# 	# N--/==? 	8LMM   IMM0111#$$&&&=(|w..HOO ) 6 =   
 !%N"-;#N733	    $/	# 	# 	# 	# 	# 	# 	# 	#0 |z11#3	# 	# 	# 	# 	# 	# 	# 	#0 2 $mG$(EM";	# 	# 	# 	# 	# 	# 	# 	##	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s)   EC-E!E=EEE"ErP   )r   r@   r   rD  s   ``` r2   _unary_requestrE  $  s1    
# # # # # # #@ r4   behaviorr   argumentr   send_response_callback(Optional[Callable[[ResponseType], None]]8Tuple[Union[ResponseType, Iterator[ResponseType]], bool]c                2   ddl m}  || ||          5 }	 d }| ||||          }n |||          }|dfcd d d            S # t          $ r:}	|j        5  |j        r't          || j        t          j        j	        d           n|	|j
        vr	 d                    |	          }
ne# t          $ rX d}
t                              t          j        t!          |	          |	|	j                             t          j                     Y nw xY wt                              |
           t          || j        t          j        j	        t'          j        |
                     d d d            n# 1 swxY w Y   Y d }	~	d d d            dS d }	~	ww xY w# 1 swxY w Y   d S )Nr   )_create_servicer_contextT   RPC Abortedz!Exception calling application: {}z1Calling application raised unprintable Exception!NF)r   rL  r  r}   r   r   r   r   r<   r=   r   rB  r  	exception	tracebackformat_exceptiontype__traceback__	print_excr   r  )r   r@   rF  rG  r   rH  rL  r|   response_or_iteratorrO  rI   s              r2   _call_behaviorrV  L  s    .-----	!	!5.
 
 -	*	#' %1'/xg'=( ($$ (0x''B'B$'-- - - - - - - -  !	 !	 !	  = !)1&	    e&666."E"L"L%# # % . . .O    ))%6 $Y ) ) 7    "+-----. %%g...!)1w//	  5              @ ;;;[- - - - - - - -!	- - - - - - - - - -s~   F!AF	F8E(B%$E(%AD	E(D	AE(F(E,,F/E,0F3FF		FFFresponse_iteratorIterator[ResponseType]Tuple[ResponseType, bool]c           
        	 t          |          dfS # t          $ r Y dS t          $ r}|j        5  |j        r't          || j        t          j        j	        d           np||j
        vrgd                    |          }t                              |           t          || j        t          j        j	        t          j        |                     d d d            n# 1 swxY w Y   Y d }~dS d }~ww xY w)NTr   rM  z!Exception iterating responses: {}rN  )r>  r-  r  r}   r   r   r   r   r<   r=   r   rB  r  rO  r   r  )r   r@   rW  rO  rI   s        r2   %_take_response_from_response_iteratorr[    s[   
%&&,,   zz   _ 	 	} N%-"	    %"222=DDYOO!!'***N%-N7++	  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	" {{{{{%s=    
C1	C1C,BCC,C	C,"C	#C,,C1responseresponse_serializerOptional[SerializingFunction]r   c                    t          j        ||          }|G|j        5  t          || j        t
          j        j        d           d d d            n# 1 swxY w Y   d S |S )Ns   Failed to serialize response!)r   	serializer}   r   r   r   r<   r   )r   r@   r\  r]  serialized_responses        r2   _serialize_responserb    s     "+H6IJJ"_ 	 	!*0	  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ts   'AAAUnion[int, cygrpc.WriteFlag]c                @    | j         rt          j        j        S t          S r9   )r   r   	WriteFlagno_compressr   rD   s    r2   %_get_send_message_op_flags_from_staterg    s!     % ,++r4   c                T    | j         5  d| _        d d d            d S # 1 swxY w Y   d S rN  )r}   r   rD   s    r2   _reset_per_message_stateri    sv    	 / /).&/ / / / / / / / / / / / / / / / / /s   !!ra  r   c                l   |j         5  t          |          s	 d d d            dS |j        rAt          |d           t	          j        |t          |                    f}d|_        t          }n*t	          j        |t          |                    f}t          }| j	        
                    |t          ||                     |j                            |           t          |           	 |j                                          ||j        vrt          |          cd d d            S ># 1 swxY w Y   d S rN  )r}   r   r   r   r   SendMessageOperationrg  -_SEND_INITIAL_METADATA_AND_SEND_MESSAGE_TOKEN_SEND_MESSAGE_TOKENr   r   r   r   r   ri  r5  )r   r@   ra  r   r   s        r2   _send_responsern    s    
 3 3#E** 	3 3 3 3 3 3 3 3 ) 	(/t<<+'9%@@ J .3E*AEE +'9%@@ J (E))eU33	
 	
 	
 		e '''	3O  """EI%%+E22;3 3 3 3 3 3 3 34	353 3 3 3 3 3 3 3 3 3s   D)C5D)(D))D-0D-c           	     l   |j         5  |j        t          urt          |          }t	          |          }t          j        |j        ||t                    g}|j	        r#|
                    t          |d                      |5|
                    t          j        |t          |                               | j                            |t!          |t"                               d|_        t'          |           |j                            t"                     d d d            d S # 1 swxY w Y   d S r   )r}   r   r   rE   rJ   r   r   r   r   r   r   r   rk  rg  r   r   r   r   r   ri  r   r   )r   r@   ra  r5   rI   r   s         r2   _statusrp    sz   
 
 : :<z))#E**DuooG4+T7L J
 - P!!"A%"N"NOOO".!!/+=eDD    N--(0NOO   "EN$U+++IMM89991: : : : : : : : : : : : : : : : : :s   DD))D-0D-argument_thunkc                `   t          j        |            	  |            }|=t          | ||||          \  }}|r%t          | |||          }	|	t	          | ||	           n## t
          $ r t          j                     Y nw xY wt          j                     d S # t          j                     w xY wr9   )	r   'install_context_from_request_call_eventrV  rb  rp  r  rP  rT  uninstall_context)
r   r@   rF  rq  r   r]  rG  r\  proceedra  s
             r2   _unary_response_in_poolrv    s     29===#!>## .5(H6J! !Hg  C&9uh0C' '# '2Iu.ABBB    	 """"" """"s*   A	A  B  B =B ?B  B B-c                    t          j                    d fd}	  |            }|Wt          |d          r|j        rt	           ||||           n*t	           |||          \  }}	|	rt           ||           n## t          $ r t          j                     Y nw xY wt          j	                     d S # t          j	                     w xY w)	Nr\  r   r,   r   c                    | t          d            d S t          |           }|t          |           d S d S r9   )rp  rb  rn  )r\  ra  r]  r   r@   s     r2   send_responsez/_stream_response_in_pool.<locals>.send_response-  sd    Iud+++++"55(,?# # #.y%1DEEEEE /.r4   experimental_non_blocking)rH  )r\  r   r,   r   )
r   rs  hasattrrz  rV  3_send_message_callback_to_blocking_iterator_adapterr  rP  rT  rt  )
r   r@   rF  rq  r   r]  ry  rG  rW  ru  s
   ``   `    r2   _stream_response_in_poolr}  #  sV    29===F F F F F F F F#!>##"=>>6 (+8     .<uh:N. .*!7  G!5-9J       	 """"" """"s*   A#B B= B%"B= $B%%B= =Cc                .    | j         t          uo| j         S r9   )r   r   r   rD   s    r2   r   r   T  s    <z)@%..@@r4   Callable[[ResponseType], None]c                p    	 t          | ||          \  }}|r ||           t          |          sd S nd S 6r9   )r[  r   )r   r@   rH  rW  r\  ru  s         r2   r|  r|  X  sd    	Au/
 
'  	""8,,,'..  E	r4   default_thread_poolfutures.ThreadPoolExecutorc                r    t          | d          r&t          | j        t          j                  r| j        S |S )Nexperimental_thread_pool)r{  
isinstancer  r   ThreadPoolExecutor)rF  r  s     r2    _select_thread_pool_for_behaviorr  j  sD     x344 1)7+E: : 1 00r4   rz   grpc.RpcMethodHandlerfutures.Futurec           
         t          | ||j                  }t          |j        |          }|                    |j        j        t          | ||j        ||j        |j                  S r9   )	rE  r   r  unary_unarysubmitr|   runrv  r]  r   r@   rz   r  rD  thread_pools         r2   _handle_unary_unaryr  u  sw     #5.= M 3"$7 K "+*	 	 	r4   c           
         t          | ||j                  }t          |j        |          }|                    |j        j        t          | ||j        ||j        |j                  S r9   )	rE  r   r  unary_streamr  r|   r  r}  r]  r  s         r2   _handle_unary_streamr    sw     #5.= M 3#%8 K  #+*	 	 	r4   c           
         t          || j        |j                  t          |j        |          }|                    |j        j        t          | ||j        fd|j        |j	                  S )Nc                      S r9   rP   request_iterators   r2   <lambda>z&_handle_stream_unary.<locals>.<lambda>        r4   )
r)  r   r   r  stream_unaryr  r|   r  rv  r]  r   r@   rz   r  r  r  s        @r2   _handle_stream_unaryr    s     (y~~B  3#%8 K #    +*	 	 	r4   c           
         t          || j        |j                  t          |j        |          }|                    |j        j        t          | ||j        fd|j        |j	                  S )Nc                      S r9   rP   r  s   r2   r  z'_handle_stream_stream.<locals>.<lambda>  r  r4   )
r)  r   r   r  stream_streamr  r|   r  r}  r]  r  s        @r2   _handle_stream_streamr    s     (y~~B  3$&9 K  $    +*	 	 	r4   method_with_handlerinterceptor_pipeline'Optional[_interceptor._ServicePipeline]r]   c                   dfd}                                 }|st          j        | j        j                  }t          || j                  }|!|j                            |j	        ||          S |j                            ||          S )Nr\   rL   r,   r]   c                .                         |           S r9   )r`   )r\   r  s    r2   query_handlersz,_find_method_handler.<locals>.query_handlers  s     #**+?@@@r4   rb   )
r[   r   r   r   rQ   rL   rR   r|   r  execute)r   r@   r  r  r  method_namer\   s     `    r2   _find_method_handlerr    s    A A A A A A
 &**,,K DnY%;%BCC.% 
 '}   (.:N
 
 	
 =^-ABBBr4   	rpc_stater  c                    t          d           t          j        t                    t          j        d ||t                    f}| j                            |fd           d S )Nc                    dfS r   rP   )_ignored_eventr  s    r2   r  z_reject_rpc.<locals>.<lambda>  s     
 r4   )r   r   ReceiveCloseOnServerOperationr   r   r   r   )r   r  r  rI   r   s    `   r2   _reject_rpcr    s}     	(	488,\::,&'<	
 	
J N%%	
 	
 	
 	
    r4   r  c                   |j         5  | j                            t          j        t
                    ft          |                     |j                            t                     |j
        rC|j        rt          | |||          cd d d            S t          | |||          cd d d            S |j        rt          | |||          cd d d            S t          | |||          cd d d            S # 1 swxY w Y   d S r9   )r}   r   r   r   r  r   r   r   r   r   request_streamingresponse_streamingr  r  r  r  )r   r@   rz   r  s       r2   _handle_with_method_handlerr    s    
 
 
))1,??A$U++	
 	
 	
 		4555+ 	0 ,unk 
 
 
 
 
 
 
 
 (5.+ 
 
 
 
 
 
 
 
 , 	'5.+ 
 
 
 
 
 
 
 
$ #unk
 
%
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s$   A?C5C52C5C55C9<C9concurrency_exceeded4Tuple[Optional[_RPCState], Optional[futures.Future]]c                6   | j         sdS | j        j        s|                                rt	                      }	 t          | |||          }nk# t          $ r^}d                    |          }t          	                    |           t          | |t          j        j        d           |dfcY d}~S d}~ww xY w|%t          | |t          j        j        d           |dfS |r%t          | |t          j        j        d           |dfS |t!          | |||          fS dS )a  Handles RPC based on provided handlers.

      When receiving a call event from Core, registered method will have its
    name as tag, we pass the tag as registered_method_name to this method,
    then we can find the handler in registered_method_handlers based on
    the method name.

      For call event with unregistered method, the method name will be included
    in rpc_event.call_details.method and we need to query the generics handlers
    to find the actual handler.
    )NNzException servicing handler: {}s   Error in service handler!Ns   Method not found!s   Concurrent RPC limit exceeded!)successr   rQ   r[   rA   r  r  rB  r  rO  r  r   r<   r=   rC  resource_exhaustedr  )	r   r  r  r  r  r  rz   rO  rI   s	            r2   _handle_callr  #  s   $  z$ (
(;(@(@(B(B (
KK		#1#$	 NN  		# 		# 		#7>>yIIGg&&&!),	   d?""""""		# !!/$	   d?" 	#!41	   d?"'9nk 
 	
 :s   A 
B4AB/)B4/B4c                      e Zd ZdZdZdZdS )_ServerStagestoppedstartedgraceN)rM   rN   rO   STOPPEDSTARTEDGRACErP   r4   r2   r  r  c  s        GGEEEr4   r  c                      e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   d"d Zd!S )#_ServerStatezthreading.RLocklockcygrpc.CompletionQueuecompletion_queuecygrpc.Serverserverrs   rr    Dict[str, grpc.RpcMethodHandler]registered_method_handlersr  r  r  r  r  stagethreading.Eventtermination_eventzList[threading.Event]shutdown_eventsOptional[int]maximum_concurrent_rpcsintactive_rpc_countzSet[_RPCState]
rpc_stateszSet[str]r   r   server_deallocated Sequence[grpc.GenericRpcHandler]c                   t          j                    | _        || _        || _        t          |          | _        || _        || _        t          j
        | _        t          j                    | _        | j        g| _        || _        d| _        i | _        t%                      | _        t%                      | _        d| _        d S )Nr   F)r   RLockr  r  r  listrr   r  r  r  r  r  Eventr  r  r  r  r  r   r  r   r  )rZ   r  r  rr   r  r  r  s          r2   rl   z_ServerState.__init__|  s     O%%	 0 $%5 6 6$8!&!)
!*!2!2 $ 67'>$ !*,' %%55 #(r4   N)r  r  r  r  rr   r  r  r  r  r  r  r  )rM   rN   rO   r   rl   rP   r4   r2   r  r  j  s         ,,,,2222@@@@AAAA++++&&&&********MMM( ( ( ( ( (r4   r  rr    Iterable[grpc.GenericRpcHandler]c                z    | j         5  | j                            |           d d d            d S # 1 swxY w Y   d S r9   )r  rr   extend)r@   rr   s     r2   _add_generic_handlersr    s     
 8 8%%&67778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8   044method_handlersr  c                z    | j         5  | j                            |           d d d            d S # 1 swxY w Y   d S r9   )r  r  update)r@   r  s     r2   _add_registered_method_handlersr    s     
 A A(//@@@A A A A A A A A A A A A A A A A A Ar  addressr  c                x    | j         5  | j                            |          cd d d            S # 1 swxY w Y   d S r9   )r  r  add_http2_port)r@   r  s     r2   _add_insecure_portr    s    	 4 4|**7334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s   /33server_credentialsgrpc.ServerCredentialsc                    | j         5  | j                            ||j                  cd d d            S # 1 swxY w Y   d S r9   )r  r  r  _credentials)r@   r  r  s      r2   _add_secure_portr    s    
 
 
 
|**'4
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s    599c                    | j                             | j        | j        t                     | j                            t                     d S r9   )r  r!   r  _REQUEST_CALL_TAGr   r   rD   s    r2   _request_callr    sG    	L 68I   
IMM#$$$$$r4   rQ   c                    |}| j                             | j        | j        ||           | j                            |           d S r9   )r  request_registered_callr  r   r   )r@   rQ   registered_call_tags      r2   _request_registered_callr    sQ     	L((	   
IMM%&&&&&r4   c                    | j         sQ| j        sJ| j                                         | j        D ]}|                                 t          j        | _        dS dS r   )	r  r   r  destroyr  r   r  r  r  )r@   shutdown_events     r2   _stop_servingr    se     EI #3 	! 	!N    "*t5r4   c                f    | j         5  | xj        dz  c_        d d d            d S # 1 swxY w Y   d S )N   )r  r  rD   s    r2   _on_call_completedr    s    	 $ $!#$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   &**eventc                n    d}|j         t          u rQ j        5   j                            t                     t                     rd}d d d            n# 1 swxY w Y   nR|j         t          u s!|j          j                                        v rd }|j          j                                        v r1|j         }t          | j        
                    |d                     }nt           j                  } j        5   j                            |j                     j        d uo j         j        k    }t          || j         j        |          \  }}| j                            |           |( xj        dz  c_        |                     fd            j        t,          j        u r<| j                                        v rt1           |           n!t3                      nt                     rd}d d d            n# 1 swxY w Y   n|                     |          \  }}|D ]7}		  |	             # t4          $ r t6                              d           Y 4w xY w|J j        5   j                            |           t                     rd}d d d            n# 1 swxY w Y   |S )NTFr  c                "    t                    S r9   )r  )_unused_futurer@   s    r2   r  z-_process_event_and_continue.<locals>.<lambda>  s    +=e+D+D r4   zException calling callback!)tag_SHUTDOWN_TAGr  r   r   r  r  r  keysrf   r;   rq   rr   r  r  r  r  r  r  r   add_done_callbackr  r  r  r  r  r  r  rO  )
r@   r  should_continueregistered_method_namer  r  r  
rpc_futurer   r   s
   `         r2   _process_event_and_continuer    s    OyM!!Z 	( 	(I]+++U## ("'	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(
 		&&&98==????!%98==????%*Y""3&044*D # # #1&# # Z 	( 	(IUY'''-T9 L*e.KK ! %1#*!$% %!Iz $ $$Y///%&&!+&&,,DDDD   {l222*7<<>>? ? -U4JKKKK!%((((u%% ("';	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(>  %yy//	9! 	A 	AHA



 A A A!!"?@@@@@A  , , ''	222 '' ,&+O, , , , , , , , , , , , , , , sH   1AAA C?HHH4
H??$I&%I&2,J**J.1J.c                    	 t          j                     t          z   }| j                            |          }| j        rt          |            |j        t          j        j	        k    rt          | |          sd S d }zr9   )r   "_DEALLOCATED_SERVER_CHECK_PERIOD_Sr  pollr  _begin_shutdown_oncecompletion_typer   CompletionTypequeue_timeoutr  )r@   timeoutr  s      r2   _server  "  s~    )++ BB&++G44# 	( ''' F$9$GGG.ue<<  r4   c                   | j         5  | j        t          j        u rU| j                            | j        t                     t          j        | _        | j	        
                    t                     d d d            d S # 1 swxY w Y   d S r9   )r  r  r  r  r  r    r  r  r  r   r   rD   s    r2   r	  r	  1  s    	 ) );,...L!!%"8-HHH&,EKIMM-(((	) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   A)A>>BBr  Optional[float]r  c                0     j         5   j        t          j        u r5t	          j                                                     cd d d            S t                      t	          j                     j        	                                j
                                         n> fd}t	          j        |          }|                                 cd d d            S 	 d d d            n# 1 swxY w Y                                    S )Nc                                                      j        5  j                                         d d d            d S # 1 swxY w Y   d S N)r  )r5  r  r  cancel_all_calls)r  r  r@   s   r2   cancel_all_calls_after_gracez+_stop.<locals>.cancel_all_calls_after_graceF  s    ##E#222Z 4 4L113334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s   AA
A
)target)r  r  r  r  r   r  r   r	  r  r   r  r  Threadstartr5  )r@   r  r  threadr  s   ``  @r2   _stopr  9  s   	 " ";,...&_..N   !	" " " " " " " "
 	U###"**$$^444=L))++++4 4 4 4 4 4 4
 %-IJJJFLLNNN!'" " " " " " " " ," " " " " " " " " " " " " " "( s   <C7B	C77C;>C;c                   | j         5  | j        t          j        urd}t	          |          | j                                         t          j        | _        | j        	                                D ]}t          | |           t          |            t          j        t          | f          }d|_        |                                 d d d            d S # 1 swxY w Y   d S )Nz$Cannot start already-started server!)r  argsT)r  r  r  r  r  r  r  r  r  r   r  r  r   r  r  daemon)r@   r  rQ   r  s       r2   _startr  R  s   	  ;l222>IY'''"*6;;== 	4 	4F$UF3333e!uh???                 s   CCCCgeneric_rpc_handlersc                `    | D ]*}t          |dd           }|d| d}t          |          +d S )Nrx   "zP" must conform togrpc.GenericRpcHandler type but does not have "service" method!)getattrAttributeError)r  generic_rpc_handlerservice_attributer  s       r2   _validate_generic_rpc_handlersr&  c  sl      4 , ,#$7DII$R' R R R  !+++ %, ,r4   base_optionsSequence[ChannelArgumentType]r  r   xdsc                |    t          j        |          }t          j        |          }t	          |           |z   |z   S r9   )r   create_channel_optionr   (create_server_call_tracer_factory_optionr   )r'  r  r)  compression_option'maybe_server_call_tracer_factory_options        r2   _augment_optionsr/  p  sJ    
 &;KHH?DD , 	l
	
1	2r4   c                  b    e Zd ZU ded<   d+dZd,dZd-dZd.dZd/d!Zd0d"Z	d1d2d&Z
d3d)Zd* Zd#S )4_Serverr  r   r  r  rr   r  interceptors Sequence[grpc.ServerInterceptor]optionsr(  r  r  r  r   r)  r   c                   t          j                    }t          j        t          |||          |          }	|	                    |           t          ||	|t          j        |          ||          | _        |	| _	        d S r9   )
r   CompletionQueueServerr/  register_completion_queuer  r   service_pipeliner   
_cy_server)
rZ   r  rr   r2  r4  r  r  r)  r  r  s
             r2   rl   z_Server.__init__  s     "133/cJJCPP(()9:::"),77#
 
 !r4   r  r  r,   r   c                N    t          |           t          | j        |           d S r9   )r&  r  r   )rZ   r  s     r2   add_generic_rpc_handlersz _Server.add_generic_rpc_handlers  s,     	'';<<<dk+?@@@@@r4   service_namerg   r  r  c                j   | j         j        5  | j         j        t          j        u r	 d d d            d S 	 d d d            n# 1 swxY w Y   fd|                                D             }|                                D ]}| j                            |           t          | j         |           d S )Nc                B    i | ]\  }}t          j        |          |S rP   )r   fully_qualified_method)r   rQ   rz   r=  s      r2   r  z:_Server.add_registered_method_handlers.<locals>.<dictcomp>  s<     
 
 
& *<@@.
 
 
r4   )
r   r  r  r  r  r  r   r:  register_methodr  )rZ   r=  r  method_to_handlersr@  s    `   r2   add_registered_method_handlersz&_Server.add_registered_method_handlers  s.    [ 	 	{ L$888	 	 	 	 	 	 	 	8	 	 	 	 	 	 	 	 	 	 	 	 	 	 	

 
 
 
*9*?*?*A*A
 
 
 '9&=&=&?&? 	D 	D"O++,BCCCC'5GHHHHHs   AA	Ar  r  c           	     v    t          j        |t          | j        t          j        |                              S r9   )r   validate_port_binding_resultr  r   r  )rZ   r  s     r2   add_insecure_portz_Server.add_insecure_port  s3    3'W^G5L5LMM
 
 	
r4   r  r  c           	     x    t          j        |t          | j        t          j        |          |                    S r9   )r   rE  r  r   r  )rZ   r  r  s      r2   add_secure_portz_Server.add_secure_port  s=     3W^G446H 
 
 	
r4   c                .    t          | j                   d S r9   )r  r   rY   s    r2   r  z_Server.start  s    t{r4   Nr  r  c                l    t          j        | j        j        j        | j        j        j        |          S r  )r   r5  r   r  is_set)rZ   r  s     r2   wait_for_terminationz_Server.wait_for_termination  s6     |K).K)0
 
 
 	
r4   r  r  c                ,    t          | j        |          S r9   )r  r   )rZ   r  s     r2   stopz_Server.stop  s    T[%(((r4   c                B    t          | d          rd| j        _        d S d S )Nr   T)r{  r   r  rY   s    r2   __del__z_Server.__del__  s0    4"" 	2 .2DK***	2 	2r4   )r  r  rr   r  r2  r3  r4  r(  r  r  r  r   r)  r   r  r  r,   r   )r=  rg   r  r  r,   r   )r  rg   r,   r  )r  rg   r  r  r,   r  r'  r9   )r  r  r,   r   )r  r  r,   r  )rM   rN   rO   r   rl   r<  rC  rF  rH  r  rL  rN  rP  rP   r4   r2   r1  r1    s         ! ! ! !.A A A AI I I I&
 
 
 


 
 
 
   
 
 
 
 
) ) ) )2 2 2 2 2r4   r1  r  r2  r3  r4  r  r  c           	     J    t          |           t          | ||||||          S r9   )r&  r1  )r  r  r2  r4  r  r  r)  s          r2   create_serverrS    s:     ##7888  r4   )r*   r+   r,   r-   )r5   r6   r,   r7   )r@   rA   r,   r7   )r@   rA   r5   r7   r,   r7   )r@   rA   r,   r-   )r@   rA   r,   r   )r@   rA   r   rg   r,   r   )r@   rA   r   rg   r,   r   )r@   rA   r   r   r,   r   )r@   rA   r   r   r,   r   )
r@   rA   r   r   r5   r7   rI   r-   r,   r   )r@   rA   r,   r   )r@   rA   r   r   r   r   r,   r   )r   r+   r@   rA   r   r   r,   r?  r9   )r   r+   r@   rA   rF  r   rG  r   r   r   rH  rI  r,   rJ  )r   r+   r@   rA   rW  rX  r,   rY  )
r   r+   r@   rA   r\  r   r]  r^  r,   r   )r@   rA   r,   rc  )r   r+   r@   rA   ra  r-   r,   r   )r   r+   r@   rA   ra  r   r,   r   )r   r+   r@   rA   rF  r   rq  r?  r   r^  r]  r^  r,   r   )r   r+   r@   rA   rF  r   rq  r?  r   r   r]  r^  r,   r   )r@   rA   r,   r   )
r   r+   r@   rA   rH  r  rW  rX  r,   r   )rF  r   r  r  r,   r  )
r   r+   r@   rA   rz   r  r  r  r,   r  )
r   r+   r@   rA   r  rT   r  r  r,   r]   )r   r+   r  rA   r  r7   rI   r-   )
r   r+   r@   rA   rz   r  r  r  r,   r  )r   r+   r  rT   r  r  r  r  r  r   r,   r  )r@   r  rr   r  r,   r   )r@   r  r  r  r,   r   )r@   r  r  r-   r,   r  )r@   r  r  r-   r  r  r,   r  )r@   r  r,   r   )r@   r  rQ   rg   r,   r   )r@   r  r,   r   )r@   r  r  r+   r,   r   )r@   r  r  r  r,   r  rQ  )r'  r(  r  r   r)  r   r,   r(  )r  r  r  r  r2  r3  r4  r(  r  r  r  r   r)  r   r,   r1  )__doc__
__future__r   rc   collections
concurrentr   r   enumloggingr   r   rP  typingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   grpc._cythonr   grpc._typingr   r   r   r   r   r   r   r   r   typing_extensionsr   	getLoggerrM   r  r  r  r   r   r   rm  rl  r   r   r   r   r   r   r  _INF_TIMEOUTr3   r?   rE   rG   rJ   
namedtupleHandlerCallDetailsrL   ABCrT   rf   rq   objectrA   r   r   r   r   r   r   r   r   r   r   ServicerContextr   r)  rE  rV  r[  rb  rg  ri  rn  rp  rv  r}  r   r|  r  r  r  r  r  r  r  r  r  uniqueEnumr  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r&  r/  r7  r1  rS  rP   r4   r2   <module>rg     s   2 1 " " " " " " 



                                                                                    3 3 3 3 3 3 , , , , , , . . . . . . % % % % % % , , , , , , % % % % % % , , , , , , * * * * * * . . . . . . & & & & & &
'
H
%
%" !: 6 * $ * . "; 5 9 	

%( "7 7 7 7M M M M
) ) ) )) ) ) ); ; ; ;
	 
	 
	 
	 
	K	
  	
	 
	 
		$ 	$ 	$ 	$ 	$cg 	$ 	$ 	$( ( ( ( ( ( ( ((    W   0               F      # # # #          D
# 
# 
# 
#   B! ! ! !   v v v v vt# v v vr< < < < <v < < <~% % % %\ HL7 7 7 7 7t   <   &   / / / /
 3  3  3  3F: : : :@# # # #8.# .# .# .#bA A A A   $      0   0   0   0C C C C6   ,
 
 
 
:= = = =@     49   -( -( -( -( -(6 -( -( -(`8 8 8 8A A A A4 4 4 4

 
 
 
% % % %' ' ' '   $ $ $ $D D D DN   ) ) ) )   2   "
, 
, 
, 
,    W2 W2 W2 W2 W2dk W2 W2 W2t     r4   