a
    v=icO                     @   s   d Z ddlZddlZddlZG dd deZdd ZG dd dedd	ejZ	d
d Z
G dd dejejejZG dd dejej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jZG dd dejZdd ZdS )z+Implementation of gRPC Python interceptors.    Nc                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
_ServicePipelinec                 C   s   t || _d S N)tupleinterceptors)selfr    r   b/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/grpc/_interceptor.py__init__   s    z_ServicePipeline.__init__c                    s    fddS )Nc                    s     | S r   _intercept_at)contextindexr   thunkr   r   <lambda>       z0_ServicePipeline._continuation.<locals>.<lambda>r   )r   r   r   r   r   r   _continuation   s    z_ServicePipeline._continuationc                 C   s@   |t | jk r4| j| }| ||d }|||S ||S d S )N   )lenr   r   Zintercept_service)r   r   r   r   interceptorr   r   r   r      s
    
z_ServicePipeline._intercept_atc                 C   s   |  |d|S )Nr   r
   )r   r   r   r   r   r   execute&   s    z_ServicePipeline.executeN)__name__
__module____qualname__r	   r   r   r   r   r   r   r   r      s   r   c                 C   s   | rt | S d S r   )r   )r   r   r   r   service_pipeline*   s    r   c                   @   s   e Zd ZdS )_ClientCallDetailsN)r   r   r   r   r   r   r   r   .   s   r   )methodtimeoutmetadatacredentialswait_for_readycompressionc                 C   s   z
| j }W n ty"   |j }Y n0 z
| j}W n tyF   |j}Y n0 z
| j}W n tyj   |j}Y n0 z
| j}W n ty   |j}Y n0 z
| j}W n ty   |j}Y n0 z
| j}W n ty   |j}Y n0 ||||||fS r   )r   AttributeErrorr   r   r   r    r!   )Zcall_detailsZdefault_detailsr   r   r   r   r    r!   r   r   r   _unwrap_client_call_details6   s2    





r#   c                       s   e Zd Z f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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  ZS )+_FailureOutcomec                    s   t t|   || _|| _d S r   )superr$   r	   
_exception
_traceback)r   	exception	traceback	__class__r   r   r	   Z   s    z_FailureOutcome.__init__c                 C   s   d S r   r   r   r   r   r   initial_metadata_   s    z _FailureOutcome.initial_metadatac                 C   s   d S r   r   r,   r   r   r   trailing_metadatab   s    z!_FailureOutcome.trailing_metadatac                 C   s   t jjS r   )grpcZ
StatusCodeZINTERNALr,   r   r   r   codee   s    z_FailureOutcome.codec                 C   s   dS )Nz+Exception raised while intercepting the RPCr   r,   r   r   r   detailsh   s    z_FailureOutcome.detailsc                 C   s   dS NFr   r,   r   r   r   cancelk   s    z_FailureOutcome.cancelc                 C   s   dS r2   r   r,   r   r   r   	cancelledn   s    z_FailureOutcome.cancelledc                 C   s   dS r2   r   r,   r   r   r   	is_activeq   s    z_FailureOutcome.is_activec                 C   s   d S r   r   r,   r   r   r   time_remainingt   s    z_FailureOutcome.time_remainingc                 C   s   dS r2   r   r,   r   r   r   runningw   s    z_FailureOutcome.runningc                 C   s   dS NTr   r,   r   r   r   donez   s    z_FailureOutcome.doneNc                 C   s
   | j d S r   r&   r   Zignored_timeoutr   r   r   result}   s    z_FailureOutcome.resultc                 C   s   | j S r   r:   r;   r   r   r   r(      s    z_FailureOutcome.exceptionc                 C   s   | j S r   )r'   r;   r   r   r   r)      s    z_FailureOutcome.tracebackc                 C   s   dS r2   r   )r   Zunused_callbackr   r   r   add_callback   s    z_FailureOutcome.add_callbackc                 C   s   ||  d S r   r   r   fnr   r   r   add_done_callback   s    z!_FailureOutcome.add_done_callbackc                 C   s   | S r   r   r,   r   r   r   __iter__   s    z_FailureOutcome.__iter__c                 C   s
   | j d S r   r:   r,   r   r   r   __next__   s    z_FailureOutcome.__next__c                 C   s   |   S r   )rB   r,   r   r   r   next   s    z_FailureOutcome.next)N)N)N)r   r   r   r	   r-   r.   r0   r1   r3   r4   r5   r6   r7   r9   r<   r(   r)   r=   r@   rA   rB   rC   __classcell__r   r   r*   r   r$   X   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 Zd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S )%_UnaryOutcomec                 C   s   || _ || _d S r   )	_response_call)r   responsecallr   r   r   r	      s    z_UnaryOutcome.__init__c                 C   s
   | j  S r   )rG   r-   r,   r   r   r   r-      s    z_UnaryOutcome.initial_metadatac                 C   s
   | j  S r   )rG   r.   r,   r   r   r   r.      s    z_UnaryOutcome.trailing_metadatac                 C   s
   | j  S r   )rG   r0   r,   r   r   r   r0      s    z_UnaryOutcome.codec                 C   s
   | j  S r   )rG   r1   r,   r   r   r   r1      s    z_UnaryOutcome.detailsc                 C   s
   | j  S r   )rG   r5   r,   r   r   r   r5      s    z_UnaryOutcome.is_activec                 C   s
   | j  S r   )rG   r6   r,   r   r   r   r6      s    z_UnaryOutcome.time_remainingc                 C   s
   | j  S r   )rG   r3   r,   r   r   r   r3      s    z_UnaryOutcome.cancelc                 C   s   | j |S r   )rG   r=   r   callbackr   r   r   r=      s    z_UnaryOutcome.add_callbackc                 C   s   dS r2   r   r,   r   r   r   r4      s    z_UnaryOutcome.cancelledc                 C   s   dS r2   r   r,   r   r   r   r7      s    z_UnaryOutcome.runningc                 C   s   dS r8   r   r,   r   r   r   r9      s    z_UnaryOutcome.doneNc                 C   s   | j S r   )rF   r;   r   r   r   r<      s    z_UnaryOutcome.resultc                 C   s   d S r   r   r;   r   r   r   r(      s    z_UnaryOutcome.exceptionc                 C   s   d S r   r   r;   r   r   r   r)      s    z_UnaryOutcome.tracebackc                 C   s   ||  d S r   r   r>   r   r   r   r@      s    z_UnaryOutcome.add_done_callback)N)N)N)r   r   r   r	   r-   r.   r0   r1   r5   r6   r3   r=   r4   r7   r9   r<   r(   r)   r@   r   r   r   r   rE      s    


rE   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S )_UnaryUnaryMultiCallablec                 C   s   || _ || _|| _d S r   _thunk_method_interceptorr   r   r   r   r   r   r   r	      s    z!_UnaryUnaryMultiCallable.__init__Nc           	      C   s   | j ||||||d\}}|S Nr   r   r   r    r!   
_with_call)	r   requestr   r   r   r    r!   rH   ignored_callr   r   r   __call__   s    
z!_UnaryUnaryMultiCallable.__call__c           	         s>   t j|||||  fdd}j| |}| |fS )Nc              
      s   t |  \}}}}}}z,|j||||||d\}}	t||	W S  tjyl }
 z|
W  Y d }
~
S d }
~
0  ty } zt|t	 d W  Y d }~S d }~0 0 d S NrS      
r#   rN   	with_callrE   r/   RpcError	Exceptionr$   sysexc_info)new_detailsrV   
new_methodnew_timeoutnew_metadatanew_credentialsnew_wait_for_readynew_compressionrH   rI   	rpc_errorr(   Zclient_call_detailsr   r   r   continuation   s(    


z9_UnaryUnaryMultiCallable._with_call.<locals>.continuation)r   rO   rP   intercept_unary_unaryr<   )	r   rV   r   r   r   r    r!   rj   rI   r   ri   r   rU      s    z#_UnaryUnaryMultiCallable._with_callc                 C   s   | j ||||||dS rR   rT   )r   rV   r   r   r   r    r!   r   r   r   r\     s    z"_UnaryUnaryMultiCallable.with_callc           	   
      sp   t j|||||  fdd}zj| |W S  tyj } zt|t d W  Y d }~S d }~0 0 d S )Nc                    s2   t |  \}}}}}}|j||||||dS rR   r#   rN   futurera   rV   rb   rc   rd   re   rf   rg   ri   r   r   rj     s    

z5_UnaryUnaryMultiCallable.future.<locals>.continuationrZ   )r   rO   rP   rk   r^   r$   r_   r`   	r   rV   r   r   r   r    r!   rj   r(   r   ri   r   rm     s    z_UnaryUnaryMultiCallable.future)NNNNN)NNNNN)NNNNN)NNNNNr   r   r   r	   rX   rU   r\   rm   r   r   r   r   rL      s2        
     
%     
     rL   c                   @   s   e Zd Zdd ZdddZdS )_UnaryStreamMultiCallablec                 C   s   || _ || _|| _d S r   rM   rQ   r   r   r   r	   2  s    z"_UnaryStreamMultiCallable.__init__Nc           	   
      sp   t j|||||  fdd}zj| |W S  tyj } zt|t d W  Y d }~S d }~0 0 d S )Nc                    s0   t |  \}}}}}}|||||||dS rR   r#   rN   rn   ri   r   r   rj   B  s    

z8_UnaryStreamMultiCallable.__call__.<locals>.continuationrZ   )r   rO   rP   Zintercept_unary_streamr^   r$   r_   r`   ro   r   ri   r   rX   7  s    z"_UnaryStreamMultiCallable.__call__)NNNNNr   r   r   r	   rX   r   r   r   r   rq   0  s        rq   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S )_StreamUnaryMultiCallablec                 C   s   || _ || _|| _d S r   rM   rQ   r   r   r   r	   W  s    z"_StreamUnaryMultiCallable.__init__Nc           	      C   s   | j ||||||d\}}|S rR   rT   )	r   request_iteratorr   r   r   r    r!   rH   rW   r   r   r   rX   \  s    
z"_StreamUnaryMultiCallable.__call__c           	         s>   t j|||||  fdd}j| |}| |fS )Nc              
      s   t |  \}}}}}}z,|j||||||d\}}	t||	W S  tjyl }
 z|
W  Y d }
~
S d }
~
0  ty } zt|t	 d W  Y d }~S d }~0 0 d S rY   r[   )ra   ru   rb   rc   rd   re   rf   rg   rH   rI   rh   r(   ri   r   r   rj   v  s(    


z:_StreamUnaryMultiCallable._with_call.<locals>.continuation)r   rO   rP   intercept_stream_unaryr<   )	r   ru   r   r   r   r    r!   rj   rI   r   ri   r   rU   k  s    z$_StreamUnaryMultiCallable._with_callc                 C   s   | j ||||||dS rR   rT   )r   ru   r   r   r   r    r!   r   r   r   r\     s    z#_StreamUnaryMultiCallable.with_callc           	   
      sp   t j|||||  fdd}zj| |W S  tyj } zt|t d W  Y d }~S d }~0 0 d S )Nc                    s2   t |  \}}}}}}|j||||||dS rR   rl   ra   ru   rb   rc   rd   re   rf   rg   ri   r   r   rj     s    

z6_StreamUnaryMultiCallable.future.<locals>.continuationrZ   )r   rO   rP   rv   r^   r$   r_   r`   	r   ru   r   r   r   r    r!   rj   r(   r   ri   r   rm     s    z _StreamUnaryMultiCallable.future)NNNNN)NNNNN)NNNNN)NNNNNrp   r   r   r   r   rt   U  s2        
     
%     
     rt   c                   @   s   e Zd Zdd ZdddZdS )_StreamStreamMultiCallablec                 C   s   || _ || _|| _d S r   rM   rQ   r   r   r   r	     s    z#_StreamStreamMultiCallable.__init__Nc           	   
      sp   t j|||||  fdd}zj| |W S  tyj } zt|t d W  Y d }~S d }~0 0 d S )Nc                    s0   t |  \}}}}}}|||||||dS rR   rr   rw   ri   r   r   rj     s    

z9_StreamStreamMultiCallable.__call__.<locals>.continuationrZ   )r   rO   rP   Zintercept_stream_streamr^   r$   r_   r`   rx   r   ri   r   rX     s    z#_StreamStreamMultiCallable.__call__)NNNNNrs   r   r   r   r   ry     s        ry   c                   @   sn   e Zd Zdd ZdddZ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S )_Channelc                 C   s   || _ || _d S r   )_channelrP   )r   channelr   r   r   r   r	     s    z_Channel.__init__Fc                 C   s   | j j||d d S )N)try_to_connect)r{   	subscribe)r   rK   r}   r   r   r   r~     s    z_Channel.subscribec                 C   s   | j | d S r   )r{   unsubscriberJ   r   r   r   r     s    z_Channel.unsubscribeNc                    s8    fdd}t jtjr,t||jS ||S d S )Nc                    s   j |  S r   )r{   unary_unarymrequest_serializerresponse_deserializerr   r   r   r     s   
z&_Channel.unary_unary.<locals>.<lambda>)
isinstancerP   r/   UnaryUnaryClientInterceptorrL   r   r   r   r   r   r   r   r   r     s    z_Channel.unary_unaryc                    s8    fdd}t jtjr,t||jS ||S d S )Nc                    s   j |  S r   )r{   unary_streamr   r   r   r   r     s   
z'_Channel.unary_stream.<locals>.<lambda>)r   rP   r/   UnaryStreamClientInterceptorrq   r   r   r   r   r     s    z_Channel.unary_streamc                    s8    fdd}t jtjr,t||jS ||S d S )Nc                    s   j |  S r   )r{   stream_unaryr   r   r   r   r     s   
z'_Channel.stream_unary.<locals>.<lambda>)r   rP   r/   StreamUnaryClientInterceptorrt   r   r   r   r   r     s    z_Channel.stream_unaryc                    s8    fdd}t jtjr,t||jS ||S d S )Nc                    s   j |  S r   )r{   stream_streamr   r   r   r   r     s   
z(_Channel.stream_stream.<locals>.<lambda>)r   rP   r/   StreamStreamClientInterceptorry   r   r   r   r   r     s    z_Channel.stream_streamc                 C   s   | j   d S r   r{   closer,   r   r   r   _close  s    z_Channel._closec                 C   s   | S r   r   r,   r   r   r   	__enter__  s    z_Channel.__enter__c                 C   s   |    dS r2   )r   )r   exc_typeexc_valexc_tbr   r   r   __exit__  s    z_Channel.__exit__c                 C   s   | j   d S r   r   r,   r   r   r   r   "  s    z_Channel.close)F)NN)NN)NN)NN)r   r   r   r	   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   rz     s&   
  
  
  
  
rz   c                 G   sX   t t|D ]F}t|tjsHt|tjsHt|tjsHt|tjsHtdt	| |} q| S )Nzinterceptor must be grpc.UnaryUnaryClientInterceptor or grpc.UnaryStreamClientInterceptor or grpc.StreamUnaryClientInterceptor or grpc.StreamStreamClientInterceptor or )
reversedlistr   r/   r   r   r   r   	TypeErrorrz   )r|   r   r   r   r   r   intercept_channel&  s    


r   )__doc__collectionsr_   r/   objectr   r   
namedtupleZClientCallDetailsr   r#   r]   FutureCallr$   rE   ZUnaryUnaryMultiCallablerL   ZUnaryStreamMultiCallablerq   ZStreamUnaryMultiCallablert   ZStreamStreamMultiCallablery   ZChannelrz   r   r   r   r   r   <module>   s(   
">4f%f%F