
    tni(7                     f   d dl Z d dlZd dlZd dlmZ d dlZd dl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mZmZ 	 d d	l mZ n# e$ r  ed
          w xY w	 d dlmZ d dlmZ d dlm Z! d dl"m#Z#m$Z$ n# e$ r  ed          w xY w	 d dl%m&Z'm(Z) n# e$ r dZ'dZ)Y nw xY wd dl*m+Z+ e+r*d dl*m,Z,m-Z-m.Z.m/Z/m0Z0 d dl1m2Z2m3Z3 d dl"m4Z4 d dl5m6Z6 d dl7m8Z8m9Z9  ed            G d de
          Z:d,dZ; G d de          Z< G d de<          Z=d,d Z>	 	 	 	 d-d$Z?	 	 	 	 d.d'Z@d/d+ZAdS )0    Nisawaitable)OP)_check_minimum_versionIntegrationDidNotEnable)ignore_logger)should_send_default_pii)TransactionSource)capture_internal_exceptionsensure_integration_enabledevent_from_exceptionloggerpackage_version_get_installed_modules)cached_propertyz;strawberry-graphql integration requires Python 3.8 or newer)Schema)SchemaExtension)should_skip_tracing)async_base_viewsync_base_viewz#strawberry-graphql is not installed)SentryTracingExtensionSentryTracingExtensionSync)TYPE_CHECKING)AnyCallable	GeneratorListOptional)GraphQLErrorGraphQLResolveInfo)GraphQLHTTPResponse)ExecutionContext)EventEventProcessorzstrawberry.executionc                   >    e Zd ZdZde Zd	d
dZedd            ZdS )StrawberryIntegration
strawberryzauto.graphql.Nasync_executionOptional[bool]returnc                 `    |dvr"t          d                    |                    || _        d S )N)NFTz6Invalid value for async_execution: "{}" (must be bool))
ValueErrorformatr)   )selfr)   s     _/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/sentry_sdk/integrations/strawberry.py__init__zStrawberryIntegration.__init__B   sF    "555HOO#   
  /    c                      t          d          } t          t          | d           t                       t	                       d S )Nzstrawberry-graphql)r   r   r'   _patch_schema_init_patch_views)versions    r0   
setup_oncez StrawberryIntegration.setup_onceK   s=    !"6774g?STTTr2   N)r)   r*   r+   Nr+   N)__name__
__module____qualname__
identifieroriginr1   staticmethodr7    r2   r0   r'   r'   >   s_        J)Z))F/ / / / /    \  r2   r'   r+   c                      t           j        t          j                  	 	 	 	 	 	 	 	 dfd            } | t           _        d S )	Nr/   r   argsr   kwargsr+   c                    t          j                                        t                    }| | g|R i |S |                    d          pg }d }|j        |j        }n)t          |          }|t          j        dd           d}d |D             }|	                    |rt          nt                     ||d<    | g|R i |S )N
extensionszwAssuming strawberry is running sync. If not, initialize the integration as StrawberryIntegration(async_execution=True).   )
stacklevelFc                 2    g | ]}|t           t          fv|S r@   StrawberrySentryAsyncExtensionStrawberrySentrySyncExtension).0	extensions     r0   
<listcomp>zK_patch_schema_init.<locals>._sentry_patched_schema_init.<locals>.<listcomp>p   sC     
 
 
24QRS S S S Sr2   )
sentry_sdk
get_clientget_integrationr'   getr)   _guess_if_using_asyncwarningswarnappendSentryAsyncExtensionSentrySyncExtension)r/   rB   rC   integrationrE   should_use_async_extensionold_schema_inits         r0   _sentry_patched_schema_initz7_patch_schema_init.<locals>._sentry_patched_schema_initW   s,    !+--==>STT"?49$999&999ZZ--3
7;"&2)4)D&& *?z)J)J&)1 N     .3*
 
'
 
 

 	$>W  DW	
 	
 	
  *|t5d555f555r2   )r/   r   rB   r   rC   r   r+   N)r   r1   	functoolswraps)r\   r[   s    @r0   r4   r4   T   sk    oO__%%&6&6$&605&6	&6 &6 &6 &6 &6 &%&6P 2FOOOr2   c                       e Zd Zdd	 	 	 	 	 ddZedefd	            Zd
edefdZddZddZ	ddZ
dddddefdZdddddddeddddfdZdddddddeddddfdZdS )rW   Nexecution_contextr/   r   ra   Optional[ExecutionContext]r+   c                    |r	|| _         d S d S r8   r`   )r/   ra   s     r0   r1   zSentryAsyncExtension.__init__   s$    
  	7%6D"""	7 	7r2   c                     |                      | j        j                  }| j        j        r d                    | j        j        |          S |S )Nz{}:{})
hash_queryra   queryoperation_namer.   )r/   
query_hashs     r0   _resource_namez#SentryAsyncExtension._resource_name   sH    __T%;%ABB
!0 	U>>$"8"GTTTr2   rf   c                 t    t          j        |                    d                                                    S )Nzutf-8)hashlibmd5encode	hexdigest)r/   rf   s     r0   re   zSentryAsyncExtension.hash_query   s*    {5<<0011;;===r2   Generator[None, None, None]c              #     K   | j         j        | _        d}t          j        }| j         j        d| j         _        | j         j                                                            d          rd}t          j        }n?| j         j                                                            d          rd}t          j	        }|}| j        r|d
                    | j                  z  }t          j        d| j        |d           t          j                    }t          | j                   }|                    |           t          j                    }|r(|                    ||t$          j        	          | _        n&t          j        ||t$          j        	          | _        | j                            d
|           | j                            d| j                   | j                            d| j         j                   | j                            d| j                   d V  | j        j        }|r5| j         j        r)| j         j        |_        t4          j        |_        ||_        | j                                         d S )Nrf    mutationsubscriptionz {}zgraphql.operation)rg   operation_type)categorydataopnamer>   zgraphql.operation.typezgraphql.operation.namezgraphql.documentzgraphql.resource_name)ra   rg   _operation_namer   GRAPHQL_QUERYrf   strip
startswithGRAPHQL_MUTATIONGRAPHQL_SUBSCRIPTIONr.   rO   add_breadcrumbget_isolation_scope_make_request_event_processoradd_event_processorget_current_spanstart_childr'   r>   graphql_span
start_spanset_datari   containing_transactionry   r   	COMPONENTsourcerx   finish)r/   rt   rx   descriptionscopeevent_processorspantransactions           r0   on_operationz!SentryAsyncExtension.on_operation   su     #5D !'/+-D"(!'--//:::FF 	)'N$BB#)//11<<^LL 	)+N(B$ 	>5<<(<===K!("&"6"0 	
 	
 	
 	
 .0078NOO!!/222*,, 	 $ 0 0 ,3 !1 ! !D !+ 5 ,3! ! !D 	""#;^LLL""#;T=QRRR""#5t7M7STTT""#:D<OPPP'> 	 41@ 	 #5DK!2!<KKN  """""r2   c              #      K   | j                             t          j        dt          j                  | _        d V  | j                                         d S )N
validationrw   )r   r   r   GRAPHQL_VALIDATEr'   r>   validation_spanr   r/   s    r0   on_validatez SentryAsyncExtension.on_validate   s[      #0<<"(/  =  
  
 	##%%%%%r2   c              #      K   | j                             t          j        dt          j                  | _        d V  | j                                         d S )Nparsingrw   )r   r   r   GRAPHQL_PARSEr'   r>   parsing_spanr   r   s    r0   on_parsezSentryAsyncExtension.on_parse   s[       -99(/ : 
 
 	  """""r2   _nextz2Callable[[Any, GraphQLResolveInfo, Any, Any], Any]infor!   c                 "    t          ||          S r8   )strawberry_should_skip_tracing)r/   r   r   s      r0   r   z(SentryAsyncExtension.should_skip_tracing   s    
 .eT:::r2   rootrB   rC   c                 R   K    |||g|R i |}t          |          r| d {V }|S r8   r   )r/   r   r   r   rB   rC   results          r0   _resolvezSentryAsyncExtension._resolve   sO       tT3D333F33v 	"!\\\\\\Fr2   c                   K   |                      ||          r | j        |||g|R i | d {V S d                    |j        |j                  }| j                            t          j        d                    |          t          j
                  5 }|                    d|j                   |                    d|j        j                   |                    d|           |                    dd                    t          t          |j                                                                        | j        |||g|R i | d {V cd d d            S # 1 swxY w Y   d S 	Nz{}.{}zresolving {}rw   zgraphql.field_namezgraphql.parent_typezgraphql.field_pathzgraphql.path.)r   r   r.   parent_type
field_namer   r   r   GRAPHQL_RESOLVEr'   r>   r   ry   joinmapstrpathas_listr/   r   r   r   rB   rC   
field_pathr   s           r0   resolvezSentryAsyncExtension.resolve  s      ##E400 	K&udDJ4JJJ6JJJJJJJJJ^^D$4doFF
**!&&z22(/ + 
 
 
	K MM.@@@MM/1A1FGGGMM.
;;;MM.#((3sDI<M<M<O<O3P3P*Q*QRRR&udDJ4JJJ6JJJJJJJJ
	K 
	K 
	K 
	K 
	K 
	K 
	K 
	K 
	K 
	K 
	K 
	K 
	K 
	K 
	K 
	K 
	K 
	Ks   B=E  E$'E$)r/   r   ra   rb   r+   N)r+   ro   )r:   r;   r<   r1   r   r   ri   re   r   r   r   boolr   r   r   r@   r2   r0   rW   rW      s        ;?7 77 87 
	7 7 7 7     _> > > > > >;# ;# ;# ;#z	& 	& 	& 	&	# 	# 	# 	#;C; #; 
	; ; ; ;C  #	
   
   KCK K #	K
 K K 
K K K K K Kr2   rW   c                   .    e Zd Zdddddddeddd	dfd
ZdS )rX   r   z#Callable[[Any, Any, Any, Any], Any]r   r   r   r!   rB   rC   r+   c                    |                      ||          r |||g|R i |S d                    |j        |j                  }| j                            t          j        d                    |          t          j	                  5 }|
                    d|j                   |
                    d|j        j                   |
                    d|           |
                    dd                    t          t          |j                                                                        |||g|R i |cd d d            S # 1 swxY w Y   d S r   )r   r.   r   r   r   r   r   r   r'   r>   r   ry   r   r   r   r   r   r   s           r0   r   zSentrySyncExtension.resolve  s    ##E400 	65t5d555f555^^D$4doFF
**!&&z22(/ + 
 
 
	6 MM.@@@MM/1A1FGGGMM.
;;;MM.#((3sDI<M<M<O<O3P3P*Q*QRRR5t5d555f55
	6 
	6 
	6 
	6 
	6 
	6 
	6 
	6 
	6 
	6 
	6 
	6 
	6 
	6 
	6 
	6 
	6 
	6s   B1EE
E
N)r:   r;   r<   r   r   r@   r2   r0   rX   rX     sb        646 6 #	6
 6 6 
6 6 6 6 6 6r2   rX   c                     t           j        j        t          j        j        	 	 	 	 	 	 	 	 dfd} 	 	 	 	 	 	 	 	 dfd	}t          t                    	 	 	 	 	 	 	 	 dd
            | t           j        _        |t          j        _        d S )Nr/   r   errorsList[GraphQLError]response_datar"   r+   c                 <     | ||            | ||           d S r8   r@   )r/   r   r   _sentry_patched_handle_errorsold_async_view_handle_errorss      r0   (_sentry_patched_async_view_handle_errorsz>_patch_views.<locals>._sentry_patched_async_view_handle_errors:  s5     	%$T6=AAA%%dFMBBBBBr2   c                 <     | ||            | ||           d S r8   r@   )r/   r   r   r   old_sync_view_handle_errorss      r0   '_sentry_patched_sync_view_handle_errorsz=_patch_views.<locals>._sentry_patched_sync_view_handle_errors@  s5     	$#D&-@@@%%dFMBBBBBr2   c           	      r   |sd S t          j                    }t          |          }|                    |           t	                      5  |D ]P}t          |t          j                    j        t          j	        dd          \  }}t          j
        ||           Q	 d d d            d S # 1 swxY w Y   d S )NF)typehandled)client_options	mechanism)hint)rO   r   _make_response_event_processorr   r   r   rP   optionsr'   r=   capture_event)r/   r   r   r   r   erroreventr   s           r0   r   z3_patch_views.<locals>._sentry_patched_handle_errorsF  s     	F.008GG!!/222(** 
	; 
	; 	; 	;2#-#8#:#:#B 5 @#(   t (T:::::	;
	; 
	; 
	; 
	; 
	; 
	; 
	; 
	; 
	; 
	; 
	; 
	; 
	; 
	; 
	; 
	; 
	; 
	;s   
AB,,B03B0)r/   r   r   r   r   r"   r+   N)r   AsyncBaseHTTPView_handle_errorsr   SyncBaseHTTPViewr   r'   )r   r   r   r   r   s     @@@r0   r5   r5   6  s)   #2#D#S "0"A"PCC1CBWC	C C C C C C CCC1CBWC	C C C C C C C   566;;1;BW;	; ; ; 76;. 	1 %4 	0 #222r2   ra   r#   r%   c                      d fd}|S )Nr   r$   r   dict[str, Any]r+   c                 v   t                      5  t                      ra|                     di           }d|d<   |                    d          s0dj        i}j        r
j        |d<   j        r
j        |d<   ||d<   n"	 | d         d= n# t          t          f$ r Y nw xY wd d d            n# 1 swxY w Y   | S )Nrequestgraphql
api_targetrv   rf   	variablesoperationName)	r   r
   
setdefaultrR   rf   r   rg   KeyError	TypeError)r   r   request_datarv   ra   s       r0   innerz,_make_request_event_processor.<locals>.innerh  s3   (** 	 	&(( $//	2>>-6\*#''// 0.57H7N-OD(2 H,=,G[)(7 Q0A0P_-+/L(i(00 ),   D#	 	 	 	 	 	 	 	 	 	 	 	 	 	 	( s6   A0B.	B
B.BB.BB..B25B2r   r$   r   r   r+   r$   r@   )ra   r   s   ` r0   r   r   e  s(         . Lr2   r   r"   c                      d fd}|S )Nr   r$   r   r   r+   c                     t                      5  t                      r|                     di           }di|d<   d d d            n# 1 swxY w Y   | S )Ncontextsrv   response)r   r
   r   )r   r   r   r   s      r0   r   z-_make_response_event_processor.<locals>.inner  s    (** 	? 	?&(( ? ++J;;(.'>$	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?
 s   ,AAAr   r@   )r   r   s   ` r0   r   r     s(          Lr2   rE   List[SchemaExtension]r*   c                 2    t           | v rdS t          | v rdS d S )NTFrI   )rE   s    r0   rS   rS     s'    %33t	&*	4	4u4r2   r9   )ra   r#   r+   r%   )r   r"   r+   r%   )rE   r   r+   r*   )Br]   rk   rT   inspectr   rO   sentry_sdk.constsr   sentry_sdk.integrationsr   r   r   sentry_sdk.integrations.loggingr	   sentry_sdk.scoper
   sentry_sdk.tracingr   sentry_sdk.utilsr   r   r   r   r   r   r   ImportErrorr(   r   strawberry.extensionsr   #strawberry.extensions.tracing.utilsr   r   strawberry.httpr   r   strawberry.extensions.tracingr   rJ   r   rK   typingr   r   r   r   r   r   r   r    r!   r"   strawberry.typesr#   sentry_sdk._typesr$   r%   r'   r4   rW   rX   r5   r   r   rS   r@   r2   r0   <module>r      s                               U U U U U U U U U U 9 9 9 9 9 9 4 4 4 4 4 4 0 0 0 0 0 0               V))))))) V V V
 ,T
U
UUV>!!!!!!555555      @???????? > > >
,<
=
==>)          ) ) )%)"$(!!!) !           8??????????????8888888833333311111177777777 $ % % %    K   ,,2 ,2 ,2 ,2^UK UK UK UK UK? UK UK UKp6 6 6 6 6. 6 6 66, , , ,^)   :(        s*   
A A"&B BB 	B+*B+