o ]Lb@szddlmZmZddlZddlZddlmZddlmZejZeeddZ ddgZ d d Z Gd d d e Z iZd dZdS))absolute_importprint_functionNgetattr)pycompatprofiler_entrysprofilesStatscOsFt}|jdddz ||i|W|n|wt|S) XXX docstringT)subcallsbuiltins)ProfilerenabledisableStatsgetstats)fargskwdspr2/usr/lib/python3/dist-packages/mercurial/lsprof.pyprofiles  rc@s4eZdZdZddZd ddZd dd Zd d ZdS)rr cCs ||_dSN)data)selfrrrr__init__s zStats.__init__ inlinetimecstrtjvr tdn|jr t|jdds td|jjfdddd|jD]}|jr@|jjfddddq/dS) r sCan't sort by %srNc t|Srrxcritrr+ zStats.sort..T)keyreversecrrrrr rrr".r#)r__dict__ ValueErrorrrsortcalls)rr!err rr("s    z Stats.sortNc Cs|durtj}|j}|dur|d|}d}d}||dd}|D]d} ||| j| j| j| jt| j f|d7}|durG||krGdSd} |r| j r| j D]5} ||| j| j| j| jdt| j f|d7}| d7} |dur|||kr|dS|dur| |krnqQq#dS)r Ns% 12d %12d %11.4f %11.4f %s s% 12s %12s %12s %12s %s )s CallCounts RecursivesTotal(s)s Inline(s)smodule:lineno(function)rrs %s) sysstdoutrwrite callcount reccallcount totaltimerlabelcoder)) rtopfilelimitclimitdcolshcolscountr*ccountserrrpprint0s`       z Stats.pprintcCstt|jD]K}|j|}t|jts't|t|jf|dd|j|<|jrRtt|jD] }|j|}t|jtsQt|t|jf|dd|j|<q1qdS)zwReplace all references to code objects with string descriptions; this makes it possible to pickle the instance.rN) rangelenr isinstancer2strtyper1r))rir*jr<rrrfreezefs  &  &z Stats.freeze)r)NNNN)__name__ __module__ __qualname____doc__rr(r=rErrrrrs    6rc Cst|trtjjdkr|d}|Szt|j}Wn?tyXt t tj D]#\}}|dur1q(tt |ddts;q(|j|jrK|}t|j<n q(d|j}t|j<Ynwd||j|jf}tjjdkrm|d}|S)Nzlatin-1__file__z<%s>z %s:%d(%s))r@rAr+ version_infomajorencode_fn2mod co_filenameKeyErrorlistr iteritemsmodulesrrK startswithco_firstlinenoco_name)r2mnamekvresrrrr1ys.      r1) __future__rr_lsprofr+rrr r__all__robjectrrOr1rrrrs    Z