
    $g                        d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZmZmZ d dlmZmZ d dlmZ d dlmZ e	rd d	lmZ d d
lmZ  G d de          Z G d de          ZddgZdS )    )annotationsN)cached_property)isawaitable)TYPE_CHECKINGAnyCallable	GeneratorOptional)configure_scope
start_span)SchemaExtensionshould_skip_tracing)GraphQLResolveInfo)ExecutionContextc                  d    e Zd ZddddZedd	            ZddZddZddZddZ	ddZ
d dZdS )!SentryTracingExtensionN)execution_contextr   Optional[ExecutionContext]returnNonec               T    t          j        dt          d           |r	|| _        d S d S )NzOThe Sentry tracing extension is deprecated, please update to sentry-sdk>=1.32.0   )
stacklevel)warningswarnDeprecationWarningr   )selfr   s     d/var/www/html/netbox-4.1.3/venv/lib/python3.11/site-packages/strawberry/extensions/tracing/sentry.py__init__zSentryTracingExtension.__init__   sH    
 	]	
 	
 	
 	
  	7%6D"""	7 	7    strc                    | j         j        sJ |                     | j         j                  }| j         j        r| j         j         d| S |S )N:)r   query
hash_queryoperation_name)r   
query_hashs     r   _resource_namez%SentryTracingExtension._resource_name#   sZ    %++++__T%;%ABB
!0 	K,;JJjJJJr!   r%   c                t    t          j        |                    d                                                    S )Nzutf-8)hashlibmd5encode	hexdigest)r   r%   s     r   r&   z!SentryTracingExtension.hash_query.   s*    {5<<0011;;===r!   Generator[None, None, None]c              #    K   | j         j        | _        | j        r| j         nd}t                      5 }|j        r"|j                            d|          | _        nt          d          | _        d d d            n# 1 swxY w Y   d}| j         j        sJ | j         j        	                                
                    d          rd}| j         j        	                                
                    d          rd}| j                            d|           | j                            d	| j                   | j                            d
| j         j                   d V  | j                                         d S )NzAnonymous Querygqlopdescription)r3   r%   mutationsubscriptionzgraphql.operation_typezgraphql.resource_namezgraphql.query)r   r'   _operation_namer   spanstart_childgql_spanr   r%   strip
startswithset_tagr)   set_datafinish)r   namescopeoperation_types       r   on_operationz#SentryTracingExtension.on_operation1   s     #5D,0,@W$&((FW 		%z  %
 6 6 $ !7 ! !
 !+! ! !		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 !%++++!'--//:::FF 	('N!'--//::>JJ 	,+N6GGG5t7JKKK0F0LMMMs   ?A>>BBc              #     K   | j                             dd          | _        d V  | j                                         d S )N
validation
Validationr2   )r:   r9   validation_spanr?   r   s    r   on_validatez"SentryTracingExtension.on_validateQ   sP      #}88  9  
  
 	##%%%%%r!   c              #     K   | j                             dd          | _        d V  | j                                         d S )NparsingParsingr2   )r:   r9   parsing_spanr?   rH   s    r   on_parsezSentryTracingExtension.on_parseZ   sP       M55i 6 
 
 	  """""r!   _nextr   infor   boolc                "    t          ||          S )Nr   )r   rO   rP   s      r   r   z*SentryTracingExtension.should_skip_tracingc   s    "5$///r!   rootr   argskwargsc                  K   |                      ||          r& |||g|R i |}t          |          r| d {V }|S |j         d|j         }| j                            dd|           5 }|                    d|j                   |                    d|j        j                   |                    d|           |                    dd                    t          t          |j                                                                        |||g|R i |}t          |          r| d {V }|cd d d            S # 1 swxY w Y   d S 	N.resolvezResolving: r2   zgraphql.field_namezgraphql.parent_typezgraphql.field_pathzgraphql.path)r   r   parent_type
field_namer:   r9   r=   r@   joinmapr"   pathas_list)	r   rO   rS   rP   rT   rU   result
field_pathr8   s	            r   rY   zSentryTracingExtension.resolvef   s      ##E400 	U4777777F6"" &%M(<<4?<<
]&&&@J&@&@ ' 
 
 	LL-t???LL.0@0EFFFLL-z:::LL#c49;L;L;N;N2O2O)P)PQQQU4777777F6"" &%	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   /C
EE
E
)r   r   r   r   )r   r"   )r%   r"   r   r"   )r   r/   )rO   r   rP   r   r   rQ   rO   r   rS   r   rP   r   rT   r"   rU   r   r   r   )__name__
__module____qualname__r    r   r)   r&   rC   rI   rN   r   rY    r!   r   r   r      s         9=7 7 7 7 7 7    _> > > >   @& & & &# # # #0 0 0 0     r!   r   c                      e Zd ZddZdS )SentryTracingExtensionSyncrO   r   rS   r   rP   r   rT   r"   rU   r   c                >   |                      ||          r |||g|R i |S |j         d|j         }| j                            dd|           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 rW   )r   rZ   r[   r:   r9   r=   r@   r\   r]   r"   r^   r_   )r   rO   rS   rP   rT   rU   ra   r8   s           r   rY   z"SentryTracingExtensionSync.resolve   s    ##E400 	65t5d555f555(<<4?<<
]&&&@J&@&@ ' 
 
 	6LL-t???LL.0@0EFFFLL-z:::LL#c49;L;L;N;N2O2O)P)PQQQ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   B1DDDNrb   )rc   rd   re   rY   rf   r!   r   rh   rh      s(        6 6 6 6 6 6r!   rh   )
__future__r   r+   r   	functoolsr   inspectr   typingr   r   r   r	   r
   
sentry_sdkr   r   strawberry.extensionsr   #strawberry.extensions.tracing.utilsr   graphqlr   strawberry.types.executionr   r   rh   __all__rf   r!   r   <module>rt      sN   " " " " " "   % % % % % %       D D D D D D D D D D D D D D 2 2 2 2 2 2 2 2 1 1 1 1 1 1 C C C C C C <******;;;;;;q q q q q_ q q qh6 6 6 6 6!7 6 6 62 $%A
Br!   