o
    Ù­j–8  ã                   @   sV  d Z ddlZddl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ZG dd„ dejƒZG dd„ dejƒZdd„ Zdd„ ZG dd„ dejƒZdd„ Zdd„ Zdd„ Zdd„ Zdd „ ZG d!d"„ d"e d#d$¡ej ƒZ!d%d&„ Z"d'd(„ Z#G d)d*„ d*ej$ƒZ%G d+d,„ d,ej&ƒZ'd-d.„ Z(dS )/zCTranslates gRPC's server-side API into gRPC's server-side Beta API.é    N)Ú_common)Ú	_metadata)Ú
interfaces)Úcardinality)Ústyle)Úabandonment)Úlogging_pool)Ústream)Úfaceé   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú_ServerProtocolContextc                 C   ó
   || _ d S ©N©Ú_servicer_context©ÚselfÚservicer_context© r   úZ/var/www/html/CropPilot/venv/lib/python3.10/site-packages/grpc/beta/_server_adaptations.pyÚ__init__$   ó   
z_ServerProtocolContext.__init__c                 C   ó
   | j  ¡ S r   )r   Úpeer©r   r   r   r   r   '   r   z_ServerProtocolContext.peerc                 C   s   d S r   r   r   r   r   r   Ú!disable_next_response_compression*   s   z8_ServerProtocolContext.disable_next_response_compressionN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   #   s    r   c                   @   sd   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )Ú_FaceServicerContextc                 C   r   r   r   r   r   r   r   r   /   r   z_FaceServicerContext.__init__c                 C   r   r   )r   Ú	is_activer   r   r   r   r    2   r   z_FaceServicerContext.is_activec                 C   r   r   )r   Útime_remainingr   r   r   r   r!   5   r   z#_FaceServicerContext.time_remainingc                 C   s   d}t |ƒ‚)Nz6add_abortion_callback no longer supported server-side!)ÚNotImplementedError)r   Úabortion_callbackÚ	error_msgr   r   r   Úadd_abortion_callback8   s   z*_FaceServicerContext.add_abortion_callbackc                 C   ó   | j  ¡  d S r   )r   Úcancelr   r   r   r   r'   <   ó   z_FaceServicerContext.cancelc                 C   s
   t | jƒS r   )r   r   r   r   r   r   Úprotocol_context?   r   z%_FaceServicerContext.protocol_contextc                 C   s   t  | j ¡ ¡S r   )r   Úbetar   Úinvocation_metadatar   r   r   r   r+   B   ó   z(_FaceServicerContext.invocation_metadatac                 C   ó   | j  t |¡¡ d S r   )r   Úsend_initial_metadatar   Úunbeta)r   Úinitial_metadatar   r   r   r0   E   ó   ÿz%_FaceServicerContext.initial_metadatac                 C   r-   r   )r   Úset_terminal_metadatar   r/   )r   Úterminal_metadatar   r   r   r3   J   r1   z&_FaceServicerContext.terminal_metadatac                 C   ó   | j  |¡ d S r   )r   Úset_code)r   Úcoder   r   r   r6   O   r,   z_FaceServicerContext.codec                 C   r4   r   )r   Úset_details)r   Údetailsr   r   r   r8   R   r,   z_FaceServicerContext.detailsN)r   r   r   r   r    r!   r%   r'   r)   r+   r0   r3   r6   r8   r   r   r   r   r   .   s    r   c                    ó   ‡ fdd„}|S )Nc                    ó   ˆ | t |ƒƒS r   ©r   )Úrequestr   ©Úunary_request_inliner   r   Ú
adaptationW   ó   ÿz/_adapt_unary_request_inline.<locals>.adaptationr   )r>   r?   r   r=   r   Ú_adapt_unary_request_inlineV   ó   rA   c                    r9   )Nc                    r:   r   r;   )Úrequest_iteratorr   ©Ústream_request_inliner   r   r?   `   r@   z0_adapt_stream_request_inline.<locals>.adaptationr   )rE   r?   r   rD   r   Ú_adapt_stream_request_inline_   rB   rF   c                   @   óD   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dS )Ú	_Callbackc                 C   s    t  ¡ | _g | _d| _d| _d S ©NF)Ú	threadingÚ	ConditionÚ
_conditionÚ_valuesÚ_terminatedÚ
_cancelledr   r   r   r   r   i   s   

z_Callback.__init__c                 C   sB   | j � | j |¡ | j  ¡  W d   ƒ d S 1 sw   Y  d S r   )rL   rM   ÚappendÚ
notify_all©r   Úvaluer   r   r   Úconsumeo   s   "þz_Callback.consumec                 C   ó<   | j � d| _| j  ¡  W d   ƒ d S 1 sw   Y  d S ©NT)rL   rN   rQ   r   r   r   r   Ú	terminatet   ó   "þz_Callback.terminatec                 C   sH   | j � | j |¡ d| _| j  ¡  W d   ƒ d S 1 sw   Y  d S rV   )rL   rM   rP   rN   rQ   rR   r   r   r   Úconsume_and_terminatey   s
   "ýz_Callback.consume_and_terminatec                 C   rU   rV   )rL   rO   rQ   r   r   r   r   r'      rX   z_Callback.cancelc                 C   sp   | j �+ 	 | jrt ¡ ‚| jr| j d¡W  d   ƒ S | jr(	 W d   ƒ d S | j  ¡  q1 s1w   Y  d S )NTr   )rL   rO   r   Ú	AbandonedrM   ÚpoprN   Úwaitr   r   r   r   Údraw_one_value„   s   
ûù
ùÿz_Callback.draw_one_valuec                 C   s`   | j �# 	 | jrt ¡ ‚| jr t| jƒ}d | _|W  d   ƒ S | j  ¡  q1 s)w   Y  d S r   )rL   rO   r   rZ   rN   ÚtuplerM   r\   )r   Ú
all_valuesr   r   r   Údraw_all_values�   s   
ù
ùÿz_Callback.draw_all_valuesN)
r   r   r   r   rT   rW   rY   r'   r]   r`   r   r   r   r   rH   h   s    rH   c                    s8   t  ¡ ‰‡ ‡‡‡fdd„}t j|d�}d|_| ¡  d S )Nc                     sL   ˆD ]} ˆ  ¡ rˆ ¡ r d S ˆ  | ¡ ˆ  ¡ rˆ ¡ r d S qˆ  ¡  d S r   )r    Úis_setrT   rW   )r<   ©Úrequest_consumerrC   r   Úthread_joinedr   r   Úpipe_requests    s   
ÿz/_run_request_pipe_thread.<locals>.pipe_requests)ÚtargetT)rJ   ÚEventÚThreadÚdaemonÚstart)rC   rc   r   re   Úrequest_pipe_threadr   rb   r   Ú_run_request_pipe_thread›   s
   	rl   c                    r9   )Nc                    s8   t ƒ }| |j¡st ¡ ‚ˆ | |jt|ƒƒ | ¡ d S ©Nr   )rH   Úadd_callbackr'   r   rZ   rY   r   r`   )r<   r   Úcallback©Úunary_unary_eventr   r   r?   ¯   s   ýz,_adapt_unary_unary_event.<locals>.adaptationr   )rq   r?   r   rp   r   Ú_adapt_unary_unary_event®   s   rr   c                    r9   )Nc                 3   sJ   � t ƒ }| |j¡st ¡ ‚ˆ | |t|ƒƒ 	 | ¡ }|d u r!d S |V  qr   )rH   rn   r'   r   rZ   r   r]   )r<   r   ro   Úresponse©Úunary_stream_eventr   r   r?   ¾   s   €
ÿûz-_adapt_unary_stream_event.<locals>.adaptationr   )ru   r?   r   rt   r   Ú_adapt_unary_stream_event½   s   rv   c                    r9   )Nc                    sB   t ƒ }| |j¡st ¡ ‚ˆ |jt|ƒƒ}t| ||ƒ | ¡ d S rm   )	rH   rn   r'   r   rZ   rY   r   rl   r`   )rC   r   ro   rc   ©Ústream_unary_eventr   r   r?   Ð   s   þÿz-_adapt_stream_unary_event.<locals>.adaptationr   )rx   r?   r   rw   r   Ú_adapt_stream_unary_eventÏ   s   ry   c                    r9   )Nc                 3   sT   � t ƒ }| |j¡st ¡ ‚ˆ |t|ƒƒ}t| ||ƒ 	 | ¡ }|d u r&d S |V  qr   )rH   rn   r'   r   rZ   r   rl   r]   )rC   r   ro   rc   rs   ©Ústream_stream_eventr   r   r?   á   s    €ÿÿûz._adapt_stream_stream_event.<locals>.adaptationr   )r{   r?   r   rz   r   Ú_adapt_stream_stream_eventà   s   r|   c                   @   s   e Zd ZdS )Ú_SimpleMethodHandlerN)r   r   r   r   r   r   r   r}   õ   s    r}   Ú_MethodHandler)Úrequest_streamingÚresponse_streamingÚrequest_deserializerÚresponse_serializerÚunary_unaryÚunary_streamÚstream_unaryÚstream_streamc              
   C   sx  | j t jju r^| jtjju rtdd||t| jƒd d d ƒS | jtjj	u r1tdd||d t| j
ƒd d ƒS | jtjju rFtdd||d d t| jƒd ƒS | jtjju r[tdd||d d d t| jƒƒS tƒ ‚| j t jju r¹| jtjju rztdd||t| jƒd d d ƒS | jtjj	u r�tdd||d t| jƒd d ƒS | jtjju r¤tdd||d d t| jƒd ƒS | jtjju r¹tdd||d d d t| jƒƒS tƒ ‚)NFT)r   ÚServiceÚINLINEr   ÚCardinalityÚUNARY_UNARYr}   rA   Úunary_unary_inlineÚUNARY_STREAMÚunary_stream_inlineÚSTREAM_UNARYrF   Ústream_unary_inlineÚSTREAM_STREAMÚstream_stream_inlineÚEVENTrr   rq   rv   ru   ry   rx   r|   r{   Ú
ValueError)Úimplementationr�   r‚   r   r   r   Ú_simple_method_handler  sÀ   ø
ø
ÿöÿø9Óø
ø
ø
ø
r•   c                 C   s:   | pi } i }| D ]}t  |d |d ¡}| | ||< q|S )Nr   é   )r   Úfully_qualified_method)Úmethod_pair_mapÚflat_mapÚmethod_pairÚmethodr   r   r   Ú_flatten_method_pair_mapl  s   rœ   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú_GenericRpcHandlerc                 C   s(   t |ƒ| _t |ƒ| _t |ƒ| _|| _d S r   )rœ   Ú_method_implementationsÚ_request_deserializersÚ_response_serializersÚ_multi_method_implementation)r   Úmethod_implementationsÚmulti_method_implementationÚrequest_deserializersÚresponse_serializersr   r   r   r   v  s   ÿÿÿ
z_GenericRpcHandler.__init__c                 C   sb   | j  |j¡}|d urt|| j |j¡| j |j¡ƒS | jd u r"d S zW d S  tjy0   Y d S w r   )	rž   Úgetr›   r•   rŸ   r    r¡   r
   ÚNoSuchMethodError)r   Úhandler_call_detailsÚmethod_implementationr   r   r   Úserviceˆ  s    ÿý
ÿz_GenericRpcHandler.serviceN)r   r   r   r   rª   r   r   r   r   r�   u  s    r�   c                   @   rG   )Ú_Serverc                 C   r   r   )Ú_grpc_server)r   Úgrpc_serverr   r   r   r   ›  r   z_Server.__init__c                 C   ó   | j  |¡S r   )r¬   Úadd_insecure_port)r   Úaddressr   r   r   r¯   ž  ó   z_Server.add_insecure_portc                 C   s   | j  ||¡S r   )r¬   Úadd_secure_port)r   r°   Úserver_credentialsr   r   r   r²   ¡  r(   z_Server.add_secure_portc                 C   r&   r   ©r¬   rj   r   r   r   r   rj   ¤  r(   z_Server.startc                 C   r®   r   ©r¬   Ústop)r   Úgracer   r   r   r¶   §  r±   z_Server.stopc                 C   s   | j  ¡  | S r   r´   r   r   r   r   Ú	__enter__ª  s   
z_Server.__enter__c                 C   s   | j  d ¡ dS rI   rµ   )r   Úexc_typeÚexc_valÚexc_tbr   r   r   Ú__exit__®  s   z_Server.__exit__N)
r   r   r   r   r¯   r²   rj   r¶   r¸   r¼   r   r   r   r   r«   š  s    r«   c                 C   sF   t | |||ƒ}|d u rt |d u rtn|¡}n|}ttj||fd�ƒS )N)Úhandlers)r�   r   ÚpoolÚ_DEFAULT_POOL_SIZEr«   ÚgrpcÚserver)Úservice_implementationsr£   r¤   r¥   Úthread_poolÚthread_pool_sizeÚgeneric_rpc_handlerÚeffective_thread_poolr   r   r   rÁ   ³  s   üÿÿrÁ   ))Ú__doc__ÚcollectionsrJ   rÀ   r   Ú	grpc.betar   r   Úgrpc.framework.commonr   r   Úgrpc.framework.foundationr   r   r	   Úgrpc.framework.interfaces.facer
   r¿   ÚGRPCServicerContextr   ÚServicerContextr   rA   rF   ÚConsumerrH   rl   rr   rv   ry   r|   Ú
namedtupleÚRpcMethodHandlerr}   r•   rœ   ÚGenericRpcHandlerr�   ÚServerr«   rÁ   r   r   r   r   Ú<module>   sH   (		3
þòd	%