o
    ih                     @   s   d dl mZ d dl mZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ G dd deZG d	d
 d
eZG dd deZG dd deZdS )    )Optional)Protocol)get_dogstatsd_client)config)telemetry_writer)TELEMETRY_NAMESPACEc                
   @   s   e Zd Zddededeeeef  ddfddZddededeeeef  ddfdd	Zddededeeeef  ddfd
dZ	ddededeeeef  ddfddZ
dS )MetricsClientNnamevaluetagsreturnc                 C      d S N selfr	   r
   r   r   r   L/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/internal/metrics.py	increment       zMetricsClient.incrementc                 C   r   r   r   r   r   r   r   gauge   r   zMetricsClient.gaugec                 C   r   r   r   r   r   r   r   	histogram   r   zMetricsClient.histogramc                 C   r   r   r   r   r   r   r   distribution   r   zMetricsClient.distributionr   )__name__
__module____qualname__strfloatr   dictr   r   r   r   r   r   r   r   r   
   s
    (((,r   c                
   @   s   e Zd Zddee ddfddZddededeeeef  ddfd	d
Zddededeeeef  ddfddZ	ddededeeeef  ddfddZ
ddededeeeef  ddfddZdS )DogStatsdClientN	namespacer   c                 C   s   t tj|d| _d S )Nr   )r   agent_configdogstatsd_url_clientr   r   r   r   r   __init__   s   zDogStatsdClient.__init__r	   r
   r   c                 C   s4   | j |t||rdd | D  d S d  d S )Nc                 S      g | ]}d  |qS :join.0_r   r   r   
<listcomp>       z-DogStatsdClient.increment.<locals>.<listcomp>)r#   r   intitemsr   r   r   r   r      s   4zDogStatsdClient.incrementc                 C   0   | j |||rdd | D  d S d  d S )Nc                 S   r&   r'   r)   r+   r   r   r   r.      r/   z)DogStatsdClient.gauge.<locals>.<listcomp>)r#   r   r1   r   r   r   r   r         0zDogStatsdClient.gaugec                 C   r2   )Nc                 S   r&   r'   r)   r+   r   r   r   r.      r/   z-DogStatsdClient.histogram.<locals>.<listcomp>)r#   r   r1   r   r   r   r   r      r3   zDogStatsdClient.histogramc                 C   r2   )Nc                 S   r&   r'   r)   r+   r   r   r   r.      r/   z0DogStatsdClient.distribution.<locals>.<listcomp>)r#   r   r1   r   r   r   r   r      r3   zDogStatsdClient.distributionr   )r   r   r   r   r   r%   r   r   r   r   r   r   r   r   r   r   r      s    (((,r   c                
   @   s   e Zd ZdeddfddZddededeeeef  ddfd	d
Z	ddededeeeef  ddfddZ
ddededeeeef  ddfddZddededeeeef  ddfddZdS )%InstrumentationTelemetryMetricsClientr   r   Nc                 C   s
   || _ d S r   r    r$   r   r   r   r%   #      
z.InstrumentationTelemetryMetricsClient.__init__r	   r
   r   c                 C   s0   t | j|t||rt|  d S d d S Nr   )r   add_count_metricr   r0   tupler1   r   r   r   r   r   &   r3   z/InstrumentationTelemetryMetricsClient.incrementc                 C   ,   t | j|||rt|  d S d d S r6   )r   add_gauge_metricr   r8   r1   r   r   r   r   r   )      ,z+InstrumentationTelemetryMetricsClient.gaugec                 C   r   r   r   r   r   r   r   r   ,   s   z/InstrumentationTelemetryMetricsClient.histogramc                 C   r9   r6   )r   add_distribution_metricr   r8   r1   r   r   r   r   r   /   r;   z2InstrumentationTelemetryMetricsClient.distributionr   )r   r   r   r   r%   r   r   r   r   r   r   r   r   r   r   r   r   r4   "   s    (((,r4   c                   @   sX   e Zd ZdZdeddfddZG dd deZdd	d
ZdddZ	de
ddfddZdS )Metricsa  Higher-level DogStatsD interface.

    This class provides automatic handling of namespaces for metrics, with the
    possibility of enabling and disabling them at runtime.

    Example::
        The following example shows how to create the counter metric
        'datadog.tracer.writer.success' and how to increment it. Note that
        metrics are emitted only while the metrics object is enabled.

            >>> tracer_metrics = Metrics(namespace='datadog.tracer')
            >>> tracer_metrics.enable()
            >>> writer_meter = dd_metrics.get_meter('writer')
            >>> writer_meter.increment('success')
            >>> tracer_metrics.disable()
            >>> writer_meter.increment('success')  # won't be emitted
    clientr   Nc                 C   s   d| _ || _d S NF)enabledr>   )r   r>   r   r   r   r%   F      
zMetrics.__init__c                
   @   s   e Zd ZdddeddfddZdded	ed
eeeef  ddfddZdded	ed
eeeef  ddfddZ	dded	ed
eeeef  ddfddZ
dded	ed
eeeef  ddfddZdS )Metrics.Metermetricsr=   r	   r   Nc                 C   s   || _ || _d S r   )rC   r	   )r   rC   r	   r   r   r   r%   K   rA   zMetrics.Meter.__init__      ?r
   r   c                 C   .   | j jsd S | j jd| j|f|| d S N.)rC   r@   r>   r   r*   r	   r   r   r   r   r   O      "zMetrics.Meter.incrementc                 C   rE   rF   )rC   r@   r>   r   r*   r	   r   r   r   r   r   U   rH   zMetrics.Meter.gaugec                 C   rE   rF   )rC   r@   r>   r   r*   r	   r   r   r   r   r   [   rH   zMetrics.Meter.histogramc                 C   rE   rF   )rC   r@   r>   r   r*   r	   r   r   r   r   r   a   rH   zMetrics.Meter.distribution)rD   N)r   r   r   r   r%   r   r   r   r   r   r   r   r   r   r   r   MeterJ   s    (((,rI   c                 C   
   d| _ d S )NTr@   r   r   r   r   enableg   r5   zMetrics.enablec                 C   rJ   r?   rK   rL   r   r   r   disablej   r5   zMetrics.disabler	   rB   c                 C   s   |  | |S r   )rI   )r   r	   r   r   r   	get_meterm   s   zMetrics.get_meter)r   N)r   r   r   __doc__r   r%   objectrI   rM   rN   r   rO   r   r   r   r   r=   3   s    

r=   N)typingr   r   ddtrace.internal.dogstatsdr    ddtrace.internal.settings._agentr   r!   ddtrace.internal.telemetryr   $ddtrace.internal.telemetry.constantsr   r   r   r4   rQ   r=   r   r   r   r   <module>   s    