o
    i                     @   sr  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dZ$ddde!fddZ%				d(ddZ&d)ddZ'	 	!	"	#		$d*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dZdS )GQLIntegrationgqlreturnNc                  C   s   t tj} tt|  t  d S )N)r   r   __version__r   r   _patch_execute)gql_version r   X/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/sentry_sdk/integrations/gql.py
setup_once+   s   


zGQLIntegration.setup_oncer   N)__name__
__module____qualname__
identifierstaticmethodr    r   r   r   r   r   (   s    r   documentr   r   EventDataTypec              	   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)r'   operation_astdatar   r   r   _data_from_document3   s   


r4   	transportz Union[Transport, AsyncTransport]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/   )r5   r   r   r   _transport_methodB   s
   r8   &Union[Transport, AsyncTransport, None]Dict[str, str]c                 C   s>   | d u ri S dt | i}z| j|d< W |S  ty   Y |S w )Nr7   url)r8   r;   r/   )r5   request_infor   r   r   _request_info_from_transportM   s   r=   c                     s@   t jj tt 										d fd	d
} | t j_d S )Nself
gql.Clientr'   r   argsr   kwargsr   c              
      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)r>   r'   r@   rA   scopeeeventhintreal_executer   r   sentry_patched_executee   s   
z._patch_execute.<locals>.sentry_patched_execute)
r>   r?   r'   r   r@   r   rA   r   r   r   )r   Clientexecuter   r   )rS   r   rQ   r   r   _   s   r   clientr?   document_or_request'Union[DocumentNode, gql.GraphQLRequest]r   c                    s   d fdd}|S )	NrO   r   rP   dict[str, Any]r   c              	      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graphqlr3   contextsresponseerrors)r3   rB   )ra   r/   KeyError
setdefaultupdater=   r5   r   r   
isinstancer'   r4   )rO   rP   ra   r\   r'   r_   r`   rV   rW   r   r   	processor   s6   
z,_make_gql_event_processor.<locals>.processor)rO   r   rP   rY   r   r   r   )rV   rW   rg   r   rf   r   rI      s   %rI   )r'   r   r   r(   )r5   r9   r   r:   r!   )rV   r?   rW   rX   r   r   ))rF   sentry_sdk.utilsr   r   r   sentry_sdk.integrationsr   r   r   sentry_sdk.scoper   r   r^   r	   r
   r   r   gql.transportr   r   gql.transport.exceptionsr   r   ImportErrortypingr   r   r   r   r   sentry_sdk._typesr   r   strr(   r   r4   r8   r=   r   rI   r   r   r   r   <module>   sN    


!