o
    i
                     @   sp   d dl 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 )    N)
MetricType)MetricAggregator)Lockc                   @   s6   e Zd ZdddZdd Zdd	 Zd
d Zdd ZdS )MaxSampleMetric      ?r   Nc                 C   sT   || _ || _t | _|| _|| _|| _|| _|dkrd g| ng | _d| _	d| _
d S )Nr   )nametagsr   lockmetric_typemax_metric_samplescardinalityspecified_ratedatastored_metric_samplestotal_metric_samples)selfr   r   r
   r   r   r    r   W/home/ubuntu/.local/lib/python3.10/site-packages/datadog/dogstatsd/max_sample_metric.py__init__   s   
zMaxSampleMetric.__init__c                 C   sD   | j dkr| j| n|| j| j< |  jd7  _|  jd7  _d S Nr      )r   r   appendr   r   )r   valuer   r   r   sample   s
   
zMaxSampleMetric.samplec                 C   s~   | j dkr8|  jd7  _| j| j k r!|| j| j< |  jd7  _d S td| jd }|| j k r6|| j|< d S d S | | d S r   )r   r   r   r   randomrandintr   )r   r   ir   r   r   maybe_keep_sample_work_unsafe   s   

z-MaxSampleMetric.maybe_keep_sample_work_unsafec                 C   s   |  j d7  _ d S )Nr   )r   r   r   r   r   skip_sample)   s   zMaxSampleMetric.skip_samplec                    sP   j j  j  fddtj D W  d    S 1 s!w   Y  d S )Nc              
      s.   g | ]}t jj jj| jd qS ))r   )r   r   r   r
   r   r   ).0r   rater   r   r   
<listcomp>/   s    z)MaxSampleMetric.flush.<locals>.<listcomp>)r   r   r	   ranger   r   r!   r   flush,   s   $zMaxSampleMetric.flushr   r   N)__name__
__module____qualname__r   r   r   r   r%   r   r   r   r   r      s    
r   c                          e Zd Zd fdd	Z  ZS )HistogramMetricr   r   Nc                        t t| ||tj||| d S N)superr+   r   r   	HISTOGRAMr   r   r   r"   r   r   	__class__r   r   r   8       zHistogramMetric.__init__r&   r'   r(   r)   r   __classcell__r   r   r1   r   r+   7       r+   c                       r*   )DistributionMetricr   r   Nc                    r,   r-   )r.   r7   r   r   DISTRIBUTIONr0   r1   r   r   r   =   s   
zDistributionMetric.__init__r&   r4   r   r   r1   r   r7   <   r6   r7   c                       r*   )TimingMetricr   r   Nc                    r,   r-   )r.   r9   r   r   TIMINGr0   r1   r   r   r   D   r3   zTimingMetric.__init__r&   r4   r   r   r1   r   r9   C   r6   r9   )r   datadog.dogstatsd.metric_typesr   datadog.dogstatsd.metricsr   	threadingr   objectr   r+   r7   r9   r   r   r   r   <module>   s    0