o
    xi	                     @   s   d Z ddlZG dd dZdS )zsample.    Nc                   @   s.   e Zd Zd
ddZdd Zdd Zdd	 ZdS )UniformSampleAccumulatorNc                 C   s
  |pd| _ dttt| j d | _ | j d | _| jd | _d| _d| j> d | _tt| jd| _	tt| j	d| _
d| j
d > d | _d| _g | _dg| j	 | _d| _dg| _t| j	D ]}| jdg| j  qb|  jdd tdd| j	 d D 7  _d S )N@      r      c                 S   s   g | ]
}t t|d qS )r   )intmathlog.0i r   M/home/ubuntu/.local/lib/python3.10/site-packages/wandb/sdk/internal/sample.py
<listcomp>   s    z5UniformSampleAccumulator.__init__.<locals>.<listcomp>)_samplesr   r   ceilr   	_samples2_max_shift_mask_buckets_buckets_bits_buckets_mask_buckets_index_bucket_index_count_log2rangeappend)selfmin_samples_r   r   r   __init__   s"   
,z!UniformSampleAccumulator.__init__c                    s\   t d tjD ]"  j j   fddtj  D }t   d|  q	d S )Nz====================c                    s   g | ]	}j   | qS r   )r   r	   br   r   r   r   $   s    z2UniformSampleAccumulator._show.<locals>.<listcomp>z: )printr   r   r   r   )r   valsr   r#   r   _show    s   zUniformSampleAccumulator._showc                 C   s   |  j d7  _ | j }|| j@ rd S || j? }| j| }|| jkrEd| j| j< | jd | j | _|  jd7  _| jd> dB | _|| jd 7 }|| j | j }|| j| | j| < | j|  d7  < d S )Nr   r   )r   r   r   r   r   r   r   r   )r   valcntr$   r   r   r   add'   s   



zUniformSampleAccumulator.addc                 C   s   g }g }t | jD ];}d| }|| j | j }| j| | }t | j| D ]}|r/|| dkr9|| j| |  || j| |  q%q	t|| jk rPt|S t|S )Nr   r   )	r   r   r   r   r   r   lenr   tuple)r   fullsampledr$   max_nummodbr   r   r   r   get8   s   zUniformSampleAccumulator.get)N)__name__
__module____qualname__r"   r'   r*   r1   r   r   r   r   r      s
    
r   )__doc__r   r   r   r   r   r   <module>   s    