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   úVC:\Users\psant\Downloads\Anu Raj Backend\school\venv\Lib\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   Z!STATUS_CODE_TO_CYGRPC_STATUS_CODEÚgetr   Ú
StatusCodeÚunknown)r4   Z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   r9   Úokr;   ©r<   r0   r0   r1   Ú_completion_code_   s   

r@   c                 C  s   | j d u r|S t| j ƒS r7   )r4   r;   )r<   r4   r0   r0   r1   Ú_abortion_codee   s   

rA   c                 C  s   | j d u rdS | j S )Nó    )Údetailsr?   r0   r0   r1   Ú_detailsm   s   rD   c                   @  s   e Zd ZdS )Ú_HandlerCallDetailsN)Ú__name__Ú
__module__Ú__qualname__r0   r0   r0   r1   rE   q   s    
rE   )Ú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_detailsrE   úOptional[grpc.RpcMethodHandler]c                 C  rM   r7   rN   ©rQ   rT   r0   r0   r1   Úhandlerƒ   ó   z_Method.handlerN©r+   rL   ©rT   rE   r+   rU   )rF   rG   rH   ÚabcÚabstractmethodrR   rW   r0   r0   r0   r1   rK   ~   s
    rK   c                   @  s2   e Zd Zddd„Zedd	d
„ƒZeddd„ƒZdS )Ú_RegisteredMethodrR   ÚstrÚregistered_handlerrU   c                 C  s   || _ || _d S r7   )Ú_nameÚ_registered_handler)rQ   rR   r_   r0   r0   r1   Ú__init__‹   s   
z_RegisteredMethod.__init__r+   rL   c                 C  ó   | j S r7   )r`   rP   r0   r0   r1   rR   “   rS   z_RegisteredMethod.namerT   rE   c                 C  rc   r7   )ra   rV   r0   r0   r1   rW   —   rX   z_RegisteredMethod.handlerN)rR   r^   r_   rU   rY   rZ   ©rF   rG   rH   rb   r   rR   rW   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)rQ   rf   r0   r0   r1   rb   Ÿ   s   
z_GenericMethod.__init__r+   rL   c                 C  ó   d S r7   r0   rP   r0   r0   r1   rR   ¥   s   z_GenericMethod.namerT   rE   rU   c                 C  s*   | j D ]}| |¡}|d ur|  S qd S r7   )rh   Úservice)rQ   rT   Zgeneric_handlerÚmethod_handlerr0   r0   r1   rW   ©   s   

ÿz_GenericMethod.handlerN)rf   rg   rY   rZ   rd   r0   r0   r0   r1   re   ž   s    
re   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]rC   Ú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ÚContextrl   Ú	threadingÚ	Conditionrm   ÚsetÚduern   Ú_OPENro   rq   rs   rt   rv   r4   rC   rx   ry   rz   r{   rP   r0   r0   r1   rb   Ç   s   


z_RPCState.__init__N)rF   rG   rH   Ú__annotations__r   r^   r‚   rb   r0   r0   r0   r1   r=   ¶   s"   
 ÚNonec                 C  s   t  ¡ }| j |¡ |‚r7   )ÚgrpcZRpcErrorry   Úappend)r<   Z	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_activerz   )r<   r‰   rz   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   )rm   r�   )Z$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‘   Úmetadataru   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   )rm   rs   r   Z!compression_algorithm_to_metadataÚtuple)r<   r’   Zcompression_metadatar0   r0   r1   Ú_get_initial_metadataò   s   ÿÿø
	÷
$ör”   úcygrpc.Operationc                 C  s   t  t| |ƒt¡}|S r7   )r   ZSendInitialMetadataOperationr”   Ú_EMPTY_FLAGS)r<   r’   Ú	operationr0   r0   r1   Ú_get_initial_metadata_operation  s   
ÿr˜   Úcallúcygrpc.CallrC   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)ro   Ú
_CANCELLEDrA   rC   rq   r˜   r   ÚSendStatusFromServerOperationrv   r–   Ú8_SEND_INITIAL_METADATA_AND_SEND_STATUS_FROM_SERVER_TOKENÚ_SEND_STATUS_FROM_SERVER_TOKENÚstart_server_batchr‘   rx   r‚   Úadd)r<   r™   r4   rC   Zeffective_codeZ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-   )
rm   r.   r(   rœ   ro   rƒ   Ú_CLOSEDÚ
notify_allr�   Ú_RECEIVE_CLOSE_ON_SERVER_TOKEN)Zreceive_close_on_server_eventr?   r0   r1   r!   .  s   

$úz9_receive_close_on_server.<locals>.receive_close_on_serverr0   )r<   r!   r0   r?   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   rm   ro   rƒ   r¥   r¦   r�   Ú_RECEIVE_MESSAGE_TOKENr   Zdeserializer£   r   r9   Úinternalrn   )Zreceive_message_eventZserialized_requestrn   ©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   )rm   r�   Ú_SEND_INITIAL_METADATA_TOKEN)Z"unused_send_initial_metadata_eventr?   r0   r1   r"   \  r�   z5_send_initial_metadata.<locals>.send_initial_metadatar0   )r<   r"   r0   r?   r1   Ú_send_initial_metadata[  s   r±   c                   rŽ   )Nc                   s>   ˆ j � ˆ j  ¡  tˆ ˆƒW  d   ƒ S 1 sw   Y  d S r7   )rm   r¦   r�   )Z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)rQ   r¶   r<   r©   r0   r0   r1   rb   q  ó   
z_Context.__init__r+   rp   c                 C  s6   | j j� t| j ƒW  d   ƒ S 1 sw   Y  d S r7   )rµ   rm   rŒ   rP   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ÚtimerP   r0   r0   r1   Útime_remaining  s   z_Context.time_remainingr…   c                 C  s   | j j ¡  d S r7   )r´   r™   ÚcancelrP   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µ   rm   rz   r‡   )rQ   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µ   rm   rt   rP   r0   r0   r1   Ú disable_next_message_compressionŒ  ó   

"ÿz)_Context.disable_next_message_compressionru   c                 C  ó   | j jS r7   )r´   rJ   rP   r0   r0   r1   rJ   �  ó   z_Context.invocation_metadatar^   c                 C  s   t  | jj ¡ ¡S r7   )r   Údecoder´   r™   ÚpeerrP   r0   r0   r1   rÊ   “  ó   z_Context.peerúOptional[Sequence[bytes]]c                 C  s   t  | jj¡S r7   )r   Úpeer_identitiesr´   r™   rP   r0   r0   r1   rÍ   –  r3   z_Context.peer_identitiesrL   c                 C  s$   t  | jj¡}|d u r|S t |¡S r7   )r   Úpeer_identity_keyr´   r™   r   rÉ   )rQ   Z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)rQ   rÔ   Z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µ   rm   rs   )rQ   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µ   rm   ro   rœ   rˆ   rq   r˜   r´   r™   r    r±   r‚   r¡   r°   Ú
ValueError)rQ   rÚ   r—   Ú	error_msgr0   r0   r1   r"   ©  s    

ÿÿý"õz_Context.send_initial_metadatarv   c                 C  rØ   r7   )rµ   rm   rv   )rQ   rv   r0   r0   r1   Úset_trailing_metadataº  rÆ   z_Context.set_trailing_metadatac                 C  rÇ   r7   )rµ   rv   rP   r0   r0   r1   rv   ¾  rÈ   z_Context.trailing_metadatar4   r5   rC   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†   r9   ÚOKÚ_LOGGERÚerrorÚUNKNOWNrµ   rm   r4   r   ÚencoderC   r{   Ú	Exception)rQ   r4   rC   r0   r0   r1   ÚabortÁ  s   ÿ
üz_Context.abortÚstatusúgrpc.Statusc                 C  s   |j | j_ |  |j|j¡ d S r7   )rv   rµ   rå   r4   rC   )rQ   ræ   r0   r0   r1   Úabort_with_statusÏ  s   
z_Context.abort_with_statusc                 C  rØ   r7   )rµ   rm   r4   )rQ   r4   r0   r0   r1   Úset_codeÓ  rÆ   z_Context.set_codec                 C  rÇ   r7   )rµ   r4   rP   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µ   rm   r   rã   rC   )rQ   rC   r0   r0   r1   Úset_detailsÚ  s   
"ÿz_Context.set_detailsr,   c                 C  rÇ   r7   )rµ   rC   rP   r0   r0   r1   rC   Þ  rÈ   z_Context.detailsc                 C  ri   r7   r0   rP   r0   r0   r1   Ú_finalize_stateá  ó   z_Context._finalize_stateN)r¶   r*   r<   r=   r©   rª   )r+   rp   )r+   r»   ©r+   r…   )rÂ   r   r+   rp   )r+   ru   )r+   r^   )r+   rÌ   rY   )r+   rÏ   )rÖ   r×   r+   r…   )rÚ   r   r+   r…   )rv   r   r+   r…   )r4   r5   rC   r^   r+   r…   )ræ   rç   r+   r…   )r4   r5   r+   r…   )r+   r5   )rC   r^   r+   r…   )r+   r,   )rF   rG   rH   r„   rb   rº   rÀ   rÁ   rÄ   rÅ   rJ   rÊ   rÍ   rÎ   rÔ   rÙ   r"   rÝ   rv   rå   rè   ré   r4   rê   rC   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¸   )rQ   r<   r™   r©   r0   r0   r1   rb   ê  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µ   ro   rœ   rˆ   rŒ   ÚStopIterationrï   r    r   ÚReceiveMessageOperationr–   r¯   r¸   r‚   r¡   r¬   rP   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µ   ro   rœ   rˆ   rn   r¬   r‚   rð   ÚAssertionError©rQ   rn   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 r›   )rµ   rm   rò   Úwaitrõ   rô   r0   r0   r1   Ú_next  s   
úþz_RequestIterator._nextc                 C  s   | S r7   r0   rP   r0   r0   r1   Ú__iter__  rì   z_RequestIterator.__iter__c                 C  ó   |   ¡ S r7   ©r÷   rP   r0   r0   r1   Ú__next__  rÈ   z_RequestIterator.__next__c                 C  rù   r7   rú   rP   r0   r0   r1   Únext   rÈ   z_RequestIterator.nextN)r<   r=   r™   rš   r©   rª   rí   )r+   r   )r+   rî   )rF   rG   rH   r„   rb   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.)rm   rŒ   r™   r    r   rñ   r–   r¯   r‚   r¡   r¬   rö   rn   ro   r¥   Úformatr½   rI   r£   r9   Úunimplementedr   rã   rœ   )rC   rn   ©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ä   rm   r{   r£   r™   r   r9   r:   ry   rþ   rà   Ú	exceptionÚ	tracebackÚformat_exceptionÚtypeÚ__traceback__Ú	print_excr   rã   )r¶   r<   r  r  r©   r  r  rl   Zresponse_or_iteratorr  rC   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ä   rm   r{   r£   r™   r   r9   r:   ry   rþ   rà   r  r   rã   )r¶   r<   r  r  rC   r0   r0   r1   Ú%_take_response_from_response_iterator†  s6   ü


ü€õ€îr  ÚresponseÚresponse_serializerúOptional[SerializingFunction]rw   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   Ú	serializerm   r£   r™   r   r9   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   )rt   r   Z	WriteFlagZno_compressr–   r?   r0   r0   r1   Ú%_get_send_message_op_flags_from_state·  s   r  c                 C  s2   | j � d| _W d   ƒ d S 1 sw   Y  d S r
  )rm   rt   r?   r0   r0   r1   Ú_reset_per_message_state¿  s   "ÿr  r  rp   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Ã   )rm   rŒ   rq   r˜   r   ÚSendMessageOperationr  Ú-_SEND_INITIAL_METADATA_AND_SEND_MESSAGE_TOKENÚ_SEND_MESSAGE_TOKENr™   r    r²   r‚   r¡   r  rö   )r¶   r<   r  r¢   r‰   r0   r0   r1   Ú_send_responseÄ  s>   þþþþÿ
ÿ

ãær"  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›   )rm   ro   rœ   r@   rD   r   r�   rv   r–   rq   r‡   r˜   r  r  r™   r    r‘   rŸ   rx   r  r‚   r¡   )r¶   r<   r  r4   rC   r¢   r0   r0   r1   Ú_statusç  s6   

ÿÿþÿþè"ÿr#  Ú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  r#  rä   r  r  Úuninstall_context)
r¶   r<   r  r$  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   )r#  r  r"  )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  r$  r©   r  r*  r  r  r'  r0   r)  r1   Ú_stream_response_in_pool#  s@   

ÿþú	
ÿÿ€ÿ€þr.  c                 C  s   | j tuo| j S r7   )ro   rœ   rx   r?   r0   r0   r1   rŒ   T  rË   rŒ   úCallable[[ResponseType], None]c                 C  s2   	 t | ||ƒ\}}|r||ƒ t|ƒsd S nd S qr›   )r  rŒ   )r¶   r<   r  r  r  r'  r0   r0   r1   r-  X  s   ÿÿ÷r-  Údefault_thread_poolúfutures.ThreadPoolExecutorc                 C  s"   t | dƒrt| jtjƒr| jS |S )NÚexperimental_thread_pool)r,  Ú
isinstancer2  r   ÚThreadPoolExecutor)r  r0  r0   r0   r1   Ú _select_thread_pool_for_behaviorj  s
   ÿr5  rk   úgrpc.RpcMethodHandlerúfutures.Futurec              
   C  ó<   t | ||jƒ}t|j|ƒ}| |jjt| ||j||j|j¡S r7   )	r  r©   r5  Zunary_unaryÚsubmitrl   Úrunr(  r  ©r¶   r<   rk   r0  r  Úthread_poolr0   r0   r1   Ú_handle_unary_unaryu  ó    ÿÿør=  c              
   C  r8  r7   )	r  r©   r5  Zunary_streamr9  rl   r:  r.  r  r;  r0   r0   r1   Ú_handle_unary_stream�  r>  r?  c              
     óF   t || j|jƒ‰ t|j|ƒ}| |jjt| ||j‡ fdd„|j|j	¡S )Nc                     ó   ˆ S r7   r0   r0   ©Zrequest_iteratorr0   r1   Ú<lambda>·  ó    z&_handle_stream_unary.<locals>.<lambda>)
rî   r™   r©   r5  Zstream_unaryr9  rl   r:  r(  r  ©r¶   r<   rk   r0  r<  r0   rB  r1   Ú_handle_stream_unary¥  ó    
ÿÿ
ørF  c              
     r@  )Nc                     rA  r7   r0   r0   rB  r0   r1   rC  Ï  rD  z'_handle_stream_stream.<locals>.<lambda>)
rî   r™   r©   r5  Zstream_streamr9  rl   r:  r.  r  rE  r0   rB  r1   Ú_handle_stream_stream½  rG  rH  Úmethod_with_handlerÚinterceptor_pipelineú'Optional[_interceptor._ServicePipeline]rU   c                   s\   d‡ fdd„}ˆ   ¡ }|st | jj¡}t|| jƒ}|d ur'|j |j	||¡S |j ||¡S )NrT   rE   r+   rU   c                   s
   ˆ   | ¡S r7   )rW   )rT   ©rI  r0   r1   Úquery_handlersÛ  s   
z,_find_method_handler.<locals>.query_handlersrZ   )
rR   r   rÉ   r½   rI   rE   rJ   rl   r:  Úexecute)r¶   r<   rI  rJ  rM  Úmethod_namerT   r0   rL  r1   Ú_find_method_handlerÕ  s   þÿrP  Ú	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   )Z_ignored_event©rQ  r0   r1   rC  ÿ  s   þz_reject_rpc.<locals>.<lambda>)r˜   r   ÚReceiveCloseOnServerOperationr–   r�   r™   r    )r¶   rQ  ræ   rC   r¢   r0   rR  r1   Ú_reject_rpcð  s   ÿý
þrT  r<  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   )rm   r™   r    r   rS  r–   r¨   r‚   r¡   r§   Zrequest_streamingZresponse_streamingrH  rF  r?  r=  )r¶   r<   rk   r<  r0   r0   r1   Ú_handle_with_method_handler  s2   
þÿøÿõÿñÿ$îrU  Ú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½   rI   rR   r=   rP  rä   rþ   rà   r  rT  r   r9   r:   rÿ   Zresource_exhaustedrU  )	r¶   rI  rJ  r<  rV  rQ  rk   r  rC   r0   r0   r1   Ú_handle_call#  sZ   ü

ü€÷
üüÿþrY  c                   @  s   e Zd ZdZdZdZdS )Ú_ServerStageÚstoppedÚstartedÚgraceN)rF   rG   rH   ÚSTOPPEDÚSTARTEDÚGRACEr0   r0   r0   r1   rZ  c  s    rZ  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Úserverrg   rf   ú Dict[str, grpc.RpcMethodHandler]Úregistered_method_handlersrK  rJ  r1  r<  rZ  Ú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‚   rp   Ú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   ÚRLockrb  rd  rf  Úlistrf   rJ  r<  rZ  r^  ri  ÚEventrk  rl  rn  rp  rh  r�   rq  r‚   rr  )rQ   rd  rf  rf   rJ  r<  rn  r0   r0   r1   rb   |  s   
	



z_ServerState.__init__N)rd  rc  rf  re  rf   rs  rJ  rK  r<  r1  rn  rm  )rF   rG   rH   r„   rb   r0   r0   r0   r1   ra  j  s"   
 ra  rf   ú Iterable[grpc.GenericRpcHandler]c                 C  ó8   | j � | j |¡ W d   ƒ d S 1 sw   Y  d S r7   )rb  rf   Úextend)r<   rf   r0   r0   r1   Ú_add_generic_handlersš  ó   "ÿrz  Úmethod_handlersrg  c                 C  rx  r7   )rb  rh  Úupdate)r<   r|  r0   r0   r1   Ú_add_registered_method_handlers¡  r{  r~  Úaddressro  c                 C  s6   | j � | j |¡W  d   ƒ S 1 sw   Y  d S r7   )rb  rf  Ú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   )rb  rf  r€  Z_credentials)r<   r  r‚  r0   r0   r1   Ú_add_secure_port­  s
   ÿ$ÿr„  c                 C  s$   | j  | j| jt¡ | j t¡ d S r7   )rf  r    rd  Ú_REQUEST_CALL_TAGr‚   r¡   r?   r0   r0   r1   Ú_request_call¸  s   
ÿr†  rI   c                 C  s*   |}| j  | j| j||¡ | j |¡ d S r7   )rf  Zrequest_registered_callrd  r‚   r¡   )r<   rI   Z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|   )	rq  r‚   rf  Údestroyrl  r�   rZ  r^  ri  )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é   )rb  rp  r?   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Œ  )Z_unused_futurer?   r0   r1   rC    s    z-_process_event_and_continue.<locals>.<lambda>zException calling callback!)ÚtagÚ_SHUTDOWN_TAGrb  r‚   r‹   rŠ  r…  rh  r]   r8   re   rf   rn  rp  rY  rJ  r<  rq  r¡   Úadd_done_callbackri  rZ  r_  r‡  r†  rä   rà   r  )
r<   r�  Zshould_continueZregistered_method_namerI  rV  rQ  Z
rpc_futurerz   rÂ   r0   r?   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r›   )r¿   Ú"_DEALLOCATED_SERVER_CHECK_PERIOD_Srd  Úpollrr  Ú_begin_shutdown_onceÚcompletion_typer   ZCompletionTypeZqueue_timeoutr‘  )r<   Útimeoutr�  Z
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   )rb  ri  rZ  r_  rf  r   rd  r�  r`  r‚   r¡   r?   r0   r0   r1   r”  0  s   ü"ÿr”  r]  úOptional[float]rj  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ö   rb  rf  Úcancel_all_callsr0   ©r]  r‰  r<   r0   r1   Úcancel_all_calls_after_graceE  s   "ÿz+_stop.<locals>.cancel_all_calls_after_grace)Útarget)rb  ri  rZ  r^  r   rv  r�   r”  rl  r‡   rf  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)rb  ri  rZ  r^  rÛ   rf  rŸ  r_  rh  r‡  r†  r   rž  r—  Údaemon)r<   rÜ   rI   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 )Nrj   ú"zP" must conform togrpc.GenericRpcHandler type but does not have "service" method!)ÚgetattrÚAttributeError)r¥  Zgeneric_rpc_handlerZservice_attributerÜ   r0   r0   r1   Ú_validate_generic_rpc_handlersb  s   
ÿûþr©  Úbase_optionsúSequence[ChannelArgumentType]rÖ   rr   Úxdsc                 C  s$   t  |¡}t |¡}t| ƒ| | S r7   )r   Zcreate_channel_optionr   Z(create_server_call_tracer_factory_optionr“   )rª  rÖ   r¬  Zcompression_optionZ'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 )=Ú_Serverra  rµ   r<  r1  rf   rs  Úinterceptorsú Sequence[grpc.ServerInterceptor]Úoptionsr«  rn  rm  rÖ   rr   r¬  rp   c           
      C  sJ   t  ¡ }t  t|||ƒ|¡}	|	 |¡ t||	|t |¡||ƒ| _|	| _	d S r7   )
r   ZCompletionQueueÚServerr­  Zregister_completion_queuera  r   Zservice_pipelinerµ   Ú
_cy_server)
rQ   r<  rf   r¯  r±  rn  rÖ   r¬  rd  rf  r0   r0   r1   rb   ƒ  s   

ú
z_Server.__init__r¥  rw  r+   r…   c                 C  s   t |ƒ t| j|ƒ d S r7   )r©  rz  rµ   )rQ   r¥  r0   r0   r1   Úadd_generic_rpc_handlersš  s   z _Server.add_generic_rpc_handlersÚservice_namer^   r|  rg  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Ð   rI   rk   ©rµ  r0   r1   rÓ   «  s    ÿÿz:_Server.add_registered_method_handlers.<locals>.<dictcomp>)	rµ   rb  ri  rZ  r_  rÕ   r³  Zregister_methodr~  )rQ   rµ  r|  Zmethod_to_handlersr¶  r0   r·  r1   Úadd_registered_method_handlers   s   
þÿ
þz&_Server.add_registered_method_handlersr  ro  c                 C  s   t  |t| jt  |¡ƒ¡S r7   )r   Úvalidate_port_binding_resultr�  rµ   rã   )rQ   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ã   )rQ   r  r‚  r0   r0   r1   Úadd_secure_port¸  s   ÿþz_Server.add_secure_portc                 C  s   t | jƒ d S r7   )r¤  rµ   rP   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µ   rk  Úis_set)rQ   r–  r0   r0   r1   Úwait_for_terminationÅ  s
   ýz_Server.wait_for_terminationr]  rj  c                 C  s   t | j|ƒS r7   )r¡  rµ   )rQ   r]  r0   r0   r1   ÚstopÏ  s   z_Server.stopc                 C  s   t | dƒrd| j_d S d S )Nrµ   T)r,  rµ   rr  rP   r0   r0   r1   Ú__del__Ò  s   
ýz_Server.__del__)r<  r1  rf   rs  r¯  r°  r±  r«  rn  rm  rÖ   rr   r¬  rp   ©r¥  rw  r+   r…   )rµ  r^   r|  rg  r+   r…   )r  r^   r+   ro  )r  r^   r‚  rƒ  r+   ro  rí   r7   )r–  r˜  r+   rp   )r]  r˜  r+   rj  )rF   rG   rH   r„   rb   r´  r¸  rº  r»  rŸ  r½  r¾  r¿  r0   r0   r0   r1   r®    s   
 








r®  rs  r¯  r°  r±  rn  rm  c                 C  s   t |ƒ t| ||||||ƒS r7   )r©  r®  )r<  r¥  r¯  r±  rn  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’   ru   r+   ru   )r<   r=   r’   ru   r+   r•   )
r<   r=   r™   rš   r4   r6   rC   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+   rw   )r<   r=   r+   r  )r¶   r*   r<   r=   r  r,   r+   rp   )r¶   r*   r<   r=   r  rw   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<   r=   r+   rp   )
r¶   r*   r<   r=   r  r/  r  r  r+   r…   )r  r   r0  r1  r+   r1  )
r¶   r*   r<   r=   rk   r6  r0  r1  r+   r7  )
r¶   r*   r<   r=   rI  rK   rJ  rK  r+   rU   )r¶   r*   rQ  r=   ræ   r6   rC   r,   )
r¶   r*   r<   r=   rk   r6  r<  r1  r+   r7  )r¶   r*   rI  rK   rJ  rK  r<  r1  rV  rp   r+   rW  )r<   ra  rf   rw  r+   r…   )r<   ra  r|  rg  r+   r…   )r<   ra  r  r,   r+   ro  )r<   ra  r  r,   r‚  rƒ  r+   ro  )r<   ra  r+   r…   )r<   ra  rI   r^   r+   r…   )r<   ra  r+   rp   )r<   ra  r�  r*   r+   rp   )r<   ra  r]  r˜  r+   rj  rÀ  )rª  r«  rÖ   rr   r¬  rp   r+   r«  )r<  r1  r¥  rs  r¯  r°  r±  r«  rn  rm  rÖ   rr   r¬  rp   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   Zgrpc._cythonr   Zgrpc._typingr   r   r   r   r   r   r   r   r   Ztyping_extensionsr   Ú	getLoggerrF   rà   r�  r…  r§   r°   r¬   r!  r   rŸ   rž   rƒ   r¥   rœ   r–   r’  Z_INF_TIMEOUTr2   r;   r@   rA   rD   Ú
namedtupleZHandlerCallDetailsrE   ÚABCrK   r]   re   Úobjectr=   rˆ   r�   r‘   r”   r˜   r£   r¨   r¯   r±   r²   ZServicerContextr³   rî   r  r  r  r  r  r  r"  r#  r(  r.  rŒ   r-  r5  r=  r?  rF  rH  rP  rT  rU  rY  ÚuniqueÚEnumrZ  ra  rz  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