o
    Zhi                  	   @   s  d 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 ejjejjjejfejjejjjejfejjejjjejfejjejjjejfiZd	d
 Zdd Zdd Zdd ZG dd dejZ G dd de	j!ej"Z#dd Z$dd Z%dd Z&dd Z'dd Z(dd  Z)G d!d" d"ej*Z+G d#d$ d$ej,Z-G d%d& d&ej.Z/G d'd( d(ej0Z1G d)d* d*ej2Z3G d+d, d,ej4Z5d-d. Z6d/d0 Z7dS )1zCTranslates gRPC's client-side API into gRPC's client-side Beta API.    N)_common)	_metadata)
interfaces)cardinality)future)facec                 C   s$   | d u rdn| }|d u r|S ||S )N r   )metadatametadata_transformerZnon_none_metadatar   r   T/var/www/html/lang_env/lib/python3.10/site-packages/grpc/beta/_client_adaptations.py_effective_metadata.   s   r   c                 C   s   | d u rd S | j S N)credentials)Zgrpc_call_optionsr   r   r   _credentials6   s   r   c                 C   sJ   |   }t|}|d u rtjjjn|d }t||  |  || 	 S )Nr   )
code6_STATUS_CODE_TO_ABORTION_KIND_AND_ABORTION_ERROR_CLASSgetr   AbortionKindLOCAL_FAILUREinitial_metadatatrailing_metadatadetails)rpc_error_callr   pairZ
error_kindr   r   r   	_abortion:   s   
r   c                 C   sB   |   }t|}|d u rtjn|d }||  |  ||  S )N   )r   r   r   r   ZAbortionErrorr   r   r   )r   r   r   Zexception_classr   r   r   _abortion_errorG   s   
r   c                   @   s   e Zd Zdd ZdS )_InvocationProtocolContextc                 C   s   d S r   r   selfr   r   r    disable_next_request_compressionT      z;_InvocationProtocolContext.disable_next_request_compressionN)__name__
__module____qualname__r!   r   r   r   r   r   S   s    r   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zd,ddZd,ddZ	d,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&d' Zd(d) Zd*d+ ZdS )-_Rendezvousc                 C      || _ || _|| _d S r   )_future	_iterator_call)r    response_futureresponse_iteratorcallr   r   r   __init__Y      
z_Rendezvous.__init__c                 C   
   | j  S r   )r*   cancelr   r   r   r   r1   ^      
z_Rendezvous.cancelc                 C   r0   r   )r(   	cancelledr   r   r   r   r3   a   r2   z_Rendezvous.cancelledc                 C   r0   r   )r(   runningr   r   r   r   r4   d   r2   z_Rendezvous.runningc                 C   r0   r   )r(   doner   r   r   r   r5   g   r2   z_Rendezvous.doneNc              
   C   s`   z| j j|dW S  tjy } zt|d }~w tjy$   t  tjy/   t	 w N)timeout)
r(   resultgrpcRpcErrorr   FutureTimeoutErrorr   TimeoutErrorFutureCancelledErrorCancelledErrorr    r7   r   r   r   r   r8   j   s   z_Rendezvous.resultc                 C   sV   z| j j|d}|d u rW d S t|W S  tjy   t  tjy*   t w r6   )	r(   	exceptionr   r9   r;   r   r<   r=   r>   r?   r   r   r   r@   t   s   
z_Rendezvous.exceptionc                 C   s@   z| j j|dW S  tjy   t  tjy   t w r6   )r(   	tracebackr9   r;   r   r<   r=   r>   )r    r7   r   r   r   rA      s   z_Rendezvous.tracebackc                    s   j  fdd d S )Nc                    s    S r   r   )Zignored_callbackfnr    r   r   <lambda>   s    z/_Rendezvous.add_done_callback.<locals>.<lambda>)r(   add_done_callback)r    rC   r   rB   r   rE      s   z_Rendezvous.add_done_callbackc                 C      | S r   r   r   r   r   r   __iter__   r"   z_Rendezvous.__iter__c              
   C   s0   zt | jW S  tjy } zt|d }~ww r   )nextr)   r9   r:   r   )r    r   r   r   r   _next   s   z_Rendezvous._nextc                 C      |   S r   rI   r   r   r   r   __next__      z_Rendezvous.__next__c                 C   rJ   r   rK   r   r   r   r   rH      rM   z_Rendezvous.nextc                 C   r0   r   )r*   	is_activer   r   r   r   rN      r2   z_Rendezvous.is_activec                 C   r0   r   )r*   time_remainingr   r   r   r   rO      r2   z_Rendezvous.time_remainingc                    s(    fdd}j |}|rd S | S )Nc                      s&     tjjur tj d S d S r   )r   r9   
StatusCodeOKr   r*   r   abortion_callbackr    r   r   done_callback   s   z8_Rendezvous.add_abortion_callback.<locals>.done_callback)r*   Zadd_callback)r    rS   rT   
registeredr   rR   r   add_abortion_callback   s   z!_Rendezvous.add_abortion_callbackc                 C   s   t  S r   )r   r   r   r   r   protocol_context   s   z_Rendezvous.protocol_contextc                 C      t | j S r   )r   betar*   r   r   r   r   r   r         z_Rendezvous.initial_metadatac                 C   rX   r   )r   rY   r*   terminal_metadatar   r   r   r   r[      rZ   z_Rendezvous.terminal_metadatac                 C   r0   r   )r*   r   r   r   r   r   r      r2   z_Rendezvous.codec                 C   r0   r   )r*   r   r   r   r   r   r      r2   z_Rendezvous.detailsr   )r#   r$   r%   r.   r1   r3   r4   r5   r8   r@   rA   rE   rG   rI   rL   rH   rN   rO   rV   rW   r   r[   r   r   r   r   r   r   r&   X   s,    



r&   c              
   C      z:| j t|||	|
d}t||}|r-|j||t|t|d\}}|td d |fW S |||t|t|dW S  t	j
yK } zt|d }~ww N)request_serializerresponse_deserializer)r7   r	   r   )unary_unaryr   fully_qualified_methodr   	with_callr   unbetar   r&   r9   r:   r   )channelgroupmethodr7   rb   protocol_optionsr	   r
   requestr^   r_   multi_callableeffective_metadataresponser-   r   r   r   r   _blocking_unary_unary   2   


rl   c
                 C   J   | j t||||	d}
t||}|
j||t|t|d}t|d |S r]   )	r`   r   ra   r   r   r   rc   r   r&   )rd   re   rf   r7   rg   r	   r
   rh   r^   r_   ri   rj   r+   r   r   r   _future_unary_unary      

ro   c
                 C   H   | j t||||	d}
t||}|
||t|t|d}td ||S r]   )unary_streamr   ra   r   r   rc   r   r&   )rd   re   rf   r7   rg   r	   r
   rh   r^   r_   ri   rj   r,   r   r   r   _unary_stream      

rs   c              
   C   r\   r]   )stream_unaryr   ra   r   rb   r   rc   r   r&   r9   r:   r   )rd   re   rf   r7   rb   rg   r	   r
   request_iteratorr^   r_   ri   rj   rk   r-   r   r   r   r   _blocking_stream_unary  rm   rw   c
                 C   rn   r]   )	ru   r   ra   r   r   r   rc   r   r&   )rd   re   rf   r7   rg   r	   r
   rv   r^   r_   ri   rj   r+   r   r   r   _future_stream_unary<  rp   rx   c
                 C   rq   r]   )stream_streamr   ra   r   r   rc   r   r&   )rd   re   rf   r7   rg   r	   r
   rv   r^   r_   ri   rj   r,   r   r   r   _stream_streamW  rt   rz   c                   @   s<   e Zd Zdd Z			dddZdddZ		dd	d
ZdS )_UnaryUnaryMultiCallablec                 C   (   || _ || _|| _|| _|| _|| _d S r   _channel_group_method_metadata_transformer_request_serializer_response_deserializerr    rd   re   rf   r
   r^   r_   r   r   r   r.   s     	
z!_UnaryUnaryMultiCallable.__init__NFc                 C   (   t | j| j| j||||| j|| j| jS r   )rl   r~   r   r   r   r   r   )r    rh   r7   r	   rb   rg   r   r   r   __call__     z!_UnaryUnaryMultiCallable.__call__c                 C   &   t | j| j| j|||| j|| j| j
S r   )ro   r~   r   r   r   r   r   r    rh   r7   r	   rg   r   r   r   r        z_UnaryUnaryMultiCallable.futurec                 C      t  r   NotImplementedErrorr    rh   receiverrS   r7   r	   rg   r   r   r   event     	z_UnaryUnaryMultiCallable.eventNFNNNr#   r$   r%   r.   r   r   r   r   r   r   r   r{   r  s    

r{   c                   @   s,   e Zd Zdd ZdddZ		dddZdS )	_UnaryStreamMultiCallablec                 C   r|   r   r}   r   r   r   r   r.     r   z"_UnaryStreamMultiCallable.__init__Nc                 C   r   r   )rs   r~   r   r   r   r   r   r   r   r   r   r     r   z"_UnaryStreamMultiCallable.__call__c                 C   r   r   r   r   r   r   r   r     r   z_UnaryStreamMultiCallable.eventr   r#   r$   r%   r.   r   r   r   r   r   r   r     s    
r   c                   @   s>   e Zd Zdd Z			dddZ	dddZ		dd	d
ZdS )_StreamUnaryMultiCallablec                 C   r|   r   r}   r   r   r   r   r.     r   z"_StreamUnaryMultiCallable.__init__NFc                 C   r   r   )rw   r~   r   r   r   r   r   )r    rv   r7   r	   rb   rg   r   r   r   r     r   z"_StreamUnaryMultiCallable.__call__c                 C   r   r   )rx   r~   r   r   r   r   r   r    rv   r7   r	   rg   r   r   r   r        z _StreamUnaryMultiCallable.futurec                 C   r   r   r   r    r   rS   r7   r	   rg   r   r   r   r        z_StreamUnaryMultiCallable.eventr   r   r   r   r   r   r   r     s    

r   c                   @   s.   e Zd Zdd Z	dddZ		dddZdS )	_StreamStreamMultiCallablec                 C   r|   r   r}   r   r   r   r   r.   !  r   z#_StreamStreamMultiCallable.__init__Nc                 C   r   r   )rz   r~   r   r   r   r   r   r   r   r   r   r   1  r   z#_StreamStreamMultiCallable.__call__c                 C   r   r   r   r   r   r   r   r   A  r   z _StreamStreamMultiCallable.eventr   r   r   r   r   r   r      s    
r   c                   @   s   e Zd Z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%ddZ
		d%ddZ		d%ddZ		d%ddZdd Zdd Zdd Zdd Zd d! Zd"d# ZdS )&_GenericStubc                 C   s$   || _ || _|p	i | _|pi | _d S r   )r~   r   _request_serializers_response_deserializers)r    rd   r
   request_serializersresponse_deserializersr   r   r   r.   M  s   
z_GenericStub.__init__Nc           
      C   @   | j ||f}| j||f}	t| j||||||| j|||	S r   )r   r   r   rl   r~   r   )
r    re   rf   rh   r7   r	   rb   rg   r^   r_   r   r   r   blocking_unary_unaryY  .   
z!_GenericStub.blocking_unary_unaryc           	      C   >   | j ||f}| j||f}t| j|||||| j|||
S r   )r   r   r   ro   r~   r   	r    re   rf   rh   r7   r	   rg   r^   r_   r   r   r   future_unary_unary}  ,   	z_GenericStub.future_unary_unaryc           	      C   r   r   )r   r   r   rs   r~   r   r   r   r   r   inline_unary_stream  r   z _GenericStub.inline_unary_streamc           
      C   r   r   )r   r   r   rw   r~   r   )
r    re   rf   rv   r7   r	   rb   rg   r^   r_   r   r   r   blocking_stream_unary  r   z"_GenericStub.blocking_stream_unaryc           	      C   r   r   )r   r   r   rx   r~   r   	r    re   rf   rv   r7   r	   rg   r^   r_   r   r   r   future_stream_unary  r   z _GenericStub.future_stream_unaryc           	      C   r   r   )r   r   r   rz   r~   r   r   r   r   r   inline_stream_stream  r   z!_GenericStub.inline_stream_streamc	           	      C   r   r   r   	r    re   rf   rh   r   rS   r7   r	   rg   r   r   r   event_unary_unary)     z_GenericStub.event_unary_unaryc	           	      C   r   r   r   r   r   r   r   event_unary_stream6  r   z_GenericStub.event_unary_streamc                 C   r   r   r   r    re   rf   r   rS   r7   r	   rg   r   r   r   event_stream_unaryC     
z_GenericStub.event_stream_unaryc                 C   r   r   r   r   r   r   r   event_stream_streamO  r   z _GenericStub.event_stream_streamc                 C   6   | j ||f}| j||f}t| j||| j||S r   )r   r   r   r{   r~   r   r    re   rf   r^   r_   r   r   r   r`   [  $   z_GenericStub.unary_unaryc                 C   r   r   )r   r   r   r   r~   r   r   r   r   r   rr   q  r   z_GenericStub.unary_streamc                 C   r   r   )r   r   r   r   r~   r   r   r   r   r   ru     r   z_GenericStub.stream_unaryc                 C   r   r   )r   r   r   r   r~   r   r   r   r   r   ry     r   z_GenericStub.stream_streamc                 C   rF   r   r   r   r   r   r   	__enter__  r"   z_GenericStub.__enter__c                 C      dS NFr   r    exc_typeexc_valexc_tbr   r   r   __exit__  r"   z_GenericStub.__exit__)NNNr   )r#   r$   r%   r.   r   r   r   r   r   r   r   r   r   r   r`   rr   ru   ry   r   r   r   r   r   r   r   L  sP    
*
(
(
*
(
*



r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
_DynamicStubc                 C   r'   r   )_generic_stubr   _cardinalities)r    Zbacking_generic_stubre   cardinalitiesr   r   r   r.     r/   z_DynamicStub.__init__c                 C   s   | j |}|tjju r| j| j|S |tjju r"| j	| j|S |tjj
u r0| j| j|S |tjju r>| j| j|S td| )Nz*_DynamicStub object has no attribute "%s"!)r   r   r   ZCardinalityZUNARY_UNARYr   r`   r   ZUNARY_STREAMrr   ZSTREAM_UNARYru   ZSTREAM_STREAMry   AttributeError)r    attrZmethod_cardinalityr   r   r   __getattr__  s   z_DynamicStub.__getattr__c                 C   rF   r   r   r   r   r   r   r     r"   z_DynamicStub.__enter__c                 C   r   r   r   r   r   r   r   r     r"   z_DynamicStub.__exit__N)r#   r$   r%   r.   r   r   r   r   r   r   r   r     s
    r   c                 C   s   t | |||S r   )r   )rd   hostr
   r   r   r   r   r   generic_stub  s   r   c                 C   s   t t| |||||S r   )r   r   )rd   Zservicer   r   r
   r   r   r   r   r   dynamic_stub  s   	r   )8__doc__r9   r   Z	grpc.betar   r   Zgrpc.framework.commonr   Zgrpc.framework.foundationr   Zgrpc.framework.interfaces.facer   rP   	CANCELLEDr   r   ZCancellationErrorUNKNOWNZREMOTE_FAILUREZRemoteErrorZDEADLINE_EXCEEDEDZEXPIREDZExpirationErrorZUNIMPLEMENTEDr   Z
LocalErrorr   r   r   r   r   ZGRPCInvocationContextr   FutureCallr&   rl   ro   rs   rw   rx   rz   ZUnaryUnaryMultiCallabler{   ZUnaryStreamMultiCallabler   ZStreamUnaryMultiCallabler   ZStreamStreamMultiCallabler   ZGenericStubr   ZDynamicStubr   r   r   r   r   r   r   <module>   s^   `''A+B,  p