
    BTh{                         d dl Z d dlZd dl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	      Z
 G d
 d      Zd Zy)    N)bisect_left)bisect_right   )cached_property)funcname)get_cprofile_functionsc                   >   e Zd ZdZd Zd Zd Zd Zd Ze	d        Z
e	d        Ze	d	        Ze	d
        Ze	d        Ze	d        Zed        Ze	d        Ze	d        Ze	d        Ze	d        Ze	d        Ze	d        Ze	d        Zed        Ze	d        Ze	d        Zy)Stats)minmaxmeanstddevroundsmedianiqrq1q3iqr_outliersstddev_outliersoutliersld15iqrhd15iqropstotalc                     g | _         y N)dataselfs    h/var/www/catia.catastroantioquia-mas.com/valormas/lib/python3.12/site-packages/pytest_benchmark/stats.py__init__zStats.__init__    s	    	    c                 ,    t        | j                        S r   boolr   r   s    r    __bool__zStats.__bool__#       DIIr"   c                 ,    t        | j                        S r   r$   r   s    r    __nonzero__zStats.__nonzero__&   r'   r"   c                 V    | j                   D ci c]  }|t        | |       c}S c c}w r   )fieldsgetattr)r   fields     r    as_dictzStats.as_dict)   s&    9=EwtU++EEEs   &c                 :    | j                   j                  |       y r   )r   appendr   durations     r    updatezStats.update,   s    		"r"   c                 ,    t        | j                        S r   )sortedr   r   s    r    sorted_datazStats.sorted_data/   s    dii  r"   c                 ,    t        | j                        S r   )sumr   r   s    r    r   zStats.total3       499~r"   c                 ,    t        | j                        S r   )r   r   r   s    r    r   z	Stats.min7   r9   r"   c                 ,    t        | j                        S r   )r   r   r   s    r    r   z	Stats.max;   r9   r"   c                 @    t        j                  | j                        S r   )
statisticsr   r   r   s    r    r   z
Stats.mean?   s    tyy))r"   c                 r    t        | j                        dkD  rt        j                  | j                        S y)Nr   r   )lenr   r=   stdevr   s    r    r   zStats.stddevC   s*    tyy>A##DII..r"   c                     d}| j                   | j                  z
  }| j                   | j                  z   }| j                  D ]  }||k  s||kD  s|dz  } |S )zX
        Count of StdDev outliers: what's beyond (Mean - StdDev, Mean - StdDev)
        r   r   )r   r   r   r   countq0q4vals        r    r   zStats.stddev_outliersJ   s]    
 YY$YY$99 	CRx38
	 r"   c                 ,    t        | j                        S r   )r?   r   r   s    r    r   zStats.roundsW   r9   r"   c                 @    t        j                  | j                        S r   )r=   r   r   r   s    r    r   zStats.median[   s      ++r"   c                     t        | j                        dk(  r| j                  d   S | j                  t        | j                  | j                  d| j
                  z  z
           S )zC
        Tukey-style Lowest Datum within 1.5 IQR under Q1.
        r   r         ?)r?   r   r6   r   r   r   r   s    r    r   zStats.ld15iqr_   sT    
 tyy>Q99Q<##K0@0@$''CRVRZRZNBZ$[\\r"   c                    t        | j                        dk(  r| j                  d   S t        | j                  | j                  d| j
                  z  z         }|t        | j                        k(  r| j                  d   S | j                  |   S )zC
        Tukey-style Highest Datum within 1.5 IQR over Q3.
        r   r   rJ   )r?   r   r   r6   r   r   )r   poss     r    r   zStats.hd15iqri   sw    
 tyy>Q99Q<t//3>1IJCc$))n$''++'',,r"   c                     | j                   }| j                  }|dk(  r|d   S |dz  r7|dz  |dz  }}|dk(  rd||dz
     z  d||   z  z   S d||   z  d||dz      z  z   S t        j                  |d |dz         S )Nr   r               ?      ?r   r6   r=   r   r   r   r   nqs        r    r   zStats.q1w   s     Q;7NaZQ;
qAAvd1q5k)D47N::d1g~tAE{(:::$$T-FaK%899r"   c                    | j                   }| j                  }|dk(  r|d   S |dz  rF|dz  |dz  }}|dk(  rd|d|z     z  d|d|z  dz      z  z   S d|d|z  dz      z  d|d|z  dz      z  z   S t        j                  ||dz  d        S )Nr   r   rO   rP   rR      rQ   rS   rT   s        r    r   zStats.q3   s     Q;7NaZQ;
qAAvd1q5k)D4A	?,BBBd1q519o-tAEAI0FFF$$T&A+-%899r"   c                 4    | j                   | j                  z
  S r   )r   r   r   s    r    r   z	Stats.iqr   s    ww  r"   c                     d}| j                   d| j                  z  z
  }| j                  d| j                  z  z   }| j                  D ]  }||k  s||kD  s|dz  } |S )zS
        Count of Tukey outliers: what's beyond (Q1 - 1.5IQR, Q3 + 1.5IQR)
        r   rJ   r   )r   r   r   r   rB   s        r    r   zStats.iqr_outliers   se    
 WWsTXX~%WWsTXX~%99 	CRx38
	 r"   c                 8    | j                    d| j                   S )N;)r   r   r   s    r    r   zStats.outliers   s!    &&'q):):(;<<r"   c                 N    | j                   r| j                  | j                   z  S y)Nr   )r   r   r   s    r    r   z	Stats.ops   s    ::;;++r"   N)__name__
__module____qualname__r+   r!   r&   r)   r.   r3   r   r6   r   r   r   r   r   propertyr   r   r   r   r   r   r   r   r   r   r    r"   r    r
   r
      sy   F&F# ! !       * *   
 
   , , ] ] - - : :  : :  ! ! 
 
 = =  r"   r
   c                   j    e Zd ZU ej                  ed<   d Zd Zd ZddZ	d Z
ed        Zdd	Zd
 Zy)Metadatacprofile_statsc                 :   |j                   | _         |j                  | _        |j                  | _        |j                  | _        |j                  | _        |j
                  | _        |j                  | _        || _        t               | _	        || _
        || _        y r   )namefullnamegroupparamparams
extra_infore   
iterationsr
   statsoptionsfixture)r   rp   rm   ro   s       r    r!   zMetadata.__init__   st    LL	((]]
]]
nn!,,%44$W
r"   c                 ,    t        | j                        S r   r%   rn   r   s    r    r&   zMetadata.__bool__       DJJr"   c                 ,    t        | j                        S r   rr   r   s    r    r)   zMetadata.__nonzero__   rs   r"   Nc                 h    	 t        | j                  |      S # t        $ r t        | ||      cY S w xY wr   r,   rn   AttributeError)r   keydefaults      r    getzMetadata.get   s6    	/4::s++ 	/4g..	/s    11c                 f    	 t        | j                  |      S # t        $ r t        | |      cY S w xY wr   rv   )r   rx   s     r    __getitem__zMetadata.__getitem__   s4    	&4::s++ 	&4%%	&s    00c                 .    | j                   j                  S r   )rp   	has_errorr   s    r    r~   zMetadata.has_error   s    ||%%%r"   c                 f   | j                   | j                  | j                  | j                  | j                  | j
                  | j                  j                         D ci c]  \  }}|t        |      rt        |      n|  c}}d}| j                  rg x}|d<   t        | j                        }	g d}
|dn|\  }}|#|
j                  |       |
j                  d|       |
D ]c  }|	j                  t        j                   |      d       |	d | D ]  }||vs|j#                  |        |t%        |	      t%        |      k(  sc n |r^| j&                  j)                         }|r| j&                  j*                  |d<   | j,                  |d	<   |r|j/                  |       |S ||d
<   |S c c}}w )N)ri   rg   rh   rk   rj   rl   ro   cprofile)cumtimetottimencallsncalls_recursiontottime_percumtime_perfunction_name)N   r   T)rx   reverser   rm   rn   )ri   rg   rh   rk   rj   rl   ro   itemscallabler   re   r   removeinsertsortoperator
itemgetterr0   r?   rn   r.   r   rm   r3   )r   include_dataflatrn   r   kvresultcprofile_listcprofile_functionsstats_columnscprofile_sort_bycprofile_topcolumncprofile_functions                  r    r.   zMetadata.as_dict   s   ZZIIkkZZ//IMI[I[I]^A(1+8A;1<^
 133MF:.!78K8K!LM;C;KZQY*l+$$%56$$Q(89' "''H,?,?,GQU'V);M\)J @%(=%,,->?@ $+s3E/F#mJ\/\ JJ&&(E $

f"&//E,e$  #(w9 _s    #F-c                 T    | j                   j                  || j                  z         y r   )rn   r3   rm   r1   s     r    r3   zMetadata.update  s    

(T__45r"   r   )TFTN)r^   r_   r`   pstatsr
   __annotations__r!   r&   r)   rz   r|   ra   r~   r.   r3   rb   r"   r    rd   rd      sD    LL   /& & &$L6r"   rd   c                 $    d| vrd| d   z  | d<   | S )Nr   r   r   rb   )rn   s    r    normalize_statsr     s!    E5=(eLr"   )r   r   r=   bisectr   r   utilsr   r   r   r
   rd   r   rb   r"   r    <module>r      s<         "  )f fRN6 N6br"   