
    z%i4                         	 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              yy)    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                 4    	 | j                  ddd|z  z         S )N
 )replace)srcindents     :/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/timeit.pyreindentr   Q   s    4;;tTC&L011    c                   D    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
y)	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        j                  |||      }	|	| _        t	        |	t
        d      }
t        |
||       |d   | _        y )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   s   1
")/HJw	eS!E>62JUA&Ee_!&HX%%DJEEFFdC J%~v>D!$Dd^ $HWO#DDDEEoo4u4o@sNF3T9h'g&
r   c                     	 dd l }dd l}| j                  Gt        | j                        d | j                  j	                  d      t
        f|j                  t
        <   |j                  |       y )Nr   r	   file)	linecache	tracebackr   lensplitr#   cache	print_exc)r(   r1   r2   r3   s       r   r7   zTimer.print_exc   sZ    	  	$88/2488}/3/3xx~~d/C/=/?IOON+ 	&r   c                 "   	 t        j                  d |      }t        j                         }t        j                          	 | j                  || j                        }|rt        j                          |S # |rt        j                          w w xY wN)	itertoolsr   gc	isenableddisabler   r   enable)r(   numberitgcoldtimings        r   r   zTimer.timeit   sn    	 dF+


	ZZDJJ/F		 		 s   A5 5Bc                 p    	 g }t        |      D ]$  }| j                  |      }|j                  |       & |S r9   )ranger   append)r(   r   r?   rits         r   r   zTimer.repeat   sA    	& v 	AF#AHHQK	 r   c                 |    	 d}	 dD ].  }||z  }| j                  |      }|r	 |||       |dk\  s*||fc S  |dz  }9)N   )rJ      r   g?
   )r   )r(   callbackrG   jr?   
time_takens         r   	autorangezTimer.autorange   sg    	  0Q![[0
VZ0$"J//0 GA r   r9   )__name__
__module____qualname__r   r.   r7   default_numberr   default_repeatr   rP    r   r   r   r   V   s9    " #&!'F'6 + ( +> 4r   r   r   c                 >    	 t        | |||      j                  |      S r9   )r   r   )r   r   r   r?   r)   s        r   r   r      s!    MueW-44V<<r   c                 @    	 t        | |||      j                  ||      S r9   )r   r   )r   r   r   r   r?   r)   s         r   r   r      s#    MueW-44VVDDr   )_wrap_timerc          	         	 | t         j                  dd  } dd l}	 |j                  | dg d      \  }} t
        }dj                  |       xs d}d}g }t        }	d}
d d	d
dddd|D ]  \  }}|dv rt        |      }|dv r|j                  |       |dv r$|v r|nt	        dt         j                          y|dv rt        |      }	|	dk  rd}	|dv rt        j                  }|dv r|
rdz  |
dz  }
|dv st	        t        d        y dj                  |      xs d}dd l}t         j                  j!                  d|j"                         | ||      }t%        |||      }|dk(  r*d }|
rfd}	 |j'                  |      \  }}|
r
t	                	 |j+                  |	|      }fd}|
r1t	        ddj                  t-        ||            z         t	                |D cg c]  }||z  	 }}t/        |      }t	        d||dk7  rdnd |	 ||      fz         t/        |      }t1        |      }||d!z  k\  r/dd l}|j5                  d" ||      d# ||      d$t6        d d       y # |j                  $ r }t	        |       t	        d       Y d }~yd }~ww xY w#  |j)                          Y yxY w#  |j)                          Y yxY wc c}w )%NrJ   r   zn:u:s:r:pvh)znumber=zsetup=zrepeat=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                 X    d}| dk7  }t        |j                  | |rdnd|             y )Nz%{num} loop{s} -> {secs:.{prec}g} secsrJ   sr   )numre   secsprec)printr'   )r?   rO   msgplural	precisions       r   rM   zmain.<locals>.callbackD  s8    = A+cjjVfs"&0y ! B Cr   c                     }||   }nGj                         D cg c]	  \  }}||f }}}|j                  d       |D ]  \  }}| |k\  s n d| z  fz  S c c}}w )NT)reversez%.*g %s)itemssort)dtunitscalescalesrl   	time_unitunitss       r   format_timezmain.<locals>.format_timeX  s    $KE7<{{}EeudmEFEKKK%% t; IrEz4888 Fs   Azraw times: %sz, z"%d loop%s, best of %d: %s per loopre   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errorri   r   joinrU   intrE   stderrtimeprocess_time__doc__ospathinsertcurdirr   rP   r7   r   mapminmaxwarningswarn_explicitUserWarning)argsrY   rz   optserrr   r   r?   r   r   r\   oar   rH   rM   _raw_timingsrw   rq   timingsbestworstr   rl   ru   rv   s                           @@@r   mainr      s     |xx|]]4$KL
d E99T?$fDFEFGI4cBEI 1""VF!!LLO  Ez	R::'""VF{##%%E##Q	qLG  's#12 IIe&E
 HHOOAryy!E"dE5!A{C
	H-IFA
 Ghhvv.
9 o		#k;*G HHI%01rrF{1G1w<D	
.FaKSR[&(( ) w<DLEq #.e"4k$6G I  +B		3
 W << c
34z	KKM	& 2s5   I0 9J" J9 *K0J?JJ"J69K__main__r9   )r;   r:   rx   r   __all__r#   rT   rU   perf_counterr   r)   r   r&   r   r   r   r   r   rQ   exitrV   r   r   <module>r      s   /b 
  
 
8!!
	2
Q Qh fM $= fM EC4 CL zCHHTV r   