U
    "FZhi                  	   @   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 krdn| }|d kr|S ||S d S )N r   )metadatametadata_transformerZnon_none_metadatar   r   d/home/aprabhat/apps/x.techxrdev.in/venv/lib/python3.8/site-packages/grpc/beta/_client_adaptations.py_effective_metadata.   s    r   c                 C   s   | d krd S | j S N)credentials)Zgrpc_call_optionsr   r   r   _credentials6   s    r   c                 C   sJ   |   }t|}|d k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 k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   s    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   s   || _ || _|| _d S r   )_future	_iterator_call)r    response_futureresponse_iteratorcallr   r   r   __init__Y   s    z_Rendezvous.__init__c                 C   s
   | j  S r   )r(   cancelr   r   r   r   r-   ^   s    z_Rendezvous.cancelc                 C   s
   | j  S r   )r&   	cancelledr   r   r   r   r.   a   s    z_Rendezvous.cancelledc                 C   s
   | j  S r   )r&   runningr   r   r   r   r/   d   s    z_Rendezvous.runningc                 C   s
   | j  S r   )r&   doner   r   r   r   r0   g   s    z_Rendezvous.doneNc              
   C   sz   z| j j|dW S  tjk
r< } zt|W 5 d }~X Y n: tjk
rX   t Y n tjk
rt   t	 Y nX d S N)timeout)
r&   resultgrpcRpcErrorr   FutureTimeoutErrorr   TimeoutErrorFutureCancelledErrorCancelledErrorr    r2   r   r   r   r   r3   j   s    z_Rendezvous.resultc                 C   sj   z*| j j|d}|d krW d S t|W S W n: tjk
rH   t Y n tjk
rd   t Y nX d S r1   )	r&   	exceptionr   r4   r6   r   r7   r8   r9   r:   r   r   r   r;   t   s    z_Rendezvous.exceptionc                 C   sP   z| j j|dW S  tjk
r.   t Y n tjk
rJ   t Y nX d S r1   )r&   	tracebackr4   r6   r   r7   r8   r9   )r    r2   r   r   r   r<      s    z_Rendezvous.tracebackc                    s   j  fdd d S )Nc                    s    S r   r   )Zignored_callbackfnr    r   r   <lambda>       z/_Rendezvous.add_done_callback.<locals>.<lambda>)r&   add_done_callback)r    r>   r   r=   r   rA      s    z_Rendezvous.add_done_callbackc                 C   s   | S r   r   r   r   r   r   __iter__   s    z_Rendezvous.__iter__c              
   C   s>   zt | jW S  tjk
r8 } zt|W 5 d }~X Y nX d S r   )nextr'   r4   r5   r   )r    r   r   r   r   _next   s    z_Rendezvous._nextc                 C   s   |   S r   rD   r   r   r   r   __next__   s    z_Rendezvous.__next__c                 C   s   |   S r   rE   r   r   r   r   rC      s    z_Rendezvous.nextc                 C   s
   | j  S r   )r(   	is_activer   r   r   r   rG      s    z_Rendezvous.is_activec                 C   s
   | j  S r   )r(   time_remainingr   r   r   r   rH      s    z_Rendezvous.time_remainingc                    s(    fdd}j |}|r"d S | S )Nc                      s"     tjjk	r tj d S r   )r   r4   
StatusCodeOKr   r(   r   abortion_callbackr    r   r   done_callback   s    z8_Rendezvous.add_abortion_callback.<locals>.done_callback)r(   Zadd_callback)r    rL   rM   
registeredr   rK   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   s   t | j S r   )r   betar(   r   r   r   r   r   r      s    z_Rendezvous.initial_metadatac                 C   s   t | j S r   )r   rQ   r(   terminal_metadatar   r   r   r   rR      s    z_Rendezvous.terminal_metadatac                 C   s
   | j  S r   )r(   r   r   r   r   r   r      s    z_Rendezvous.codec                 C   s
   | j  S r   )r(   r   r   r   r   r   r      s    z_Rendezvous.details)N)N)N)r"   r#   r$   r,   r-   r.   r/   r0   r3   r;   r<   rA   rB   rD   rF   rC   rG   rH   rO   rP   r   rR   r   r   r   r   r   r   r%   X   s*   



r%   c              
   C   s   zx| j t|||	|
d}t||}|rZ|j||t|t|d\}}|td d |fW S |||t|t|dW S W n, t	j
k
r } zt|W 5 d }~X Y nX d S N)request_serializerresponse_deserializer)r2   r	   r   )unary_unaryr   fully_qualified_methodr   	with_callr   unbetar   r%   r4   r5   r   )channelgroupmethodr2   rX   protocol_optionsr	   r
   requestrT   rU   multi_callableeffective_metadataresponser+   r   r   r   r   _blocking_unary_unary   s.    


rb   c
                 C   sJ   | j t||||	d}
t||}|
j||t|t|d}t|d |S rS   )	rV   r   rW   r   r   r   rY   r   r%   )rZ   r[   r\   r2   r]   r	   r
   r^   rT   rU   r_   r`   r)   r   r   r   _future_unary_unary   s    

rc   c
                 C   sH   | j t||||	d}
t||}|
||t|t|d}td ||S rS   )unary_streamr   rW   r   r   rY   r   r%   )rZ   r[   r\   r2   r]   r	   r
   r^   rT   rU   r_   r`   r*   r   r   r   _unary_stream   s    

re   c              
   C   s   zx| j t|||	|
d}t||}|rZ|j||t|t|d\}}|td d |fW S |||t|t|dW S W n, t	j
k
r } zt|W 5 d }~X Y nX d S rS   )stream_unaryr   rW   r   rX   r   rY   r   r%   r4   r5   r   )rZ   r[   r\   r2   rX   r]   r	   r
   request_iteratorrT   rU   r_   r`   ra   r+   r   r   r   r   _blocking_stream_unary  s.    


rh   c
                 C   sJ   | j t||||	d}
t||}|
j||t|t|d}t|d |S rS   )	rf   r   rW   r   r   r   rY   r   r%   )rZ   r[   r\   r2   r]   r	   r
   rg   rT   rU   r_   r`   r)   r   r   r   _future_stream_unary<  s    

ri   c
                 C   sH   | j t||||	d}
t||}|
||t|t|d}td ||S rS   )stream_streamr   rW   r   r   rY   r   r%   )rZ   r[   r\   r2   r]   r	   r
   rg   rT   rU   r_   r`   r*   r   r   r   _stream_streamW  s    

rk   c                   @   s2   e Zd Zdd ZdddZdddZdd	d
ZdS )_UnaryUnaryMultiCallablec                 C   s(   || _ || _|| _|| _|| _|| _d S r   _channel_group_method_metadata_transformer_request_serializer_response_deserializerr    rZ   r[   r\   r
   rT   rU   r   r   r   r,   s  s    	z!_UnaryUnaryMultiCallable.__init__NFc                 C   s(   t | j| j| j||||| j|| j| jS r   )rb   rn   ro   rp   rq   rr   rs   )r    r^   r2   r	   rX   r]   r   r   r   __call__  s    z!_UnaryUnaryMultiCallable.__call__c                 C   s&   t | j| j| j|||| j|| j| j
S r   )rc   rn   ro   rp   rq   rr   rs   r    r^   r2   r	   r]   r   r   r   r     s    z_UnaryUnaryMultiCallable.futurec                 C   s
   t  d S r   NotImplementedErrorr    r^   receiverrL   r2   r	   r]   r   r   r   event  s    	z_UnaryUnaryMultiCallable.event)NFN)NN)NNr"   r#   r$   r,   ru   r   r{   r   r   r   r   rl   r  s      

  rl   c                   @   s(   e Zd Zdd ZdddZd	ddZdS )
_UnaryStreamMultiCallablec                 C   s(   || _ || _|| _|| _|| _|| _d S r   rm   rt   r   r   r   r,     s    	z"_UnaryStreamMultiCallable.__init__Nc                 C   s&   t | j| j| j|||| j|| j| j
S r   )re   rn   ro   rp   rq   rr   rs   rv   r   r   r   ru     s    z"_UnaryStreamMultiCallable.__call__c                 C   s
   t  d S r   rw   ry   r   r   r   r{     s    	z_UnaryStreamMultiCallable.event)NN)NNr"   r#   r$   r,   ru   r{   r   r   r   r   r}     s
   
  r}   c                   @   s2   e Zd Zdd ZdddZdddZdd	d
ZdS )_StreamUnaryMultiCallablec                 C   s(   || _ || _|| _|| _|| _|| _d S r   rm   rt   r   r   r   r,     s    	z"_StreamUnaryMultiCallable.__init__NFc                 C   s(   t | j| j| j||||| j|| j| jS r   )rh   rn   ro   rp   rq   rr   rs   )r    rg   r2   r	   rX   r]   r   r   r   ru     s    z"_StreamUnaryMultiCallable.__call__c                 C   s&   t | j| j| j|||| j|| j| j
S r   )ri   rn   ro   rp   rq   rr   rs   r    rg   r2   r	   r]   r   r   r   r     s    z _StreamUnaryMultiCallable.futurec                 C   s
   t  d S r   rw   r    rz   rL   r2   r	   r]   r   r   r   r{     s    z_StreamUnaryMultiCallable.event)NFN)NN)NNr|   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   s(   || _ || _|| _|| _|| _|| _d S r   rm   rt   r   r   r   r,   !  s    	z#_StreamStreamMultiCallable.__init__Nc                 C   s&   t | j| j| j|||| j|| j| j
S r   )rk   rn   ro   rp   rq   rr   rs   r   r   r   r   ru   1  s    z#_StreamStreamMultiCallable.__call__c                 C   s
   t  d S r   rw   r   r   r   r   r{   A  s    z _StreamStreamMultiCallable.event)NN)NNr~   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   )rn   rq   _request_serializers_response_deserializers)r    rZ   r
   request_serializersresponse_deserializersr   r   r   r,   M  s    
z_GenericStub.__init__Nc           
      C   s@   | j ||f}| j||f}	t| j||||||| j|||	S r   )r   r   r   rb   rn   rq   )
r    r[   r\   r^   r2   r	   rX   r]   rT   rU   r   r   r   blocking_unary_unaryY  s.    
z!_GenericStub.blocking_unary_unaryc           	      C   s>   | j ||f}| j||f}t| j|||||| j|||
S r   )r   r   r   rc   rn   rq   	r    r[   r\   r^   r2   r	   r]   rT   rU   r   r   r   future_unary_unary}  s,    	z_GenericStub.future_unary_unaryc           	      C   s>   | j ||f}| j||f}t| j|||||| j|||
S r   )r   r   r   re   rn   rq   r   r   r   r   inline_unary_stream  s,    	z _GenericStub.inline_unary_streamc           
      C   s@   | j ||f}| j||f}	t| j||||||| j|||	S r   )r   r   r   rh   rn   rq   )
r    r[   r\   rg   r2   r	   rX   r]   rT   rU   r   r   r   blocking_stream_unary  s.    
z"_GenericStub.blocking_stream_unaryc           	      C   s>   | j ||f}| j||f}t| j|||||| j|||
S r   )r   r   r   ri   rn   rq   	r    r[   r\   rg   r2   r	   r]   rT   rU   r   r   r   future_stream_unary  s,    	z _GenericStub.future_stream_unaryc           	      C   s>   | j ||f}| j||f}t| j|||||| j|||
S r   )r   r   r   rk   rn   rq   r   r   r   r   inline_stream_stream  s,    	z!_GenericStub.inline_stream_streamc	           	      C   s
   t  d S r   rw   	r    r[   r\   r^   rz   rL   r2   r	   r]   r   r   r   event_unary_unary)  s    z_GenericStub.event_unary_unaryc	           	      C   s
   t  d S r   rw   r   r   r   r   event_unary_stream6  s    z_GenericStub.event_unary_streamc                 C   s
   t  d S r   rw   r    r[   r\   rz   rL   r2   r	   r]   r   r   r   event_stream_unaryC  s    
z_GenericStub.event_stream_unaryc                 C   s
   t  d S r   rw   r   r   r   r   event_stream_streamO  s    
z _GenericStub.event_stream_streamc                 C   s6   | j ||f}| j||f}t| j||| j||S r   )r   r   r   rl   rn   rq   r    r[   r\   rT   rU   r   r   r   rV   [  s$    z_GenericStub.unary_unaryc                 C   s6   | j ||f}| j||f}t| j||| j||S r   )r   r   r   r}   rn   rq   r   r   r   r   rd   q  s$    z_GenericStub.unary_streamc                 C   s6   | j ||f}| j||f}t| j||| j||S r   )r   r   r   r   rn   rq   r   r   r   r   rf     s$    z_GenericStub.stream_unaryc                 C   s6   | j ||f}| j||f}t| j||| j||S r   )r   r   r   r   rn   rq   r   r   r   r   rj     s$    z_GenericStub.stream_streamc                 C   s   | S r   r   r   r   r   r   	__enter__  s    z_GenericStub.__enter__c                 C   s   dS NFr   r    exc_typeexc_valexc_tbr   r   r   __exit__  s    z_GenericStub.__exit__)NNN)NN)NN)NNN)NN)NN)NN)NN)NN)NN)r"   r#   r$   r,   r   r   r   r   r   r   r   r   r   r   rV   rd   rf   rj   r   r   r   r   r   r   r   L  sN      
*  
(  
(   
*  
(  
*  
  
  
  
r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
_DynamicStubc                 C   s   || _ || _|| _d S r   )_generic_stubro   _cardinalities)r    Zbacking_generic_stubr[   cardinalitiesr   r   r   r,     s    z_DynamicStub.__init__c                 C   s   | j |}|tjjkr(| j| j|S |tjjkrD| j	| j|S |tjj
kr`| j| j|S |tjjkr|| j| j|S td| d S )Nz*_DynamicStub object has no attribute "%s"!)r   r   r   ZCardinalityZUNARY_UNARYr   rV   ro   ZUNARY_STREAMrd   ZSTREAM_UNARYrf   ZSTREAM_STREAMrj   AttributeError)r    attrZmethod_cardinalityr   r   r   __getattr__  s    z_DynamicStub.__getattr__c                 C   s   | S r   r   r   r   r   r   r     s    z_DynamicStub.__enter__c                 C   s   dS r   r   r   r   r   r   r     s    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   )rZ   hostr
   r   r   r   r   r   generic_stub  s    r   c                 C   s   t t| |||||S r   )r   r   )rZ   Zservicer   r   r
   r   r   r   r   r   dynamic_stub  s    	r   )8__doc__r4   r   Z	grpc.betar   r   Zgrpc.framework.commonr   Zgrpc.framework.foundationr   Zgrpc.framework.interfaces.facer   rI   Z	CANCELLEDr   r   ZCancellationErrorUNKNOWNZREMOTE_FAILUREZRemoteErrorZDEADLINE_EXCEEDEDZEXPIREDZExpirationErrorZUNIMPLEMENTEDr   Z
LocalErrorr   r   r   r   r   ZGRPCInvocationContextr   FutureCallr%   rb   rc   re   rh   ri   rk   ZUnaryUnaryMultiCallablerl   ZUnaryStreamMultiCallabler}   ZStreamUnaryMultiCallabler   ZStreamStreamMultiCallabler   ZGenericStubr   ZDynamicStubr   r   r   r   r   r   r   <module>   s\   `''A+B,  p