o
    0 i                     @   sL  d dl Z d dlmZmZmZ d dlmZmZmZ d dl	m
Z
 z4d dlZd dlmZmZmZmZ d dlmZmZ d dlmZ zd dlmZ W n eyP   dZY nw W n ey]   ed	w d d
lmZ erd dlmZmZmZmZ d dlmZm Z  ee!ee!eedf f f Z"G dd deZ#dd Z$dd Z%dd Z&dd Z'dd Z(dS )    N)event_from_exceptionensure_integration_enabledparse_version)_check_minimum_versionDidNotEnableIntegration)should_send_default_pii)	print_astget_operation_astDocumentNodeVariableDefinitionNode)	TransportAsyncTransport)TransportQueryError)GraphQLRequestzgql is not installed)TYPE_CHECKING)AnyDictTupleUnion)EventEventProcessor.c                   @   s   e Zd ZdZedd ZdS )GQLIntegrationgqlc                  C   s   t tj} tt|  t  d S )N)r   r   __version__r   r   _patch_execute)Zgql_version r   g/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/sentry_sdk/integrations/gql.py
setup_once+   s   


zGQLIntegration.setup_onceN)__name__
__module____qualname__
identifierstaticmethodr   r   r   r   r   r   (   s    r   c              	   C   s`   z!t | }dt| i}|d ur|j|d< |jd ur|jj|d< |W S  ttfy/   t  Y S w )Nquery	variablesZoperationName)r
   r	   Zvariable_definitionsnamevalueAttributeError	TypeErrordict)documentZoperation_astdatar   r   r   _data_from_document4   s   


r-   c                 C   s   z| j W S  ty   Y dS w )zg
    The RequestsHTTPTransport allows defining the HTTP method; all
    other transports use POST.
    POST)methodr(   )	transportr   r   r   _transport_methodD   s
   r1   c                 C   s>   | d u ri S dt | i}z| j|d< W |S  ty   Y |S w )Nr/   url)r1   r2   r(   )r0   Zrequest_infor   r   r   _request_info_from_transportP   s   r3   c                     s*   t jj tt  fdd} | t j_d S )Nc              
      sz   t  }|t| | z | |g|R i |W S  ty< } zt|t  jdddd\}}t || |d }~ww )Nr   F)typeZhandled)Zclient_optionsZ	mechanism)	
sentry_sdkZget_isolation_scopeZadd_event_processor_make_gql_event_processorr   r   Z
get_clientoptionsZcapture_event)selfdocument_or_requestargskwargsscopeeeventhintZreal_executer   r   sentry_patched_executee   s   
z._patch_execute.<locals>.sentry_patched_execute)r   ZClientexecuter   r   )rA   r   r@   r   r   a   s   r   c                    s    fdd}|S )Nc              	      s   z	|d d j }W n ttfy   d }Y nw | di }|ddit j t rWtd ur9t	tr9j
}n}t||d< | di }|di }|d	|i|d
 | S )Nexc_info   requestZ
api_targetgraphqlr,   contextsresponseerrors)r,   r4   )rI   r(   KeyError
setdefaultupdater3   r0   r   r   
isinstancer+   r-   )r>   r?   rI   rE   r+   rG   rH   clientr9   r   r   	processor|   s6   
z,_make_gql_event_processor.<locals>.processorr   )rO   r9   rP   r   rN   r   r6   z   s   &r6   ))r5   Zsentry_sdk.utilsr   r   r   Zsentry_sdk.integrationsr   r   r   Zsentry_sdk.scoper   r   rF   r	   r
   r   r   Zgql.transportr   r   Zgql.transport.exceptionsr   r   ImportErrortypingr   r   r   r   r   Zsentry_sdk._typesr   r   strZEventDataTyper   r-   r1   r3   r   r6   r   r   r   r   <module>   s:    