o
    ZhS                     @   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rnd 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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)Event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   R/var/www/html/lang_env/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)Z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	variablesZoperationName)r	   r   Zvariable_definitionsnamevalueAttributeError	TypeErrordict)documentZoperation_astdatar   r   r    _data_from_document'   s   


r5   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)methodr0   )	transportr   r   r    _transport_method7   s
   r9   c                 C   s>   | d u ri S dt | i}z| j|d< W |S  ty   Y |S w )Nr7   url)r9   r:   r0   )r8   Z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)typeZhandled)Zclient_optionsZ	mechanism)r   currentZget_integrationr   Zconfigure_scopeZadd_event_processor_make_gql_event_processorr   r   clientoptionsZcapture_event)	selfr3   argskwargsZhubscopeeeventhintZreal_executer   r    sentry_patched_executeX   s$   
z._patch_execute.<locals>.sentry_patched_execute)r   ZClientexecute)rI   r   rH   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   requestZ
api_targetgraphqlr4   contextsresponseerrors)r4   r<   )	rP   r0   KeyError
setdefaultupdater;   r8   r   r5   )rF   rG   rP   rL   rN   rO   r?   r3   r   r    	processorr   s,   z,_make_gql_event_processor.<locals>.processorr   )r?   r3   rU   r   rT   r    r>   p   s   r>   )'Zsentry_sdk.utilsr   r   Zsentry_sdk.hubr   r   Zsentry_sdk.integrationsr   r   r   rM   r   r	   r
   r   Zgql.transportr   r   Zgql.transport.exceptionsr   ImportErrorZsentry_sdk._typesr   typingr   r   r   r   r   r   r   ZEventDataTyper#   r   r5   r9   r;   r%   r>   r   r   r   r    <module>   s.    