
    =Og4                         	 d dl Z d dlZd dlZd dlZg dZdZdZdZej        Z	e
ZdZd Z G d d	          Zd
d
e	edfdZd
d
e	eedfdZddddZedk    r ej         e                       dS dS )    N)Timertimeitrepeatdefault_timerz<timeit-src>i@B    z
def inner(_it, _timer{init}):
    {setup}
    _t0 = _timer()
    for _i in _it:
        {stmt}
        pass
    _t1 = _timer()
    return _t1 - _t0
c                 <    	 |                      ddd|z  z             S )N
 )replace)srcindents     /usr/lib64/python3.11/timeit.pyreindentr   Q   s"    4;;tTC&L0111    c                   F    e Zd Z	 ddedfdZddZefdZeefdZ	ddZ
dS )	r   passNc                    	 || _         i }|t                      n|}d}t          |t                    r,t	          |t
          d           |dz   }t          |d          }n-t          |          r||d<   |dz  }d}d}nt          d          t          |t                    r*t	          ||z   t
          d           t          |d	          }n+t          |          r||d
<   |dz  }d}nt          d          t          
                    |||          }	|	| _        t	          |	t
          d          }
t          |
||           |d         | _        d S )N execr	      _setupz, _setup=_setupz_setup()z&setup is neither a string nor callable   _stmtz, _stmt=_stmtz_stmt()z%stmt is neither a string nor callable)stmtsetupinitinner)timer_globals
isinstancestrcompiledummy_src_namer   callable
ValueErrortemplateformatr   r   r   )selfr   r   r   globalslocal_ns	global_nsr   
stmtprefixr   codes              r   __init__zTimer.__init__h   sj   1
")/HJJJw	eS!! 	GE>6222JUA&&EEe__ 	G!&HX%%DJEEEFFFdC   		FJ%~v>>>D!$$DDd^^ 	F $HWO#DDDDEEEoo4u4o@@sNF33T9h'''g&


r   c                     	 dd l }dd l}| j        Bt          | j                  d | j                            d          t
          f|j        t
          <   |                    |           d S )Nr   r	   file)	linecache	tracebackr   lensplitr#   cache	print_exc)r(   r1   r2   r3   s       r   r7   zTimer.print_exc   sx    	  	$#######8/248}}/3/3x~~d/C/C/=/?ION+ 	&&&&&r   c                    	 t          j        d |          }t          j                    }t          j                     	 |                     || j                  }|rt          j                     n# |rt          j                     w w xY w|S N)	itertoolsr   gc	isenableddisabler   r   enable)r(   numberitgcoldtimings        r   r   zTimer.timeit   s    	 dF++

	ZZDJ//F 	  	s   A/ /Bc                     	 g }t          |          D ],}|                     |          }|                    |           -|S r9   )ranger   append)r(   r   r?   rits         r   r   zTimer.repeat   sJ    	& v 	 	AF##AHHQKKKKr   c                     	 d}	 dD ]6}||z  }|                      |          }|r |||           |dk    r||fc S 7|dz  }?)N   T)rJ      r   g?
   )r   )r(   callbackrG   jr?   
time_takens         r   	autorangezTimer.autorange   s    	 	 0 0Q![[00
 1HVZ000$$"J//// %GA	r   r9   )__name__
__module____qualname__r   r.   r7   default_numberr   default_repeatr   rP    r   r   r   r   V   s        " #&!' !' !' !'F' ' ' '6 +    ( +>    4     r   r   r   c                 N    	 t          | |||                              |          S r9   )r   r   )r   r   r   r?   r)   s        r   r   r      s'    MueW--44V<<<r   c                 P    	 t          | |||                              ||          S r9   )r   r   )r   r   r   r   r?   r)   s         r   r   r      s)    MueW--44VVDDDr   )_wrap_timerc          	      n   	 | t           j        dd          } dd l}	 |                    | dg d          \  }} n6# |j        $ r)}t	          |           t	          d           Y d }~dS d }~ww xY wt
          }d                    |           pd}dg }t          }d}	d d	d
dddd|D ]\  }
}|
dv rt          |          |
dv r|	                    |           |
dv r%|v r|nt	          dt           j
                    dS |
dv rt          |          }|dk    rd}|
dv rt          j        }|
dv r|	rdz  |	dz  }	|
dv rt	          t          d            dS d                    |          pd}dd l}t           j                            d|j                   | ||          }t%          |||          }dk    rOd }|	rfd}	 |                    |          \  }n#  |                                 Y dS xY w|	rt	                       	 |                    |          }n#  |                                 Y dS xY wfd}|	rAt	          dd                    t-          ||                    z             t	                       fd|D             }t/          |          }t	          ddk    rd nd!| ||          fz             t/          |          }t1          |          }||d"z  k    r:dd l}|                    d# ||          d$ ||          d%t6          d!d           d S )&NrJ   r   zn:u:s:r:tcpvh)	znumber=zsetup=zrepeat=timeclockprocessverbosezunit=helpz#use -h/--help for command line helprK   r	   r   g&.>gư>gMbP?g      ?)nsecusecmsecsec   )z-nz--number)z-sz--setup)z-uz--unitz:Unrecognized unit. Please select nsec, usec, msec, or sec.r0   )z-rz--repeat)z-pz	--process)z-vz	--verbose)z-hz--helpr
   )endc                 l    d}| dk    }t          |                    | |rdnd|                     d S )Nz%{num} loop{s} -> {secs:.{prec}g} secsrJ   sr   )numrg   secsprec)printr'   )r?   rO   msgplural	precisions       r   rM   zmain.<locals>.callbackE  s[    = A+cjjVf/Dss"&0y ! B B C C C C Cr   c                     }|	|         }nDd                                  D             }|                    d           |D ]\  }}| |k    r nd| |z  |fz  S )Nc                     g | ]	\  }}||f
S rV   rV   ).0unitscales      r   
<listcomp>z-main.<locals>.format_time.<locals>.<listcomp>_  s     EEEeudmEEEr   T)reversez%.*g %s)itemssort)dtrr   rs   scalesrn   	time_unitunitss       r   format_timezmain.<locals>.format_timeY  s    $KEEEEu{{}}EEEFKKK%%%%  t;;E  IrEz4888r   zraw times: %sz, c                     g | ]}|z  S rV   rV   )rq   rx   r?   s     r   rt   zmain.<locals>.<listcomp>j  s    111rrF{111r   z"%d loop%s, best of %d: %s per looprg   r   r   z8The test results are likely unreliable. The worst time (z6) was more than four times slower than the best time (z).)sysargvgetopterrorrk   r   joinrU   intrE   stderrr[   process_time__doc__ospathinsertcurdirr   rP   r7   r   mapminmaxwarningswarn_explicitUserWarning)argsrY   r   optserrr   r   r   r   r^   oar   rH   rM   _raw_timingsr|   timingsbestworstr   r?   rn   rz   r{   s                         @@@@r   mainr      sf     |x|MMM]]4$@ $@ $@A A
dd <   c


3444qqqqq
 E99T??$fDFEFGI4cBBEI  1"""VVF!!!LLOOO   Ezz		R:' ' ' 'qq"""VVF{{###%E### Q	qLG   's####11 ! IIe&E
 IIIHOOAry!!!E""dE5!!A{{ 	CC C C C C
	H--IFAA	KKMMM11 	GGGhhvv..	qq9 9 9 9 9 9 9  o		#k;*G*G H HHIII1111[111Gw<<D	
.FaKKSSR[[&&(( ) ) ) w<<DLLEq #.+e"4"4"4"4kk$6G6G6G6G I  +B		3 	3 	3
 4s-   > 
A1A,,A1G& &G?H* *I__main__r9   )r;   r:   r~   r[   __all__r#   rT   rU   perf_counterr   r)   r   r&   r   r   r   r   r   rQ   exitrV   r   r   <module>r      sF  /b 
			     



 
8
8
8!
	2 2 2
Q Q Q Q Q Q Q Qh fM $= = = = fM E E E ED4 D D D D DN zCHTTVV r   