
    \jL                         d dl Z d dlmZ d dlmZ d dlmZ d dlmZ erd dlm	Z	m
Z
mZmZmZ 	 d dlZd dlmZmZ d dlmZ d d	lmZ d d
lmZ  G d dej0                  ej2                        Zy# e$ r	  ed      w xY w)    N)OP)DidNotEnable)SPAN_ORIGIN)TYPE_CHECKING)AnyCallableIteratorIterableUnion)ClientCallDetailsCall)_UnaryOutcome)UnaryStreamCall)Messagezgrpcio is not installedc                   ^    e Zd Z	 	 	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 	 	 ddZe	 	 	 	 dd       Zy)ClientInterceptorc                 t   |j                   }t        j                  t        j                  d|z  t
              5 }|j                  dd       |j                  d|       | j                  |      } |||      }|j                  d|j                         j                         |cd d d        S # 1 sw Y   y xY w)Nzunary unary call to %sopnameorigintypezunary unarymethodcode)
r   
sentry_sdk
start_spanr   GRPC_CLIENTr   set_data/_update_client_call_details_metadata_from_scoper   r   selfcontinuationclient_call_detailsrequestr   spanresponses          M/root/env/lib/python3.12/site-packages/sentry_sdk/integrations/grpc/client.pyintercept_unary_unaryz'ClientInterceptor.intercept_unary_unary   s     %++""~~)F2
 	 MM&-0MM(F+"&"V"V## $$7AHMM&(--/"6"67	 	 	s   A*B..B7c                     |j                   }t        j                  t        j                  d|z  t
              5 }|j                  dd       |j                  d|       | j                  |      } |||      }|cd d d        S # 1 sw Y   y xY w)Nzunary stream call to %sr   r   zunary streamr   )r   r   r   r   r   r   r   r   r    s          r'   intercept_unary_streamz(ClientInterceptor.intercept_unary_stream2   s     %++""~~*V3
 	 MM&.1MM(F+"&"V"V## +77JG*TH !	 	 	s   A BBc                 t   | j                   rt        | j                         ng }t        j                         j	                         D ]  \  }}|j                  ||f        t        j                  j                  | j                  | j                  || j                  | j                  | j                        } | S )N)r   timeoutmetadatacredentialswait_for_readycompression)r-   listr   get_current_scopeiter_trace_propagation_headersappendgrpc_interceptor_ClientCallDetailsr   r,   r.   r/   r0   )r#   r-   keyvalues       r'   r   zAClientInterceptor._update_client_call_details_metadata_from_scopeL   s    
 3F2N2ND$--.TV 	 ))+JJL	* 
OOS%L)		* #//BB&--'//+77.==+77 C 
 #"    N)
r!   r   r"   z5Callable[[ClientCallDetails, Message], _UnaryOutcome]r#   r   r$   r   returnr   )
r!   r   r"   zMCallable[[ClientCallDetails, Message], Union[Iterable[Any], UnaryStreamCall]]r#   r   r$   r   r;   zUnion[Iterator[Message], Call])r#   r   r;   r   )__name__
__module____qualname__r(   r*   staticmethodr    r:   r'   r   r      s    !M 1 	
 
2!e 1 	
 
*4 #0#	# #r:   r   )r   sentry_sdk.constsr   sentry_sdk.integrationsr   #sentry_sdk.integrations.grpc.constsr   typingr   r   r   r	   r
   r   r5   r   r   grpc._interceptorr   grpc.aio._interceptorr   google.protobuf.messager   ImportErrorUnaryUnaryClientInterceptorUnaryStreamClientInterceptorr   r@   r:   r'   <module>rK      sl       0 ;  ??2,/5/
M#$$%%M#	  2
0
112s   A- -A;