
    z%i5Z                         	 d dl Z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        yy)    N)runrunctxProfilec                   &    e Zd Z	 d Zd Zd Zd Zy)_Utilsc                     || _         y N)profiler)selfr
   s     ;/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/profile.py__init__z_Utils.__init__1   s	         c                     | j                         }	 |j                  |       | j                  |||       y # t        $ r Y w xY w# | j                  |||       w xY wr	   )r
   r   
SystemExit_show)r   	statementfilenamesortprofs        r   r   z
_Utils.run4   sW    }}	-HHY JJtXt,  		 JJtXt,s!   7 	A A AA Ac                     | j                         }	 |j                  |||       | j                  |||       y # t        $ r Y w xY w# | j                  |||       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 JJtXt,  		 JJtXt,s!   9 	AA AA Ac                 N    ||j                  |       y |j                  |       y r	   )
dump_statsprint_stats)r   r   r   r   s       r   r   z_Utils._showF   s"    OOH%T"r   N)__name__
__module____qualname__r   r   r   r    r   r   r   r   +   s    
!--#r   r   c                 D    	 t        t              j                  | ||      S r	   )r   r   r   )r   r   r   s      r   r   r   R   s"    	 '?y(D99r   c                 H    	 t        t              j                  | ||||      S r	   )r   r   r   )r   r   r   r   r   s        r   r   r   _   s&    
 '?!!)Wfh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y) r   r   Nc                    i | _         d | _        d| _        d| _        || j                  }|| _        |s.t
        j                  x| _        | _        | j                  | _
        n\|| _        | j                         }	 t        |      }|dk(  r| j                  | _
        n| j                  | _
        |t        fd}|| _        | j                         | _        | j#                  d       y # t        $ r || _        | j                  | _
        Y Jw xY w)N    c                      | |              S r	   r   )timersums     r   get_time_timerz(Profile.__init__.<locals>.get_time_timer   s    uw<'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.   r8   lengthr)   s         r   r   zProfile.__init__   s    <99D	)-):)::DJ"33DODJ

A/Q
 Q;&*&9&9DO&*&;&;DO */C ( .:&#  8 %"&"7"78s   :C% %!D	D	c                 2   | j                   } |       }|d   |d   z   | j                  z
  | j                  z
  }|dk(  r|j                  | _         | j
                  |   | ||      r |       }|d   |d   z   | _        y  |       }|d   |d   z   |z
  | _        y )Nr      c_callr'   r8   r.   r   r-   dispatch)r   frameeventargr'   r8   rs          r   r5   zProfile.trace_dispatch   s    

GaD1Q4K$&& 499,H"||D4==eA.AqTAaD[DFAqTAaD[1_DFr   c                     | j                   } |       | j                  z
  | j                  z
  }|dk(  r|j                  | _         | j
                  |   | ||      r |       | _        y  |       |z
  | _        y Nr=   r>   r   r@   rA   rB   r'   r8   s         r   r2   zProfile.trace_dispatch_i   se    

Gdfftyy(H"||D4==eQ/WDFWq[DFr   c                    | j                   } |       dz  | j                  z
  | j                  z
  }|dk(  r|j                  | _         | j
                  |   | ||      r |       dz  | _        y  |       dz  |z
  | _        y )Ng      N@r=   r>   rF   s         r   trace_dispatch_maczProfile.trace_dispatch_mac   sr    

GDL466!DII-H"||D4==eQ/WT\DFWT\A%DFr   c                     | j                   } |       | j                  z
  | j                  z
  }|dk(  r|j                  | _         | j
                  |   | ||      r |       | _        y  |       |z
  | _        y rE   )r1   r8   r.   r   r-   r?   )r   r@   rA   rB   r1   r8   s         r   r6   zProfile.trace_dispatch_l   se    ==J$))+H"||D4==eQ/ZDFZ!^DFr   c                 z    | j                   \  }}}}}}||ur|r| j                  ||      S |||z   ||||f| _         yNr<   )r+   trace_dispatch_return)	r   r@   r8   rptritretrfnrframercurs	            r   trace_dispatch_exceptionz Profile.trace_dispatch_exception   sP    +/88(S#sFD%T--fa88AsC5r   c                    | j                   rZ|j                  | j                   d   ur?| j                   \  }}}}}}t        |t        j                        s| j                  |d       |j                  }	|	j                  |	j                  |	j                  f}
|dd|
|| j                   f| _         | j                  }|
|v r||
   \  }}}}}||dz   |||f||
<   yddddi f||
<   yNr   r<   )r+   f_back
isinstancer   
fake_framerL   f_codeco_filenameco_firstlinenoco_namer*   )r   r@   r8   rM   rN   rO   rP   rQ   rR   fcodefnr*   ccnsttctcallerss                    r   trace_dispatch_callzProfile.trace_dispatch_call  s    88DHHRL8/3xx,Cc3fg&8&89 **615 !5!5u}}Eq!R1,,=&-bk#BBGb1fb"g5GBK  Q1b.GBKr   c                     dd| j                   f}|dd||| j                  f| _        | j                  }||v r||   \  }}}}}	||dz   |||	f||<   yddddi f||<   y)Nr$   r   r<   )r-   r+   r*   )
r   r@   r8   r_   r*   r`   ra   rb   rc   rd   s
             r   trace_dispatch_c_callzProfile.trace_dispatch_c_call  s    !T%%&q!R1,,=&-bk#BBGbdBG3GBK  Q1b.GBKr   c                 f   || j                   d   ur| j                  | j                   d   d       | j                   \  }}}}}}||z   }||z   }|\  }	}
}}}}|	|
|z   ||z   |||f| _         | j                  }||   \  }}}}}|s
||z   }|dz   }||v r||   dz   ||<   nd||<   ||dz
  ||z   ||f||<   yrU   )r+   rL   r*   )r   r@   r8   rM   rN   rO   rP   rR   frame_totalpptpitpetpfnpframepcurr*   r`   ra   rb   rc   rd   s                        r   rL   zProfile.trace_dispatch_return#  s    $&&txx|Q7
 +/(('S#sE4AgCi+/(S#sFDc	3#4c64G,,")#,BB
 k!BaB'>"3<!+GCL
 GCL2628R8r   )call	exceptionreturnr=   c_exceptionc_returnc                 T    | j                   d   ry || _        | j                  |       y N)r+   r,   r9   )r   r,   s     r   set_cmdzProfile.set_cmdY  s$    88B<3r   c                       e Zd Zd Zd Zy)Profile.fake_codec                 <    || _         || _        || _        d| _        y Nr   )r[   co_liner]   r\   )r   r   linenames       r   r   zProfile.fake_code.__init___  s     'DDLDL"#Dr   c                 Z    t        | j                  | j                  | j                  f      S r	   )reprr[   r}   r]   r   s    r   __repr__zProfile.fake_code.__repr__e  s"    ))4<<FGGr   N)r   r   r   r   r   r   r   r   	fake_coderz   ^  s    	$	Hr   r   c                       e Zd Zd Zy)Profile.fake_framec                      || _         || _        y r	   )rZ   rW   )r   codepriors      r   r   zProfile.fake_frame.__init__i  s    DKDKr   N)r   r   r   r   r   r   r   rY   r   h  s    	 r   rY   c                     | j                  dd|      }| j                  r| j                  d   }nd }| j                  ||      } | j                  d   | |d       y )Nprofiler   rV   rp   )r   r+   rY   r?   )r   r   r   rn   r@   s        r   r9   zProfile.simulate_callm  sT    ~~iD188XXb\FFf-fdE1-r   c                     | j                   } |       | j                  z
  }| j                  d   r6 | j                  d   | | j                  d   |       d}| j                  d   r6 |       |z
  | _        y )Nrw   rr   rV   r   )r1   r8   r+   r?   )r   r1   r8   s      r   simulate_cmd_completezProfile.simulate_cmd_completey  sh    ==Jhhrl $DMM(#D$((2,:A	 hhrl
 ar   c                     dd l }|j                  |       j                         j                  |      j	                          y r|   )pstatsStats
strip_dirs
sort_statsr   )r   r   r   s      r   r   zProfile.print_stats  s,    T%%'2248+-r   c                     t        |d      5 }| j                          t        j                  | j                  |       d d d        y # 1 sw Y   y xY w)Nwb)opencreate_statsmarshaldumpstats)r   filefs      r   r   zProfile.dump_stats  sA    $ 	(LLQ'	( 	( 	(s   1AAc                 D    | j                          | j                          y r	   )r   snapshot_statsr   s    r   r   zProfile.create_stats  s    ""$r   c                     i | _         | j                  j                         D ]K  \  }\  }}}}}|j                         }d}|j	                         D ]  }||z  }	 |||||f| j                   |<   M y r|   )r   r*   itemscopyvalues)	r   funcr`   ra   rb   rc   rd   nccallcnts	            r   r   zProfile.snapshot_stats  s}    
/3||/A/A/C 	7+D+2r2r7llnGB">>+ g!2r2w6DJJt	7r   c                 H    dd l }|j                  }| j                  |||      S r|   )__main____dict__r   )r   r,   r   dicts       r   r   zProfile.run  s#      {{3d++r   c                     | j                  |       t        j                  | j                         	 t	        |||       t        j                  d        | S # t        j                  d        w xY wr	   )rx   sys
setprofiler3   exec)r   r,   r   r   s       r   r   zProfile.runctx  sP    St'	!gv&NN4  NN4 s   A A-c                    | j                  t        |             t        j                  | j                         	  ||i |t        j                  d        S # t        j                  d        w xY wr	   )rx   r   r   r   r3   )r   r   argskws       r   runcallzProfile.runcall  sM    T$Z t'	!$$NN4 CNN4 s   A A/c                     | j                   t        urt        d      | j                  }d| _        	 | j	                  ||      || _        S # || _        w xY w)Nz&Subclasses must override .calibrate().r   )	__class__r   r7   r.   _calibrate_inner)r   mverbose
saved_biass       r   	calibratezProfile.calibrate  sN    >>(DEEYY
		#((G4"DI
DIs   A 	Ac                 <   | j                   }d }|fd} ||        |       } ||        |       }||z
  }|rt        d|       t               }	 |       }|	j                  dt	               t                       |       }||z
  }
|rt        d|
       d}d}|	j                  j                         D ]  \  \  }}}\  }}}}}|dv s||z  }||z  }  |rt        d|       t        d	|       ||d
z   k7  rt        d|z        ||z
  dz  |z  }|rt        d|       |S )Nc                 (    t        |       D ]  }d} y rK   range)nixs      r   f1z$Profile._calibrate_inner.<locals>.f1  s    1X r   c                 4    t        |       D ]
  } |d        y )Nd   r   )r   r   r   s      r   r   z#Profile._calibrate_inner.<locals>.f  s    1X 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 =)	r1   printr   r   r   r   r*   r   
ValueError)r   r   r   r1   r   r   t0t1elapsed_noprofilepelapsed_profiletotal_callsreported_timer   r~   funcnamer`   ra   rb   rc   rd   means                         r   r   zProfile._calibrate_inner  sP   ==	  	 	
! Z	!ZG46GH
 IZ	FH-Zr'1?C 		!	$A&XtX(ARR;&r!#		$ 5}E#[1!a%?+MNN  11S8;F?Fr   )NN)rw   )r   )r   r   r   r.   r   r5   r2   rH   r6   rS   re   rg   rL   r?   rx   r   rY   r9   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   h   s    $L D#'N%$
!
&
$&,	#N $-'',)
H  
H H   
.  
(
7,
!b	#<r   r   c                     dd l } ddlm} d} ||      }d|_        |j	                  dddd	d 
       |j	                  ddddd       |j	                  ddddd
       t
        j                  dd  s%|j                          t        j                  d       |j                         \  }}|t
        j                  d d  |j                  *| j                  j                  |j                        |_
        t        |      dkD  r |j                  rdd l}d}|j                   |d   d}n|d   }	t
        j                  j#                  d| j                  j%                  |	             t'        j(                  |	      5 }
t+        |
j-                         |	d      }d d d        t.        j0                  j3                  dd |	      }||j4                  |j6                  d d d}	 t9        |d |j                  |j:                         |S |j                          |S # 1 sw Y   xY w# t<        $ r5}d t
        _        t        j                  |j@                         Y d }~|S d }~ww xY w)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 classrw   r<   r%   z(run_module(modname, run_name='__main__'))
run_modulemodnamer   r   )r   loaderorigin)__spec____file__r   __package__
__cached__)!osoptparser   allow_interspersed_args
add_optionr   argvprint_usageexit
parse_argsr   pathabspathr4   r   runpyr   insertdirnameio	open_codecompileread	importlib	machinery
ModuleSpecr   r   r   r   BrokenPipeErrorstdouterrno)r   r   r   parseroptionsr   r   r   globsprognamefpspecexcs                r   mainr   *  s!   %[E&F%*F"
dKi&  6
d,(%  9
dH6N   88AB<'')OWdCHHQK "''//'//:
4y1}>>=D#..7E
 AwHHHOOArwwx89h' <2rwwy(F;<&&11z$9A 2 CD ! KK II#"E	 4goow||D M 	M'< <  	 CJHHSYY M	 s$   :H#H  H 	I)*IIr   rv   )importlib.machineryr   r   r   r/   r   __all__r   r   r   r   r   r   r   r   r   <module>r      s]    '$  	 
  
&# #N:N~ ~D9x zF r   