
    Ch                     @    S SK r S SKJr   " S S\\ R                  S9rg)    N)AbstractMeasurableStatc                       \ rS rSrSrS r\R                  S 5       r\R                  S 5       r	S r
S rS rS	 rS
 rS rS r " S S5      rSrg)AbstractSampledStat   a:  
An AbstractSampledStat records a single scalar value measured over
one or more samples. Each sample is recorded over a configurable
window. The window can be defined by number of events or elapsed
time (or both, if both are given the window is complete when
*either* the event count or elapsed time criterion is met).

All the samples are combined to produce the measurement. When a
window is complete the oldest sample is cleared and recycled to
begin recording the next sample.

Subclasses of this class define different statistics measured
using this basic pattern.
c                 ,    Xl         / U l        SU l        g Nr   )_initial_value_samples_current)selfinitial_values     hC:\Suresh\moveshuttle\MDcreated\moveengine\venv\Lib\site-packages\aiokafka/metrics/stats/sampled_stat.py__init__AbstractSampledStat.__init__   s    +    c                     g N )r   sampleconfigvaluetime_mss        r   updateAbstractSampledStat.update   s    69r   c                     g r   r   )r   samplesr   nows       r   combineAbstractSampledStat.combine   s    -0r   c                     U R                  U5      nUR                  X15      (       a  U R                  X5      nU R                  XA[	        U5      U5        U=R
                  S-  sl        g N   )currentis_complete_advancer   floatevent_count)r   r   r   r   r   s        r   recordAbstractSampledStat.record!   sT    g&g..]]63FFE%L':ar   c                 :    U R                  U R                  U5      $ r   )Sampler	   r   r   s     r   
new_sampleAbstractSampledStat.new_sample(   s    {{4..88r   c                 n    U R                  X5        [        U R                  U R                  X5      5      $ r   )purge_obsolete_samplesr&   r   r
   )r   r   r   s      r   measureAbstractSampledStat.measure+   s*    ##F0T\\$--=>>r   c                     U R                   (       d*  U R                   R                  U R                  U5      5        U R                   U R                     $ r   )r
   appendr-   r   r,   s     r   r#   AbstractSampledStat.current/   s7    }}MM  !9:}}T]]++r   c                    U R                   (       d*  U R                   R                  U R                  U5      5        U R                   S   nU R                   SS   H!  nUR                  UR                  :  d  M  UnM#     U$ )Nr   r"   )r
   r4   r-   last_window_ms)r   r   oldestr   s       r   r8   AbstractSampledStat.oldest4   sg    }}MM  !56q!mmAB'F$$v'<'<< ( r   c                     UR                   UR                  -  nU R                   H(  nX$R                  -
  U:  d  M  UR	                  U5        M*     g)zD
Timeout any windows that have expired in the absence of any events
N)r   time_window_msr
   r7   reset)r   r   r   
expire_ager   s        r   r0   *AbstractSampledStat.purge_obsolete_samples=   sC     ^^f&;&;;
mmF***j8S! $r   c                 .   U R                   S-   UR                  -  U l         U R                   [        U R                  5      :  a.  U R	                  U5      nU R                  R                  U5        U$ U R                  U5      nUR                  U5        U$ r!   )r   r   lenr
   r-   r4   r#   r<   )r   r   r   r   s       r   r%   AbstractSampledStat._advanceF   st    *fnn<==C..__W-FMM  (M\\'*FLL!Mr   c                   &    \ rS rSrS rS rS rSrg)AbstractSampledStat.SampleQ   c                 6    Xl         SU l        X l        Xl        g r   )r   r'   r7   r   )r   r   r   s      r   r   #AbstractSampledStat.Sample.__init__R   s    !. D"%&Jr   c                 @    SU l         Xl        U R                  U l        g r   )r'   r7   r   r   )r   r   s     r   r<    AbstractSampledStat.Sample.resetX   s     D"%++DJr   c                 x    XR                   -
  UR                  :  =(       d    U R                  UR                  :  $ r   )r7   r;   r'   event_window)r   r   r   s      r   r$   &AbstractSampledStat.Sample.is_complete]   s7    ---1F1FF ;##v':'::r   )r'   r   r7   r   N)__name__
__module____qualname____firstlineno__r   r<   r$   __static_attributes__r   r   r   r+   rC   Q   s    	'	,
	r   r+   )r   r	   r
   N)rL   rM   rN   rO   __doc__r   abcabstractmethodr   r   r(   r-   r1   r#   r8   r0   r%   r+   rP   r   r   r   r   r      sc    
 	9 90 0 9?,
"	 r   r   )	metaclass)rR    aiokafka.metrics.measurable_statr   ABCMetar   r   r   r   <module>rW      s     
 C[0CKK [r   