o
    h                     @   s   d dl Z d dlmZ d dlmZ d dlmZ d dlmZm	Z	 d dl
mZ d dlmZ er<d dlmZmZ d d	lmZmZ zd dlZd d
lmZmZ d dlmZmZ W n ey]   edw G dd dejjZdS )    N)OP)DidNotEnable)SPAN_ORIGIN)TransactionTransactionSource)event_from_exception)TYPE_CHECKING)	AwaitableCallable)AnyOptional)HandlerCallDetailsRpcMethodHandler)
AbortErrorServicerContextzgrpcio is not installedc                       s.   e Zd Zd fdd	Zdd Zdd Z  ZS )	ServerInterceptorNc                    s   |p| j | _t   d S N)
_find_name_find_method_namesuper__init__)self	find_name	__class__ i/var/www/html/pro-man-master/venv/lib/python3.10/site-packages/sentry_sdk/integrations/grpc/aio/server.pyr      s   zServerInterceptor.__init__c                    s   |_ ||I d H   d u rd S  js" js"tj} fdd}n/ js2 jr2tj} fdd}n jrB jsBtj} fdd}n jrQ jrQtj} fdd}|| j j	dS )Nc                    s    |}|s | |I d H S tjt| tj|tjt	d}t
j|d9 z | |I d H W W  d    S  ty@     ty^ } zt|dddd\}}t
j||d  d }~ww 1 sbw   Y  d S )N)opnamesourceorigin)transactiongrpcF)typehandled)	mechanism)hint)r   r   continue_from_headersdictinvocation_metadatar   GRPC_SERVERr   CUSTOMr   
sentry_sdkstart_transactionunary_unaryr   	Exceptionr   capture_event)requestcontextr   r!   exceventr&   handlerr   r   r   wrapped(   s6   


z4ServerInterceptor.intercept_service.<locals>.wrappedc                   (     | |2 z	3 d H W }|V  q6 d S r   )unary_streamr1   r2   rr6   r   r   r7   G      c                    s     | |}|I d H S r   )stream_unary)r1   r2   responser<   r   r   r7   O   s   
c                   r8   r   )stream_streamr:   r<   r   r   r7   W   r=   )request_deserializerresponse_serializer)
_handler_call_detailsrequest_streamingresponse_streamingr"   unary_unary_rpc_method_handlerunary_stream_rpc_method_handlerstream_unary_rpc_method_handler stream_stream_rpc_method_handlerrA   rB   )r   continuationhandler_call_detailshandler_factoryr7   r   r5   r   intercept_service   s,   z#ServerInterceptor.intercept_servicec                 C   s   | j jS r   )rC   method)r   r2   r   r   r   r   b   s   zServerInterceptor._find_namer   )__name__
__module____qualname__r   rM   r   __classcell__r   r   r   r   r      s    Dr   )r,   sentry_sdk.constsr   sentry_sdk.integrationsr   #sentry_sdk.integrations.grpc.constsr   sentry_sdk.tracingr   r   sentry_sdk.utilsr   typingr   collections.abcr	   r
   r   r   r"   r   r   grpc.aior   r   ImportErroraior   r   r   r   r   <module>   s$    