
    gh.7                     (   S SK r S SKrS SKJr  S SKrS SKJr  S SKJrJ	r	J
r
  S SKJr  S SKJr  S SKJr  S SKJrJrJrJrJrJr   S S	K Jr   S SKJr  S SKJr  S SKJr   S SK!J"r"J#r#   S SK$J%r&J'r(  S SK)J*r*  \*(       a*  S SK)J+r+J,r,J-r-J.r.J/r/  S SK0J1r1J2r2  S SK!J3r3  S SK4J5r5  S SK6J7r7J8r8  \" S5         " S S\	5      r9S r: " S S\5      r; " S S\;5      r<S r=S  r>S! r?S" r@g! \ a	    \
" S
5      ef = f! \ a	    \
" S5      ef = f! \ a    Sr&Sr( Nf = f)#    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                   <    \ rS rSrSrS\ 3rSS jr\S 5       rSr	g)	StrawberryIntegration=   
strawberryzauto.graphql.Nc                 P    US;  a  [        SR                  U5      5      eXl        g )N)NFTz6Invalid value for async_execution: "{}" (must be bool))
ValueErrorformatasync_execution)selfr-   s     e/home/kali/devsecops-assessor/venv/lib/python3.13/site-packages/sentry_sdk/integrations/strawberry.py__init__StrawberryIntegration.__init__A   s1    "55HOO# 
  /    c                  d    [        S5      n [        [        U S5        [        5         [	        5         g )Nzstrawberry-graphql)r   r   r'   _patch_schema_init_patch_views)versions    r/   
setup_once StrawberryIntegration.setup_onceK   s(     ""674g?STr2   )r-   N)
__name__
__module____qualname____firstlineno__
identifieroriginr0   staticmethodr7   __static_attributes__ r2   r/   r'   r'   =   s,    JZL)F/  r2   r'   c                  z   ^ [         R                  m[        R                  " T5      U4S j5       n U [         l        g )Nc                   > [         R                  " 5       R                  [        5      nUc  T" U /UQ70 UD6$ UR	                  S5      =(       d    / nUR
                  b  UR
                  nO5[        U5      n[        R                  " SU(       a  SOSU(       a  SOS5        U Vs/ s H  nU[        [        4;  d  M  UPM     nnUR                  U(       a  [        O[        5        XBS'   T" U /UQ70 UD6$ s  snf )N
extensionszfAssuming strawberry is running %s. If not, initialize it as StrawberryIntegration(async_execution=%s).asyncsyncFalseTrue)
sentry_sdk
get_clientget_integrationr'   getr-   _guess_if_using_asyncr   infoStrawberrySentryAsyncExtensionStrawberrySentrySyncExtensionappendSentryAsyncExtensionSentrySyncExtension)r.   argskwargsintegrationrE   should_use_async_extension	extensionold_schema_inits          r/   _sentry_patched_schema_init7_patch_schema_init.<locals>._sentry_patched_schema_initY   s     !++-==>ST"49$9&99ZZ-3
&&2)4)D)D& *?z)J&KKx5656 (
'	24QRS ' 	 
 	$> DW	
  *|t5d5f55
s   &C8>C8)r   r0   	functoolswraps)r[   rZ   s    @r/   r4   r4   U   s1    ooO___%#6 &#6J 2FOr2   c                   \    \ rS rSrSS.S jr\S 5       rS rS rS r	S	 r
S
 rS rS rSrg)rS      Nexecution_contextc                     U(       a  Xl         g g r9   ra   )r.   rb   s     r/   r0   SentryAsyncExtension.__init__   s     %6" r2   c                     U R                  U R                  R                  5      nU R                  R                  (       a&  SR	                  U R                  R                  U5      $ U$ )Nz{}:{})
hash_queryrb   queryoperation_namer,   )r.   
query_hashs     r/   _resource_name#SentryAsyncExtension._resource_name   sP     __T%;%;%A%AB
!!00>>$"8"8"G"GTTr2   c                 h    [         R                  " UR                  S5      5      R                  5       $ )Nzutf-8)hashlibmd5encode	hexdigest)r.   rg   s     r/   rf   SentryAsyncExtension.hash_query   s#    {{5<<01;;==r2   c              #     #    U R                   R                  U l        Sn[        R                  nU R                   R
                  c  SU R                   l        U R                   R
                  R                  5       R                  S5      (       a  Sn[        R                  nOJU R                   R
                  R                  5       R                  S5      (       a  Sn[        R                  nUnU R                  (       a  USR                  U R                  5      -  n[        R                  " SU R                  US.S9  [        R                  " 5       n[        U R                   5      nUR                  U5        [        R                   " 5       nU(       a%  UR#                  UU[$        R&                  S	9U l        O)[        R*                  " UU[$        R&                  S	9U l        U R(                  R-                  S
U5        U R(                  R-                  SU R                  5        U R(                  R-                  SU R                   R
                  5        U R(                  R-                  SU R.                  5        S v   U R(                  R0                  nU(       aQ  U R                   R                  (       a6  U R                   R                  Ul        [4        R6                  Ul        X'l        U R(                  R=                  5         g 7f)Nrg    mutationsubscriptionz {}zgraphql.operation)rh   operation_type)categorydataopnamer?   zgraphql.operation.typezgraphql.operation.namezgraphql.documentzgraphql.resource_name)rb   rh   _operation_namer   GRAPHQL_QUERYrg   strip
startswithGRAPHQL_MUTATIONGRAPHQL_SUBSCRIPTIONr,   rJ   add_breadcrumbget_isolation_scope_make_request_event_processoradd_event_processorget_current_spanstart_childr'   r?   graphql_span
start_spanset_datarj   containing_transactionr{   r   	COMPONENTsourcerz   finish)r.   rv   rz   descriptionscopeevent_processorspantransactions           r/   on_operation!SentryAsyncExtension.on_operation   s\    #55DD !!''/+-D""(!!''--/:::FF'N$$B##))//1<<^LL+N((B$5<<(<(<==K!!("&"6"6"0	
 ..078N8NO!!/2**, $ 0 0 ,33 !1 !D !+ 5 5 ,33!D 	""#;^L""#;T=Q=QR""#5t7M7M7S7ST""#:D<O<OP''>>411@@#55DDK!2!<!<KN  "s   LL
c              #      #    U R                   R                  [        R                  S[        R
                  S9U l        S v   U R                  R                  5         g 7f)N
validationry   )r   r   r   GRAPHQL_VALIDATEr'   r?   validation_spanr   r.   s    r/   on_validate SentryAsyncExtension.on_validate   sO     #00<<""(//  =  
 	##%   AAc              #      #    U R                   R                  [        R                  S[        R
                  S9U l        S v   U R                  R                  5         g 7f)Nparsingry   )r   r   r   GRAPHQL_PARSEr'   r?   parsing_spanr   r   s    r/   on_parseSentryAsyncExtension.on_parse   sO      --99(// : 
 	  "r   c                     [        X5      $ r9   )strawberry_should_skip_tracing)r.   _nextrO   s      r/   r   (SentryAsyncExtension.should_skip_tracing   s    -e::r2   c                 ^   #    U" X#/UQ70 UD6n[        U5      (       a
  UI S h  vN nU$  N7fr9   r   )r.   r   rootrO   rU   rV   results          r/   _resolveSentryAsyncExtension._resolve   s5     t3D3F3v!\F "s   "-+-c                    #    U R                  X5      (       a  U R                  " XU/UQ70 UD6I S h  vN $ SR                  UR                  UR                  5      nU R
                  R                  [        R                  SR                  U5      [        R                  S9 nUR                  SUR                  5        UR                  SUR                  R                  5        UR                  SU5        UR                  SSR                  [        [        UR                   R#                  5       5      5      5        U R                  " XU/UQ70 UD6I S h  vN sS S S 5        $  GN5 N! , (       d  f       g = f7f	Nz{}.{}zresolving {}ry   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   r{   joinmapstrpathas_listr.   r   r   rO   rU   rV   
field_pathr   s           r/   resolveSentryAsyncExtension.resolve   s/    ##E00uDJ4J6JJJ^^D$4$4dooF
**!!&&z2(// + 
 MM.@MM/1A1A1F1FGMM.
;MM.#((3sDII<M<M<O3P*QRuDJ4J6JJ
 
	 K K
 
s;   1E>E(A0E>$B6E-E+E-E>+E--
E;7E>)r|   rb   r   r   r   )r:   r;   r<   r=   r0   r   rj   rf   r   r   r   r   r   r   rA   rB   r2   r/   rS   rS      sE     7  ><#|
&
#;Kr2   rS   c                       \ rS rSrS rSrg)rT   i  c                    U R                  X5      (       a  U" X#/UQ70 UD6$ SR                  UR                  UR                  5      nU R                  R                  [        R                  SR                  U5      [        R                  S9 nUR                  SUR                  5        UR                  SUR                  R                  5        UR                  SU5        UR                  SSR                  [        [        UR                  R!                  5       5      5      5        U" X#/UQ70 UD6sS S S 5        $ ! , (       d  f       g = fr   )r   r,   r   r   r   r   r   r   r'   r?   r   r{   r   r   r   r   r   r   s           r/   r   SentrySyncExtension.resolve  s
   ##E005d5f55^^D$4$4dooF
**!!&&z2(// + 
 MM.@MM/1A1A1F1FGMM.
;MM.#((3sDII<M<M<O3P*QR5d5f5
 
 
s   B'E  
ErB   N)r:   r;   r<   r=   r   rA   rB   r2   r/   rT   rT     s    6r2   rT   c                    ^^^ [         R                  R                  m[        R                  R                  mUU4S jn UU4S jn[        [        5      S 5       mU [         R                  l        U[        R                  l        g )Nc                 *   > T" XU5        T" XU5        g r9   rB   )r.   errorsresponse_data_sentry_patched_handle_errorsold_async_view_handle_errorss      r/   (_sentry_patched_async_view_handle_errors>_patch_views.<locals>._sentry_patched_async_view_handle_errors+  s    $T=A%dMBr2   c                 *   > T" XU5        T" XU5        g r9   rB   )r.   r   r   r   old_sync_view_handle_errorss      r/   '_sentry_patched_sync_view_handle_errors=_patch_views.<locals>._sentry_patched_sync_view_handle_errors0  s    #D-@%dMBr2   c           	      n   U(       d  g [         R                  " 5       n[        U5      nUR                  U5        [	        5          U HR  n[        U[         R                  " 5       R                  [        R                  SS.S9u  pg[         R                  " XgS9  MT     S S S 5        g ! , (       d  f       g = f)NF)typehandled)client_options	mechanism)hint)rJ   r   _make_response_event_processorr   r   r   rK   optionsr'   r>   capture_event)r.   r   r   r   r   erroreventr   s           r/   r   3_patch_views.<locals>._sentry_patched_handle_errors5  s     ..08G!!/2(*2#-#8#8#:#B#B 5 @ @#( ((:   +**s   AB&&
B4)r   AsyncBaseHTTPView_handle_errorsr   SyncBaseHTTPViewr   r'   )r   r   r   r   r   s     @@@r/   r5   r5   &  ss    #2#D#D#S#S "0"A"A"P"PC
C
   56; 7;, 	1 %%4 	0 ##2r2   c                    ^  U 4S jnU$ )Nc                   > [        5          [        5       (       a  U R                  S0 5      nSUS'   UR                  S5      (       dR  STR                  0nTR
                  (       a  TR
                  US'   TR                  (       a  TR                  US'   X2S'   O U S   S	 S S S 5        U $ ! [        [        4 a     Nf = f! , (       d  f       U $ = f)Nrequestgraphql
api_targetrx   rg   	variablesoperationName)	r   r
   
setdefaultrM   rg   r   rh   KeyError	TypeError)r   r   request_datarx   rb   s       r/   inner,_make_request_event_processor.<locals>.innerV  s    (*&(($//	2>-6\*#''//#%6%<%<=D(22,=,G,G[)(770A0P0P_-+/(i(0! +(  !), # +*( s*   BCB--C =C?C  C
CrB   )rb   r   s   ` r/   r   r   S  s    0 Lr2   c                    ^  U 4S jnU$ )Nc                    > [        5          [        5       (       a  U R                  S0 5      nST0US'   S S S 5        U $ ! , (       d  f       U $ = f)Ncontextsrx   response)r   r
   r   )r   r   r   r   s      r/   r   -_make_response_event_processor.<locals>.innert  sO    (*&(( ++J;(.'>$ +
  +*
 s	   )?
ArB   )r   r   s   ` r/   r   r   q  s     Lr2   c                 p    [         U ;   a  g[        U ;   a  g[        1 Sk[        [	        5       5      -  5      $ )NTF>   fastapilitestarstarlite	starlette)rP   rQ   boolsetr   )rE   s    r/   rN   rN     s6    %3	&*	483?U?W;XX r2   )Ar]   rm   inspectr   rJ   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   rP   r   rQ   typingr   r   r   r   r   r   r   r    r!   r"   strawberry.typesr#   sentry_sdk._typesr$   r%   r'   r4   rS   rT   r5   r   r   rN   rB   r2   r/   <module>r     s         U U 9 4 0 V)>!5 @) !??8317 $ %K 0*2ZLK? LK^6. 6**Z<	U  V
 T
UUV  >
<
==>  )%)"$(!)s*   C  C2 (D  C/2D
DD