
    \j                     |   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
 	 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 	 d dlmZ d d
lmZ er%d 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e      Z#ddZ$ddde!fdZ%	 	 	 	 ddZ&ddZ'	 	 	 	 	 	 ddZ(y# e$ r dZY dw xY w# e$ r	  ed	      w xY w)    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                   "    e Zd ZdZedd       Zy)GQLIntegrationgqlNc                  j    t        t        j                        } t        t        |        t                y )N)r   r   __version__r   r   _patch_execute)gql_versions    E/root/env/lib/python3.12/site-packages/sentry_sdk/integrations/gql.py
setup_oncezGQLIntegration.setup_once+   s     #COO4~{;    returnN)__name__
__module____qualname__
identifierstaticmethodr!    r"   r    r   r   (   s    J r"   r   r$   c                     	 t        |       }dt        |       i}|4|j                  |d<   |j                  |j                  j                  |d<   |S # t
        t        f$ r t               cY S w xY w)Nquery	variablesoperationName)r   r
   variable_definitionsnamevalueAttributeError	TypeErrordict)documentoperation_astdatas      r    _data_from_documentr8   3   sx    )(3!()H*= >$ - B BD!!-(5(:(:(@(@_%I& vs   AA A.-A.	transportz Union[Transport, AsyncTransport]c                 :    	 | j                   S # t        $ r Y yw xY w)zg
    The RequestsHTTPTransport allows defining the HTTP method; all
    other transports use POST.
    POST)methodr2   )r9   s    r    _transport_methodr=   B   s%    
 s    	c                 h    | i S dt        |       i}	 | j                  |d<   |S # t        $ r Y |S w xY w)Nr<   url)r=   r?   r2   )r9   request_infos     r    _request_info_from_transportrA   M   sX     	 	#I.L'mmU   s   $ 	11c                      t         j                  j                  t        t              	 	 	 	 	 	 	 	 	 	 dfd       } | t         j                  _        y )Nc                 0   t        j                         }|j                  t        | |             	  | |g|i |S # t        $ rM}t        |t        j                         j                  ddd      \  }}t        j                  ||       |d }~ww xY 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)	selfr5   argskwargsscopeeeventhintreal_executes	           r    sentry_patched_executez._patch_execute.<locals>.sentry_patched_executee   s     ..0!!";D("KL	h@@@@" 	.)446>>#(U;KE4 $$UD1G	s   ? 	BABB)
rO   
gql.Clientr5   r   rP   r   rQ   r   r$   r   )r   Clientexecuter   r   )rW   rV   s    @r    r   r   _   si    ::%%L
  =   	
 
 >. 0CJJr"   c                      d fd}|S )Nc                    	 |d   d   j                   }| j                  di       }|j	                  ddit        j                               t               rmt        t        t              rj                  }n}t        |      |d<   | j                  di       }|j                  di       }|j	                  d	|i|d
       | S # t        t        f$ r d }Y w xY w)Nexc_info   request
api_targetgraphqlr7   contextsresponseerrors)r7   rD   )rd   r2   KeyError
setdefaultupdaterA   r9   r	   r   
isinstancer5   r8   )	rT   rU   rd   r_   r5   rb   rc   clientdocument_or_requests	          r    	processorz,_make_gql_event_processor.<locals>.processor   s    	*%a(//F ""9b1i.v/?/?@	
 #$)j#^/ /77.1(;GFO''
B7H**:r:HOO%v.$ A ) 	F	s   C CC)rT   r   rU   zdict[str, Any]r$   r   r*   )ri   rj   rk   s   `` r    rK   rK      s    #J r"   )r5   r   r$   EventDataType)r9   z&Union[Transport, AsyncTransport, None]r$   zDict[str, str]r#   )ri   rX   rj   z'Union[DocumentNode, gql.GraphQLRequest]r$   r   ))rH   sentry_sdk.utilsr   r   r   sentry_sdk.integrationsr   r   r   sentry_sdk.scoper	   r   ra   r
   r   r   r   gql.transportr   r   gql.transport.exceptionsr   r   ImportErrortypingr   r   r   r   r   sentry_sdk._typesr   r   strrl   r   r8   r=   rA   r   rK   r*   r"   r    <module>rv      s     V U 4/  8<& !..7eC/Es/J)K$KLLMM[ !C  7$0B((/X((O    /
-
../s(   B- B   B*'B- )B**B- -B;