
    \j                     6   d dl mZ d dlZd dlmZmZ d dlmZmZmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZmZmZmZ 	  ed	      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mZm Z  d dl!m"Z" d dl#m$Z$m%Z%  G d de      Z&ddZ'ddZ(ddZ)y# e$ r	  ed
      w xY w)    )import_moduleN)
get_clientcapture_event)_check_minimum_versionDidNotEnableIntegration)ignore_logger)request_body_within_bounds)should_send_default_pii)capture_internal_exceptionsensure_integration_enabledevent_from_exceptionpackage_versionzariadne.graphqlzariadne is not installed)TYPE_CHECKING)AnyDictListOptional)GraphQLErrorGraphQLResultGraphQLSchemaQueryParser)DocumentNode)EventEventProcessorc                   "    e Zd ZdZedd       Zy)AriadneIntegrationariadneNc                  d    t        d      } t        t        |        t        d       t	                y )Nr   )r   r   r   r	   _patch_graphql)versions    I/root/env/lib/python3.12/site-packages/sentry_sdk/integrations/ariadne.py
setup_oncezAriadneIntegration.setup_once#   s%    !),17;i     returnN)__name__
__module____qualname__
identifierstaticmethodr#    r$   r"   r   r       s    J r$   r   c                  r   t         j                  t         j                  t         j                  t	        t
              	 	 	 	 	 	 	 	 dfd       } t	        t
              	 	 	 	 	 	 	 	 dfd       }t	        t
              	 	 	 	 	 	 	 	 dfd       }| t         _        |t         _        |t         _        y )Nc                 x    t        |      }t        j                         j                  |        | ||      }|S )N)_make_request_event_processor
sentry_sdkget_isolation_scopeadd_event_processor)context_valuequery_parserdataevent_processorresultold_parse_querys        r"   _sentry_patched_parse_queryz3_patch_graphql.<locals>._sentry_patched_parse_query2   s9     8=&&(<<_M dCr$   c           	      |    	| g|i |}t        |d         }t        j                         j                  |       t	               }|j                         rVt               5  | D ];  }t        ||j                  t        j                  dd      \  }}t        ||       = 	 d d d        |S |S # 1 sw Y   |S xY wN   F)typehandled)client_options	mechanism)hint)_make_response_event_processorr0   r1   r2   r   	is_activer   r   optionsr   r*   r   )
errorsargskwargsr7   r6   clienterroreventrA   old_handle_errorss
            r"   %_sentry_patched_handle_graphql_errorsz=_patch_graphql.<locals>._sentry_patched_handle_graphql_errors>   s     #6;D;F;8C&&(<<_M,. 
4# 	4E"6'-~~$6$A$A',##KE4 "%d3	4
4 v
4 s   #AB11B;c           	          	| g|i |}t        |d         }t        j                         j                  |       t	               }|j                         rdt               5  | j                  xs g D ];  }t        ||j                  t        j                  dd      \  }}t        ||       = 	 d d d        |S |S # 1 sw Y   |S xY wr;   )rB   r0   r1   r2   r   rC   r   rE   r   rD   r   r*   r   )
r7   rF   rG   query_resultr6   rH   rI   rJ   rA   old_handle_query_results
            r"   #_sentry_patched_handle_query_resultz;_patch_graphql.<locals>._sentry_patched_handle_query_resultW   s     /vGGG8aI&&(<<_M,. 
4#]]0b 	4E"6'-~~$6$A$A',##KE4 "%d3	4
4 |
4 s   #AB??C	)r3   zOptional[Any]r4   zOptional[QueryParser]r5   r   r&   r   )rE   zList[GraphQLError]rF   r   rG   r   r&   r   )r7   r   rF   r   rG   r   r&   r   )ariadne_graphqlparse_queryhandle_graphql_errorshandle_query_resultr   r   )r9   rL   rP   rK   rO   r8   s      @@@r"   r    r    -   s    %11O'==-AA 2OD	&	-	 	 
		 E	   24EF$-2>C	 G0   24KL#/4	 M0 #>O,QO)*MO'r$   c                      d fd}|S )z*Add request data and api_target to events.c                    t        t              s| S t               5  	 t        j	                  d      xs i j	                  dd            }t               r1t        t               |      r| j                  di       }d|d<   |d<   n'| j	                  di       j	                  d      r| d   d= d d d        | S # t
        t        f$ r | cY cd d d        S w xY w# 1 sw Y   | S xY w)NheaderszContent-Lengthr   requestgraphql
api_targetr5   )
isinstancedictr   intget	TypeError
ValueErrorr   r
   r   
setdefault)rJ   rA   content_lengthrequest_infor5   s       r"   innerz,_make_request_event_processor.<locals>.innerx   s    $%L(* 	-!$XXi(.B334DaH" '(-Gn.  %//	2>-6\*'+V$9b)--f5)$V,!	-$  z* 	- 	-
	-$ s/   C.B:A"C:CCCCC$rJ   r   rA   zdict[str, Any]r&   r   r,   )r5   rd   s   ` r"   r/   r/   u   s    0 Lr$   c                      d fd}|S )z2Add response data to the event's response context.c                     t               5  t               r*j                  d      r| j                  di       }di|d<   d d d        | S # 1 sw Y   | S xY w)NrE   contextsr5   response)r   r   r^   ra   )rJ   rA   rh   ri   s      r"   rd   z-_make_response_event_processor.<locals>.inner   s[    (* 	&(X\\(-C ++J;H($	 	 s   5AAre   r,   )ri   rd   s   ` r"   rB   rB      s     Lr$   r%   )r5   r   r&   r   )ri   zDict[str, Any]r&   r   )*	importlibr   r0   r   r   sentry_sdk.integrationsr   r   r   sentry_sdk.integrations.loggingr	   $sentry_sdk.integrations._wsgi_commonr
   sentry_sdk.scoper   sentry_sdk.utilsr   r   r   r   rQ   ImportErrortypingr   r   r   r   r   ariadne.typesr   r   r   r   graphql.language.astr   sentry_sdk._typesr   r   r   r    r/   rB   r,   r$   r"   <module>ru      s    #  0 U U 9 K 4 3 $$56O !00UU17
 
ENP<  3
1
223s   B
 
B