
    $gq                    B   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mZmZmZmZ d dlmZ d dl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mZ d dl m!Z! dZ"e	e
e#ef         dge
e#ef         f         Z$ G d de          Z% G d de%          Z&ddgZ'dS )    )annotations)deepcopy)isawaitable)
TYPE_CHECKINGAnyCallableDict	FrozenSet	GeneratorIterableOptionalSetUnion)trace)SpanKind)LifecycleStepSchemaExtension)get_path_from_info   )should_skip_tracing)GraphQLResolveInfo)SpanTracer)ExecutionContextz%Y-%m-%dT%H:%M:%S.%fZr   c                      e Zd ZU ded<    e            Zded<   ded<   dddd*dZd+dZd+dZd+dZ	d,dZ
d-dZd.dZd/dZd0d!Zd1d%Zd2d)ZdS )3OpenTelemetryExtensionOptional[ArgFilter]_arg_filterzDict[LifecycleStep, Span]_span_holderr   _tracerN)execution_context
arg_filterr!   Optional[ExecutionContext]r"   returnNonec               \    || _         t          j        d          | _        |r	|| _        d S d S )N
strawberry)r   r   
get_tracerr    r!   )selfr!   r"   s      k/var/www/html/netbox-4.1.3/venv/lib/python3.11/site-packages/strawberry/extensions/tracing/opentelemetry.py__init__zOpenTelemetryExtension.__init__+   s>     &'55 	7%6D"""	7 	7    Generator[None, None, None]c              #    K   | j         j        | _        | j        r
d| j         nd}| j                            |t
          j                  | j        t          j	        <   | j        t          j	                 
                    dd           | j         j        r5| j        t          j	                 
                    d| j         j                   d V  | j        sE| j         j        r9d| j         j         }| j        t          j	                                     |           | j        t          j	                                                  d S )NzGraphQL Query: zGraphQL Query)kind	componentgraphqlquery)r!   operation_name_operation_namer    
start_spanr   SERVERr   r   	OPERATIONset_attributer2   update_nameend)r)   	span_names     r*   on_operationz#OpenTelemetryExtension.on_operation6   sF     #5D #!4d2444  	 6:\5L5LHO 6M 6
 6
-12 	-12@@iXXX!' 	m56DD/5   	 # 	N(>(M 	NQ$*@*OQQIm56BB9MMM-126688888r,   c              #    K   t          j        | j        t          j                           }| j                            d|          | j        t          j        <   d V  | j        t          j                                                  d S )NzGraphQL Validationcontext)	r   set_span_in_contextr   r   r7   r    r5   
VALIDATIONr:   r)   ctxs     r*   on_validatez"OpenTelemetryExtension.on_validateS   s}      '(9-:Q(RSS6:l6M6M  7N 7
 7
-23 	-237799999r,   c              #    K   t          j        | j        t          j                           }| j                            d|          | j        t          j        <   d V  | j        t          j                                                  d S )NzGraphQL Parsingr>   )	r   r@   r   r   r7   r    r5   PARSEr:   rB   s     r*   on_parsezOpenTelemetryExtension.on_parse\   s|      '(9-:Q(RSS151H1Hs 2I 2
 2
--. 	--.2244444r,   argsDict[str, Any]infor   c                Z    | j         s|S |                      t          |          |          S N)r   r   )r)   rH   rJ   s      r*   filter_resolver_argsz+OpenTelemetryExtension.filter_resolver_argse   s0      	K555r,   valuedictstrc                v     dd                      fd|                                D                       z   dz   S )N{, c              3  R   K   | ]!\  }}| d                      |           V  "dS )z: N)convert_to_allowed_types).0kvr)   s      r*   	<genexpr>zGOpenTelemetryExtension.convert_dict_to_allowed_types.<locals>.<genexpr>o   sT        ?Cq!1::55a88::     r,   })joinitemsr)   rN   s   ` r*   convert_dict_to_allowed_typesz4OpenTelemetryExtension.convert_dict_to_allowed_typesl   sY    ii    GL{{}}     		
r,   r   c                B   t          |t          t          t          t          t
          f          r|S t          |t          t          t          f          r| 	                    |          S t          |t                    r|                     |          S t          |t          t          f          r|                     |          S t          |t                    rt          |          S t          |t           t"          f          rt          |          S t          |          S rL   )
isinstanceboolrP   bytesintfloatlisttuplerange&convert_list_or_tuple_to_allowed_typesrO   r^   set	frozensetconvert_set_to_allowed_typescomplex	bytearray
memoryviewr]   s     r*   rU   z/OpenTelemetryExtension.convert_to_allowed_typesu   s    edCU;<< 	LeU344 	>>uEEEt$$ 		55e<<<Y/00 	44U;;;w'' 	u::	:677 	<<u::r,   Union[Set, FrozenSet]c                R     dd                      fd|D                       z   dz   S )NrR   rS   c              3  \   K   | ]&}t                              |                    V  'd S rL   )rP   rU   )rV   xr)   s     r*   rY   zFOpenTelemetryExtension.convert_set_to_allowed_types.<locals>.<genexpr>   s9      QQaC = =a @ @AAQQQQQQr,   rZ   )r[   r]   s   ` r*   rk   z3OpenTelemetryExtension.convert_set_to_allowed_types   s7    $))QQQQ5QQQQQQTWW	
r,   r   c           	     x    d                     t          t          t          | j        |                              S )NrS   )r[   maprP   rU   r]   s     r*   rh   z=OpenTelemetryExtension.convert_list_or_tuple_to_allowed_types   s+    yyS#d&CU"K"KLLMMMr,   spanr   kwargsc                   d                     t          t          t          |                              }|                    dd           |                    d|j        j                   |                    d|           |r^|                     ||          }|                                D ]5\  }}| 	                    |          }|                    d| |           4d S d S )N.r0   r1   zgraphql.parentTypezgraphql.pathzgraphql.param.)
r[   rt   rP   r   r8   parent_typenamerM   r\   rU   )	r)   ru   rJ   rv   graphql_pathfiltered_kwargskwargrN   converted_values	            r*   add_tagszOpenTelemetryExtension.add_tags   s    xxC);D)A)A B BCC;	222/1A1FGGG><888 	N"77EEO / 5 5 7 7 N Nu"&"?"?"F"F""#;E#;#;_MMMM	N 	NN Nr,   _nextr   rootc                  K   t          ||          r& |||g|R i |}t          |          r| d {V }|S | j                            d|j         t          j        | j        t          j	                                     5 }| 
                    |||            |||g|R i |}t          |          r| d {V }|cd d d            S # 1 swxY w Y   d S NzGraphQL Resolving: r>   )r   r   r    start_as_current_span
field_namer   r@   r   r   r7   r   r)   r   r   rJ   rH   rv   resultru   s           r*   resolvezOpenTelemetryExtension.resolve   sh      ud++ 	U4777777F6"" &%M\//3$/33-!-"9:  0 
 
 	
 MM$f---U4777777F6"" &%	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   =CCC)r!   r#   r"   r   r$   r%   )r$   r-   )rH   rI   rJ   r   r$   rI   )rN   rO   r$   rP   )rN   r   r$   r   )rN   ro   r$   rP   )rN   r   r$   rP   )ru   r   rJ   r   rv   r   r$   r%   r   r   r   r   rJ   r   rH   rP   rv   r   r$   r   )__name__
__module____qualname____annotations__rO   r   r+   r<   rD   rG   rM   r^   rU   rk   rh   r   r    r,   r*   r   r   &   s8        $$$$.2dffL4444OOO
 9=*.		7 	7 	7 	7 	7 	79 9 9 9:: : : :5 5 5 56 6 6 6
 
 
 
   "
 
 
 

N N N NN N N N     r,   r   c                      e Zd ZddZdS )OpenTelemetryExtensionSyncr   r   r   r   rJ   r   rH   rP   rv   r$   c                V   t          ||          r |||g|R i |}|S | j                            d|j         t	          j        | j        t          j                                     5 }| 	                    |||            |||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   r7   r   r   s           r*   r   z"OpenTelemetryExtensionSync.resolve   s"    ud++ 	U4777777FM\//3$/33-!-"9:  0 
 
 		
 MM$f---U4777777F		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		s   +&BB"%B"Nr   )r   r   r   r   r   r,   r*   r   r      s(             r,   r   N)(
__future__r   copyr   inspectr   typingr   r   r   r	   r
   r   r   r   r   r   opentelemetryr   opentelemetry.tracer   strawberry.extensionsr   r   strawberry.extensions.utilsr   utilsr   r1   r   r   r   strawberry.types.executionr   DATETIME_FORMATrP   	ArgFilterr   r   __all__r   r,   r*   <module>r      s   " " " " " "                                           ( ( ( ( ( ( @ @ @ @ @ @ @ @ : : : : : : & & & & & & <******00000000;;;;;; *d38n&:;T#s(^KL	R R R R R_ R R Rj    !7   4 $%A
Br,   