o
    h^                     @   s  d dl mZmZ 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mZmZ d dlmZmZ d dlmZ W n eyC   edw d d	lmZ erld d
lmZmZmZmZ d dlmZ eeeeeedf f f ZdZG dd deZ dd Z!dd Z"dd Z#dd Z$dd Z%dS )    )event_from_exceptionparse_version)Hub_should_send_default_pii)DidNotEnableIntegrationN)	print_astget_operation_astDocumentNodeVariableDefinitionNode)	TransportAsyncTransport)TransportQueryErrorzgql is not installed)TYPE_CHECKING)AnyDictTupleUnion)EventProcessor.)         c                   @   s   e Zd ZdZedd ZdS )GQLIntegrationgqlc                  C   s@   t tj} | d u s| tk rtdddd tD  t  d S )Nz?GQLIntegration is only supported for GQL versions %s and above..c                 s   s    | ]}t |V  qd S )N)str).0num r   ^/var/www/html/aiguide_backend/venv/lib/python3.10/site-packages/sentry_sdk/integrations/gql.py	<genexpr>"   s    z,GQLIntegration.setup_once.<locals>.<genexpr>)r   r   __version__MIN_GQL_VERSIONr   join_patch_execute)gql_versionr   r   r   
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   


r8   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)methodr2   )	transportr   r   r   _transport_method7   s
   r<   c                 C   s>   | d u ri S dt | i}z| j|d< W |S  ty   Y |S w )Nr:   url)r<   r=   r2   )r;   request_infor   r   r   _request_info_from_transportC   s   r?   c                     s    t jj  fdd} | t j_d S )Nc           	   
      s   t j}|td u r | |g|R i |S t j }|t| | W d    n1 s.w   Y  z | |g|R i |W S  tyi } zt||j	d urS|j	j
nd dddd\}}||| |d }~ww )Nr   F)typehandled)client_options	mechanism)r   currentget_integrationr   configure_scopeadd_event_processor_make_gql_event_processorr   r   clientoptionscapture_event)	selfr5   argskwargshubscopeeeventhintreal_executer   r   sentry_patched_executeX   s$   
z._patch_execute.<locals>.sentry_patched_execute)r   Clientexecute)rV   r   rT   r   r$   T   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_infor   request
api_targetgraphqlr7   contextsresponseerrors)r7   r@   )	r_   r2   KeyError
setdefaultupdater?   r;   r   r8   )rR   rS   r_   rZ   r]   r^   rI   r5   r   r   	processorr   s,   z,_make_gql_event_processor.<locals>.processorr   )rI   r5   rd   r   rc   r   rH   p   s   rH   )&sentry_sdk.utilsr   r   sentry_sdk.hubr   r   sentry_sdk.integrationsr   r   r   r\   r   r	   r
   r   gql.transportr   r   gql.transport.exceptionsr   ImportErrorsentry_sdk._typesr   typingr   r   r   r   r   r   EventDataTyper"   r   r8   r<   r?   r$   rH   r   r   r   r   <module>   s.    