
    Ng                       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*  e	j+        e,          Z-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8dZ9dZ:d Z;d!Z<dd&Z=dd*Z>dd-Z?dd.Z@dd/ZA G d0 d1 ejB        d1d2          ejC                  ZD G d3 d4ejE                  ZF G d5 d6eF          ZG G d7 d8eF          ZH G d9 d,eI          ZJdd;ZKdd?ZLddAZMddDZNddFZOddJZPddKZQddNZRddOZSddPZT G dQ dRejU                  ZV G dS dTeI          ZWddWZX	 ddd_ZYddcZZddhZ[ddjZ\ddkZ]ddnZ^ddoZ_ddqZ`ddrZaddsZbdduZcddxZddd|Zedd}Zfdd~ZgddZhddZiddZjddZkddZlejm         G d dejn                              Zo G d deI          ZpddZqddZrddZsddZtddZuddZvddZwddZxddZyddZzddZ{ddZ|ddZ}ddZ~dd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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    H/var/www/html/ai-engine/env/lib/python3.11/site-packages/grpc/_server.py_serialized_requestr2   U   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)r4   cygrpc_codes     r1   _application_coder>   Y   s.    ;??EEK(3(;6$$Lr3   state	_RPCStatec                Z    | j         t          j        j        S t	          | j                   S r8   )r4   r   r;   okr>   r?   s    r1   _completion_coderD   ^   s&    z ## ,,,r3   c                <    | j         |S t          | j                   S r8   )r4   r>   )r?   r4   s     r1   _abortion_coderF   e   s!     z ,,,r3   c                "    | j         dn| j         S )Nr3   )detailsrC   s    r1   _detailsrI   n   s    -'33U]:r3   c                      e Zd ZdS )_HandlerCallDetailsN)__name__
__module____qualname__ r3   r1   rK   rK   r   s         	Dr3   rK   )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                      r8   NotImplementedErrorselfs    r1   namez_Method.name   s    !###r3   handler_call_detailsrK   Optional[grpc.RpcMethodHandler]c                    t                      r8   rV   rY   r[   s     r1   handlerz_Method.handler   s     "###r3   Nr+   rT   r[   rK   r+   r\   )rL   rM   rN   abcabstractmethodrZ   r_   rO   r3   r1   rS   rS      sZ        $ $ $ $ 	$ $ $ $ $ $r3   rS   c                  &    e Zd ZddZddZddZdS )_RegisteredMethodrZ   strregistered_handlerr\   c                "    || _         || _        d S r8   )_name_registered_handler)rY   rZ   rg   s      r1   __init__z_RegisteredMethod.__init__   s    
 
#5   r3   r+   rT   c                    | j         S r8   )ri   rX   s    r1   rZ   z_RegisteredMethod.name   s
    zr3   r[   rK   c                    | j         S r8   )rj   r^   s     r1   r_   z_RegisteredMethod.handler   s     ''r3   N)rZ   rf   rg   r\   r`   ra   rL   rM   rN   rk   rZ   r_   rO   r3   r1   re   re      sP        6 6 6 6   ( ( ( ( ( (r3   re   c                  &    e Zd ZddZddZdd
ZdS )_GenericMethodgeneric_handlersList[grpc.GenericRpcHandler]c                    || _         d S r8   )_generic_handlers)rY   rq   s     r1   rk   z_GenericMethod.__init__   s     "2r3   r+   rT   c                    d S r8   rO   rX   s    r1   rZ   z_GenericMethod.name   s    tr3   r[   rK   r\   c                P    | j         D ]}|                    |          }||c S d S r8   )rt   service)rY   r[   generic_handlermethod_handlers       r1   r_   z_GenericMethod.handler   sF    
  $5 	& 	&O,445IJJN)%%%% *tr3   N)rq   rr   r`   ra   rn   rO   r3   r1   rp   rp      sP        2 2 2 2   	 	 	 	 	 	r3   rp   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 )r@   zcontextvars.Contextcontextzthreading.Condition	conditionr   requestrf   clientboolinitial_metadata_allowedOptional[grpc.Compression]compression_algorithmdisable_next_compressionOptional[MetadataType]trailing_metadatazOptional[grpc.StatusCode]r4   Optional[bytes]rH   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   r4   rH   r   r   r   r   rX   s    r1   rk   z_RPCState.__init__   s    "*,,",..55(,%%)"(-%!%	r3   N)rL   rM   rN   __annotations__r   rf   r   rk   rO   r3   r1   r@   r@      s             """"
c(CLLLKKK""""5555""""----####NNN2222MMM    r3   Nonec                `    t          j                    }| j                            |           |r8   )grpcRpcErrorr   append)r?   	rpc_errors     r1   _raise_rpc_errorr      s)    I	I&&&
Or3   tokenrf   r   c                    | j                             |           t          |           s| j         s| j        }d | _        | |fS dS )NNrO   )r   remove_is_rpc_state_activer   )r?   r   r   s      r1   _possibly_finish_callr      sQ     
IU&& uy O	ixr3   r   c                      fd}|S )Nc                f    j         5  t                    cd d d            S # 1 swxY w Y   d S r8   )r|   r   )$unused_send_status_from_server_eventr?   r   s    r1   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   &**rO   )r?   r   r%   s   `` r1   _send_status_from_serverr      s*    7 7 7 7 7 7 #"r3   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 r8   )r|   r   r   !compression_algorithm_to_metadatatuple)r?   r   compression_metadatas      r1   _get_initial_metadatar      s	    
  & 	>/ $ 
 +        ,eHoo=                         s   %A&A&A&&A*-A*cygrpc.Operationc                V    t          j        t          | |          t                    }|S r8   )r   SendInitialMetadataOperationr   _EMPTY_FLAGS)r?   r   	operations      r1   _get_initial_metadata_operationr     s-     3eX.. I r3   callcygrpc.CallrH   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~   
_CANCELLEDrF   rH   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   r4   rH   effective_codeeffective_details
operationsr   s           r1   _abortr     s     |:%%'t44',}'<GG%-) 	3/t<<4+"% 	 J MEE 4+"% 	 J 3E0>>	
 	
 	
 	e9 &%r3   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|   r/   r(   r   r~   r   _CLOSED
notify_allr   _RECEIVE_CLOSE_ON_SERVER_TOKEN)receive_close_on_server_eventr?   s    r1   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rO   )r?   r!   s   ` r1   _receive_close_on_serverr   -  s)    P P P P P #"r3   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!)r2   r|   r~   r   r   r   r   _RECEIVE_MESSAGE_TOKENr   deserializer   r   r;   internalr}   )receive_message_eventserialized_requestr}   r   r   r?   s      r1   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rO   )r?   r   r   r#   s   ``` r1   _receive_messager   :  s7    
L L L L L L L2 r3   c                      fd}|S )Nc                p    j         5  t          t                    cd d d            S # 1 swxY w Y   d S r8   )r|   r   _SEND_INITIAL_METADATA_TOKEN)"unused_send_initial_metadata_eventr?   s    r1   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   +//rO   )r?   r"   s   ` r1   _send_initial_metadatar   [  s)    N N N N N ! r3   c                      fd}|S )Nc                    j         5  j                                          t                    cd d d            S # 1 swxY w Y   d S r8   )r|   r   r   )unused_send_message_eventr?   r   s    r1   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rO   )r?   r   r$   s   `` r1   _send_messager   c  s*    7 7 7 7 7 7
 r3   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_eventr@   _stater   r   	rpc_eventr?   c                0    || _         || _        || _        d S r8   )r   r   _request_deserializer)rY   r   r?   r   s       r1   rk   z_Context.__init__q  s      $%9"""r3   r+   r   c                v    | j         j        5  t          | j                   cd d d            S # 1 swxY w Y   d S r8   )r   r|   r   rX   s    r1   	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timerX   s    r1   time_remainingz_Context.time_remaining  s%    4?/849;;FJJJr3   r   c                B    | j         j                                         d S r8   )r   r   cancelrX   s    r1   r   z_Context.cancel  s    ##%%%%%r3   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   )rY   r   s     r1   add_callbackz_Context.add_callback  s    [" 	 	{$,	 	 	 	 	 	 	 	 %,,X666	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	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   rX   s    r1    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 r8   )r   rQ   rX   s    r1   rQ   z_Context.invocation_metadata  s    22r3   rf   c                b    t          j        | j        j                                                  S r8   )r   decoder   r   peerrX   s    r1   r   z_Context.peer  s#    ~do27799:::r3   Optional[Sequence[bytes]]c                >    t          j        | j        j                  S r8   )r   peer_identitiesr   r   rX   s    r1   r   z_Context.peer_identities  s    %do&:;;;r3   rT   c                n    t          j        | j        j                  }||nt	          j        |          S r8   )r   peer_identity_keyr   r   r   r   )rY   id_keys     r1   r   z_Context.peer_identity_key  s/    )$/*>??vvW^F-C-CCr3   Mapping[str, Sequence[bytes]]c                    t          j        | j        j                  }|i n|}d |                                D             S )Nc                >    i | ]\  }}t          j        |          |S rO   )r   r   ).0keyvalues      r1   
<dictcomp>z)_Context.auth_context.<locals>.<dictcomp>  s8     
 
 
U N3
 
 
r3   )r   auth_contextr   r   items)rY   r  auth_context_dicts      r1   r  z_Context.auth_context  sS    *4?+?@@"."6BBL
 
/5577
 
 
 	
r3   compressiongrpc.Compressionc                h    | j         j        5  || j         _        d d d            d S # 1 swxY w Y   d S r8   )r   r|   r   )rY   r  s     r1   set_compressionz_Context.set_compression  s{    [" 	< 	<0;DK-	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<r   initial_metadatar   c                   | j         j        5  | j         j        t          u rt	          | j                    n| j         j        ryt          | j         |          }| j        j        	                    |ft          | j                              d| j         _        | j         j                            t                     nt          d          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)rY   r
  r   s      r1   r"   z_Context.send_initial_metadata  s6   [" 	L 	L{!Z// ----;7 
L ?%5! !I O(;;"&<T[&I&I   <ADK8KO''(DEEEE$%JKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L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 r8   )r   r|   r   )rY   r   s     r1   set_trailing_metadataz_Context.set_trailing_metadata  s{    [" 	> 	>,=DK)	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>r   c                    | j         j        S r8   )r   r   rX   s    r1   r   z_Context.trailing_metadata  s    {,,r3   r4   r5   rH   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|   r4   r   encoderH   r   	Exception)rY   r4   rH   s      r1   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 r8   )r   r   r  r4   rH   )rY   r  s     r1   abort_with_statusz_Context.abort_with_status  s-    (.(@%

6;/////r3   c                h    | j         j        5  || j         _        d d d            d S # 1 swxY w Y   d S r8   )r   r|   r4   )rY   r4   s     r1   set_codez_Context.set_code  s{    [" 	$ 	$#DK	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$r   c                    | j         j        S r8   )r   r4   rX   s    r1   r4   z_Context.code  s    {r3   c                    | j         j        5  t          j        |          | j         _        d d d            d S # 1 swxY w Y   d S r8   )r   r|   r   r  rH   )rY   rH   s     r1   set_detailsz_Context.set_details  s    [" 	: 	:")."9"9DK	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s   9= =r,   c                    | j         j        S r8   )r   rH   rX   s    r1   rH   z_Context.details  s    {""r3   c                    d S r8   rO   rX   s    r1   _finalize_statez_Context._finalize_state  s    r3   N)r   r*   r?   r@   r   r   )r+   r   )r+   r   r+   r   )r   r   r+   r   )r+   r   )r+   rf   )r+   r   r`   )r+   r   )r  r  r+   r   )r
  r   r+   r   )r   r   r+   r   )r4   r5   rH   rf   r+   r   )r  r  r+   r   )r4   r5   r+   r   )r+   r5   )rH   rf   r+   r   )r+   r,   )rL   rM   rN   r   rk   r   r   r   r   r   rQ   r   r   r   r  r	  r"   r  r   r  r  r  r4   r!  rH   r$  rO   r3   r1   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
 
 
 
< < < <L L L L"> > > >- - - -   0 0 0 0$ $ $ $       : : : :# # # #     r3   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 )_RequestIteratorr@   r   r   _callr   r   r?   r   r   c                0    || _         || _        || _        d S r8   )r   r(  r   )rY   r?   r   r   s       r1   rk   z_RequestIterator.__init__  s      
%9"""r3   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 r8   )r   r~   r   r   r   StopIterationr(  r   r   ReceiveMessageOperationr   r   r   r   r   r   rX   s    r1   _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7r3   r   c                    | j         j        t          u rt          | j                    nG| j         j        !t
          | j         j        vrt                      | j         j        }d | j         _        |S t                      r8   )	r   r~   r   r   r}   r   r   r+  AssertionErrorrY   r}   s     r1   _look_for_requestz"_RequestIterator._look_for_request  sn    ;++T[))))K'&dko==//!k)G"&DKNr3   c                    | j         j        5  |                                  	 | j         j                                         |                                 }||cd d d            S C# 1 swxY w Y   d S r8   )r   r|   r-  waitr1  r0  s     r1   _nextz_RequestIterator._next  s    [" 	# 	#00222#%**,,,0022&"	# 	# 	# 	# 	# 	# 	# 	##	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   AA&%A&&A*-A*c                    | S r8   rO   rX   s    r1   __iter__z_RequestIterator.__iter__  s    r3   c                *    |                                  S r8   r4  rX   s    r1   __next__z_RequestIterator.__next__      zz||r3   c                *    |                                  S r8   r8  rX   s    r1   nextz_RequestIterator.next!  r:  r3   N)r?   r@   r   r   r   r   r%  )r+   r   )r+   r'  )rL   rM   rN   r   rk   r-  r1  r4  r6  r9  r<  rO   r3   r1   r'  r'    s         ::::: : : :8 8 8 8   # # # #           r3   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   r3  r}   r~   r   formatr   rP   r   r;   unimplementedr   r  r   )rH   r}   r   r   r?   s     r1   unary_requestz%_unary_request.<locals>.unary_request*  s   _ 	' 	''.. '	' 	' 	' 	' 	' 	' 	' 	' 113LAAC$y~/C    	4555'O((***}, <722&R&Y&Y ) 6 =' 'G # % ) & 1 ? 'w 7 7	   $(1	' 	' 	' 	' 	' 	' 	' 	'2 #\Z77#'5	' 	' 	' 	' 	' 	' 	' 	'2 8 #(-(,&=	' 	' 	' 	' 	' 	' 	' 	''	' 	' 	' 	' 	' 	' 	' 	' 	' 	's)   EC-E!E=EEE"ErO   )r   r?   r   rB  s   ``` r1   _unary_requestrC  %  s1    
' ' ' ' ' ' 'B r3   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   rJ  r  r|   r   r   r   r   r;   r<   r   r@  r  	exception	tracebackformat_exceptiontype__traceback__	print_excr   r  )r   r?   rD  rE  r   rF  rJ  r{   response_or_iteratorrM  rH   s              r1   _call_behaviorrT  N  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   rK  z!Exception iterating responses: {}rL  )r<  r+  r  r|   r   r   r   r   r;   r<   r   r@  r  rM  r   r  )r   r?   rU  rM  rH   s        r1   %_take_response_from_response_iteratorrY    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?   rZ  r[  serialized_responses        r1   _serialize_responser`    s     "+H6IJJ"_ 	 	!*0	  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 t""s   'AAAUnion[int, cygrpc.WriteFlag]c                @    | j         rt          j        j        S t          S r8   )r   r   	WriteFlagno_compressr   rC   s    r1   %_get_send_message_op_flags_from_statere    s!     % ++r3   c                T    | j         5  d| _        d d d            d S # 1 swxY w Y   d S rL  )r|   r   rC   s    r1   _reset_per_message_staterg    sv    	 / /).&/ / / / / / / / / / / / / / / / / /s   !!r_  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 rL  )r|   r   r   r   r   SendMessageOperationre  -_SEND_INITIAL_METADATA_AND_SEND_MESSAGE_TOKEN_SEND_MESSAGE_TOKENr   r   r   r   r   rg  r3  )r   r?   r_  r   r   s        r1   _send_responserl    s    
 7 7#E** 	77 7 7 7 7 7 7 7 - ,3E4@@/+=eDD 
 27.E /+=eDD 
 ,N--M%77   IMM%   $U+++7$$&&&	))/66=7 7 7 7 7 7 7 76777 7 7 7 7 7 7 7 7 7s   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   rD   rI   r   r   r   r   r   r   r   ri  re  r   r   r   r   r   rg  r   r   )r   r?   r_  r4   rH   r   s         r1   _statusrn    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r8   )	r   'install_context_from_request_call_eventrT  r`  rn  r  rN  rR  uninstall_context)
r   r?   rD  ro  r   r[  rE  rZ  proceedr_  s
             r1   _unary_response_in_poolrt    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)	NrZ  r   r+   r   c                    | t          d            d S t          |           }|t          |           d S d S r8   )rn  r`  rl  )rZ  r_  r[  r   r?   s     r1   send_responsez/_stream_response_in_pool.<locals>.send_response2  sd    Iud+++++"55(,?# # #.y%1DEEEEE /.r3   experimental_non_blocking)rF  )rZ  r   r+   r   )
r   rq  hasattrrx  rT  3_send_message_callback_to_blocking_iterator_adapterr  rN  rR  rr  )
r   r?   rD  ro  r   r[  rw  rE  rU  rs  s
   ``   `    r1   _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 r8   )r~   r   r   rC   s    r1   r   r   Y  s    <z)@%..@@r3   Callable[[ResponseType], None]c                p    	 t          | ||          \  }}|r ||           t          |          sd S nd S 6r8   )rY  r   )r   r?   rF  rU  rZ  rs  s         r1   rz  rz  ]  sd    	Au/
 
'  	""8,,,'..  E	r3   default_thread_poolfutures.ThreadPoolExecutorc                r    t          | d          r&t          | j        t          j                  r| j        S |S )Nexperimental_thread_pool)ry  
isinstancer  r   ThreadPoolExecutor)rD  r  s     r1    _select_thread_pool_for_behaviorr  o  sD     x344 #)7+E: : # 00""r3   ry   grpc.RpcMethodHandlerfutures.Futurec           
         t          | ||j                  }t          |j        |          }|                    |j        j        t          | ||j        ||j        |j                  S r8   )	rC  r   r  unary_unarysubmitr{   runrt  r[  r   r?   ry   r  rB  thread_pools         r1   _handle_unary_unaryr  {  sw     #5.= M 3"$7 K "+*	 	 	r3   c           
         t          | ||j                  }t          |j        |          }|                    |j        j        t          | ||j        ||j        |j                  S r8   )	rC  r   r  unary_streamr  r{   r  r{  r[  r  s         r1   _handle_unary_streamr    sw     #5.= M 3#%8 K  #+*	 	 	r3   c           
         t          || j        |j                  t          |j        |          }|                    |j        j        t          | ||j        fd|j        |j	                  S )Nc                      S r8   rO   request_iterators   r1   <lambda>z&_handle_stream_unary.<locals>.<lambda>        r3   )
r'  r   r   r  stream_unaryr  r{   r  rt  r[  r   r?   ry   r  r  r  s        @r1   _handle_stream_unaryr    s     (y~~B  3#%8 K #    +*	 	 	r3   c           
         t          || j        |j                  t          |j        |          }|                    |j        j        t          | ||j        fd|j        |j	                  S )Nc                      S r8   rO   r  s   r1   r  z'_handle_stream_stream.<locals>.<lambda>  r  r3   )
r'  r   r   r  stream_streamr  r{   r  r{  r[  r  s        @r1   _handle_stream_streamr    s     (y~~B  3$&9 K  $    +*	 	 	r3   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[   rK   r+   r\   c                .                         |           S r8   )r_   )r[   r  s    r1   query_handlersz,_find_method_handler.<locals>.query_handlers  s     #**+?@@@r3   ra   )
rZ   r   r   r   rP   rK   rQ   r{   r  execute)r   r?   r  r  r  method_namer[   s     `    r1   _find_method_handlerr    s    A A A A A A
 &**,,K DnY%;%BCC.% 
 '}   (.:N
 
 	
 }  1EFFFr3   	rpc_stater  c                    t          d           t          j        t                    t          j        d ||t                    f}| j                            |fd           d S )Nc                    dfS r   rO   )ignored_eventr  s    r1   r  z_reject_rpc.<locals>.<lambda>  s    
 r3   )r   r   ReceiveCloseOnServerOperationr   r   r   r   )r   r  r  rH   r   s    `   r1   _reject_rpcr    s}     	(	488,\::,&'<	
 	
J N%%	
 	
 	
 	
    r3   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 r8   )r|   r   r   r   r  r   r   r   r   r   request_streamingresponse_streamingr  r  r  r  )r   r?   ry   r  s       r1   _handle_with_method_handlerr    s    
  ))1,??A$U++	
 	
 	
 		4555+ 	0 ,unk         ,unk          0 +unk #       * +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 it's
    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   rP   rZ   r@   r  r  r@  r  rM  r  r   r;   r<   rA  resource_exhaustedr  )	r   r  r  r  r  r  ry   rM  rH   s	            r1   _handle_callr  -  s   $  z$ +(;(@(@(B(B +KK		#1#$	 NN  		# 		# 		#7>>yIIGg&&&!),	   d?""""""		# !!/$	   d?"! 	!41	   d?" +y.+   zs   A 
B4AB/)B4/B4c                      e Zd ZdZdZdZdS )_ServerStagestoppedstartedgraceN)rL   rM   rN   STOPPEDSTARTEDGRACErO   r3   r1   r  r  o  s        GGEEEr3   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serverrr   rq    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  listrq   r  r  r  r  r  Eventr  r  r  r  r  r   r  r   r  )rY   r  r  rq   r  r  r  s          r1   rk   z_ServerState.__init__  s     O%%	 0 $%5 6 6$8!&!)
!*!2!2 $ 67'>$ !*,' %%55 #(r3   N)r  r  r  r  rq   r  r  r  r  r  r  r  )rL   rM   rN   r   rk   rO   r3   r1   r  r  v  s         ,,,,2222@@@@AAAA++++&&&&********MMM( ( ( ( ( (r3   r  rq    Iterable[grpc.GenericRpcHandler]c                z    | j         5  | j                            |           d d d            d S # 1 swxY w Y   d S r8   )r  rq   extend)r?   rq   s     r1   _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 r8   )r  r  update)r?   r  s     r1   _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 r8   )r  r  add_http2_port)r?   r  s     r1   _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 r8   )r  r  r  _credentials)r?   r  r  s      r1   _add_secure_portr    s    
 
 
 
|**'4
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s    599c                    | j                             | j        | j        t                     | j                            t                     d S r8   )r  r    r  _REQUEST_CALL_TAGr   r   rC   s    r1   _request_callr    sG    	L 68I   
IMM#$$$$$r3   rP   c                    |}| j                             | j        | j        ||           | j                            |           d S r8   )r  request_registered_callr  r   r   )r?   rP   registered_call_tags      r1   _request_registered_callr    sQ     	L((	   
IMM%&&&&&r3   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     r1   _stop_servingr    se     EI #3 	! 	!N    "*tur3   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  rC   s    r1   _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 r8   )r  )unused_futurer?   s    r1   r  z-_process_event_and_continue.<locals>.<lambda>  s    *<U*C*C r3   zException calling callback!)tag_SHUTDOWN_TAGr  r   r   r  r  r  keysre   r:   rp   rq   r  r  r  r  r  r  r   add_done_callbackr  r  r  r  r  r  r  rM  )
r?   r  should_continueregistered_method_namer  r  r  
rpc_futurer   r   s
   `         r1   _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///%&&!+&&,,CCCC   {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 }zr8   )r   "_DEALLOCATED_SERVER_CHECK_PERIOD_Sr  pollr  _begin_shutdown_oncecompletion_typer   CompletionTypequeue_timeoutr  )r?   timeoutr  s      r1   _server  /  s~    )++ BB&++G44# 	( ''' F$9$GGG.ue<<  r3   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 r8   )r  r  r  r  r  r   r  r  r  r   r   rC   s    r1   r  r  >  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  )r3  r  r  cancel_all_calls)r  r  r?   s   r1   cancel_all_calls_after_gracez+_stop.<locals>.cancel_all_calls_after_graceT  s    "'''666 8 8557778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8s   AA
A
)target)r  r  r  r  r   r  r   r  r  r   r  r  Threadstartr3  )r?   r  r  threadr  s   ``  @r1   _stopr  F  s   	 & &;,...&_..N   !	& & & & & & & & !'''&_..N!((888}--////8 8 8 8 8 8 8
 #)1MNNN%)& & & & & & & & 0& & & & & & & & & & & & & & &* s   <C7B	C77C;>C;c                   | j         5  | j        t          j        urt	          d          | 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?   rP   r  s      r1   _startr  `  s   	  ;l222CDDD"*6;;== 	4 	4F$UF3333e!uh???                 s   B?CCCgeneric_rpc_handlersc                z    | D ]7}t          |dd           }|"t          d                    |                    8d S )Nrw   zT"{}" must conform to grpc.GenericRpcHandler type but does not have "service" method!)getattrAttributeErrorr@  )r  generic_rpc_handlerservice_attributes      r1   _validate_generic_rpc_handlersr#  p  sa      4  #$7DII$ --3V4G-H-H   % r3   base_optionsSequence[ChannelArgumentType]r  r   xdsc                |    t          j        |          }t          j        |          }t	          |           |z   |z   S r8   )r   create_channel_optionr   (create_server_call_tracer_factory_optionr   )r$  r  r&  compression_option'maybe_server_call_tracer_factory_options        r1   _augment_optionsr,  |  sJ    
 &;KHH?DD , 	l
	
1	2r3   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  rq   r  interceptors Sequence[grpc.ServerInterceptor]optionsr%  r  r  r  r   r&  r   c                   t          j                    }t          j        t          |||          |          }	|	                    |           t          ||	|t          j        |          ||          | _        |	| _	        d S r8   )
r   CompletionQueueServerr,  register_completion_queuer  r   service_pipeliner   
_cy_server)
rY   r  rq   r/  r1  r  r  r&  r  r  s
             r1   rk   z_Server.__init__  s     "133/cJJCPP(()9:::"),77#
 
 !r3   r  r  r+   r   c                N    t          |           t          | j        |           d S r8   )r#  r  r   )rY   r  s     r1   add_generic_rpc_handlersz _Server.add_generic_rpc_handlers  s,     	'';<<<dk+?@@@@@r3   service_namerf   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 rO   )r   fully_qualified_method)r   rP   ry   r:  s      r1   r  z:_Server.add_registered_method_handlers.<locals>.<dictcomp>  s<     
 
 
& *<@@.
 
 
r3   )
r   r  r  r  r  r  r  r7  register_methodr  )rY   r:  r  method_to_handlersr=  s    `   r1   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 r8   )r   validate_port_binding_resultr  r   r  )rY   r  s     r1   add_insecure_portz_Server.add_insecure_port  s3    3'W^G5L5LMM
 
 	
r3   r  r  c           	     x    t          j        |t          | j        t          j        |          |                    S r8   )r   rB  r  r   r  )rY   r  r  s      r1   add_secure_portz_Server.add_secure_port  s=     3W^G446H 
 
 	
r3   c                .    t          | j                   d S r8   )r  r   rX   s    r1   r  z_Server.start  s    t{r3   Nr  r  c                l    t          j        | j        j        j        | j        j        j        |          S r  )r   r3  r   r  is_set)rY   r  s     r1   wait_for_terminationz_Server.wait_for_termination  s6     |K).K)0
 
 
 	
r3   r  r  c                ,    t          | j        |          S r8   )r  r   )rY   r  s     r1   stopz_Server.stop  s    T[%(((r3   c                B    t          | d          rd| j        _        d S d S )Nr   T)ry  r   r  rX   s    r1   __del__z_Server.__del__  s0    4"" 	2 .2DK***	2 	2r3   )r  r  rq   r  r/  r0  r1  r%  r  r  r  r   r&  r   r  r  r+   r   )r:  rf   r  r  r+   r   )r  rf   r+   r  )r  rf   r  r  r+   r  r%  r8   )r  r  r+   r   )r  r  r+   r  )rL   rM   rN   r   rk   r9  r@  rC  rE  r  rI  rK  rM  rO   r3   r1   r.  r.    s         ! ! ! !.A A A AI I I I&
 
 
 


 
 
 
   
 
 
 
 
) ) ) )2 2 2 2 2r3   r.  r  r/  r0  r1  r  r  c           	     J    t          |           t          | ||||||          S r8   )r#  r.  )r  r  r/  r1  r  r  r&  s          r1   create_serverrP    s:     ##7888  r3   )r)   r*   r+   r,   )r4   r5   r+   r6   )r?   r@   r+   r6   )r?   r@   r4   r6   r+   r6   )r?   r@   r+   r,   )r?   r@   r+   r   )r?   r@   r   rf   r+   r   )r?   r@   r   rf   r+   r   )r?   r@   r   r   r+   r   )r?   r@   r   r   r+   r   )
r?   r@   r   r   r4   r6   rH   r,   r+   r   )r?   r@   r+   r   )r?   r@   r   r   r   r   r+   r   )r   r*   r?   r@   r   r   r+   r=  r8   )r   r*   r?   r@   rD  r   rE  r   r   r   rF  rG  r+   rH  )r   r*   r?   r@   rU  rV  r+   rW  )
r   r*   r?   r@   rZ  r   r[  r\  r+   r   )r?   r@   r+   ra  )r   r*   r?   r@   r_  r,   r+   r   )r   r*   r?   r@   r_  r   r+   r   )r   r*   r?   r@   rD  r   ro  r=  r   r\  r[  r\  r+   r   )r   r*   r?   r@   rD  r   ro  r=  r   r   r[  r\  r+   r   )r?   r@   r+   r   )
r   r*   r?   r@   rF  r}  rU  rV  r+   r   )rD  r   r  r  r+   r  )
r   r*   r?   r@   ry   r  r  r  r+   r  )
r   r*   r?   r@   r  rS   r  r  r+   r\   )r   r*   r  r@   r  r6   rH   r,   )
r   r*   r?   r@   ry   r  r  r  r+   r  )r   r*   r  rS   r  r  r  r  r  r   r+   r  )r?   r  rq   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  rP   rf   r+   r   )r?   r  r+   r   )r?   r  r  r*   r+   r   )r?   r  r  r  r+   r  rN  )r$  r%  r  r   r&  r   r+   r%  )r  r  r  r  r/  r0  r1  r%  r  r  r  r   r&  r   r+   r.  )__doc__
__future__r   rb   collections
concurrentr   r   enumloggingr   r   rN  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   	getLoggerrL   r  r  r  r   r   r   rk  rj  r   r   r   r   r   r   r  _INF_TIMEOUTr2   r>   rD   rF   rI   
namedtupleHandlerCallDetailsrK   ABCrS   re   rp   objectr@   r   r   r   r   r   r   r   r   r   r   ServicerContextr   r'  rC  rT  rY  r`  re  rg  rl  rn  rt  r{  r   rz  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,  r4  r.  rP  rO   r3   r1   <module>rc     s   2 1 " " " " " " 



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