
    6bh%                         	 d dl Z d dlZd dlZd dlmZmZ d dlmZ d dlm	Z	  G d de      Z
 G d dej                        Zd	 Zi Zd
ed<   ded<   ded<   edk(  r e        yy)    N)ProfileTestregenerate_expected_output)assert_python_failure)supportc                   \    e Zd Zej                  ZeZdZd Zd Z	d Z
d Zd Zd Zd Zd	 Zy
)CProfileTestz{built-in method builtins.max}c                     t         S N)_ProfileOutput)selfs    </opt/python-3.12.12/usr/lib/python3.12/test/test_cprofile.pyget_expected_outputz CProfileTest.get_expected_output   s        c                 6   dd l }t        j                         5 }|j                  d       }|j	                          |j                          |j                          | j                  |j                  j                  t               d d d        y # 1 sw Y   y xY w)Nr   c                      t         S r
   )int r   r   <lambda>z>CProfileTest.test_bad_counter_during_dealloc.<locals>.<lambda>   s    3r   )_lsprofr   catch_unraisable_exceptionProfilerenabledisableclearassertEqual
unraisableexc_type	TypeError)r   r   cmobjs       r   test_bad_counter_during_deallocz,CProfileTest.test_bad_counter_during_dealloc   sd    //1R"";/CJJLKKMIIKR]]33Y? 211s   A-BBc           	      6   dd l }|j                         t        j                         fD ]V  }dD ]O  }| j	                  ||      5  t        ||      }| j                  t              5   |        d d d        d d d        Q X y # 1 sw Y   xY w# 1 sw Y   jxY w)Nr   )_pystart_callback_pyreturn_callback_ccall_callback_creturn_callback)profilemethod)r   r   cProfileProfilesubTestgetattrassertRaisesr   )r   r   r'   r(   
method_objs        r   test_crash_with_not_enough_argsz,CProfileTest.test_crash_with_not_enough_args!   s    ((*H,<,<,>?G \\'&\A!(&!9J**95" 6 BA @ 65 BAs$   "B&B	.BBBBc                    dd l } G fdd      }t        j                         5 }|j                   |d            j	                           d         j                          j                          | j                  |j                  j                  t               d d d        t        j                         5 }|j                   |d            j	                           d         j                          j                          | j                  |j                  j                  t               d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   c                       e Zd Zd Z fdZy)8CProfileTest.test_evil_external_timer.<locals>.EvilTimerc                      d| _         || _        y )Nr   )countdisable_count)r   r5   s     r   __init__zACProfileTest.test_evil_external_timer.<locals>.EvilTimer.__init__6   s    
%2"r   c                     | xj                   dz  c_         | j                   | j                  k(  rj                          | j                   S )N   )r4   r5   r   )r   profiler_with_evil_timers    r   __call__zACProfileTest.test_evil_external_timer.<locals>.EvilTimer.__call__:   s8    

a
::!3!33,446zz!r   N)__name__
__module____qualname__r6   r:   )r9   s   r   	EvilTimerr2   5   s    3"r   r>   r8   c                       y r
   r   r   r   r   r   z7CProfileTest.test_evil_external_timer.<locals>.<lambda>F       Tr      c                       y r
   r   r   r   r   r   z7CProfileTest.test_evil_external_timer.<locals>.<lambda>Q   r@   r   )r   r   r   r   r   r   r   r   r   r   RuntimeError)r   r   r>   r   r9   s       @r   test_evil_external_timerz%CProfileTest.test_evil_external_timer1   s    			" 		" //1R'.'7'7	!'E$$++-$,,.$**,R]]33\B 2 //1R'.'7'7	!'E$$++-$,,.$**,R]]33\B 21 21 21s   A:D?<A:E?EEc                    | j                         }| j                  |j                         |j                          | j	                  t
        j                  j                  t
        j                  j                        d       |j                          | j                  t
        j                  j                  t
        j                  j                        d        y Nr)   )
profilerclass
addCleanupr   r   r   sys
monitoringget_toolPROFILER_IDassertIs)r   profs     r   test_profile_enable_disablez(CProfileTest.test_profile_enable_disableV   s    !!#%NN##CNN$>$>?	M 	cnn--cnn.H.HI4Pr   c                    | j                         }| j                  |j                         |5 }| j                  ||       | j	                  t
        j                  j                  t
        j                  j                        d       d d d        | j                  t
        j                  j                  t
        j                  j                        d        y # 1 sw Y   QxY wrF   )	rG   rH   r   rM   r   rI   rJ   rK   rL   )r   rN   "_CProfileTest__enter__return_values      r   test_profile_as_context_managerz,CProfileTest.test_profile_as_context_managerb   s    !!#%*MM$ 56 ''(B(BCZQ  	cnn--cnn.H.HI4P Ts   ACC!c                     | j                         }| j                         }|j                          | j                  t        |j                         |j	                          y r
   )rG   r   r-   
ValueErrorr   )r   prpr2s      r   test_second_profilerz!CProfileTest.test_second_profilers   sD    !  "
		*cjj1


r   c                 T   	 | j                         }|j                          t        d dD               |j                          |j	                          |j
                  j                         D ]8  \  }\  }}}}}|d   dk(  s| j                  |d       | j                  |d       : y )Nc              3   &   K   | ]	  }|d k(    yw)r8   Nr   ).0as     r   	<genexpr>z*CProfileTest.test_throw.<locals>.<genexpr>   s     #FqAFFs   )r8   rA   rA   z	<genexpr>)rG   r   anyr   create_statsstatsitemsr   )r   rU   funcccnc_s         r   
test_throwzCProfileTest.test_throwz   s    	 !
		#F##



')xx~~'7#D#2r1aAw+%  Q'  Q' (8r   N)r;   r<   r=   r)   r*   rG   profilermoduleexpected_max_outputr   r!   r/   rD   rO   rR   rW   re   r   r   r   r   r      sE    $$MN:
@% #CJ
QQ"(r   r   c                       e Zd Zd Zy)TestCommandLinec                 p    t        dddd      \  }}}| j                  |d       | j                  d|       y )Nz-mr)   z-sdemor   s!   option -s: invalid choice: 'demo')r   assertGreaterassertIn)r   rcouterrs       r   	test_sortzTestCommandLine.test_sort   s7    ,T:tVLC2q!:C@r   N)r;   r<   r=   rq   r   r   r   ri   ri      s    Ar   ri   c                  z    dt         j                  vrt        j                          y t	        t
        t               y )Nz-r)rI   argvunittestmainr   __file__r   r   r   r   ru   ru      s!    388"8\:r   a         28    0.028    0.001    0.028    0.001 profilee.py:110(__getattr__)
        1    0.270    0.270    1.000    1.000 profilee.py:25(testfunc)
     23/3    0.150    0.007    0.170    0.057 profilee.py:35(factorial)
       20    0.020    0.001    0.020    0.001 profilee.py:48(mul)
        2    0.040    0.020    0.600    0.300 profilee.py:55(helper)
        4    0.116    0.029    0.120    0.030 profilee.py:73(helper1)
        2    0.000    0.000    0.140    0.070 profilee.py:84(helper2_indirect)
        8    0.312    0.039    0.400    0.050 profilee.py:88(helper2)
        8    0.064    0.008    0.080    0.010 profilee.py:98(subhelper)print_statsa  profilee.py:110(__getattr__)                      <-      16    0.016    0.016  profilee.py:98(subhelper)
profilee.py:25(testfunc)                          <-       1    0.270    1.000  <string>:1(<module>)
profilee.py:35(factorial)                         <-       1    0.014    0.130  profilee.py:25(testfunc)
                                                        20/3    0.130    0.147  profilee.py:35(factorial)
                                                           2    0.006    0.040  profilee.py:84(helper2_indirect)
profilee.py:48(mul)                               <-      20    0.020    0.020  profilee.py:35(factorial)
profilee.py:55(helper)                            <-       2    0.040    0.600  profilee.py:25(testfunc)
profilee.py:73(helper1)                           <-       4    0.116    0.120  profilee.py:55(helper)
profilee.py:84(helper2_indirect)                  <-       2    0.000    0.140  profilee.py:55(helper)
profilee.py:88(helper2)                           <-       6    0.234    0.300  profilee.py:55(helper)
                                                           2    0.078    0.100  profilee.py:84(helper2_indirect)
profilee.py:98(subhelper)                         <-       8    0.064    0.080  profilee.py:88(helper2)
{built-in method builtins.hasattr}                <-       4    0.000    0.004  profilee.py:73(helper1)
                                                           8    0.000    0.008  profilee.py:88(helper2)
{built-in method sys.exception}                   <-       4    0.000    0.000  profilee.py:73(helper1)
{method 'append' of 'list' objects}               <-       4    0.000    0.000  profilee.py:73(helper1)print_callersa;  <string>:1(<module>)                              ->       1    0.270    1.000  profilee.py:25(testfunc)
profilee.py:110(__getattr__)                      ->
profilee.py:25(testfunc)                          ->       1    0.014    0.130  profilee.py:35(factorial)
                                                           2    0.040    0.600  profilee.py:55(helper)
profilee.py:35(factorial)                         ->    20/3    0.130    0.147  profilee.py:35(factorial)
                                                          20    0.020    0.020  profilee.py:48(mul)
profilee.py:48(mul)                               ->
profilee.py:55(helper)                            ->       4    0.116    0.120  profilee.py:73(helper1)
                                                           2    0.000    0.140  profilee.py:84(helper2_indirect)
                                                           6    0.234    0.300  profilee.py:88(helper2)
profilee.py:73(helper1)                           ->       4    0.000    0.004  {built-in method builtins.hasattr}
profilee.py:84(helper2_indirect)                  ->       2    0.006    0.040  profilee.py:35(factorial)
                                                           2    0.078    0.100  profilee.py:88(helper2)
profilee.py:88(helper2)                           ->       8    0.064    0.080  profilee.py:98(subhelper)
profilee.py:98(subhelper)                         ->      16    0.016    0.016  profilee.py:110(__getattr__)
{built-in method builtins.hasattr}                ->      12    0.012    0.012  profilee.py:110(__getattr__)print_callees__main__)rI   rt   r)   test.test_profiler   r   test.support.script_helperr   testr   r   TestCaseri   ru   r   r;   r   r   r   <module>r      s    ) 
   E < (; (DAh'' A; 	!K} #k "#p $ zF r   