B g ©“ý¤Zã@s<dZddlZddlZGdd„dƒZdd„Zedkr8eƒdS)z"Show file statistics by extension.éNc@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)ÚStatscCs i|_dS)N)Ústats)Úself©rú8/opt/alt/python37/lib64/python3.7/Tools/scripts/byext.pyÚ__init__ szStats.__init__cCs`xZ|D]R}tj |¡r"| |¡qtj |¡r:| |¡qtj d|¡|  ddd¡qWdS)NzCan't find %s zÚunknowné) ÚosÚpathÚisdirÚstatdirÚisfileÚstatfileÚsysÚstderrÚwriteÚaddstats)rÚargsÚargrrrÚstatargss     zStats.statargsc CsÜ| ddd¡yt |¡}WnDtk r`}z&tj d||f¡| ddd¡dSd}~XYnXxtt|ƒD]h}| d¡r|ql|  d¡rˆqltj   ||¡}tj   |¡r²| dd d¡qltj   |¡rÊ| |¡ql| |¡qlWdS) NzÚdirsr zCan't list %s: %s Z unlistablez.#ú~zZlinks)rr ÚlistdirÚOSErrorrrrÚsortedÚ startswithÚendswithr ÚjoinÚislinkr r r)rÚdirÚnamesÚerrÚnameZfullrrrr s$     z Stats.statdirc Cs4tj |¡\}}tj |¡\}}||kr,d}tj |¡}|s@d}| |dd¡y"t|dƒ}| ¡}WdQRXWnDtk r´}z&t j   d||f¡| |dd¡dSd}~XYnX| |dt |ƒ¡d |krâ| |d d¡dS|sô| |d d¡t |d ƒ ¡}| |d t |ƒ¡~| ¡} | |dt | ƒ¡dS)NÚzÚfilesr ÚrbzCan't open %s: %s Z unopenableÚbytesóZbinaryÚemptyzlatin-1ÚlinesÚwords)r r ÚsplitextÚsplitÚnormcaserÚopenÚreadÚIOErrorrrrÚlenÚstrÚ splitlines) rÚfilenameÚheadÚextÚbaseÚfÚdatar"r*r+rrrr-s4  zStats.statfilecCs&|j |i¡}| |d¡|||<dS)Nr)rÚ setdefaultÚget)rr7ÚkeyÚnÚdrrrrJszStats.addstatsc sŠt|jƒ}i}x|D]}| |j|¡qWt|ƒ‰i‰ttt|ƒƒˆd<d}i|jd<xˆD]ˆ}d}t|t|ƒƒ}xH|D]@}|j| |¡}|dkrœd} ntd|ƒ} ||7}t|| ƒ}qzWt|tt|ƒƒƒ}|ˆ|<||jd|<q^W| d¡x|D]}||j|d<qúWˆ  dd¡‡‡fdd„} | ƒxN|D]F}x8ˆD]0}|j| |d¡}t d ˆ||fd d q@Wt ƒq6W| ƒdS) Nr7éZTOTALrz%dcs0x$ˆD]}tdˆ||fddqWtƒdS)Nz%*sú )Úend)Úprint)Úcol)ÚcolsÚcolwidthrrÚ printheaderls z!Stats.report..printheaderr$z%*srA)rB) rrÚupdateÚmaxÚmapr2r<r3ÚappendÚinsertrC) rZextsÚcolumnsr7ZminwidthrDZtotalZcwÚvalueÚwrGr)rErFrÚreportNsD            z Stats.reportN) Ú__name__Ú __module__Ú __qualname__rrr rrrPrrrrr s  rcCs6tjdd…}|stjg}tƒ}| |¡| ¡dS)Nr )rÚargvr ÚcurdirrrrP)rÚsrrrÚmainzs  rWÚ__main__)Ú__doc__r rrrWrQrrrrÚs q