
    DjB                     ,   d dl mZ d dlZd dl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 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 Z&d Z'd Z(y# e$ r	  ed
      w xY w)    )import_moduleN)
get_clientcapture_event)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        Zy)AriadneIntegrationariadnec                  ~    t        d      } | t        d      | dk  rt        d      t        d       t                y )Nr   zUnparsable ariadne version.)r      zariadne 0.20 or newer required.)r   r   r   _patch_graphql)versions    cC:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\sentry_sdk/integrations/ariadne.py
setup_oncezAriadneIntegration.setup_once#   sA     "),?<==W@AAi     N)__name__
__module____qualname__
identifierstaticmethodr#    r$   r"   r   r       s    J r$   r   c                  <   t         j                  t         j                  t         j                  t	        t
              fd       } t	        t
              fd       }t	        t
              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_query9   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_processorr.   r/   r0   r   	is_activer   r   optionsr   r(   r   )
errorsargskwargsr5   r4   clienterroreventr?   old_handle_errorss
            r"   %_sentry_patched_handle_graphql_errorsz=_patch_graphql.<locals>._sentry_patched_handle_graphql_errorsB   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r9   )r@   r.   r/   r0   r   rA   r   rC   r   rB   r   r(   r   )
r5   rD   rE   query_resultr4   rF   rG   rH   r?   old_handle_query_results
            r"   #_sentry_patched_handle_query_resultz;_patch_graphql.<locals>._sentry_patched_handle_query_resultZ   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	)ariadne_graphqlparse_queryhandle_graphql_errorshandle_query_resultr   r   )r7   rJ   rN   rI   rM   r6   s      @@@r"   r    r    3   s    %11O'==-AA 2OD E   24EF G.   24KL M. #>O,QO)*MO'r$   c                       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_targetr3   )
isinstancedictr   intget	TypeError
ValueErrorr
   r	   r   
setdefault)rH   r?   content_lengthrequest_infor3   s       r"   innerz,_make_request_event_processor.<locals>.inner{   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$r*   )r3   rb   s   ` r"   r-   r-   w   s    2 Lr$   c                       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)NrC   contextsr3   response)r   r
   r\   r_   )rH   r?   re   rf   s      r"   rb   z-_make_response_event_processor.<locals>.inner   s[    (* 	&(X\\(-C ++J;H($	 	 s   5AAr*   )rf   rb   s   ` r"   r@   r@      s    	 Lr$   ))	importlibr   r.   r   r   sentry_sdk.integrationsr   r   sentry_sdk.integrations.loggingr   $sentry_sdk.integrations._wsgi_commonr	   sentry_sdk.scoper
   sentry_sdk.utilsr   r   r   r   rO   ImportErrortypingr   r   r   r   r   ariadne.typesr   r   r   r   graphql.language.astr   sentry_sdk._typesr   r   r   r    r-   r@   r*   r$   r"   <module>rr      s    #  0 = 9 K 4 3 $$56O !00UU17 &ANH@G  3
1
223s   B B