o
    BDiS                     @   s$  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
 z d 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 W n eyI   edw d d	lmZ ertd 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)TransportQueryErrorz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)gql_version r   T/var/www/Datamplify/venv/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	variablesoperationName)r
   r	   variable_definitionsnamevalueAttributeError	TypeErrordict)documentoperation_astdatar   r   r   _data_from_document-   s   


r0   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_method=   s
   r4   c                 C   s>   | d u ri S dt | i}z| j|d< W |S  ty   Y |S w )Nr2   url)r4   r5   r*   )r3   request_infor   r   r   _request_info_from_transportI   s   r7   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)typehandled)client_options	mechanism)	
sentry_sdkget_isolation_scopeadd_event_processor_make_gql_event_processorr   r   
get_clientoptionscapture_event)selfr-   argskwargsscopeeeventhintreal_executer   r   sentry_patched_execute^   s   
z._patch_execute.<locals>.sentry_patched_execute)r   Clientexecuter   r   )rL   r   rJ   r   r   Z   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 rHt|d< | di }|di }|d	|i|d
 | S )Nexc_info   request
api_targetgraphqlr/   contextsresponseerrors)r/   r8   )	rV   r*   KeyError
setdefaultupdater7   r3   r   r0   )rH   rI   rV   rQ   rT   rU   clientr-   r   r   	processoru   s,   z,_make_gql_event_processor.<locals>.processorr   )r[   r-   r\   r   rZ   r   r?   s   s   r?   )(r<   sentry_sdk.utilsr   r   r   sentry_sdk.integrationsr   r   r   sentry_sdk.scoper   r   rS   r	   r
   r   r   gql.transportr   r   gql.transport.exceptionsr   ImportErrortypingr   r   r   r   r   sentry_sdk._typesr   r   strEventDataTyper   r0   r4   r7   r   r?   r   r   r   r   <module>   s.    