o
    #ѹgi                  	   @   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   a/Users/admin/.pyenv/versions/3.10.0/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   Z
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   rW   r   )r   rX   r*   terminal_metadatar   r   r   r   rZ      rY   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   rU   rV   r   rZ   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   ra   protocol_optionsr	   r
   requestr]   r^   multi_callableeffective_metadataresponser-   r   r   r   r   _blocking_unary_unary   2   


rk   c
                 C   J   | j t||||	d}
t||}|
j||t|t|d}t|d |S r\   )	r_   r   r`   r   r   r   rb   r   r&   )rc   rd   re   r7   rf   r	   r
   rg   r]   r^   rh   ri   r+   r   r   r   _future_unary_unary      

rn   c
                 C   H   | j t||||	d}
t||}|
||t|t|d}td ||S r\   )unary_streamr   r`   r   r   rb   r   r&   )rc   rd   re   r7   rf   r	   r
   rg   r]   r^   rh   ri   r,   r   r   r   _unary_stream      

rr   c              
   C   r[   r\   )stream_unaryr   r`   r   ra   r   rb   r   r&   r9   r:   r   )rc   rd   re   r7   ra   rf   r	   r
   request_iteratorr]   r^   rh   ri   rj   r-   r   r   r   r   _blocking_stream_unary  rl   rv   c
                 C   rm   r\   )	rt   r   r`   r   r   r   rb   r   r&   )rc   rd   re   r7   rf   r	   r
   ru   r]   r^   rh   ri   r+   r   r   r   _future_stream_unary<  ro   rw   c
                 C   rp   r\   )stream_streamr   r`   r   r   rb   r   r&   )rc   rd   re   r7   rf   r	   r
   ru   r]   r^   rh   ri   r,   r   r   r   _stream_streamW  rs   ry   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    rc   rd   re   r
   r]   r^   r   r   r   r.   s     	
z!_UnaryUnaryMultiCallable.__init__NFc                 C   (   t | j| j| j||||| j|| j| jS r   )rk   r}   r~   r   r   r   r   )r    rg   r7   r	   ra   rf   r   r   r   __call__     z!_UnaryUnaryMultiCallable.__call__c                 C   &   t | j| j| j|||| j|| j| j
S r   )rn   r}   r~   r   r   r   r   r    rg   r7   r	   rf   r   r   r   r        z_UnaryUnaryMultiCallable.futurec                 C      t  r   NotImplementedErrorr    rg   receiverrS   r7   r	   rf   r   r   r   event     	z_UnaryUnaryMultiCallable.eventNFNNNr#   r$   r%   r.   r   r   r   r   r   r   r   rz   r  s    

rz   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   )rr   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   )rv   r}   r~   r   r   r   r   )r    ru   r7   r	   ra   rf   r   r   r   r     r   z"_StreamUnaryMultiCallable.__call__c                 C   r   r   )rw   r}   r~   r   r   r   r   r    ru   r7   r	   rf   r   r   r   r        z _StreamUnaryMultiCallable.futurec                 C   r   r   r   r    r   rS   r7   r	   rf   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   )ry   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    rc   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   rk   r}   r   )
r    rd   re   rg   r7   r	   ra   rf   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   rn   r}   r   	r    rd   re   rg   r7   r	   rf   r]   r^   r   r   r   future_unary_unary}  ,   	z_GenericStub.future_unary_unaryc           	      C   r   r   )r   r   r   rr   r}   r   r   r   r   r   inline_unary_stream  r   z _GenericStub.inline_unary_streamc           
      C   r   r   )r   r   r   rv   r}   r   )
r    rd   re   ru   r7   r	   ra   rf   r]   r^   r   r   r   blocking_stream_unary  r   z"_GenericStub.blocking_stream_unaryc           	      C   r   r   )r   r   r   rw   r}   r   	r    rd   re   ru   r7   r	   rf   r]   r^   r   r   r   future_stream_unary  r   z _GenericStub.future_stream_unaryc           	      C   r   r   )r   r   r   ry   r}   r   r   r   r   r   inline_stream_stream  r   z!_GenericStub.inline_stream_streamc	           	      C   r   r   r   	r    rd   re   rg   r   rS   r7   r	   rf   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    rd   re   r   rS   r7   r	   rf   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   rz   r}   r   r    rd   re   r]   r^   r   r   r   r_   [  $   z_GenericStub.unary_unaryc                 C   r   r   )r   r   r   r   r}   r   r   r   r   r   rq   q  r   z_GenericStub.unary_streamc                 C   r   r   )r   r   r   r   r}   r   r   r   r   r   rt     r   z_GenericStub.stream_unaryc                 C   r   r   )r   r   r   r   r}   r   r   r   r   r   rx     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_   rq   rt   rx   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_stubrd   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_STREAMrq   ZSTREAM_UNARYrt   ZSTREAM_STREAMrx   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   )rc   hostr
   r   r   r   r   r   generic_stub  s   r   c                 C   s   t t| |||||S r   )r   r   )rc   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&   rk   rn   rr   rv   rw   ry   ZUnaryUnaryMultiCallablerz   ZUnaryStreamMultiCallabler   ZStreamUnaryMultiCallabler   ZStreamStreamMultiCallabler   ZGenericStubr   ZDynamicStubr   r   r   r   r   r   r   <module>   s^   `''A+B,  p