
    =OgbY                         	 d dl Z d dlZd dlZd dlZg dZ G d d          ZddZddZ G d d	          Zd
 Z	e
dk    r e	             dS dS )    N)runrunctxProfilec                   (    e Zd Z	 d Zd Zd Zd ZdS )_Utilsc                     || _         d S N)profiler)selfr
   s      /usr/lib64/python3.11/profile.py__init__z_Utils.__init__0   s         c                     |                                  }	 |                    |           n# t          $ r Y nw xY w|                     |||           d S # |                     |||           w xY wr	   )r
   r   
SystemExit_show)r   	statementfilenamesortprofs        r   r   z
_Utils.run3   s    }}	-HHY 	 	 	D	 JJtXt,,,,,DJJtXt,,,,s!   , A 
9A 9A A.c                     |                                  }	 |                    |||           n# t          $ r Y nw xY w|                     |||           d S # |                     |||           w xY wr	   )r
   r   r   r   )r   r   globalslocalsr   r   r   s          r   r   z_Utils.runctx<   s    }}	-KK	7F3333 	 	 	D	 JJtXt,,,,,DJJtXt,,,,s!   . A 
;A ;A A0c                 b    ||                     |           d S |                    |           d S r	   )
dump_statsprint_stats)r   r   r   r   s       r   r   z_Utils._showE   s:    OOH%%%%%T"""""r   N)__name__
__module____qualname__r   r   r   r    r   r   r   r   *   sU        
! ! !- - -- - -# # # # #r   r   c                 V    	 t          t                                        | ||          S r	   )r   r   r   )r   r   r   s      r   r   r   Q   s'    	 '??y(D999r   c                 Z    	 t          t                                        | ||||          S r	   )r   r   r   )r   r   r   r   r   s        r   r   r   ^   s+    
 '??!!)WfhMMMr   c                       e Zd Z	 dZddZd Zd Zd Zd Zd Z	d	 Z
d
 Zd Ze
e	eeeedZd Z G d d          Z G d d          Zd Zd ZddZd Zd Zd Zd Zd Zd Zd dZd ZdS )!r   r   Nc                    i | _         d | _        d| _        d| _        || j        }|| _        |s%t
          j        x| _        | _        | j	        | _
        n|| _        |                                 }	 t          |          }|dk    r| j        | _
        n| j        | _
        |t          fd}|| _        n## t          $ r || _        | j	        | _
        Y nw xY w|                                 | _        |                     d           d S )N    c                 (     | |                       S r	   r   )timersums     r   get_time_timerz(Profile.__init__.<locals>.get_time_timer   s    3uuww<<'r   r
   )timingscurcmdc_func_namebiastimeprocess_timer(   get_timetrace_dispatch_i
dispatcherlentrace_dispatchtrace_dispatch_lr)   	TypeErrortsimulate_call)r   r(   r/   r9   lengthr*   s         r   r   zProfile.__init__   s   <9D	 	/)-)::DJ"3DOODJ

A/Q
 Q;;&*&9DOO&*&;DO */C ( ( ( ( .  8 8 8 %"&"78  :&&&&&s   0B1 1CCc                 H   | j         } |            }|d         |d         z   | j        z
  | j        z
  }|dk    r|j        | _         | j        |         | ||          r" |            }|d         |d         z   | _        d S  |            }|d         |d         z   |z
  | _        d S )Nr      c_callr(   r9   r/   r   r.   dispatch)r   frameeventargr(   r9   rs          r   r6   zProfile.trace_dispatch   s    
EGGaD1Q4K$& 49,H"|D4=eA.. 	%AqTAaD[DFFFAqTAaD[1_DFFFr   c                     | j         } |            | j        z
  | j        z
  }|dk    r|j        | _         | j        |         | ||          r |            | _        d S  |            |z
  | _        d S Nr>   r?   r   rA   rB   rC   r(   r9   s         r   r3   zProfile.trace_dispatch_i   sz    
EGGdfty(H"|D4=eQ// 	!UWWDFFFUWWq[DFFFr   c                     | j         } |            dz  | j        z
  | j        z
  }|dk    r|j        | _         | j        |         | ||          r |            dz  | _        d S  |            dz  |z
  | _        d S )Ng      N@r>   r?   rG   s         r   trace_dispatch_maczProfile.trace_dispatch_mac   s    
EGGDL46!DI-H"|D4=eQ// 	&UWWT\DFFFUWWT\A%DFFFr   c                     | j         } |            | j        z
  | j        z
  }|dk    r|j        | _         | j        |         | ||          r |            | _        d S  |            |z
  | _        d S rF   )r2   r9   r/   r   r.   r@   )r   rA   rB   rC   r2   r9   s         r   r7   zProfile.trace_dispatch_l   sz    =HJJ$)+H"|D4=eQ// 	$XZZDFFFXZZ!^DFFFr   c                 z    | j         \  }}}}}}||ur|r|                     ||          S |||z   ||||f| _         dS Nr=   )r,   trace_dispatch_return)	r   rA   r9   rptritretrfnrframercurs	            r   trace_dispatch_exceptionz Profile.trace_dispatch_exception   sY    +/8(S#sFD%T--fa888AsC5qr   c                 t   | j         rR|j        | j         d         ur>| j         \  }}}}}}t          |t          j                  s|                     |d           |j        }	|	j        |	j        |	j	        f}
|dd|
|| j         f| _         | j
        }|
|v r||
         \  }}}}}||dz   |||f||
<   n
ddddi f||
<   dS Nr   r=   )r,   f_back
isinstancer   
fake_framerM   f_codeco_filenameco_firstlinenoco_namer+   )r   rA   r9   rN   rO   rP   rQ   rR   rS   fcodefnr+   ccnsttctcallerss                    r   trace_dispatch_callzProfile.trace_dispatch_call  s    8 		FDHRL88/3x,Cc3fg&899 F **61555 !5u}Eq!R1,==&-bk#BBGb1fb"g5GBKKQ1b.GBKqr   c                     dd| j         f}|dd||| j        f| _        | j        }||v r||         \  }}}}}	||dz   |||	f||<   n
ddddi f||<   dS )Nr%   r   r=   )r.   r,   r+   )
r   rA   r9   r`   r+   ra   rb   rc   rd   re   s
             r   trace_dispatch_c_callzProfile.trace_dispatch_c_call  s}    !T%&q!R1,==&-bk#BBGbdBG3GBKKQ1b.GBKqr   c                 `   || j         d         ur!|                     | j         d         d           | j         \  }}}}}}||z   }||z   }|\  }	}
}}}}|	|
|z   ||z   |||f| _         | j        }||         \  }}}}}|s
||z   }|dz   }||v r||         dz   ||<   nd||<   ||dz
  ||z   ||f||<   dS rV   )r,   rM   r+   )r   rA   r9   rN   rO   rP   rQ   rS   frame_totalpptpitpetpfnpframepcurr+   ra   rb   rc   rd   re   s                        r   rM   zProfile.trace_dispatch_return"  s   $$&&tx|Q777
 +/('S#sE4AgCi+/(S#sFDc	3#4c64G,")#,BB 	
 k!BaB'>>"3<!+GCLL
 GCL2628R8qr   )call	exceptionreturnr>   c_exceptionc_returnc                 \    | j         d         rd S || _        |                     |           d S Nr    )r,   r-   r:   )r   r-   s     r   set_cmdzProfile.set_cmdX  s3    8B<3r   c                       e Zd Zd Zd ZdS )Profile.fake_codec                 >    || _         || _        || _        d| _        d S Nr   )r\   co_liner^   r]   )r   r   linenames       r   r   zProfile.fake_code.__init__^  s&    'DDLDL"#Dr   c                 D    t          | j        | j        | j        f          S r	   )reprr\   r}   r^   r   s    r   __repr__zProfile.fake_code.__repr__d  s    )4<FGGGr   N)r   r   r   r   r   r   r   r   	fake_coderz   ]  s7        	$ 	$ 	$	H 	H 	H 	H 	Hr   r   c                       e Zd Zd ZdS )Profile.fake_framec                 "    || _         || _        d S r	   )r[   rX   )r   codepriors      r   r   zProfile.fake_frame.__init__h  s    DKDKKKr   N)r   r   r   r   r   r   r   rZ   r   g  s#        	  	  	  	  	 r   rZ   c                     |                      dd|          }| j        r| j        d         }nd }|                     ||          } | j        d         | |d           d S )Nprofiler   rW   rq   )r   r,   rZ   r@   )r   r   r   ro   rA   s        r   r:   zProfile.simulate_calll  sg    ~~iD118 	Xb\FFFf--fdE1-----r   c                     | j         } |            | j        z
  }| j        d         r2 | j        d         | | j        d         |           d}| j        d         2 |            |z
  | _        d S )Nr    rs   rW   r   )r2   r9   r,   r@   )r   r2   r9   s      r   simulate_cmd_completezProfile.simulate_cmd_completex  sx    =HJJhrl 	 $DM(#D$(2,:::A	 hrl 	
 ar   r    c                     dd l }|                    |                                                               |                                           d S r|   )pstatsStats
strip_dirs
sort_statsr   )r   r   r   s      r   r   zProfile.print_stats  sC    T%%''22488+-----r   c                     t          |d          5 }|                                  t          j        | j        |           d d d            d S # 1 swxY w Y   d S )Nwb)opencreate_statsmarshaldumpstats)r   filefs      r   r   zProfile.dump_stats  s    $ 	(LQ'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   /AAAc                 V    |                                   |                                  d S r	   )r   snapshot_statsr   s    r   r   zProfile.create_stats  s,    ""$$$r   c                     i | _         | j                                        D ]L\  }\  }}}}}|                                }d}|                                D ]}||z  }|||||f| j         |<   Md S r|   )r   r+   itemscopyvalues)	r   funcra   rb   rc   rd   re   nccallcnts	            r   r   zProfile.snapshot_stats  s    
/3|/A/A/C/C 	7 	7+D+2r2r7llnnGB">>++  g!2r2w6DJt	7 	7r   c                 F    dd l }|j        }|                     |||          S r|   )__main____dict__r   )r   r-   r   dicts       r   r   zProfile.run  s)     {{3d+++r   c                     |                      |           t          j        | j                   	 t	          |||           t          j        d            n# t          j        d            w xY w| S r	   )rx   sys
setprofiler4   exec)r   r-   r   r   s       r   r   zProfile.runctx  sk    St'''	!gv&&&N4    CN4    s   A A,c                    |                      t          |                     t          j        | j                   	  ||i |t          j        d            S # t          j        d            w xY wr	   )rx   r   r   r   r4   )r   r   argskws       r   runcallzProfile.runcall  sl    T$ZZ   t'''	!4$$$N4    CN4    s   A A/c                     | j         t          urt          d          | j        }d| _        	 |                     ||          || _        S # || _        w xY w)Nz&Subclasses must override .calibrate().r   )	__class__r   r8   r/   _calibrate_inner)r   mverbose
saved_biass       r   	calibratezProfile.calibrate  s`    >((DEEEY
		#((G44"DII
DI""""s   A
 
	Ac                    | j         }d }|fd} ||            |            } ||            |            }||z
  }|rt          d|           t                      }	 |            }|	                    dt	                      t                                  |            }||z
  }
|rt          d|
           d}d}|	j                                        D ]\  \  }}}\  }}}}}|dv r
||z  }||z  }|r t          d|           t          d	|           ||d
z   k    rt          d|z            ||z
  dz  |z  }|rt          d|           |S )Nc                 .    t          |           D ]}d}d S rL   range)nixs      r   f1z$Profile._calibrate_inner.<locals>.f1  s(    1XX   r   c                 @    t          |           D ]} |d           d S )Nd   r   )r   r   r   s      r   r   z#Profile._calibrate_inner.<locals>.f  s0    1XX  3 r   z elapsed time without profiling =zf(m)zelapsed time with profiling =g        )r   r   z!'CPU seconds' profiler reported =ztotal # calls =r=   z internal error: total calls = %dg       @z+mean stopwatch overhead per profile event =)	r2   printr   r   r   r   r+   r   
ValueError)r   r   r   r2   r   r   t0t1elapsed_noprofilepelapsed_profiletotal_callsreported_timer   r~   funcnamera   rb   rc   rd   re   means                         r   r   zProfile._calibrate_inner  s   =	 	 	  	 	 	 	 	
! XZZ	!XZZG 	I46GHHH
 IIXZZ	FHH---XZZr' 	D1?CCC 	!!	$ 	$A&XtX(ARR;&&r!# 	25}EEE#[111!a%?+MNNN  11S8;F 	G?FFFr   )NN)r    )r   )r   r   r   r/   r   r6   r3   rI   r7   rT   rf   rh   rM   r@   rx   r   rZ   r:   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   g   s       $L D#' #' #' #'N% % %$
! 
! 
!
& 
& 
&
$ 
$ 
$&    ,	 	 	# # #N $-'',)
 
H      
H H H H H H H H               
. . .            
( ( (
  7 7 7, , ,
  ! ! !b	# 	# 	# 	#< < < < <r   r   c                  l   dd l } ddlm} d} ||          }d|_        |                    dddd	d 
           |                    ddddd           |                    ddddd
           t
          j        dd          s(|                                 t          j        d           |	                                \  }}|t
          j        d d <   |j
        $| j                            |j
                  |_
        t          |          dk    r|j        rdd l}d}|j        |d         d}n|d         }	t
          j                            d| j                            |	                     t'          j        |	          5 }
t+          |
                                |	d          }d d d            n# 1 swxY w Y   |	dd d d}	 t/          ||d |j
        |j                   nP# t2          $ r/}d t
          _        t          j        |j                   Y d }~nd }~ww xY w|                                 |S )Nr   )OptionParserzMprofile.py [-o output_file_path] [-s sort] [-m module | scriptfile] [arg] ...)usageFz-oz	--outfileoutfilezSave stats to <outfile>)desthelpdefaultz-mmodule
store_truezProfile a library module.)r   actionr   r   z-sz--sortr   z?Sort order when printing to stdout, based on pstats.Stats classr    r=   r&   z(run_module(modname, run_name='__main__'))
run_modulemodnamer   r   )__file__r   __package__
__cached__)osoptparser   allow_interspersed_args
add_optionr   argvprint_usageexit
parse_argsr   pathabspathr5   r   runpyr   insertdirnameio	open_codecompilereadr   r   BrokenPipeErrorstdouterrno)r   r   r   parseroptionsr   r   r   globsprognamefpexcs               r   mainr   )  s   III%%%%%%[E\&&&F%*F"
dKi&  6 6 6
d,(%  9 9 9
dH6N     8ABB< ''))OWdCHQQQK "'//'/::
4yy1}}> 	LLL=D#.7 EE
 AwHHOOArwx88999h'' <2rwwyy(F;;< < < < < < < < < < < < < < < %&#"	 E	 4gow|DDDD 	  	  	 CJHSY	 
 	Ms*   $F33F7:F7G$ $
H.%HHr   rw   )r   r   r0   r   __all__r   r   r   r   r   r   r   r   r   <module>r      s    '$ 
			 



  
&
&
&# # # # # # # #N: : : :N N N N~ ~ ~ ~ ~ ~ ~ ~D6 6 6r zDFFFFF r   