o
    |j6he                     @   s  d Z ddlZddlZddlZddlmZmZmZmZm	Z	m
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 G d
d deZdeeej  dee fddZG dd deddejZdejdejde	eeeejeejf f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%ej,deee
ej.ej/ej0ej1f   dej,fd&d'Z2dS )(z+Implementation of gRPC Python interceptors.    N)AnyCallableOptionalSequenceTupleUnion   )DeserializingFunction)DoneCallbackType)MetadataType)RequestIterableType)SerializingFunctionc                   @   s~   e Zd ZU eej ed< deej fddZde	de
de	fddZde	de
d	ejdejfd
dZde	d	ejdejfddZdS )_ServicePipelineinterceptorsc                 C   s   t || _d S N)tupler   )selfr    r   `/var/www/html/chefvision.cloud.itp360.com/venv/lib/python3.10/site-packages/grpc/_interceptor.py__init__!      z_ServicePipeline.__init__thunkindexreturnc                    s    fddS )Nc                    s     | S r   _intercept_at)contextr   r   r   r   r   <lambda>%   s    z0_ServicePipeline._continuation.<locals>.<lambda>r   )r   r   r   r   r   r   _continuation$      z_ServicePipeline._continuationr   c                 C   s<   |t | jk r| j| }| ||d }|||S ||S )Nr   )lenr   r   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   execute1   s   z_ServicePipeline.executeN)__name__
__module____qualname__r   grpcServerInterceptor__annotations__r   r   r   intr   HandlerCallDetailsRpcMethodHandlerr   r$   r   r   r   r   r      s(   
 

r   r   r   c                 C   s   | rt | S d S r   )r   )r   r   r   r   service_pipeline7   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compressioncall_detailsdefault_detailsc                 C   s   z| j }W n ty   |j }Y nw z| j}W n ty#   |j}Y nw z| j}W n ty5   |j}Y nw z| j}W n tyG   |j}Y nw z| j}W n tyY   |j}Y nw z| j}W n tyk   |j}Y nw ||||||fS r   )r0   AttributeErrorr1   r2   r3   r4   r5   )r6   r7   r0   r1   r2   r3   r4   r5   r   r   r   _unwrap_client_call_detailsN   sJ   





r9   c                       sh  e Zd ZU eed< ejed< dedejf fddZdee	 fdd	Z
dee	 fd
dZdeej fddZdee fddZdefddZdefddZdefddZdee fddZdefddZdefddZd/dee fddZ	d/dee dee fd d!Z	d/dee deej fd"d#Zdefd$d%Zd&eddfd'd(Zd)d* Zd+d, Z d-d. Z!  Z"S )0_FailureOutcome
_exception
_traceback	exception	tracebackc                    s   t t|   || _|| _d S r   )superr:   r   r;   r<   )r   r=   r>   	__class__r   r   r      s   
z_FailureOutcome.__init__r   c                 C      d S r   r   r   r   r   r   initial_metadata      z _FailureOutcome.initial_metadatac                 C   rB   r   r   rC   r   r   r   trailing_metadata   rE   z!_FailureOutcome.trailing_metadatac                 C   s   t jjS r   )r(   
StatusCodeINTERNALrC   r   r   r   code      z_FailureOutcome.codec                 C      dS )Nz+Exception raised while intercepting the RPCr   rC   r   r   r   details   rE   z_FailureOutcome.detailsc                 C   rK   NFr   rC   r   r   r   cancel   rE   z_FailureOutcome.cancelc                 C   rK   rM   r   rC   r   r   r   	cancelled   rE   z_FailureOutcome.cancelledc                 C   rK   rM   r   rC   r   r   r   	is_active   rE   z_FailureOutcome.is_activec                 C   rB   r   r   rC   r   r   r   time_remaining   rE   z_FailureOutcome.time_remainingc                 C   rK   rM   r   rC   r   r   r   running   rE   z_FailureOutcome.runningc                 C   rK   NTr   rC   r   r   r   done   rE   z_FailureOutcome.doneNignored_timeoutc                 C      | j r   r;   r   rU   r   r   r   result      z_FailureOutcome.resultc                 C      | j S r   rW   rX   r   r   r   r=         z_FailureOutcome.exceptionc                 C   r[   r   )r<   rX   r   r   r   r>      r\   z_FailureOutcome.tracebackc                 C   rK   rM   r   )r   unused_callbackr   r   r   add_callback   rE   z_FailureOutcome.add_callbackfnc                 C      ||  d S r   r   r   r_   r   r   r   add_done_callback      z!_FailureOutcome.add_done_callbackc                 C      | S r   r   rC   r   r   r   __iter__   rE   z_FailureOutcome.__iter__c                 C   rV   r   rW   rC   r   r   r   __next__   rZ   z_FailureOutcome.__next__c                 C   s   |   S r   )rf   rC   r   r   r   next   rJ   z_FailureOutcome.nextr   )#r%   r&   r'   	Exceptionr*   typesTracebackTyper   r   r   rD   rF   r(   rG   rI   strrL   boolrN   rO   rP   floatrQ   rR   rT   rY   r=   r>   r^   r
   rb   re   rf   rg   __classcell__r   r   r@   r   r:      s@   
 


r:   c                   @   s2  e Zd ZU eed< ejed< dedejfddZdee	 fdd	Z
dee	 fd
dZdeej fddZdee fddZdefddZdee fddZdefddZdefddZdefddZdefddZdefddZd)dee fd d!Zd)dee fd"d#Zd)dee fd$d%Zd&eddfd'd(ZdS )*_UnaryOutcome	_response_callresponsecallc                 C      || _ || _d S r   )rp   rq   )r   rr   rs   r   r   r   r      s   
z_UnaryOutcome.__init__r   c                 C   
   | j  S r   )rq   rD   rC   r   r   r   rD         
z_UnaryOutcome.initial_metadatac                 C   ru   r   )rq   rF   rC   r   r   r   rF      rv   z_UnaryOutcome.trailing_metadatac                 C   ru   r   )rq   rI   rC   r   r   r   rI      rv   z_UnaryOutcome.codec                 C   ru   r   )rq   rL   rC   r   r   r   rL      rv   z_UnaryOutcome.detailsc                 C   ru   r   )rq   rP   rC   r   r   r   rP      rv   z_UnaryOutcome.is_activec                 C   ru   r   )rq   rQ   rC   r   r   r   rQ      rv   z_UnaryOutcome.time_remainingc                 C   ru   r   )rq   rN   rC   r   r   r   rN      rv   z_UnaryOutcome.cancelc                 C   s   | j |S r   )rq   r^   r   callbackr   r   r   r^      rc   z_UnaryOutcome.add_callbackc                 C   rK   rM   r   rC   r   r   r   rO      rE   z_UnaryOutcome.cancelledc                 C   rK   rM   r   rC   r   r   r   rR      rE   z_UnaryOutcome.runningc                 C   rK   rS   r   rC   r   r   r   rT      rE   z_UnaryOutcome.doneNrU   c                 C   r[   r   )rp   rX   r   r   r   rY      rZ   z_UnaryOutcome.resultc                 C   rB   r   r   rX   r   r   r   r=      rE   z_UnaryOutcome.exceptionc                 C   rB   r   r   rX   r   r   r   r>      rE   z_UnaryOutcome.tracebackr_   c                 C   r`   r   r   ra   r   r   r   rb      rc   z_UnaryOutcome.add_done_callbackr   )r%   r&   r'   r   r*   r(   Callr   r   r   rD   rF   rG   rI   rk   rL   rl   rP   rm   rQ   rN   r^   rO   rR   rT   rY   r=   r>   r
   rb   r   r   r   r   ro      s&   
 
ro   c                   @   s|  e Zd ZU eed< eed< ejed< dededejfddZ										dd
e	de
e de
e de
ej de
e de
ej de	fddZ										dd
e	de
e de
e de
ej de
e de
ej dee	ejf fddZ										dd
e	de
e de
e de
ej de
e de
ej dee	ejf fddZ										dd
e	de
e de
e de
ej de
e de
ej de	fddZd	S )_UnaryUnaryMultiCallable_thunk_method_interceptorr   r0   r#   c                 C      || _ || _|| _d S r   r{   r|   r}   r   r   r0   r#   r   r   r   r        
z!_UnaryUnaryMultiCallable.__init__Nrequestr1   r2   r3   r4   r5   r   c           	      C      | j ||||||d\}}|S Nr1   r2   r3   r4   r5   
_with_call)	r   r   r1   r2   r3   r4   r5   rr   ignored_callr   r   r   __call__     	
z!_UnaryUnaryMultiCallable.__call__c           	         >   t j|||||  fdd}j| |}| |fS )Nc              
         t |  \}}}}}}z|j||||||d\}}	t||	W S  tjy6 }
 z|
W  Y d }
~
S d }
~
w tyP } zt|t	 d W  Y d }~S d }~ww Nr      
r9   r{   	with_callro   r(   RpcErrorrh   r:   sysexc_info)new_detailsr   
new_methodnew_timeoutnew_metadatanew_credentialsnew_wait_for_readynew_compressionrr   rs   	rpc_errorr=   client_call_detailsr   r   r   continuation1  2   

z9_UnaryUnaryMultiCallable._with_call.<locals>.continuation)r/   r|   r}   intercept_unary_unaryrY   )	r   r   r1   r2   r3   r4   r5   r   rs   r   r   r   r        		z#_UnaryUnaryMultiCallable._with_callc                 C      | j ||||||dS r   r   )r   r   r1   r2   r3   r4   r5   r   r   r   r   N     	z"_UnaryUnaryMultiCallable.with_callc           	   
      l   t j|||||  fdd}z	j| |W S  ty5 } zt|t d W  Y d }~S d }~ww )Nc                    2   t |  \}}}}}}|j||||||dS r   r9   r{   futurer   r   r   r   r   r   r   r   r   r   r   r   r      
z5_UnaryUnaryMultiCallable.future.<locals>.continuationr   )r/   r|   r}   r   rh   r:   r   r   	r   r   r1   r2   r3   r4   r5   r   r=   r   r   r   r   `  "   		z_UnaryUnaryMultiCallable.futureNNNNN)r%   r&   r'   r   r*   rk   r(   UnaryUnaryClientInterceptorr   r   r   rm   r   CallCredentialsrl   Compressionr   r   ry   r   r   r   r   r   r   r   rz         
 



2
rz   c                   @      e Zd ZU eed< eed< ejed< dededejfddZ										dd
e	de
e de
e de
ej de
e de
ej fddZd	S )_UnaryStreamMultiCallabler{   r|   r}   r   r0   r#   c                 C   r~   r   r   r   r   r   r   r     r   z"_UnaryStreamMultiCallable.__init__Nr   r1   r2   r3   r4   r5   c           	   
      r   )Nc                    0   t |  \}}}}}}|||||||dS r   r9   r{   r   r   r   r   r         z8_UnaryStreamMultiCallable.__call__.<locals>.continuationr   )r/   r|   r}   intercept_unary_streamrh   r:   r   r   r   r   r   r   r     r   z"_UnaryStreamMultiCallable.__call__r   )r%   r&   r'   r   r*   rk   r(   UnaryStreamClientInterceptorr   r   r   rm   r   r   rl   r   r   r   r   r   r   r     :   
 

r   c                   @   s|  e Zd ZU eed< eed< ejed< dededejfddZ										dd
e	de
e de
e de
ej de
e de
ej defddZ										dd
e	de
e de
e de
ej de
e de
ej deeejf fddZ										dd
e	de
e de
e de
ej de
e de
ej deeejf fddZ										dd
e	de
e de
e de
ej de
e de
ej defddZd	S )_StreamUnaryMultiCallabler{   r|   r}   r   r0   r#   c                 C   r~   r   r   r   r   r   r   r     r   z"_StreamUnaryMultiCallable.__init__Nrequest_iteratorr1   r2   r3   r4   r5   r   c           	      C   r   r   r   )	r   r   r1   r2   r3   r4   r5   rr   r   r   r   r   r     r   z"_StreamUnaryMultiCallable.__call__c           	         r   )Nc              
      r   r   r   )r   r   r   r   r   r   r   r   rr   rs   r   r=   r   r   r   r     r   z:_StreamUnaryMultiCallable._with_call.<locals>.continuation)r/   r|   r}   intercept_stream_unaryrY   )	r   r   r1   r2   r3   r4   r5   r   rs   r   r   r   r     r   z$_StreamUnaryMultiCallable._with_callc                 C   r   r   r   )r   r   r1   r2   r3   r4   r5   r   r   r   r     r   z#_StreamUnaryMultiCallable.with_callc           	   
      r   )Nc                    r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <  r   z6_StreamUnaryMultiCallable.future.<locals>.continuationr   )r/   r|   r}   r   rh   r:   r   r   	r   r   r1   r2   r3   r4   r5   r   r=   r   r   r   r   *  r   z _StreamUnaryMultiCallable.futurer   )r%   r&   r'   r   r*   rk   r(   StreamUnaryClientInterceptorr   r   r   rm   r   r   rl   r   r   r   r   ry   r   r   r   r   r   r   r   r     r   r   c                   @   r   )_StreamStreamMultiCallabler{   r|   r}   r   r0   r#   c                 C   r~   r   r   r   r   r   r   r   [  r   z#_StreamStreamMultiCallable.__init__Nr   r1   r2   r3   r4   r5   c           	   
      r   )Nc                    r   r   r   r   r   r   r   r   w  r   z9_StreamStreamMultiCallable.__call__.<locals>.continuationr   )r/   r|   r}   intercept_stream_streamrh   r:   r   r   r   r   r   r   r   e  r   z#_StreamStreamMultiCallable.__call__r   )r%   r&   r'   r   r*   rk   r(   StreamStreamClientInterceptorr   r   r   rm   r   r   rl   r   r   r   r   r   r   r   V  r   r   c                   @   st  e Zd ZU ejed< eejejej	ej
f ed< dejdeejejej	ej
f fddZ	d$ded	ee fd
dZdefddZ			d%dedee dee dee dejf
ddZ			d%dedee dee dee dejf
ddZ			d%dedee dee dee dejf
ddZ			d%dedee dee dee dejf
ddZdd Zdd Zd d! Zd"d# ZdS )&_Channel_channelr}   channelr#   c                 C   rt   r   )r   r}   )r   r   r#   r   r   r   r     s   

z_Channel.__init__Frx   try_to_connectc                 C   s   | j j||d d S )N)r   )r   	subscribe)r   rx   r   r   r   r   r     s   z_Channel.subscribec                 C   s   | j | d S r   )r   unsubscriberw   r   r   r   r     r    z_Channel.unsubscribeNr0   request_serializerresponse_deserializer_registered_methodr   c                    6    fdd}t jtjrt||jS ||S )Nc                       j |  S r   )r   unary_unarymr   r   r   r   r   r   r         z&_Channel.unary_unary.<locals>.<lambda>)
isinstancer}   r(   r   rz   r   r0   r   r   r   r   r   r   r   r        z_Channel.unary_unaryc                    r   )Nc                    r   r   )r   unary_streamr   r   r   r   r     r   z'_Channel.unary_stream.<locals>.<lambda>)r   r}   r(   r   r   r   r   r   r   r     r   z_Channel.unary_streamc                    r   )Nc                    r   r   )r   stream_unaryr   r   r   r   r     r   z'_Channel.stream_unary.<locals>.<lambda>)r   r}   r(   r   r   r   r   r   r   r     r   z_Channel.stream_unaryc                    r   )Nc                    r   r   )r   stream_streamr   r   r   r   r     r   z(_Channel.stream_stream.<locals>.<lambda>)r   r}   r(   r   r   r   r   r   r   r     r   z_Channel.stream_streamc                 C      | j   d S r   r   closerC   r   r   r   _close  r   z_Channel._closec                 C   rd   r   r   rC   r   r   r   	__enter__  rE   z_Channel.__enter__c                 C   s   |    dS rM   )r   )r   exc_typeexc_valexc_tbr   r   r   __exit__	  s   z_Channel.__exit__c                 C   r   r   r   rC   r   r   r   r     r   z_Channel.close)F)NNF) r%   r&   r'   r(   Channelr*   r   r   r   r   r   r   r   r   rl   r   r   rk   r   r	   UnaryUnaryMultiCallabler   UnaryStreamMultiCallabler   StreamUnaryMultiCallabler   StreamStreamMultiCallabler   r   r   r   r   r   r   r   r   r     s   
 






r   r   c                 G   sX   t t|D ]#}t|tjs$t|tjs$t|tjs$t|tjs$t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   	TypeErrorr   )r   r   r#   r   r   r   intercept_channel  s   



r   )3__doc__collectionsr   ri   typingr   r   r   r   r   r   r(   _typingr	   r
   r   r   r   objectr   r)   r.   
namedtupleClientCallDetailsr/   rk   rm   r   rl   r   r9   r   Futurery   r:   ro   r   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s|    



3F6 ; ; 