ó _˜Qc@sdZddlmZddlmZmZmZmZmZm Z ddl Z ddl Z ddl Z dZ d„Zd„Zd„Zd „Zied d ged ƒed ƒfdddedƒedƒfdddedƒedƒfdddedƒedƒfddeedƒfdd eed!ƒfdd"eed#ƒfdd$ded%ƒed&ƒfge jed'ƒfd(6Ze jd)7_dS(*s6command to display statistics about repository historyiÿÿÿÿ(t_(tpatchtcmdutiltscmutiltutilt templatertcommandsNtinternalcCsttj|dtƒ}y"tj||tddtƒ}Wn)tk rb}tj|j dƒ‚nX|j |ƒ|S(Ntquotedi( Rt parsestringtFalseRtchangeset_templatertNonet SyntaxErrorRtAborttargst use_template(tuitrepottmpltttinst((s//sys/lib/python2.7/site-packages/hgext/churn.pyt maketemplaters" c CsÇd \}}tj||ƒ}djtj||jƒ|jƒ|ƒƒ}xo|jdƒD]^} | jdƒr| jdƒ r|d7}q[| jdƒr[| jdƒ r[|d7}q[q[W||fS( Nits t+s+++ it-s--- (ii(Rt matchfilestjoinRtdifftnodetsplitt startswith( RRtctx1tctx2tfnstaddedtremovedtfmatchRtl((s//sys/lib/python2.7/site-packages/hgext/churn.pyt changedliness - csˆjdƒr!‡fd†‰n6ˆjddƒ‰tˆˆˆƒ‰‡‡fd†‰idd6‰i‰t‰ˆjdƒr•tjˆdƒ‰ntjˆd |ˆƒ}‡‡‡‡‡‡‡‡fd †}x#tj ˆ|ˆ|ƒD] }qëqëWˆj t d ƒd ƒˆS( sCalculate statst dateformatcsI|jƒ\}}tjtjt|ƒ|ƒd Œ}|jˆdƒS(NiR((tdatetdatetimettimetgmtimetfloattstrftime(tctxRttzR)(topts(s//sys/lib/python2.7/site-packages/hgext/churn.pytgetkey)s&ttemplates{author|email}cs!ˆjƒˆj|ƒˆjƒS(N(t pushbuffertshowt popbuffer(R/(RR(s//sys/lib/python2.7/site-packages/hgext/churn.pyR20s  itcountR)c s[|jƒ}ˆr-ˆ|jƒdƒ r-dSˆ|ƒjƒ}ˆj||ƒ}ˆjdƒr‡ˆj|dƒdddfˆ|R tlinestrR&(tamaptdfR2R1trateRtstateR(s//sys/lib/python2.7/site-packages/hgext/churn.pytprep<s  '  <R9N( R=RR Rt matchdateRtmatchR RtwalkchangerevsRBR(RRRFtpatsR1tmRJR/(( RFRGR2R1RHRRIRRs//sys/lib/python2.7/site-packages/hgext/churn.pyt countrate&s  $csTd„‰i}|jdƒ}| rRtjj|jdƒƒrR|jdƒ}n|rüx¡t|dƒD]}yD|jd|kr‰dpŒddƒ\}}|jƒ||jƒ = Such a file may be specified with the --aliases option, otherwise a .hgchurn file will be looked for in the working directory root. cSs|d|| S(Nt ((tsR&((s//sys/lib/python2.7/site-packages/hgext/churn.pytpad}staliasess.hgchurnREt=isskipping malformed alias: %s NtsortRCcSst|dƒ |fS(Ni(tsum(tx((s//sys/lib/python2.7/site-packages/hgext/churn.pyt–scss!|]\}}t|ƒVqdS(N(RW(t.0tktv((s//sys/lib/python2.7/site-packages/hgext/churn.pys ™sgð?css!|]\}}t|ƒVqdS(N(R?(RZR[R\((s//sys/lib/python2.7/site-packages/hgext/churn.pys šssassuming %i character terminal itdiffstatics_|\}}dˆ|ˆƒd||fˆjdˆ|ƒdƒˆjdˆ|ƒdƒfS(Ns %s %15s %s%s s+%d/-%dRsdiffstat.insertedRsdiffstat.deleted(tlabel(tnameR]R#R$(tcharnumtmaxnameRSR(s//sys/lib/python2.7/site-packages/hgext/churn.pytformat¢s  ics0dˆ|ˆƒt|ƒdˆt|ƒƒfS(Ns %s %6d %s t*(RW(R_R7(R`RaRS(s//sys/lib/python2.7/site-packages/hgext/churn.pyRb¬scstt|ˆˆƒƒS(N(tinttround(R7(tmaxcounttwidth(s//sys/lib/python2.7/site-packages/hgext/churn.pyR`°s(R=tostpathtexiststwjointopenRR R<t ValueErrortwarnRRPtitemsRVR-tmaxt termwidthtdebugtwrite(RRRNR1RFRTR&taliastactualRHtttywidthRbR_R7((R`RfRaRSRRgs//sys/lib/python2.7/site-packages/hgext/churn.pytchurnZsD# "*   "   RER;s.count rate for the specified revision or rangetREVtdR)Rs+count rate for revisions matching date spectDATERR3s{author|email}stemplate to group changesetstTEMPLATEtfR(s/strftime-compatible format for grouping by datetFORMATtcR8s"count rate by number of changesetsRRRVs$sort by key (default: sort by count)R]s&display added/removed lines separatelyRTsfile with email aliasestFILEs3hg churn [-d DATE] [-r REV] [--aliases FILE] [FILE]Rws churn(t__doc__tmercurial.i18nRt mercurialRRRRRRRhR+R*t testedwithRR'RPRwR twalkoptstcmdtablet inferrepo(((s//sys/lib/python2.7/site-packages/hgext/churn.pyt s6.  4 ]