o
    Ù­j
Ä  ã                   @  s¦  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	 -e.¡Z/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8dZ9dZ:d Z;dZ<d!Z=d"Z>dñd'd(„Z?dòd,d-„Z@dód0d1„ZAdôd2d3„ZBdõd4d5„ZCG d6d7„ d7e Dd7d8¡ejEƒZFG d9d:„ d:ejGƒZHG d;d<„ d<eHƒZIG d=d>„ d>eHƒZJG d?d/„ d/eKƒZLdödAdB„ZMd÷dFdG„ZNdødIdJ„ZOdùdMdN„ZPdúdPdQ„ZQdûdUdV„ZRdüdWdX„ZSdýd[d\„ZTdüd]d^„ZUdød_d`„ZVG dadb„ dbejWƒZXG dcdd„ ddeKƒZYdþdgdh„ZZ	dÿ�d dpdq„Z[�ddudv„Z\�dd{d|„Z]�dd~d„Z^död€d�„Z_�dd„d…„Z`�dd†d‡„Za�dd‰dŠ„Zb�dd‹dŒ„Zc�dd�dŽ„Zd�d	d�d‘„Ze�d
d”d•„Zf�dd™dš„Zg�dd›dœ„Zh�dd�dž„Zi�ddŸd „Zj�dd¥d¦„Zk�dd©dª„Zl�dd¬d­„Zm�dd°d±„ZnejoG d²d³„ d³ejpƒƒZqG d´dµ„ dµeKƒZr�dd¸d¹„Zs�dd¼d½„Zt�ddÀdÁ„Zu�ddÄdÅ„Zv�ddÆdÇ„Zw�ddÉdÊ„Zx�ddËdÌ„Zy�ddÍdÎ„Zz�ddÐdÑ„Z{�ddÒdÓ„Z|�ddÔdÕ„Z}�ddÙdÚ„Z~�ddÛdÜ„Z�ddÞdß„Z€�ddådæ„Z�G dçdè„ dèej‚ƒZƒ�ddïdð„Z„d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    eÍÍAÚrequest_eventúcygrpc.BaseEventÚreturnÚbytesc                 C  s   | j d  ¡ S ©Nr   )Úbatch_operationsÚmessage)r)   © r0   úI/var/www/html/CropPilot/venv/lib/python3.10/site-packages/grpc/_server.pyÚ_serialized_requestV   ó   r2   Úcodeúgrpc.StatusCodeúcygrpc.StatusCodec                 C  s    t j | ¡}|d u rtjjS |S ©N)r   Ú!STATUS_CODE_TO_CYGRPC_STATUS_CODEÚgetr   Ú
StatusCodeÚunknown)r4   Úcygrpc_coder0   r0   r1   Ú_application_codeZ   s   r=   ÚstateÚ	_RPCStatec                 C  s   | j d u r	tjjS t| j ƒS r7   )r4   r   r:   Úokr=   ©r>   r0   r0   r1   Ú_completion_code_   s   

rB   c                 C  s   | j d u r|S t| j ƒS r7   )r4   r=   )r>   r4   r0   r0   r1   Ú_abortion_codee   s   

rC   c                 C  s   | j d u rdS | j S )Nó    )ÚdetailsrA   r0   r0   r1   Ú_detailsm   s   rF   c                   @  s   e Zd ZdS )Ú_HandlerCallDetailsN)Ú__name__Ú
__module__Ú__qualname__r0   r0   r0   r1   rG   q   s    
rG   )ÚmethodÚinvocation_metadatac                   @  s,   e Zd Zejddd„ƒZejddd	„ƒZd
S )Ú_Methodr+   úOptional[str]c                 C  ó   t ƒ ‚r7   ©ÚNotImplementedError©Úselfr0   r0   r1   Úname   ó   z_Method.nameÚhandler_call_detailsrG   úOptional[grpc.RpcMethodHandler]c                 C  rO   r7   rP   ©rS   rV   r0   r0   r1   Úhandlerƒ   ó   z_Method.handlerN©r+   rN   ©rV   rG   r+   rW   )rH   rI   rJ   ÚabcÚabstractmethodrT   rY   r0   r0   r0   r1   rM   ~   s
    rM   c                   @  s2   e Zd Zddd„Zedd	d
„ƒZeddd„ƒZdS )Ú_RegisteredMethodrT   ÚstrÚregistered_handlerrW   c                 C  s   || _ || _d S r7   )Ú_nameÚ_registered_handler)rS   rT   ra   r0   r0   r1   Ú__init__‹   s   
z_RegisteredMethod.__init__r+   rN   c                 C  ó   | j S r7   )rb   rR   r0   r0   r1   rT   “   rU   z_RegisteredMethod.namerV   rG   c                 C  re   r7   )rc   rX   r0   r0   r1   rY   —   rZ   z_RegisteredMethod.handlerN)rT   r`   ra   rW   r[   r\   ©rH   rI   rJ   rd   r   rT   rY   r0   r0   r0   r1   r_   Š   s    
r_   c                   @  s2   e Zd Zddd„Zeddd„ƒZeddd„ƒZdS )Ú_GenericMethodÚgeneric_handlersúList[grpc.GenericRpcHandler]c                 C  s
   || _ d S r7   )Ú_generic_handlers)rS   rh   r0   r0   r1   rd   Ÿ   s   
z_GenericMethod.__init__r+   rN   c                 C  ó   d S r7   r0   rR   r0   r0   r1   rT   ¥   s   z_GenericMethod.namerV   rG   rW   c                 C  s*   | j D ]}| |¡}|d ur|  S qd S r7   )rj   Úservice)rS   rV   Úgeneric_handlerÚmethod_handlerr0   r0   r1   rY   ©   s   

ÿz_GenericMethod.handlerN)rh   ri   r[   r\   rf   r0   r0   r0   r1   rg   ž   s    
rg   c                   @  sŽ   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d„ ZdS )r?   zcontextvars.ContextÚcontextzthreading.ConditionÚ	conditionr   Úrequestr`   ÚclientÚboolÚinitial_metadata_allowedúOptional[grpc.Compression]Úcompression_algorithmÚdisable_next_compressionúOptional[MetadataType]Útrailing_metadatazOptional[grpc.StatusCode]r4   úOptional[bytes]rE   ÚstatusedzList[Exception]Ú
rpc_errorsz#Optional[List[NullaryCallbackType]]Ú	callbacksÚabortedc                 C  sh   t  ¡ | _t ¡ | _tƒ | _d | _t	| _
d| _d | _d| _d | _d | _d | _d| _g | _g | _d| _d S ©NTF)ÚcontextvarsÚContextro   Ú	threadingÚ	Conditionrp   ÚsetÚduerq   Ú_OPENrr   rt   rv   rw   ry   r4   rE   r{   r|   r}   r~   rR   r0   r0   r1   rd   Ç   s   


z_RPCState.__init__N)rH   rI   rJ   Ú__annotations__r   r`   r…   rd   r0   r0   r0   r1   r?   ¶   s"   
 ÚNonec                 C  s   t  ¡ }| j |¡ |‚r7   )ÚgrpcÚRpcErrorr|   Úappend)r>   Ú	rpc_errorr0   r0   r1   Ú_raise_rpc_errorÙ   s   r�   Útokenr`   r   c                 C  s2   | j  |¡ t| ƒs| j s| j}d | _| |fS dS )N©Nr0   )r…   ÚremoveÚ_is_rpc_state_activer}   )r>   rŽ   r}   r0   r0   r1   Ú_possibly_finish_callß   s   r’   r   c                   ó   ‡ ‡fdd„}|S )Nc                   s4   ˆ j � tˆ ˆƒW  d   ƒ S 1 sw   Y  d S r7   )rp   r’   )Ú$unused_send_status_from_server_event©r>   rŽ   r0   r1   r%   ë   ó   $ÿz9_send_status_from_server.<locals>.send_status_from_serverr0   )r>   rŽ   r%   r0   r•   r1   Ú_send_status_from_serverê   s   r—   Úmetadatarx   c                 C  sv   | j �. | jr(t | j¡f}|d u r|W  d   ƒ S |t|ƒ W  d   ƒ S |W  d   ƒ S 1 s4w   Y  d S r7   )rp   rv   r   Ú!compression_algorithm_to_metadataÚtuple)r>   r˜   Úcompression_metadatar0   r0   r1   Ú_get_initial_metadataò   s   ÿÿø
	÷
$örœ   úcygrpc.Operationc                 C  s   t  t| |ƒt¡}|S r7   )r   ÚSendInitialMetadataOperationrœ   Ú_EMPTY_FLAGS)r>   r˜   Ú	operationr0   r0   r1   Ú_get_initial_metadata_operation  s   
ÿr¡   Úcallúcygrpc.CallrE   c                 C  s”   | j turHt| |ƒ}| jd u r|n| j}| jr(t| d ƒt | j||t	¡f}t
}nt | j||t	¡f}t}| |t| |ƒ¡ d| _| j |¡ d S d S ©NT)rr   Ú
_CANCELLEDrC   rE   rt   r¡   r   ÚSendStatusFromServerOperationry   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   rE   Úeffective_codeÚeffective_detailsÚ
operationsrŽ   r0   r0   r1   Ú_abort  s6   

üþ	üÿ
ÿär®   c                   ó   ‡ fdd„}|S )Nc                   sd   ˆ j �% | jd  ¡ rtˆ _nˆ jtu rtˆ _ˆ j  ¡  tˆ t	ƒW  d   ƒ S 1 s+w   Y  d S r-   )
rp   r.   r(   r¥   rr   r†   Ú_CLOSEDÚ
notify_allr’   Ú_RECEIVE_CLOSE_ON_SERVER_TOKEN)Úreceive_close_on_server_eventrA   r0   r1   r!   .  s   

$úz9_receive_close_on_server.<locals>.receive_close_on_serverr0   )r>   r!   r0   rA   r1   Ú_receive_close_on_server-  s   	r´   Úrequest_deserializerúOptional[DeserializingFunction]c                   ó   ‡ ‡‡fdd„}|S )Nc                   sÊ   t | ƒ}|d u r/ˆj� ˆjtu rtˆ_ˆj ¡  tˆtƒW  d   ƒ S 1 s(w   Y  d S t 	|ˆ¡}ˆj�# |d u rGt
ˆˆ tjjdƒ n|ˆ_ˆj ¡  tˆtƒW  d   ƒ S 1 s^w   Y  d S )Ns    Exception deserializing request!)r2   rp   rr   r†   r°   r±   r’   Ú_RECEIVE_MESSAGE_TOKENr   Údeserializer®   r   r:   Úinternalrq   )Úreceive_message_eventÚserialized_requestrq   ©r¢   rµ   r>   r0   r1   r#   ?  s.   

$üÿü
$õz)_receive_message.<locals>.receive_messager0   )r>   r¢   rµ   r#   r0   r½   r1   Ú_receive_message:  s   r¾   c                   r¯   )Nc                   s4   ˆ j � tˆ tƒW  d   ƒ S 1 sw   Y  d S r7   )rp   r’   Ú_SEND_INITIAL_METADATA_TOKEN)Ú"unused_send_initial_metadata_eventrA   r0   r1   r"   \  r–   z5_send_initial_metadata.<locals>.send_initial_metadatar0   )r>   r"   r0   rA   r1   Ú_send_initial_metadata[  s   rÁ   c                   r“   )Nc                   s>   ˆ j � ˆ j  ¡  tˆ ˆƒW  d   ƒ S 1 sw   Y  d S r7   )rp   r±   r’   )Úunused_send_message_eventr•   r0   r1   r$   d  s   
$þz#_send_message.<locals>.send_messager0   )r>   rŽ   r$   r0   r•   r1   Ú_send_messagec  s   rÃ   c                   @  s  e Zd ZU ded< ded< ded< dLd	d
„ZdMdd„ZdNdd„ZdOdd„ZdPdd„ZdOdd„Z	dQdd„Z
dRdd „ZdSd"d#„ZdTd%d&„ZdUd(d)„ZdVd,d-„ZdWd0d1„ZdXd3d4„ZdQd5d6„ZdYd:d;„ZdZd>d?„Zd[d@dA„Zd\dBdC„Zd]dDdE„Zd^dGdH„ZdOdIdJ„ZdKS )_Ú_Contextr*   Ú
_rpc_eventr?   Ú_stater¶   rµ   Ú	rpc_eventr>   c                 C  ó   || _ || _|| _d S r7   )rÅ   rÆ   Ú_request_deserializer)rS   rÇ   r>   rµ   r0   r0   r1   rd   q  ó   
z_Context.__init__r+   rs   c                 C  s6   | j j� t| j ƒW  d   ƒ S 1 sw   Y  d S r7   )rÆ   rp   r‘   rR   r0   r0   r1   Ú	is_active{  s   
$ÿz_Context.is_activeÚfloatc                 C  s   t | jjjt ¡  dƒS r-   )ÚmaxrÅ   Úcall_detailsÚdeadlineÚtimerR   r0   r0   r1   Útime_remaining  s   z_Context.time_remainingrˆ   c                 C  s   | j j ¡  d S r7   )rÅ   r¢   ÚcancelrR   r0   r0   r1   rÒ   ‚  s   z_Context.cancelÚcallbackr   c                 C  s\   | j j�  | j jd u r	 W d   ƒ dS | j j |¡ 	 W d   ƒ dS 1 s'w   Y  d S )NFT)rÆ   rp   r}   r‹   )rS   rÓ   r0   r0   r1   Úadd_callback…  s   
þ$üz_Context.add_callbackc                 C  s6   | j j� d| j _W d   ƒ d S 1 sw   Y  d S r¤   )rÆ   rp   rw   rR   r0   r0   r1   Ú disable_next_message_compressionŒ  ó   

"ÿz)_Context.disable_next_message_compressionrx   c                 C  ó   | j jS r7   )rÅ   rL   rR   r0   r0   r1   rL   �  ó   z_Context.invocation_metadatar`   c                 C  s   t  | jj ¡ ¡S r7   )r   ÚdecoderÅ   r¢   ÚpeerrR   r0   r0   r1   rÚ   “  ó   z_Context.peerúOptional[Sequence[bytes]]c                 C  s   t  | jj¡S r7   )r   Úpeer_identitiesrÅ   r¢   rR   r0   r0   r1   rÝ   –  r3   z_Context.peer_identitiesrN   c                 C  s$   t  | jj¡}|d u r|S t |¡S r7   )r   Úpeer_identity_keyrÅ   r¢   r   rÙ   )rS   Úid_keyr0   r0   r1   rÞ   ™  s   z_Context.peer_identity_keyúMapping[str, Sequence[bytes]]c                 C  s0   t  | jj¡}|d u ri n|}dd„ | ¡ D ƒS )Nc                 S  s   i | ]
\}}t  |¡|“qS r0   )r   rÙ   )Ú.0ÚkeyÚvaluer0   r0   r1   Ú
<dictcomp>   s    
ÿÿz)_Context.auth_context.<locals>.<dictcomp>)r   Úauth_contextrÅ   r¢   Úitems)rS   rå   Úauth_context_dictr0   r0   r1   rå   �  s
   þz_Context.auth_contextÚcompressionúgrpc.Compressionc                 C  ó6   | j j� || j _W d   ƒ d S 1 sw   Y  d S r7   )rÆ   rp   rv   )rS   rè   r0   r0   r1   Úset_compression¥  rÖ   z_Context.set_compressionÚinitial_metadatar   c                 C  s”   | j j�< | j jtu rt| j ƒ | j jr2t| j |ƒ}| jj 	|ft
| j ƒ¡ d| j _| j j t¡ nd}t|ƒ‚W d   ƒ d S 1 sCw   Y  d S )NFz#Initial metadata no longer allowed!)rÆ   rp   rr   r¥   r�   rt   r¡   rÅ   r¢   r©   rÁ   r…   rª   r¿   Ú
ValueError)rS   rì   r    Ú	error_msgr0   r0   r1   r"   ©  s    

ÿÿý"õz_Context.send_initial_metadatary   c                 C  rê   r7   )rÆ   rp   ry   )rS   ry   r0   r0   r1   Úset_trailing_metadataº  rÖ   z_Context.set_trailing_metadatac                 C  r×   r7   )rÆ   ry   rR   r0   r0   r1   ry   ¾  rØ   z_Context.trailing_metadatar4   r5   rE   c                 C  sd   |t jjkrt d¡ t jj}d}| jj� || j_t	 
|¡| j_d| j_tƒ ‚1 s+w   Y  d S )Nz4abort() called with StatusCode.OK; returning UNKNOWNÚ T)r‰   r:   ÚOKÚ_LOGGERÚerrorÚUNKNOWNrÆ   rp   r4   r   ÚencoderE   r~   Ú	Exception)rS   r4   rE   r0   r0   r1   ÚabortÁ  s   ÿ
üz_Context.abortÚstatusúgrpc.Statusc                 C  s   |j | j_ |  |j|j¡ d S r7   )ry   rÆ   r÷   r4   rE   )rS   rø   r0   r0   r1   Úabort_with_statusÏ  s   
z_Context.abort_with_statusc                 C  rê   r7   )rÆ   rp   r4   )rS   r4   r0   r0   r1   Úset_codeÓ  rÖ   z_Context.set_codec                 C  r×   r7   )rÆ   r4   rR   r0   r0   r1   r4   ×  rØ   z_Context.codec                 C  s<   | j j� t |¡| j _W d   ƒ d S 1 sw   Y  d S r7   )rÆ   rp   r   rõ   rE   )rS   rE   r0   r0   r1   Úset_detailsÚ  s   
"ÿz_Context.set_detailsr,   c                 C  r×   r7   )rÆ   rE   rR   r0   r0   r1   rE   Þ  rØ   z_Context.detailsc                 C  rk   r7   r0   rR   r0   r0   r1   Ú_finalize_stateá  ó   z_Context._finalize_stateN)rÇ   r*   r>   r?   rµ   r¶   )r+   rs   )r+   rÌ   ©r+   rˆ   )rÓ   r   r+   rs   )r+   rx   )r+   r`   )r+   rÜ   r[   )r+   rà   )rè   ré   r+   rˆ   )rì   r   r+   rˆ   )ry   r   r+   rˆ   )r4   r5   rE   r`   r+   rˆ   )rø   rù   r+   rˆ   )r4   r5   r+   rˆ   )r+   r5   )rE   r`   r+   rˆ   )r+   r,   )rH   rI   rJ   r‡   rd   rË   rÑ   rÒ   rÔ   rÕ   rL   rÚ   rÝ   rÞ   rå   rë   r"   rï   ry   r÷   rú   rû   r4   rü   rE   rý   r0   r0   r0   r1   rÄ   l  s4   
 





















rÄ   c                   @  sl   e Zd ZU ded< ded< ded< dd
d„Zddd„Zddd„Zddd„Zddd„Zddd„Z	ddd„Z
dS ) Ú_RequestIteratorr?   rÆ   r£   Ú_callr¶   rÉ   r>   r¢   rµ   c                 C  rÈ   r7   )rÆ   r  rÉ   )rS   r>   r¢   rµ   r0   r0   r1   rd   ê  rÊ   z_RequestIterator.__init__r+   rˆ   c                 C  s`   | j jtu rt| j ƒ d S t| j ƒstƒ ‚| j t 	t
¡ft| j | j| jƒ¡ | j j t¡ d S r7   )rÆ   rr   r¥   r�   r‘   ÚStopIterationr  r©   r   ÚReceiveMessageOperationrŸ   r¾   rÉ   r…   rª   r¸   rR   r0   r0   r1   Ú_raise_or_start_receive_messageô  s   

ÿþz0_RequestIterator._raise_or_start_receive_messager   c                 C  sN   | j jtu rt| j ƒ tƒ ‚| j jd u rt| j jvrtƒ ‚| j j}d | j _|S r7   )	rÆ   rr   r¥   r�   rq   r¸   r…   r  ÚAssertionError©rS   rq   r0   r0   r1   Ú_look_for_request  s   
÷z"_RequestIterator._look_for_requestc                 C  sX   | j j� |  ¡  	 | j j ¡  |  ¡ }|d ur!|W  d   ƒ S q
1 s%w   Y  d S r7   )rÆ   rp   r  Úwaitr  r  r0   r0   r1   Ú_next  s   
úþz_RequestIterator._nextc                 C  s   | S r7   r0   rR   r0   r0   r1   Ú__iter__  rþ   z_RequestIterator.__iter__c                 C  ó   |   ¡ S r7   ©r	  rR   r0   r0   r1   Ú__next__  rØ   z_RequestIterator.__next__c                 C  r  r7   r  rR   r0   r0   r1   Únext   rØ   z_RequestIterator.nextN)r>   r?   r¢   r£   rµ   r¶   rÿ   )r+   r   )r+   r   )rH   rI   rJ   r‡   rd   r  r  r	  r
  r  r  r0   r0   r0   r1   r   å  s   
 





	
r   rÇ   úCallable[[], Any]c                   r·   )Nc                    sú   ˆj �p tˆƒs	 W d   ƒ d S ˆj t t¡ftˆˆjˆ ƒ¡ ˆj 	t
¡ 	 ˆj  ¡  ˆjd u rcˆjtu rTd ˆjj¡} tˆˆjtjjt | ¡ƒ 	 W d   ƒ d S ˆjtu rb	 W d   ƒ d S nˆj}d ˆ_|W  d   ƒ S q(1 svw   Y  d S )NTz*"{}" requires exactly one request message.)rp   r‘   r¢   r©   r   r  rŸ   r¾   r…   rª   r¸   r  rq   rr   r°   ÚformatrÎ   rK   r®   r:   Úunimplementedr   rõ   r¥   )rE   rq   ©rµ   rÇ   r>   r0   r1   Úunary_request)  sF   þ
þ


ÿÿüé
çãøz%_unary_request.<locals>.unary_requestr0   )rÇ   r>   rµ   r  r0   r  r1   Ú_unary_request$  s    r  Úbehaviorr   Úargumentr   Úsend_response_callbackú(Optional[Callable[[ResponseType], None]]ú8Tuple[Union[ResponseType, Iterator[ResponseType]], bool]c                 C  sV  ddl m} || ||ƒ�•}zd }|d ur||||ƒ}n|||ƒ}|dfW W  d   ƒ S  ty  }	 zi|j�Q |jrEt|| jtjj	dƒ n;|	|j
vr€zd |	¡}
W n tym   d}
t t t|	ƒ|	|	j¡¡ t ¡  Y nw t |
¡ t|| jtjj	t |
¡ƒ W d   ƒ n1 sŠw   Y  W Y d }	~	W d   ƒ dS d }	~	ww 1 s¤w   Y  d S )Nr   )Ú_create_servicer_contextTó   RPC Abortedz!Exception calling application: {}z1Calling application raised unprintable Exception!©NF)r‰   r  rö   rp   r~   r®   r¢   r   r:   r;   r|   r  rò   Ú	exceptionÚ	tracebackÚformat_exceptionÚtypeÚ__traceback__Ú	print_excr   rõ   )rÇ   r>   r  r  rµ   r  r  ro   Úresponse_or_iteratorr  rE   r0   r0   r1   Ú_call_behaviorL  sl   ÿÿ
õü
ÿÿýÿõ
ü€æ
 Ó€ôr$  Úresponse_iteratorúIterator[ResponseType]úTuple[ResponseType, bool]c                 C  sÂ   zt |ƒdfW S  ty   Y dS  ty` } zD|j�2 |jr*t|| jtjj	dƒ n||j
vrFd |¡}t |¡ t|| jtjj	t |¡ƒ W d   ƒ n1 sPw   Y  W Y d }~dS d }~ww )NTr¤   r  z!Exception iterating responses: {}r  )r  r  rö   rp   r~   r®   r¢   r   r:   r;   r|   r  rò   r  r   rõ   )rÇ   r>   r%  r  rE   r0   r0   r1   Ú%_take_response_from_response_iterator†  s6   ü


ü€õ€îr(  ÚresponseÚresponse_serializerúOptional[SerializingFunction]rz   c                 C  sX   t  ||¡}|d u r*|j� t|| jtjjdƒ W d   ƒ d S 1 s#w   Y  d S |S )Ns   Failed to serialize response!)r   Ú	serializerp   r®   r¢   r   r:   rº   )rÇ   r>   r)  r*  Úserialized_responser0   r0   r1   Ú_serialize_response¤  s   ü
ÿùr.  úUnion[int, cygrpc.WriteFlag]c                 C  s   | j rtjjS tS r7   )rw   r   Ú	WriteFlagÚno_compressrŸ   rA   r0   r0   r1   Ú%_get_send_message_op_flags_from_state·  s   r2  c                 C  s2   | j � d| _W d   ƒ d S 1 sw   Y  d S r  )rp   rw   rA   r0   r0   r1   Ú_reset_per_message_state¿  s   "ÿr3  r-  rs   c                 C  sÎ   |j �Z t|ƒs	 W d   ƒ dS |jr't|d ƒt |t|ƒ¡f}d|_t}nt |t|ƒ¡f}t}| j	 
|t||ƒ¡ |j |¡ t|ƒ 	 |j  ¡  ||jvr\t|ƒW  d   ƒ S qG1 s`w   Y  d S r  )rp   r‘   rt   r¡   r   ÚSendMessageOperationr2  Ú-_SEND_INITIAL_METADATA_AND_SEND_MESSAGE_TOKENÚ_SEND_MESSAGE_TOKENr¢   r©   rÃ   r…   rª   r3  r  )rÇ   r>   r-  r­   rŽ   r0   r0   r1   Ú_send_responseÄ  s>   þþþþÿ
ÿ

ãær7  c                 C  sÌ   |j �Y |jturTt|ƒ}t|ƒ}t |j||t¡g}|j	r&| 
t|d ƒ¡ |d ur5| 
t |t|ƒ¡¡ | j |t|tƒ¡ d|_t|ƒ |j t¡ W d   ƒ d S W d   ƒ d S 1 s_w   Y  d S r¤   )rp   rr   r¥   rB   rF   r   r¦   ry   rŸ   rt   r‹   r¡   r4  r2  r¢   r©   r—   r¨   r{   r3  r…   rª   )rÇ   r>   r-  r4   rE   r­   r0   r0   r1   Ú_statusç  s6   

ÿÿþÿþè"ÿr8  Úargument_thunkc           
      C  sš   t  | ¡ zBz&|ƒ }|d ur+t| ||||ƒ\}}|r+t| |||ƒ}	|	d ur+t| ||	ƒ W n ty9   t ¡  Y nw W t  ¡  d S W t  ¡  d S t  ¡  w r7   )	r   Ú'install_context_from_request_call_eventr$  r.  r8  rö   r  r"  Úuninstall_context)
rÇ   r>   r  r9  rµ   r*  r  r)  Úproceedr-  r0   r0   r1   Ú_unary_response_in_pool  s*   

ÿÿ€ÿ€þr=  c           
        s¾   t  ˆ¡ d	‡ ‡‡fdd„}zKz/|ƒ }|d ur=t|dƒr*|jr*tˆˆ||||d� ntˆˆ|||ƒ\}}	|	r=tˆˆ||ƒ W n tyK   t ¡  Y nw W t  	¡  d S W t  	¡  d S t  	¡  w )
Nr)  r   r+   rˆ   c                   sB   | d u rt ˆˆd ƒ d S tˆˆ| ˆ ƒ}|d urtˆˆ|ƒ d S d S r7   )r8  r.  r7  )r)  r-  ©r*  rÇ   r>   r0   r1   Úsend_response-  s   ÿÿz/_stream_response_in_pool.<locals>.send_responseÚexperimental_non_blocking)r  )r)  r   r+   rˆ   )
r   r:  Úhasattrr@  r$  Ú3_send_message_callback_to_blocking_iterator_adapterrö   r  r"  r;  )
rÇ   r>   r  r9  rµ   r*  r?  r  r%  r<  r0   r>  r1   Ú_stream_response_in_pool#  s@   

ÿþú	
ÿÿ€ÿ€þrC  c                 C  s   | j tuo| j S r7   )rr   r¥   r{   rA   r0   r0   r1   r‘   T  rÛ   r‘   úCallable[[ResponseType], None]c                 C  s2   	 t | ||ƒ\}}|r||ƒ t|ƒsd S nd S qr7   )r(  r‘   )rÇ   r>   r  r%  r)  r<  r0   r0   r1   rB  X  s   ÿÿ÷rB  Údefault_thread_poolúfutures.ThreadPoolExecutorc                 C  s"   t | dƒrt| jtjƒr| jS |S )NÚexperimental_thread_pool)rA  Ú
isinstancerG  r   ÚThreadPoolExecutor)r  rE  r0   r0   r1   Ú _select_thread_pool_for_behaviorj  s
   ÿrJ  rn   úgrpc.RpcMethodHandlerúfutures.Futurec              
   C  ó<   t | ||jƒ}t|j|ƒ}| |jjt| ||j||j|j¡S r7   )	r  rµ   rJ  Úunary_unaryÚsubmitro   Úrunr=  r*  ©rÇ   r>   rn   rE  r  Úthread_poolr0   r0   r1   Ú_handle_unary_unaryu  ó    ÿÿørS  c              
   C  rM  r7   )	r  rµ   rJ  Úunary_streamrO  ro   rP  rC  r*  rQ  r0   r0   r1   Ú_handle_unary_stream�  rT  rV  c              
     óF   t || j|jƒ‰ t|j|ƒ}| |jjt| ||j‡ fdd„|j|j	¡S )Nc                     ó   ˆ S r7   r0   r0   ©Úrequest_iteratorr0   r1   Ú<lambda>·  ó    z&_handle_stream_unary.<locals>.<lambda>)
r   r¢   rµ   rJ  Ústream_unaryrO  ro   rP  r=  r*  ©rÇ   r>   rn   rE  rR  r0   rY  r1   Ú_handle_stream_unary¥  ó    
ÿÿ
ør_  c              
     rW  )Nc                     rX  r7   r0   r0   rY  r0   r1   r[  Ï  r\  z'_handle_stream_stream.<locals>.<lambda>)
r   r¢   rµ   rJ  Ústream_streamrO  ro   rP  rC  r*  r^  r0   rY  r1   Ú_handle_stream_stream½  r`  rb  Úmethod_with_handlerÚinterceptor_pipelineú'Optional[_interceptor._ServicePipeline]rW   c                   s\   d‡ fdd„}ˆ   ¡ }|st | jj¡}t|| jƒ}|d ur'|j |j	||¡S |j ||¡S )NrV   rG   r+   rW   c                   s
   ˆ   | ¡S r7   )rY   )rV   ©rc  r0   r1   Úquery_handlersÛ  s   
z,_find_method_handler.<locals>.query_handlersr\   )
rT   r   rÙ   rÎ   rK   rG   rL   ro   rP  Úexecute)rÇ   r>   rc  rd  rg  Úmethod_namerV   r0   rf  r1   Ú_find_method_handlerÕ  s   þÿrj  Ú	rpc_staterø   c                   s<   t ˆ d ƒt t¡t d ||t¡f}| j |‡ fdd„¡ d S )Nc                   s   ˆ dfS r�   r0   )Ú_ignored_event©rk  r0   r1   r[  ÿ  s   þz_reject_rpc.<locals>.<lambda>)r¡   r   ÚReceiveCloseOnServerOperationrŸ   r¦   r¢   r©   )rÇ   rk  rø   rE   r­   r0   rm  r1   Ú_reject_rpcð  s   ÿý
þro  rR  c                 C  sÄ   |j �U | j t t¡ft|ƒ¡ |j t	¡ |j
r9|jr+t| |||ƒW  d   ƒ S t| |||ƒW  d   ƒ S |jrJt| |||ƒW  d   ƒ S t| |||ƒW  d   ƒ S 1 s[w   Y  d S r7   )rp   r¢   r©   r   rn  rŸ   r´   r…   rª   r²   Úrequest_streamingÚresponse_streamingrb  r_  rV  rS  )rÇ   r>   rn   rR  r0   r0   r1   Ú_handle_with_method_handler  s2   
þÿøÿõÿñÿ$îrr  Úconcurrency_exceededú4Tuple[Optional[_RPCState], Optional[futures.Future]]c           	   
   C  sÜ   | j sdS | jjs| ¡ rltƒ }z	t| |||ƒ}W n) tyB } zd |¡}t 	|¡ t
| |tjjdƒ |dfW  Y d}~S d}~ww |du rTt
| |tjjdƒ |dfS |rct
| |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Î   rK   rT   r?   rj  rö   r  rò   r  ro  r   r:   r;   r  Úresource_exhaustedrr  )	rÇ   rc  rd  rR  rs  rk  rn   r  rE   r0   r0   r1   Ú_handle_call#  sZ   ü

ü€÷
üüÿþrw  c                   @  s   e Zd ZdZdZdZdS )Ú_ServerStageÚstoppedÚstartedÚgraceN)rH   rI   rJ   ÚSTOPPEDÚSTARTEDÚGRACEr0   r0   r0   r1   rx  c  s    rx  c                   @  s�   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 d!„Zd"S )$Ú_ServerStatezthreading.RLockÚlockúcygrpc.CompletionQueueÚcompletion_queueúcygrpc.ServerÚserverri   rh   ú Dict[str, grpc.RpcMethodHandler]Úregistered_method_handlersre  rd  rF  rR  rx  Ú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…   rs   Úserver_deallocatedú Sequence[grpc.GenericRpcHandler]c                 C  st   t  ¡ | _|| _|| _t|ƒ| _|| _|| _t	j
| _t  ¡ | _| jg| _|| _d| _i | _tƒ | _tƒ | _d| _d S )Nr   F)r‚   ÚRLockr€  r‚  r„  Úlistrh   rd  rR  rx  r|  r‡  ÚEventr‰  rŠ  rŒ  rŽ  r†  r„   r�  r…   r�  )rS   r‚  r„  rh   rd  rR  rŒ  r0   r0   r1   rd   |  s   
	



z_ServerState.__init__N)r‚  r�  r„  rƒ  rh   r‘  rd  re  rR  rF  rŒ  r‹  )rH   rI   rJ   r‡   rd   r0   r0   r0   r1   r  j  s"   
 r  rh   ú Iterable[grpc.GenericRpcHandler]c                 C  ó8   | j � | j |¡ W d   ƒ d S 1 sw   Y  d S r7   )r€  rh   Úextend)r>   rh   r0   r0   r1   Ú_add_generic_handlersš  ó   "ÿr˜  Úmethod_handlersr…  c                 C  r–  r7   )r€  r†  Úupdate)r>   rš  r0   r0   r1   Ú_add_registered_method_handlers¡  r™  rœ  Úaddressr�  c                 C  s6   | j � | j |¡W  d   ƒ S 1 sw   Y  d S r7   )r€  r„  Úadd_http2_port)r>   r�  r0   r0   r1   Ú_add_insecure_port¨  s   
$ÿrŸ  Úserver_credentialsúgrpc.ServerCredentialsc                 C  s:   | j � | j ||j¡W  d   ƒ S 1 sw   Y  d S r7   )r€  r„  rž  Ú_credentials)r>   r�  r   r0   r0   r1   Ú_add_secure_port­  s
   ÿ$ÿr£  c                 C  s$   | j  | j| jt¡ | j t¡ d S r7   )r„  r    r‚  Ú_REQUEST_CALL_TAGr…   rª   rA   r0   r0   r1   Ú_request_call¸  s   
ÿr¥  rK   c                 C  s*   |}| j  | j| j||¡ | j |¡ d S r7   )r„  Úrequest_registered_callr‚  r…   rª   )r>   rK   Úregistered_call_tagr0   r0   r1   Ú_request_registered_call¿  s   ür¨  c                 C  s:   | j s| js| j ¡  | jD ]}| ¡  qtj| _dS dS r   )	r�  r…   r„  ÚdestroyrŠ  r„   rx  r|  r‡  )r>   Úshutdown_eventr0   r0   r1   Ú_stop_servingË  s   


r«  c                 C  s:   | j � |  jd8  _W d   ƒ d S 1 sw   Y  d S )Né   )r€  rŽ  rA   r0   r0   r1   Ú_on_call_completedÕ  s   "ÿr­  Úeventc           
   	     sZ  d}|j tu r1ˆ j� ˆ j t¡ tˆ ƒrd}W d   ƒ |S W d   ƒ |S 1 s*w   Y  |S |j tu s<|j ˆ jv rÝd }|j ˆ jv rR|j }t|ˆ j 	|d ¡ƒ}nt
ˆ jƒ}ˆ j�y ˆ j |j ¡ ˆ jd uolˆ jˆ jk}t||ˆ jˆ j|ƒ\}}|d urƒˆ j |¡ |d ur—ˆ  jd7  _| ‡ fdd„¡ ˆ jtju r­|ˆ jv r¨tˆ |ƒ n#tˆ ƒ ntˆ ƒr»d}W d   ƒ |S W d   ƒ |S W d   ƒ |S W d   ƒ |S 1 sÖw   Y  |S |  |¡\}}|D ]}	z|	ƒ  W qæ tyû   t d¡ Y qæw |d u�r+ˆ j� ˆ j |¡ tˆ ƒ�rd}W d   ƒ |S W d   ƒ |S 1 �s&w   Y  |S )NTFr¬  c                   s   t ˆ ƒS r7   )r­  )Ú_unused_futurerA   r0   r1   r[    s    z-_process_event_and_continue.<locals>.<lambda>zException calling callback!)ÚtagÚ_SHUTDOWN_TAGr€  r…   r�   r«  r¤  r†  r_   r9   rg   rh   rŒ  rŽ  rw  rd  rR  r�  rª   Úadd_done_callbackr‡  rx  r}  r¨  r¥  rö   rò   r  )
r>   r®  Úshould_continueÚregistered_method_namerc  rs  rk  Ú
rpc_futurer}   rÓ   r0   rA   r1   Ú_process_event_and_continueÛ  s¨   

ý<Æ
þ<Ä<
Éÿþÿ

þû
ÿ


æ'ò
ç'ñ
è'ï
ê'Ù'õ
ÿ


ýþ
þür¶  c                 C  sN   	 t   ¡ t }| j |¡}| jrt| ƒ |jtjj	k}|s$t
| |ƒs$d S d }qr7   )rÐ   Ú"_DEALLOCATED_SERVER_CHECK_PERIOD_Sr‚  Úpollr�  Ú_begin_shutdown_onceÚcompletion_typer   ÚCompletionTypeÚqueue_timeoutr¶  )r>   Útimeoutr®  Ú
is_timeoutr0   r0   r1   Ú_serve  s   ÿór¿  c                 C  sl   | j �) | jtju r$| j | jt¡ tj| _| j	 
t¡ W d   ƒ d S W d   ƒ d S 1 s/w   Y  d S r7   )r€  r‡  rx  r}  r„  r   r‚  r±  r~  r…   rª   rA   r0   r0   r1   r¹  0  s   ü"ÿr¹  r{  úOptional[float]rˆ  c                   sÆ   ˆj �R ˆjtju rt ¡ ‰ˆ ¡  ˆW  d   ƒ S tˆƒ t ¡ ‰ˆj 	ˆ¡ ˆ d u r3ˆj
 ¡  n‡ ‡‡fdd„}tj|d�}| ¡  ˆW  d   ƒ S W d   ƒ n1 sXw   Y  ˆ ¡  ˆS )Nc                     sB   ˆj ˆ d� ˆj� ˆj ¡  W d   ƒ d S 1 sw   Y  d S ©N)r½  )r  r€  r„  Úcancel_all_callsr0   ©r{  rª  r>   r0   r1   Úcancel_all_calls_after_graceE  s   "ÿz+_stop.<locals>.cancel_all_calls_after_grace)Útarget)r€  r‡  rx  r|  r‚   r”  r„   r¹  rŠ  r‹   r„  rÂ  ÚThreadÚstartr  )r>   r{  rÄ  Úthreadr0   rÃ  r1   Ú_stop8  s(   üí	÷rÉ  c                 C  s’   | j �< | jtjurd}t|ƒ‚| j ¡  tj| _| jD ]}t	| |ƒ qt
| ƒ tjt| fd�}d|_| ¡  W d   ƒ d S 1 sBw   Y  d S )Nz$Cannot start already-started server!)rÅ  ÚargsT)r€  r‡  rx  r|  rí   r„  rÇ  r}  r†  r¨  r¥  r‚   rÆ  r¿  Údaemon)r>   rî   rK   rÈ  r0   r0   r1   Ú_startQ  s   


"órÌ  Úgeneric_rpc_handlersc                 C  s6   | D ]}t |dd ƒ}|d u rd|› d�}t|ƒ‚qd S )Nrl   ú"zP" must conform togrpc.GenericRpcHandler type but does not have "service" method!)ÚgetattrÚAttributeError)rÍ  Úgeneric_rpc_handlerÚservice_attributerî   r0   r0   r1   Ú_validate_generic_rpc_handlersb  s   
ÿûþrÓ  Úbase_optionsúSequence[ChannelArgumentType]rè   ru   Úxdsc                 C  s$   t  |¡}t |¡}t| ƒ| | S r7   )r   Úcreate_channel_optionr   Ú(create_server_call_tracer_factory_optionrš   )rÔ  rè   rÖ  Úcompression_optionÚ'maybe_server_call_tracer_factory_optionr0   r0   r1   Ú_augment_optionso  s   
ÿÿþÿrÛ  c                   @  sp   e Zd ZU ded< d4dd„Zd5dd„Zd6dd„Zd7d!d"„Zd8d%d&„Zd9d'd(„Z	d:d;d,d-„Z
d<d0d1„Zd2d3„ Zd)S )=Ú_Serverr  rÆ   rR  rF  rh   r‘  Úinterceptorsú Sequence[grpc.ServerInterceptor]ÚoptionsrÕ  rŒ  r‹  rè   ru   rÖ  rs   c           
      C  sJ   t  ¡ }t  t|||ƒ|¡}	|	 |¡ t||	|t |¡||ƒ| _|	| _	d S r7   )
r   ÚCompletionQueueÚServerrÛ  Úregister_completion_queuer  r   Úservice_pipelinerÆ   Ú
_cy_server)
rS   rR  rh   rÝ  rß  rŒ  rè   rÖ  r‚  r„  r0   r0   r1   rd   ƒ  s   

ú
z_Server.__init__rÍ  r•  r+   rˆ   c                 C  s   t |ƒ t| j|ƒ d S r7   )rÓ  r˜  rÆ   )rS   rÍ  r0   r0   r1   Úadd_generic_rpc_handlersš  s   z _Server.add_generic_rpc_handlersÚservice_namer`   rš  r…  c                   s„   | j j� | j jtju r	 W d   ƒ d S W d   ƒ n1 sw   Y  ‡ fdd„| ¡ D ƒ}|D ]}| j |¡ q1t| j |ƒ d S )Nc                   s   i | ]\}}t  ˆ |¡|“qS r0   )r   Úfully_qualified_method)rá   rK   rn   ©ræ  r0   r1   rä   «  s    ÿÿz:_Server.add_registered_method_handlers.<locals>.<dictcomp>)	rÆ   r€  r‡  rx  r}  ræ   rä  Úregister_methodrœ  )rS   ræ  rš  Úmethod_to_handlersrç  r0   rè  r1   Úadd_registered_method_handlers   s   
þÿ
þz&_Server.add_registered_method_handlersr�  r�  c                 C  s   t  |t| jt  |¡ƒ¡S r7   )r   Úvalidate_port_binding_resultrŸ  rÆ   rõ   )rS   r�  r0   r0   r1   Úadd_insecure_port³  s   ÿz_Server.add_insecure_portr   r¡  c                 C  s   t  |t| jt  |¡|ƒ¡S r7   )r   rì  r£  rÆ   rõ   )rS   r�  r   r0   r0   r1   Úadd_secure_port¸  s   ÿþz_Server.add_secure_portc                 C  s   t | jƒ d S r7   )rÌ  rÆ   rR   r0   r0   r1   rÇ  Â  r3   z_Server.startNr½  rÀ  c                 C  s   t j| jjj| jjj|d�S rÁ  )r   r  rÆ   r‰  Úis_set)rS   r½  r0   r0   r1   Úwait_for_terminationÅ  s
   ýz_Server.wait_for_terminationr{  rˆ  c                 C  s   t | j|ƒS r7   )rÉ  rÆ   )rS   r{  r0   r0   r1   ÚstopÏ  s   z_Server.stopc                 C  s   t | dƒrd| j_d S d S )NrÆ   T)rA  rÆ   r�  rR   r0   r0   r1   Ú__del__Ò  s   
ýz_Server.__del__)rR  rF  rh   r‘  rÝ  rÞ  rß  rÕ  rŒ  r‹  rè   ru   rÖ  rs   ©rÍ  r•  r+   rˆ   )ræ  r`   rš  r…  r+   rˆ   )r�  r`   r+   r�  )r�  r`   r   r¡  r+   r�  rÿ   r7   )r½  rÀ  r+   rs   )r{  rÀ  r+   rˆ  )rH   rI   rJ   r‡   rd   rå  rë  rí  rî  rÇ  rð  rñ  rò  r0   r0   r0   r1   rÜ    s   
 








rÜ  r‘  rÝ  rÞ  rß  rŒ  r‹  c                 C  s   t |ƒ t| ||||||ƒS r7   )rÓ  rÜ  )rR  rÍ  rÝ  rß  rŒ  rè   rÖ  r0   r0   r1   Úcreate_serverÙ  s   	ùrô  )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Ž   r`   r+   r   )r>   r?   rŽ   r`   r+   r   )r>   r?   r˜   rx   r+   rx   )r>   r?   r˜   rx   r+   r�   )
r>   r?   r¢   r£   r4   r6   rE   r,   r+   rˆ   )r>   r?   r+   r   )r>   r?   r¢   r£   rµ   r¶   r+   r   )rÇ   r*   r>   r?   rµ   r¶   r+   r  r7   )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*  r+  r+   rz   )r>   r?   r+   r/  )rÇ   r*   r>   r?   r-  r,   r+   rs   )rÇ   r*   r>   r?   r-  rz   r+   rˆ   )rÇ   r*   r>   r?   r  r   r9  r  rµ   r+  r*  r+  r+   rˆ   )rÇ   r*   r>   r?   r  r   r9  r  rµ   r¶   r*  r+  r+   rˆ   )r>   r?   r+   rs   )
rÇ   r*   r>   r?   r  rD  r%  r&  r+   rˆ   )r  r   rE  rF  r+   rF  )
rÇ   r*   r>   r?   rn   rK  rE  rF  r+   rL  )
rÇ   r*   r>   r?   rc  rM   rd  re  r+   rW   )rÇ   r*   rk  r?   rø   r6   rE   r,   )
rÇ   r*   r>   r?   rn   rK  rR  rF  r+   rL  )rÇ   r*   rc  rM   rd  re  rR  rF  rs  rs   r+   rt  )r>   r  rh   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  rK   r`   r+   rˆ   )r>   r  r+   rs   )r>   r  r®  r*   r+   rs   )r>   r  r{  rÀ  r+   rˆ  ró  )rÔ  rÕ  rè   ru   rÖ  rs   r+   rÕ  )rR  rF  rÍ  r‘  rÝ  rÞ  rß  rÕ  rŒ  r‹  rè   ru   rÖ  rs   r+   rÜ  )…Ú__doc__Ú
__future__r   r]   ÚcollectionsÚ
concurrentr   r€   ÚenumÚloggingr‚   rÐ   r  Ú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   Ú	getLoggerrH   rò   r±  r¤  r²   r¿   r¸   r6  r5  r¨   r§   r†   r°   r¥   rŸ   r·  Ú_INF_TIMEOUTr2   r=   rB   rC   rF   Ú
namedtupleÚHandlerCallDetailsrG   ÚABCrM   r_   rg   Úobjectr?   r�   r’   r—   rœ   r¡   r®   r´   r¾   rÁ   rÃ   ÚServicerContextrÄ   r   r  r$  r(  r.  r2  r3  r7  r8  r=  rC  r‘   rB  rJ  rS  rV  r_  rb  rj  ro  rr  rw  ÚuniqueÚEnumrx  r  r˜  rœ  rŸ  r£  r¥  r¨  r«  r­  r¶  r¿  r¹  rÉ  rÌ  rÓ  rÛ  rá  rÜ  rô  r0   r0   r0   r1   Ú<module>   sè   8
ÿÿ





þø
#




	
"

!
	y
?.ú:
# 1@0
DZ