
    g                       d Z ddlmZ ddlmZ ddlZddlmZ ddlm	Z	 ddl
mZ ddlZdd	lmZ dd
lmZ ddlmZ g dZ ed       G d de             Z G d d      Ze G d d             Zej.                  dd       Zy)zTesting utilities for Logfire.    )annotations)	dataclassN)InMemoryMetricReader)SimpleSpanProcessor)IdGenerator   )ONE_SECOND_IN_NANOSECONDS)TestExporter)SeededRandomIdGenerator)capfireCaptureLogfireIncrementalIdGeneratorr   TimeGeneratorr
   T)reprc                  0    e Zd ZdZdZdZddZddZddZy)	r   zGenerate sequentially incrementing span/trace IDs for testing.

    Trace IDs start at 1 and increment by 1 each time.
    Span IDs start at 1 and increment by 1 each time.
    r   c                     d| _         d| _        y)zResets the trace and span ids.r   N)trace_id_counterspan_id_counterselfs    D/var/www/openai/venv/lib/python3.12/site-packages/logfire/testing.pyreset_trace_span_idsz+IncrementalIdGenerator.reset_trace_span_ids'   s     !     c                x    | xj                   dz  c_         | j                   dkD  rt        d      | j                   S )zGenerates a span id.r   l    zSpan ID overflow)r   OverflowErrorr   s    r   generate_span_idz'IncrementalIdGenerator.generate_span_id,   s9    !)+ 233###r   c                    | xj                   dz  c_         | j                   ddz  dz
  kD  rt        d      | j                   S )zGenerates a trace id.r         zTrace ID overflow)r   r   r   s    r   generate_trace_idz(IncrementalIdGenerator.generate_trace_id3   sA    "  1c6A:- 344$$$r   N)returnNoner!   int)	__name__
__module____qualname____doc__r   r   r   r   r     r   r   r   r      s#     O!
$%r   r   c                  *    e Zd ZdZdddZddZd	dZy)
r   zGenerate incrementing timestamps for testing.

    Timestamps are in nanoseconds, start at 1_000_000_000, and increment by 1_000_000_000 (1 second) each time.
    c                    || _         y Nns_time)r   r.   s     r   __init__zTimeGenerator.__init__B   s	    r   c                L    | xj                   t        z  c_         | j                   S r,   )r.   r	   r   s    r   __call__zTimeGenerator.__call__E   s    11||r   c                "    d| j                    dS )NzTimeGenerator(ns_time=)r-   r   s    r   __repr__zTimeGenerator.__repr__I   s    '~Q77r   N)r   )r.   r$   r#   )r!   str)r%   r&   r'   r(   r/   r1   r4   r)   r   r   r   r   <   s    
8r   r   c                  (    e Zd ZU dZded<   	 ded<   y)r   zA dataclass that is holds both span exporter and metric renderer.

    This is used as the return type of `capfire` fixture.
    r
   exporterr   metrics_readerN)r%   r&   r'   r(   __annotations__r)   r   r   r   r   M   s    
 &((.r   r   c            
        t               } t               }t        j                  ddt        j                  t               t                     t        |       gt        j                  t               g             t        | |      S )z1A fixture that returns a CaptureLogfire instance.F)id_generatorns_timestamp_generator)additional_readers)send_to_logfireconsoleadvancedadditional_span_processorsmetricsr7   r8   )
r
   r   logfire	configureAdvancedOptionsr   r   r   MetricsOptionsr   rC   s     r   r   r   Z   sq     ~H)+N((/1#0?
 %8$A#B&&;O;Q:RS	 8NKKr   )r!   r   )r(   
__future__r   dataclassesr   pytest opentelemetry.sdk.metrics.exportr   opentelemetry.sdk.trace.exportr   $opentelemetry.sdk.trace.id_generatorr   rD   _internal.constantsr	   _internal.exporters.testr
   _internal.utilsr   __all__r   r   r   fixturer   r)   r   r   <module>rS      s    $ " !  A > <  : 2 4 %[ % %>8 8" 	/ 	/ 	/ L Lr   