o
    h                     @   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)gql_version r   ]/var/www/html/pro-man-master/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_document4   s   


r1   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
   r5   c                 C   s>   | d u ri S dt | i}z| j|d< W |S  ty   Y |S w )Nr3   url)r5   r6   r+   )r4   request_infor   r   r   _request_info_from_transportP   s   r8   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)selfdocument_or_requestargskwargsscopeeeventhintreal_executer   r   sentry_patched_executee   s   
z._patch_execute.<locals>.sentry_patched_execute)r   Clientexecuter   r   )rN   r   rL   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   request
api_targetgraphqlr0   contextsresponseerrors)r0   r9   )rX   r+   KeyError
setdefaultupdater8   r4   r   r   
isinstancer.   r1   )rJ   rK   rX   rS   r.   rV   rW   clientrE   r   r   	processor|   s6   
z,_make_gql_event_processor.<locals>.processorr   )r^   rE   r_   r   r]   r   r@   z   s   &r@   ))r=   sentry_sdk.utilsr   r   r   sentry_sdk.integrationsr   r   r   sentry_sdk.scoper   r   rU   r	   r
   r   r   gql.transportr   r   gql.transport.exceptionsr   r   ImportErrortypingr   r   r   r   r   sentry_sdk._typesr   r   strEventDataTyper   r1   r5   r8   r   r@   r   r   r   r   <module>   s:    