
    0hh<                         S SK r S SKrS SKrS SKrS SKJr  S SKJr  S SKJr  Sr	Sr
 " S S5      r " S	 S
\R                  5      r\S:X  a  \R                  " 5         gg)    N)dedent)captured_stdout)captured_stderri@B    c                   :    \ rS rSrSrS
S jrS rS rS rS r	Sr
g	)	FakeTimer   g      E@c                 B    SU l         SU l        Xl        U [        l        g )Nr   )countsetup_callsseconds_per_incrementtimeit_fake_timer)selfr   s     9/opt/python-3.13.8/usr/lib/python3.13/test/test_timeit.py__init__FakeTimer.__init__   s    
#8"!    c                 N    U R                   U R                  U R                  -  -   $ N)	BASE_TIMEr   r   r   s    r   __call__FakeTimer.__call__   s     ~~

T-G-G GGGr   c                 .    U =R                   S-  sl         g N   )r   r   s    r   incFakeTimer.inc!   s    

a
r   c                 .    U =R                   S-  sl         g r   )r   r   s    r   setupFakeTimer.setup$   s    Ar   c                     Xl         U $ )z3Records 'timer' and returns self as callable timer.)saved_timer)r   timers     r   
wrap_timerFakeTimer.wrap_timer'   s     r   )r   r$   r   r   N)      ?)__name__
__module____qualname____firstlineno__r   r   r   r   r!   r&   __static_attributes__ r   r   r   r      s!    I"Hr   r   c                      \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rSrS rS rS:S jrS rS rS rS rS rS rS rS:S jrS rS rS rS rS rS rS rS r S  r!S! r"S"r#S;S# jr$S$ r%S% r&S& r'S' r(S( r)S) r*S* r+S+ r,S, r-\.R^                  " \0Rb                  Rd                  S-:  S.5      S/ 5       r3S0 r4S1 r5S2 r6S3 r7S4 r8S<S5 jr9S6 r:S7 r;S8 r<S9r=g)=
TestTimeit,   c                 2     [         ?g ! [         a     g f = fr   )r   r   AttributeErrorr   s    r   tearDownTestTimeit.tearDown.   s    	" 		s   	 
c                     U R                  [        R                  " SS5      S5        U R                  [        R                  " SS5      S5        g )N r      assertEqualr   reindentr   s    r   test_reindent_emptyTestTimeit.test_reindent_empty4   s8    Q/4Q/4r   c                     U R                  [        R                  " SS5      S5        U R                  [        R                  " SS5      S5        g )Npassr   r8   r9   r   s    r   test_reindent_singleTestTimeit.test_reindent_single8   s8    3V<3V<r   c                     U R                  [        R                  " SS5      S5        U R                  [        R                  " SS5      S5        g )Nz

r   r8   z

    
    r9   r   s    r   test_reindent_multi_empty$TestTimeit.test_reindent_multi_empty<   s8    3V<3^Dr   c                     U R                  [        R                  " SS5      S5        U R                  [        R                  " SS5      S5        g )Nzprint()
pass
breakr   r8   zprint()
    pass
    breakr9   r   s    r   test_reindent_multiTestTimeit.test_reindent_multi@   sF    "A'"	$ 	"A'*	,r   c                 |   U R                  [        [        R                  S S9  U R                  [        [        R                  SS9  U R                  [        [        R                  SS9  U R                  [        [        R                  SS9  U R                  [        [        R                  SS9  U R                  [        [        R                  SS9  U R                  [        [        R                  SS9  U R                  [        [        R                  SS9  U R                  [        [        R                  S	S
S9  g )Nstmtreturnyieldyield from ()breakcontinuefrom timeit import *  passzwhile False:
  passz  break)r!   rJ   assertRaises
ValueErrorr   TimerSyntaxErrorr   s    r   test_timer_invalid_stmt"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                 4   U R                  [        [        R                  S S9  U R                  [        [        R                  SS9  U R                  [        [        R                  SS9  U R                  [        [        R                  SS9  U R                  [        [        R                  SS9  U R                  [        [        R                  SS9  U R                  [        [        R                  SS9  U R                  [        [        R                  SS9  g )	N)r!   rK   rL   rM   rN   rO   rP   rQ   rR   r   s    r   test_timer_invalid_setup#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                 |    [         R                  " SS9  [         R                  " SS9  [         R                  " SS9  g )Nr7   rI   z 
	z	# comment)r   rU   r   s    r   test_timer_empty_stmt TestTimeit.test_timer_empty_stmt^   s&    ")$+&r   z(import timeit
timeit._fake_timer.setup()z&import timeit
timeit._fake_timer.inc()c                 8    U R                   R                  5         g r   )
fake_timerr!   r   s    r   fake_callable_setupTestTimeit.fake_callable_setupf   s    r   c                 8    U R                   R                  5         g r   )r`   r   r   s    r   fake_callable_stmtTestTimeit.fake_callable_stmti   s    r   Nc                 `   [        5       U l        [        R                  " XU R                  US9n0 nUc  [        nOX6S'   UR                  " S0 UD6nU R                  U R                  R                  S5        U R                  U R                  R                  U5        U R                  Xs5        g )N)rJ   r!   r%   globalsnumberr   r.   )r   r`   r   rU   DEFAULT_NUMBERr:   r   r   )r   rJ   r!   rh   rg   tkwargs
delta_times           r   r   TestTimeit.timeitl   s    #+LLdt!>#F%8XX''
44a8..7,r   c                 N    U R                  U R                  U R                  SS9  g Nr   rh   r   	fake_stmt
fake_setupr   s    r   test_timeit_zero_iters!TestTimeit.test_timeit_zero_iters~       DNNDOOA>r   c                 N    U R                  U R                  U R                  SS9  g N   rp   rq   r   s    r   test_timeit_few_iters TestTimeit.test_timeit_few_iters   rv   r   c                 N    U R                  U R                  U R                  SS9  g rx   )r   rd   rs   r   s    r   test_timeit_callable_stmt$TestTimeit.test_timeit_callable_stmt   s    D++T__QGr   c                 N    U R                  U R                  U R                  SS9  g rx   )r   rr   ra   r   s    r   test_timeit_callable_setup%TestTimeit.test_timeit_callable_setup   s    DNND$<$<QGr   c                 N    U R                  U R                  U R                  SS9  g rx   )r   rd   ra   r   s    r   #test_timeit_callable_stmt_and_setup.TestTimeit.test_timeit_callable_stmt_and_setup   s&    D++(( 	 	4r   c                     [         R                   " U R                  U R                  S[        5       S9nU R	                  US5        g )Nr   rh   r%   )r   rr   rs   r   r:   )r   rl   s     r   test_timeit_function_zero_iters*TestTimeit.test_timeit_function_zero_iters   s3    ]]4>>4??1k#
Q'r   c                     [        5       q[        R                  " S[        S9nU R	                  [
        UR                  SS9  [        R                  " S[        [        5       SS9  [        5       n[        R                  " SU[        5       SS9  g )Nz_global_timer.inc())rJ   r%   ry   rp   )rJ   r%   rg   rh   zlocal_timer.inc())r   _global_timerr   rU   rS   	NameErrorrg   locals)r   rj   local_timers      r   test_timeit_globals_args#TestTimeit.test_timeit_globals_args   sj    !LL3=I)QXXa80%i	3k.k$hq	2r   c                    [        5       U l        [        R                  " XU R                  S9n0 nUc  [        nOX6S'   Uc  [
        nOXFS'   UR                  " S0 UD6nU R                  U R                  R                  U5        U R                  U R                  R                  X4-  5        U R                  Xs[        U5      /-  5        g )NrJ   r!   r%   repeatrh   r.   )r   r`   r   rU   DEFAULT_REPEATri   r   r:   r   r   float)r   rJ   r!   r   rh   rj   rk   delta_timess           r   r   TestTimeit.repeat   s    #+LLdtG>#F%8>#F%8hh((44f=..@f&>?r   c                 N    U R                  U R                  U R                  SS9  g )Nr   )r   r   rr   rs   r   s    r   test_repeat_zero_reps TestTimeit.test_repeat_zero_reps   rv   r   c                 N    U R                  U R                  U R                  SS9  g ro   r   r   s    r   test_repeat_zero_iters!TestTimeit.test_repeat_zero_iters   rv   r   c                 P    U R                  U R                  U R                  SSS9  g Nry   r   )r   rh   r   r   s    r   test_repeat_few_reps_and_iters)TestTimeit.test_repeat_few_reps_and_iters   s    DNNDOOAaHr   c                 P    U R                  U R                  U R                  SSS9  g r   )r   rd   rs   r   s    r   test_repeat_callable_stmt$TestTimeit.test_repeat_callable_stmt   s&    D++T__ 	 	$r   c                 P    U R                  U R                  U R                  SSS9  g r   )r   rr   ra   r   s    r   test_repeat_callable_setup%TestTimeit.test_repeat_callable_setup   s&    DNND$<$< 	 	$r   c                 P    U R                  U R                  U R                  SSS9  g r   )r   rd   ra   r   s    r   #test_repeat_callable_stmt_and_setup.TestTimeit.test_repeat_callable_stmt_and_setup   s(    D++T-E-E 	 	$r   c                     [         R                  " U R                  U R                  S[	        5       S9nU R                  U/ 5        g )Nr   )r   r%   )r   r   rr   rs   r   r:   r   r   s     r   test_repeat_function_zero_reps)TestTimeit.test_repeat_function_zero_reps   s3    mmDNNDOOAk#b)r   c                     [         R                  " U R                  U R                  S[	        5       S9nU R                  U[        S/-  5        g )Nr   r   g        )r   r   rr   rs   r   r:   r   r   s     r   test_repeat_function_zero_iters*TestTimeit.test_repeat_function_zero_iters   s:    mmDNNDOOAk#nu&<=r   c                     UR                  5       nU R                  [        U5      S5        U R                  US   R	                  S5      5        U R                  US   R	                  U5      5        g )N   r   	Traceback)
splitlinesassertGreaterlen
assertTrue
startswith)r   
exc_stringexpected_exc_name	exc_liness       r   assert_exc_stringTestTimeit.assert_exc_string   s[    ))+	3y>1-	!//<=	"001BCDr   c                     [         R                  " 5       n[        R                  " S5      n UR                  5         U R                  UR                  5       S5        g !   UR	                  U5         N6= f)N1/0ZeroDivisionError)ioStringIOr   rU   	print_excr   getvalue)r   srj   s      r   test_print_excTestTimeit.test_print_exc   sT    KKMLL	HHJ 	qzz|-@A	KKNs   A A3z"1 loop, best of 5: 1 sec per loop
c                 \   Uc	  [        US9nUc  / nOUS S  nUR                  U R                  5        [        R                  S S  n[        5        n[        R                  " XCR                  S9  S S S 5        US S  [        R                  S S & WR                  5       $ ! , (       d  f       N4= f)Nr   )args_wrap_timer)
r   appendrr   syspathr   r   mainr&   r   )r   r   switchesr%   r   orig_sys_pathr   s          r   run_mainTestTimeit.run_main   s    =4IJEDA;DDNN#!KKT/?/?@ #A&zz| s   B
B+c                 Z    U R                  S/S9nU R                  U[        S5      5        g )Nz--bad-switchr   zk            option --bad-switch not recognized
            use -h/--help for command line help
            r   r:   r   r   r   s     r   test_main_bad_switchTestTimeit.test_main_bad_switch   s1    MMN#3M4F $  	r   c                 F    U R                  SS9nU R                  US5        g )Ng      @r   z$1 loop, best of 5: 5.5 sec per loop
r   r:   r   s     r   test_main_secondsTestTimeit.test_main_seconds  s#    MMM4CDr   c                 F    U R                  SS9nU R                  US5        g )NgI+v?r   z'50 loops, best of 5: 5.5 msec per loop
r   r   s     r   test_main_milliseconds!TestTimeit.test_main_milliseconds	  s#    MMM7FGr   c                 J    U R                  SS/S9nU R                  US5        g )Ngh㈵>z-n100r   r   z(100 loops, best of 5: 2.5 usec per loop
r   r   s     r   test_main_microseconds!TestTimeit.test_main_microseconds  s'    MM	WIMNGHr   c                 J    U R                  SS/S9nU R                  US5        g )N       @-n35r   $35 loops, best of 5: 2 sec per loop
r   r   s     r   test_main_fixed_iters TestTimeit.test_main_fixed_iters  s'    MMvhMGCDr   c                 `    U R                  S/ SQS9nU R                  US[        -  S-   5        g )Nr   )r   -szprint("CustomSetup")r   CustomSetup
r   r   r:   r   r   s     r   test_main_setupTestTimeit.test_main_setup  s:    MM?  AOn<78 	9r   c                 `    U R                  S/ SQS9nU R                  US[        -  S-   5        g )Nr   )r   r   za = "CustomSetup"r   zprint(a)r   r   r   r   r   s     r   test_main_multiple_setups$TestTimeit.test_main_multiple_setups  s:    MMN  POn<78 	9r   c                 J    U R                  SS/S9nU R                  US5        g )N      N@z-r9r   z#1 loop, best of 9: 60 sec per loop
r   r   s     r   test_main_fixed_repsTestTimeit.test_main_fixed_reps!  s'    MMwMGBCr   c                 J    U R                  SS/S9nU R                  US5        g )Nr   z-r-5r   z#1 loop, best of 1: 60 sec per loop
r   r   s     r   test_main_negative_reps"TestTimeit.test_main_negative_reps%  s'    MMxMHBCr   r   zneed __doc__c                 j    U R                  S/S9nU R                  U[        R                  S-   5        g )Nz-hr    )r   r:   r   __doc__r   s     r   test_main_helpTestTimeit.test_main_help)  s/    MMD6M* 	FNNS01r   c                 Z    U R                  S/S9nU R                  U[        S5      5        g )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_verboseTestTimeit.test_main_verbose0  s0    MMD6M*F $  	r   c                 \    U R                  SS/S9nU R                  U[        S5      5        g )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_verbose!TestTimeit.test_main_very_verbose:  s2    MM	UGMLF $  	r   c                    U R                  SSS/S9nU R                  US5        U R                  SSS/S9nU R                  US5        U R                  SSS/S9nU R                  US	5        [        5        nU R                  SSS
/S9nS S S 5        U R                  WR                  5       S5        g ! , (       d  f       N/= f)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   r:   r   r   )r   unit_sec	unit_msec	unit_usecerror_stringioinvalids         r   test_main_with_time_unit#TestTimeit.test_main_with_time_unitP  s    ==u ! (<	>MM " )	9	;MM " )	=	? .mm%"H- $ /G  	002R	T s   7B33
Cc                     [        5        nU R                  S/S9nS S S 5        U R                  WR                  5       S5        g ! , (       d  f       N/= f)Nr   r   r   r   r   r   r   r   r  r   s      r   test_main_exceptionTestTimeit.test_main_exceptiond  sD    .w/A ~668:MN s   A
Ac                     [        5        nU R                  SS/S9nS S S 5        U R                  WR                  5       S5        g ! , (       d  f       N/= f)Nz-n1r   r   r   r  r  s      r   test_main_exception_fixed_reps)TestTimeit.test_main_exception_fixed_repsi  sF    .u~6A ~668:MN s   A
Ac                     [        US9n[        R                  " U R                  U R                  US9nUR                  U5      $ )Nr   r   )r   r   rU   rr   rs   	autorange)r   r   callbackr%   rj   s        r   r  TestTimeit.autorangen  s6    0EFLLdnnDOO5Q{{8$$r   c                 p    U R                  5       u  pU R                  US5        U R                  US5        g )N       @?r  r:   r   	num_loops
time_takens      r   test_autorangeTestTimeit.test_autoranges  s1     $ 0	C(X.r   c                 n    U R                  SS9u  pU R                  US5        U R                  US5        g )Nr(   r   r   r#  r$  s      r   test_autorange_second TestTimeit.test_autorange_secondx  s5     $S I	A&S)r   c                     S n[        5        nU R                  US9u  p4S S S 5        U R                  WS5        U R                  WS5        SnU R                  WR                  5       U5        g ! , (       d  f       NU= f)Nc                 8    [        SR                  X5      5        g )Nz	{} {:.3f})printformat)abs     r   r  9TestTimeit.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  r:   r   )r   r  r   r%  r&  expecteds         r   test_autorange_with_callback'TestTimeit.test_autorange_with_callback}  so    	,!$(NNHN$E!I C(X." 	x0 s   A//
A=)r`   )NN)r(   NN)g      P?N)>r)   r*   r+   r,   r4   r<   r@   rC   rF   rW   rZ   r]   rs   rr   ra   rd   r   rt   rz   r}   r   r   r   r   r   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*  r4  r-   r.   r   r   r0   r0   ,   sG   5=E,
HE'
 =J9I -$??HH4(
	2@*??I$$$*
>
EB @EHIE99DD __SYY''1,n=2 >2,T(O
O
%
/
*
1r   r0   __main__)r   r7  r   r   textwrapr   test.supportr   r   ri   r   r   TestCaser0   r)   r   r.   r   r   <module>r?     s_      
 	  ( (   ,a1"" a1H zMMO r   