
    daf<                         d dl Z 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Z	dZ
 G d d      Z G d	 d
ej                        Zedk(  r ej                          yy)    N)dedent)captured_stdout)captured_stderri@B    c                   0    e Zd ZdZddZd Zd Zd Zd Zy)		FakeTimerg      E@c                 D    d| _         d| _        || _        | t        _        y )Nr   )countsetup_callsseconds_per_incrementtimeit_fake_timer)selfr   s     +/root/Python-3.12.4/Lib/test/test_timeit.py__init__zFakeTimer.__init__   s!    
#8"!    c                 N    | j                   | j                  | j                  z  z   S N)	BASE_TIMEr
   r   r   s    r   __call__zFakeTimer.__call__   s     ~~

T-G-G GGGr   c                 .    | xj                   dz  c_         y N   )r
   r   s    r   inczFakeTimer.inc!   s    

a
r   c                 .    | xj                   dz  c_         y r   )r   r   s    r   setupzFakeTimer.setup$   s    Ar   c                     || _         | S )z3Records 'timer' and returns self as callable timer.)saved_timer)r   timers     r   
wrap_timerzFakeTimer.wrap_timer'   s     r   N)      ?)	__name__
__module____qualname__r   r   r   r   r   r!    r   r   r   r      s!    I"Hr   r   c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	Zd
Zd Zd Zd8dZd Zd Zd Zd Zd Zd Zd Zd8dZd Zd Zd Zd Zd Zd Zd Zd Zd Z d  Z!d!Z"d9d"Z#d# Z$d$ Z%d% Z&d& Z'd' Z(d( Z)d) Z*d* Z+d+ Z, e-j\                  e/j`                  jb                  d,k\  d-      d.        Z2d/ Z3d0 Z4d1 Z5d2 Z6d3 Z7d:d4Z8d5 Z9d6 Z:d7 Z;y);
TestTimeitc                 0    	 t         `y # t        $ r Y y w xY wr   )r   r   AttributeErrorr   s    r   tearDownzTestTimeit.tearDown.   s    	" 		s   	 	c                     | j                  t        j                  dd      d       | j                  t        j                  dd      d       y )N r      assertEqualr   reindentr   s    r   test_reindent_emptyzTestTimeit.test_reindent_empty4   s8    Q/4Q/4r   c                     | j                  t        j                  dd      d       | j                  t        j                  dd      d       y )Npassr   r.   r/   r   s    r   test_reindent_singlezTestTimeit.test_reindent_single8   s8    3V<3V<r   c                     | j                  t        j                  dd      d       | j                  t        j                  dd      d       y )Nz

r   r.   z

    
    r/   r   s    r   test_reindent_multi_emptyz$TestTimeit.test_reindent_multi_empty<   s8    3V<3^Dr   c                     | j                  t        j                  dd      d       | j                  t        j                  dd      d       y )Nzprint()
pass
breakr   r.   zprint()
    pass
    breakr/   r   s    r   test_reindent_multizTestTimeit.test_reindent_multi@   sF    "A'"	$ 	"A'*	,r   c                    | j                  t        t        j                  d        | j                  t        t        j                  d       | j                  t        t        j                  d       | j                  t        t        j                  d       | j                  t        t        j                  d       | j                  t        t        j                  d       | j                  t        t        j                  d       | j                  t        t        j                  d       | j                  t        t        j                  d	d
       y )Nstmtreturnyieldyield from ()breakcontinuefrom timeit import *  passzwhile False:
  passz  break)r   r<   assertRaises
ValueErrorr   TimerSyntaxErrorr   s    r   test_timer_invalid_stmtz"TestTimeit.test_timer_invalid_stmtH   s    *fll>+v||(C+v||'B+v||/J+v||'B+v||*E+v||:PQ+v||(C+v|| 6Y 	 	Hr   c                 d   | j                  t        t        j                  d        | j                  t        t        j                  d       | j                  t        t        j                  d       | j                  t        t        j                  d       | j                  t        t        j                  d       | j                  t        t        j                  d       | j                  t        t        j                  d       | j                  t        t        j                  d       y )	N)r   r=   r>   r?   r@   rA   rB   rC   rD   r   s    r   test_timer_invalid_setupz#TestTimeit.test_timer_invalid_setupT   s    *fll$?+v||8D+v||7C+v||?K+v||7C+v||:F+v||;QR+v||8Dr   c                     t        j                  d       t        j                  d       t        j                  d       y )Nr-   r;   z 
	z	# comment)r   rG   r   s    r   test_timer_empty_stmtz TestTimeit.test_timer_empty_stmt^   s&    ")$+&r   z(import timeit
timeit._fake_timer.setup()z&import timeit
timeit._fake_timer.inc()c                 8    | j                   j                          y r   )
fake_timerr   r   s    r   fake_callable_setupzTestTimeit.fake_callable_setupf   s    r   c                 8    | j                   j                          y r   )rO   r   r   s    r   fake_callable_stmtzTestTimeit.fake_callable_stmti   s    r   Nc                 h   t               | _        t        j                  ||| j                  |      }i }|t        }n||d<    |j                  di |}| j                  | j                  j                  d       | j                  | j                  j                  |       | j                  ||       y )N)r<   r   r    globalsnumberr   r&   )r   rO   r   rG   DEFAULT_NUMBERr0   r   r
   )r   r<   r   rU   rT   tkwargs
delta_times           r   r   zTestTimeit.timeitl   s    #+LLd%t!>#F%F8QXX''
44a8..7V,r   c                 T    | j                  | j                  | j                  d       y Nr   rU   r   	fake_stmt
fake_setupr   s    r   test_timeit_zero_itersz!TestTimeit.test_timeit_zero_iters~       DNNDOOA>r   c                 T    | j                  | j                  | j                  d       y N   r\   r]   r   s    r   test_timeit_few_itersz TestTimeit.test_timeit_few_iters   ra   r   c                 T    | j                  | j                  | j                  d       y rc   )r   rR   r_   r   s    r   test_timeit_callable_stmtz$TestTimeit.test_timeit_callable_stmt   s    D++T__QGr   c                 T    | j                  | j                  | j                  d       y rc   )r   r^   rP   r   s    r   test_timeit_callable_setupz%TestTimeit.test_timeit_callable_setup   s    DNND$<$<QGr   c                 T    | j                  | j                  | j                  d       y rc   )r   rR   rP   r   s    r   #test_timeit_callable_stmt_and_setupz.TestTimeit.test_timeit_callable_stmt_and_setup   s&    D++(( 	 	4r   c                     t        j                   | j                  | j                  dt                     }| j	                  |d       y )Nr   rU   r    )r   r^   r_   r   r0   )r   rY   s     r   test_timeit_function_zero_itersz*TestTimeit.test_timeit_function_zero_iters   s3    ]]4>>4??1k#
Q'r   c                 2   t               at        j                  dt              }| j	                  t
        |j                  d       t        j                  dt        t               d       t               }t        j                  d|t               d       y )Nz_global_timer.inc())r<   r    rd   r\   )r<   r    rT   rU   zlocal_timer.inc())r   _global_timerr   rG   rE   	NameErrorrT   locals)r   rW   local_timers      r   test_timeit_globals_argsz#TestTimeit.test_timeit_globals_args   sj    !LL3=I)QXXa80%i	3k.k$hq	2r   c                    t               | _        t        j                  ||| j                        }i }|t        }n||d<   |t
        }n||d<    |j                  di |}| j                  | j                  j                  |       | j                  | j                  j                  ||z         | j                  ||t        |      gz         y )Nr<   r   r    repeatrU   r&   )r   rO   r   rG   DEFAULT_REPEATrV   rw   r0   r   r
   float)r   r<   r   rw   rU   rW   rX   delta_timess           r   rw   zTestTimeit.repeat   s    #+LLd%tG>#F%F8>#F%F8ahh((44f=..@ff&>?r   c                 T    | j                  | j                  | j                  d       y )Nr   )rw   rw   r^   r_   r   s    r   test_repeat_zero_repsz TestTimeit.test_repeat_zero_reps   ra   r   c                 T    | j                  | j                  | j                  d       y r[   r|   r   s    r   test_repeat_zero_itersz!TestTimeit.test_repeat_zero_iters   ra   r   c                 V    | j                  | j                  | j                  dd       y Nrd   r   )rw   rU   r|   r   s    r   test_repeat_few_reps_and_itersz)TestTimeit.test_repeat_few_reps_and_iters   s    DNNDOOAaHr   c                 V    | j                  | j                  | j                  dd       y r   )rw   rR   r_   r   s    r   test_repeat_callable_stmtz$TestTimeit.test_repeat_callable_stmt   s&    D++T__ 	 	$r   c                 V    | j                  | j                  | j                  dd       y r   )rw   r^   rP   r   s    r   test_repeat_callable_setupz%TestTimeit.test_repeat_callable_setup   s&    DNND$<$< 	 	$r   c                 V    | j                  | j                  | j                  dd       y r   )rw   rR   rP   r   s    r   #test_repeat_callable_stmt_and_setupz.TestTimeit.test_repeat_callable_stmt_and_setup   s(    D++T-E-E 	 	$r   c                     t        j                  | j                  | j                  dt	                     }| j                  |g        y )Nr   )rw   r    )r   rw   r^   r_   r   r0   r   rz   s     r   test_repeat_function_zero_repsz)TestTimeit.test_repeat_function_zero_reps   s3    mmDNNDOOAk#b)r   c                     t        j                  | j                  | j                  dt	                     }| j                  |t        dgz         y )Nr   rm   g        )r   rw   r^   r_   r   r0   rx   r   s     r   test_repeat_function_zero_itersz*TestTimeit.test_repeat_function_zero_iters   s:    mmDNNDOOAk#nu&<=r   c                     |j                         }| j                  t        |      d       | j                  |d   j	                  d             | j                  |d   j	                  |             y )N   r   	Traceback)
splitlinesassertGreaterlen
assertTrue
startswith)r   
exc_stringexpected_exc_name	exc_liness       r   assert_exc_stringzTestTimeit.assert_exc_string   s[    ))+	3y>1-	!//<=	"001BCDr   c                     t        j                         }t        j                  d      }	 |j                          | j                  |j                         d       y #  |j	                  |       Y 6xY w)N1/0ZeroDivisionError)ioStringIOr   rG   	print_excr   getvalue)r   srW   s      r   test_print_exczTestTimeit.test_print_exc   sT    KKMLL	HHJ 	qzz|-@A	KKNs   A A1z"1 loop, best of 5: 1 sec per loop
c                 Z   |t        |      }|g }n|d d  }|j                  | j                         t        j                  d d  }t               5 }t        j                  ||j                         d d d        |d d  t        j                  d d  j                         S # 1 sw Y   /xY w)Nr   )args_wrap_timer)
r   appendr^   syspathr   r   mainr!   r   )r   r   switchesr    r   orig_sys_pathr   s          r   run_mainzTestTimeit.run_main   s    =4IJEDA;DDNN# 	A!KKTu/?/?@	A#A&zz|	A 	As   "B!!B*c                 `    | j                  dg      }| j                  |t        d             y )Nz--bad-switchr   zk            option --bad-switch not recognized
            use -h/--help for command line help
            r   r0   r   r   r   s     r   test_main_bad_switchzTestTimeit.test_main_bad_switch   s1    MMN#3M4F $  	r   c                 L    | j                  d      }| j                  |d       y )Ng      @r   z$1 loop, best of 5: 5.5 sec per loop
r   r0   r   s     r   test_main_secondszTestTimeit.test_main_seconds  s#    MMM4CDr   c                 L    | j                  d      }| j                  |d       y )NgI+v?r   z'50 loops, best of 5: 5.5 msec per loop
r   r   s     r   test_main_millisecondsz!TestTimeit.test_main_milliseconds	  s#    MMM7FGr   c                 P    | j                  ddg      }| j                  |d       y )Ngh㈵>z-n100r   r   z(100 loops, best of 5: 2.5 usec per loop
r   r   s     r   test_main_microsecondsz!TestTimeit.test_main_microseconds  s'    MM	WIMNGHr   c                 P    | j                  ddg      }| j                  |d       y )N       @-n35r   $35 loops, best of 5: 2 sec per loop
r   r   s     r   test_main_fixed_itersz TestTimeit.test_main_fixed_iters  s'    MMvhMGCDr   c                 f    | j                  dg d      }| j                  |dt        z  dz          y )Nr   )r   -szprint("CustomSetup")r   CustomSetup
r   r   r0   rx   r   s     r   test_main_setupzTestTimeit.test_main_setup  s:    MM?  AOn<78 	9r   c                 f    | j                  dg d      }| j                  |dt        z  dz          y )Nr   )r   r   za = "CustomSetup"r   zprint(a)r   r   r   r   r   s     r   test_main_multiple_setupsz$TestTimeit.test_main_multiple_setups  s:    MMN  POn<78 	9r   c                 P    | j                  ddg      }| j                  |d       y )N      N@z-r9r   z#1 loop, best of 9: 60 sec per loop
r   r   s     r   test_main_fixed_repszTestTimeit.test_main_fixed_reps!  s'    MMwMGBCr   c                 P    | j                  ddg      }| j                  |d       y )Nr   z-r-5r   z#1 loop, best of 1: 60 sec per loop
r   r   s     r   test_main_negative_repsz"TestTimeit.test_main_negative_reps%  s'    MMxMHBCr   r   zneed __doc__c                 p    | j                  dg      }| j                  |t        j                  dz          y )Nz-hr    )r   r0   r   __doc__r   s     r   test_main_helpzTestTimeit.test_main_help)  s/    MMD6M* 	FNNS01r   c                 `    | j                  dg      }| j                  |t        d             y )Nz-vr   z                1 loop -> 1 secs

                raw times: 1 sec, 1 sec, 1 sec, 1 sec, 1 sec

                1 loop, best of 5: 1 sec per loop
            r   r   s     r   test_main_verbosezTestTimeit.test_main_verbose0  s0    MMD6M*F $  	r   c                 b    | j                  ddg      }| j                  |t        d             y )NgiUMu>z-vvr   a                  1 loop -> 3e-05 secs
                2 loops -> 6e-05 secs
                5 loops -> 0.00015 secs
                10 loops -> 0.0003 secs
                20 loops -> 0.0006 secs
                50 loops -> 0.0015 secs
                100 loops -> 0.003 secs
                200 loops -> 0.006 secs
                500 loops -> 0.015 secs
                1000 loops -> 0.03 secs
                2000 loops -> 0.06 secs
                5000 loops -> 0.15 secs
                10000 loops -> 0.3 secs

                raw times: 300 msec, 300 msec, 300 msec, 300 msec, 300 msec

                10000 loops, best of 5: 30 usec per loop
            r   r   s     r   test_main_very_verbosez!TestTimeit.test_main_very_verbose:  s2    MM	UGMLF $  	r   c                    | j                  dddg      }| j                  |d       | j                  dddg      }| j                  |d       | j                  dddg      }| j                  |d	       t               5 }| j                  ddd
g      }d d d        | j                  j                         d       y # 1 sw Y   *xY w)Ng~jth?z-usecr   z)100 loops, best of 5: 0.003 sec per loop
msecz&100 loops, best of 5: 3 msec per loop
usecz*100 loops, best of 5: 3e+03 usec per loop
parsecz;Unrecognized unit. Please select nsec, usec, msec, or sec.
)r   r0   r   r   )r   unit_sec	unit_msec	unit_usecerror_stringioinvalids         r   test_main_with_time_unitz#TestTimeit.test_main_with_time_unitP  s    ==u ! (<	>MM " )	9	;MM " )	=	?  	/.mm%"H- $ /G	/ 	002R	T	/ 	/s    B??Cc                     t               5 }| j                  dg      }d d d        | j                  j                         d       y # 1 sw Y   *xY w)Nr   r   r   r   r   r   r   r   r   r   s      r   test_main_exceptionzTestTimeit.test_main_exceptiond  sK     	0.w/A	0~668:MN	0 	0s   AAc                     t               5 }| j                  ddg      }d d d        | j                  j                         d       y # 1 sw Y   *xY w)Nz-n1r   r   r   r   r   s      r   test_main_exception_fixed_repsz)TestTimeit.test_main_exception_fixed_repsi  sM     	7.u~6A	7~668:MN	7 	7s   A		Ac                     t        |      }t        j                  | j                  | j                  |      }|j                  |      S )Nr   rv   )r   r   rG   r^   r_   	autorange)r   r   callbackr    rW   s        r   r   zTestTimeit.autorangen  s6    0EFLLdnnDOO5Q{{8$$r   c                 r    | j                         \  }}| j                  |d       | j                  |d       y )N       @?r   r0   r   	num_loops
time_takens      r   test_autorangezTestTimeit.test_autoranges  s3     $ 0	:C(X.r   c                 v    | j                  d      \  }}| j                  |d       | j                  |d       y )Nr"   r   r   r   r   s      r   test_autorange_secondz TestTimeit.test_autorange_secondx  s7     $S I	:A&S)r   c                     d }t               5 }| j                  |      \  }}d d d        | j                  d       | j                  d       d}| j                  j                         |       y # 1 sw Y   PxY w)Nc                 :    t        dj                  | |             y )Nz	{} {:.3f})printformat)abs     r   r   z9TestTimeit.test_autorange_with_callback.<locals>.callback~  s    +$$Q*+r   )r   r   r   zQ1 0.001
2 0.002
5 0.005
10 0.010
20 0.020
50 0.049
100 0.098
200 0.195
500 0.488
)r   r   r0   r   )r   r   r   r   r   expecteds         r   test_autorange_with_callbackz'TestTimeit.test_autorange_with_callback}  s|    	, 	F!$(NNHN$E!Iz	FC(X." 	x0	F 	Fs   A33A<)NN)r"   NN)g      P?N)<r#   r$   r%   r+   r2   r5   r7   r9   rI   rK   rM   r_   r^   rP   rR   r   r`   re   rg   ri   rk   rn   rt   rw   r}   r   r   r   r   r   r   r   r   r   MAIN_DEFAULT_OUTPUTr   r   r   r   r   r   r   r   r   r   unittestskipIfr   flagsoptimizer   r   r   r   r   r   r   r   r   r   r&   r   r   r(   r(   ,   sI   5=E,
HE'
 =J9I -$??HH4(
	2@*??I$$$*
>
EB @EHIE99DD X__SYY''1,n=2 >2,T(O
O
%
/
*
1r   r(   __main__)r   r   r   r   textwrapr   test.supportr   r   rV   rx   r   TestCaser(   r#   r   r&   r   r   <module>r     sa      
 	  ( (   ,a1"" a1H zHMMO r   