B
    18™\µ  ã               @   sV   d Z ddlZddlZddlZddlZddlZdZdZdd„ Zdd„ Z	e
d	krRe	ƒ  dS )
z+Transform gprof(1) output into useful HTML.é    NzF<html>
<head>
  <title>gprof output (%s)</title>
</head>
<body>
<pre>
z</pre>
</body>
</html>
c          	   c   s2   t | ƒ }x|D ]}t |¡V  qW W d Q R X d S )N)ÚopenÚhtmlÚescape)ÚfilenameÚfpÚline© r   úX/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Tools/scripts/gprof2html.pyÚadd_escapes   s    

r
   c           	   C   sú  d} t jdd … rt jd } | d }t| ƒ}t|dƒ}| t|  ¡ x"|D ]}| |¡ | d¡rJP qJW i }xV|D ]N}t d|¡}|s’| |¡ P | 	dd¡\}}|||< | d||||f ¡ qrW x"|D ]}| |¡ | d	¡rÊP qÊW xœ|D ]”}t d
|¡}|s| |¡ | d¡rîP qî| 	ddd¡\}	}}
||krF| |¡ qî| d¡rl| d|	||||
f ¡ qî| d|	|||
f ¡ qîW xF|D ]>}x6t 
d|¡D ]&}||kr¸d||f }| |¡ qžW qŒW | t¡ | ¡  t dtj |¡ ¡ d S )Nz	gprof.outé   z.htmlÚwz timez(.*  )(\w+)\né   z+%s<a name="flat:%s" href="#call:%s">%s</a>
zindex % timez*(.*  )(\w+)(( &lt;cycle.*&gt;)? \[\d+\])\nzIndex by function nameé   ú[z-%s<a name="call:%s" href="#flat:%s">%s</a>%s
z%s<a href="#call:%s">%s</a>%s
z(\w+(?:\.c)?|\W+)z<a href="#call:%s">%s</a>zfile:)ÚsysÚargvr
   r   ÚwriteÚheaderÚ
startswithÚreÚmatchÚgroupÚfindallÚtrailerÚcloseÚ
webbrowserÚosÚpathÚabspath)r   ZoutputfilenameÚinputÚoutputr   ÚlabelsÚmÚstuffÚfnameÚprefixÚsuffixÚpartr   r   r	   Úmain    sb    

















r(   Ú__main__)Ú__doc__r   r   r   r   r   r   r   r
   r(   Ú__name__r   r   r   r	   Ú<module>   s   	4