ó
    6°hr  ã                  ó  • S r SSKJr  SSKrSSKrSSKrSSKJr  SSKJ	r	J
r
JrJrJrJrJr  0 r\R"                  " \5      rSrS rS r\" S	S
S/ \" S5      \" S5      4SSS\" S5      \" S5      4SSS\" S5      \" S5      4SSS\" S5      \" S5      4SSS\" S5      \" S5      4SS S!\" S"5      4S#S$S!\" S%5      4SS&S!\" S'5      4SS(S\" S)5      \" S*5      4/	\	R*                  -   \" S+5      \R,                  S,S-9S. 5       rg)/z6command to display statistics about repository historyé    )ÚannotationsN)Ú_)ÚcmdutilÚencodingÚ
logcmdutilÚpatchÚpycompatÚ	registrarÚscmutils   ships-with-hg-corec                óÂ  • Su  pVSR                  [        R                  " XR                  5       UR                  5       U5      5      nSnUR	                  S5       H  n	U(       a  U	R                  S5      (       a  US-  nM'  U(       a  U	R                  S5      (       a  US-  nMK  U	R                  S5      (       a  S	nMe  U	R                  S
5      (       d  M}  SnM�     XV4$ )N©r   r   ó    Fó   
ó   +é   ó   -ó   @Tó   d)Újoinr   ÚdiffÚnodeÚsplitÚ
startswith)
ÚuiÚrepoÚctx1Úctx2ÚfmatchÚaddedÚremovedr   ÚinhunkÚls
             Ú-/usr/lib/python3/dist-packages/hgext/churn.pyÚchangedlinesr$   %   s¯   € Ø�N€EØ�8‰8”E—J’J˜t§Y¡Y£[°$·)±)³+¸vÓFÓG€DØ€FØ�Z‰Z˜ÖˆÞ�a—l‘l 4×(Ñ(Ø�Q‰JŠEÞ˜Ÿ™ T×*Ñ*Ø�q‰LŠGØ�\‰\˜$×ÑØŠFØ�\‰\˜$×ÓØŠFñ ð ÐÐr   c           	     óV  ^ ^^^^
^^^• TR                  S5      (       a  U4S jm
OHTR                  S5      =(       d    TR                  S5      m[        R                  " T TT5      mUU 4S jm
T R                  [	        S5      [	        S5      [        T5      S9m0 mUU
UUUUU 4S	 jn[        R                  " U[        R                  " T5      TS
   TS   TS   TS   S9n[        R                  " TU5      u  px[        R                  " TXxU5       H  n	M     TR                  5         T$ )zCalculate statsÚ
dateformatc                ó  >• U R                  5       u  p[        R                  " [        R                  " [	        U5      U-
  5      S S 6 n[
        R                  " UR                  [
        R                  " TS   5      5      5      $ )Né   r&   )	ÚdateÚdatetimeÚtimeÚgmtimeÚfloatr   Ú
strtolocalÚstrftimeÚstrfromlocal)ÚctxÚtÚtzr)   Úoptss       €r#   ÚgetkeyÚcountrate.<locals>.getkey9   sg   ø€ Ø—H‘H“J‰EˆAÜ×$Ò$¤d§k¢k´%¸³(¸R±-Ó&@ÀÀ!Ð&DÐEˆDÜ×&Ò&Ø—‘œh×3Ò3°D¸Ñ4FÓGÓHóð r   ÚoldtemplateÚtemplatec                óf   >• TR                  5         TR                  U 5        TR                  5       $ ©N)Ú
pushbufferÚshowÚ	popbuffer)r1   Útmplr   s    €€r#   r5   r6   D   s#   ø€ Ø�M‰MŒOØ�I‰I�cŒNØ—<‘<“>Ð!r   s	   analyzings	   revisions)ÚunitÚtotalc                ó  >• U R                  5       nT
" U 5      R                  5       nT	R                  X35      nTR                  S5      (       a  TR                  US5      S   S-   S4TU'   O‡U R                  5       n[	        U5      S:”  a  TR                  [        S5      U4-  5        g US   n[        TTXPU5      n[        TR                  US5      U5       VVs/ s H	  u  pxXx-   PM     snnTU'   TR                  5         g s  snnf )NÚ
changesets)r   r   r   s$   revision %d is a merge, ignoring...
r   )
ÚrevÚstripÚgetÚparentsÚlenÚnoter   r$   ÚzipÚ	increment)r1   r   rC   ÚkeyrF   r   ÚlinesÚrr"   Úamapr5   r4   ÚprogressÚrater   r   s            €€€€€€€r#   ÚprepÚcountrate.<locals>.prepN   sî   ø€ Ø�g‰g‹iˆÙ�S‹k×ÑÓ!ˆØ�h‰h�sÓ ˆØ�8‰8�L×!Ñ!ØŸ™ # tÓ,¨QÑ/°!Ñ3°QÐ7ˆD�ŠIà—k‘k“mˆGÜ�7‹|˜aÓØ—‘œÐBÓCÀsÀfÑLÔMØà˜1‘:ˆDÜ   T¨4°fÓ=ˆEÜ+.¨t¯x©x¸¸VÓ/DÀeÔ+LÔMÒ+L¡4 1˜œÑ+LÒMˆD�‰Ià×ÑÕùó Ns   ÃDrC   r)   ÚincludeÚexclude)Úpatsr4   Úrevspecr)   Úinclude_patsÚexclude_pats)rE   r   ÚmaketemplaterÚmakeprogressr   rG   Úwalkoptsr	   ÚbyteskwargsÚ
makewalkerr   ÚwalkchangerevsÚcomplete)r   r   rN   rU   r4   rQ   ÚwoptsÚrevsÚmakefilematcherr1   r5   rO   rP   r>   s   ``` `     @@@@r#   Ú	countraterc   5   s  ÿ€ à‡x�x�×Ñö	ð �x‰x˜Ó&×>¨$¯(©(°:Ó*>ˆÜ×'Ò'¨¨D°$Ó7ˆö	"ð
 �‰Ü	ˆ,‹œa ›o´S¸³Yð ð €Hð €D÷ó ô$ ×ÒØÜ×!Ò! $Ó'Ø�U‘Ø�&‰\Ø˜)‘_Ø˜)‘_ñ€Eô '×1Ò1°$¸Ó>Ñ€DÜ×%Ò% d¨DÀ4ÖHˆÙñ Ið ×ÑÔà€Kr   s   churnó   rs   revs/   count rate for the specified revision or revsets   REVr   s   dater   s+   count rate for revisions matching date specs   DATEó   ts   oldtemplates)   template to group changesets (DEPRECATED)s   TEMPLATEó   Ts   templates   {author|email}s   template to group changesetsó   fs
   dateformats/   strftime-compatible format for grouping by dates   FORMATó   cs
   changesetsFs"   count rate by number of changesetsó   ss   sorts$   sort by key (default: sort by count)s   diffstats&   display added/removed lines separatelys   aliasess   file with email aliasess   FILEs3   hg churn [-d DATE] [-r REV] [--aliases FILE] [FILE]T)ÚhelpcategoryÚ	inferrepoc                ó²  ^ ^^^^^• S m0 nUR                  S5      nU(       dD  [        R                  R                  UR	                  S5      5      (       a  UR	                  S5      nU(       ah  [        US5       nU HM  n UR                  SU;   =(       a    S=(       d    SS5      u  p‰U	R                  5       XHR                  5       '   MO     SSS5        [        [        T X/UQ70 UD6R                  5       5      n
U
(       d  gUR                  S	5      (       a  U
R                  5         OU
R                  S
 S9  [        [!        S U
 5       5      5      =(       d    Sm[!        S U
 5       5      mT R#                  5       nT R%                  SU-  5        UT-
  S-
  S-
  S-
  mUR                  S5      (       a  TS-  mUUUU 4S jnOTS-  mUUU4S jnUU4S jmU
 H  u  pÞT R'                  U" XÞ5      5        M     g! [         a9    UR                  5       nU(       a  T R                  [        S5      U-  5         GMÅ  f = f! , (       d  f       GN= f)a‹  histogram of changes to the repository

This command will display a histogram representing the number
of changed lines or revisions, grouped according to the given
template. The default template will group changes by author.
The --dateformat option may be used to group the results by
date instead.

Statistics are based on the number of changed lines, or
alternatively the number of matching revisions if the
--changesets option is specified.

Examples::

  # display count of changed lines for every committer
  hg churn -T "{author|email}"

  # display daily activity graph
  hg churn -f "%H" -s -c

  # display activity of developers by month
  hg churn -f "%Y-%m" -s -c

  # display count of lines changed in every year
  hg churn -f "%Y" -s

  # display count of lines changed in a time range
  hg churn -d "2020-04 to 2020-09"

It is possible to map alternate email addresses to a main address
by providing a file using the following format::

  <alias email> = <actual email>

Such a file may be specified with the --aliases option, otherwise
a .hgchurn file will be looked for in the working directory root.
Aliases will be split from the rightmost "=".
c                ó@   • U SU[         R                  " U 5      -
  -  -   $ )Nó    )r   Úcolwidth)Úsr"   s     r#   ÚpadÚchurn.<locals>.padÉ   s"   € Ø�4˜1œx×0Ò0°Ó3Ñ3Ñ4Ñ4Ð4r   Úaliasess   .hgchurnÚrbó   =Nr   s   skipping malformed alias: %s
Úsortc                ó$   • [        U S   5      * U 4$ )Nr   ©Úsum)Úxs    r#   Ú<lambda>Úchurn.<locals>.<lambda>ã   s   € ¤# a¨¡d£) ¨Q¡r   )rK   c              3  ó<   #   • U  H  u  p[        U5      v •  M     g 7fr:   rx   ©Ú.0ÚkÚvs      r#   Ú	<genexpr>Úchurn.<locals>.<genexpr>æ   s   é € Ð1ªD¡D Aœ˜QŸ˜ªDùó   ‚g      ð?c              3  ó<   #   • U  H  u  p[        U5      v •  M     g 7fr:   )rG   r~   s      r#   r‚   rƒ   ç   s   é € Ð*¢T™T˜Q”#�a—&�&¢Tùr„   s   assuming %i character terminal
é   Údiffstaté   c           
     ó˜   >• Uu  p#ST" U T5      SX#4-  TR                  ST" U5      -  S5      TR                  ST" U5      -  S5      4-  $ )Ns   %s %15s %s%s
s   +%d/-%dr   s   diffstat.insertedr   s   diffstat.deleted)Úlabel)Únamer‡   r   r    ÚcharnumÚmaxnamerq   r   s       €€€€r#   ÚformatÚchurn.<locals>.formatð   sb   ø€ Ø%‰NˆEØ$Ù�D˜'Ó"Ø˜eÐ-Ñ-Ø—‘˜¡¨£Ñ.Ð0DÓEØ—‘˜¡¨Ó 0Ñ0Ð2EÓFð	(ñ ð r   r(   c           	     óX   >• ST" U T5      [        U5      ST" [        U5      5      -  4-  $ )Ns
   %s %6d %s
ó   *rx   )r‹   ÚcountrŒ   r�   rq   s     €€€r#   rŽ   r�   ü   s7   ø€ Ø!Ù�D˜'Ó"Ü�E“
Ø‘wœs 5›zÓ*Ñ*ð%ñ ð r   c                ó&   >• [        U T-  T-  5      $ r:   )Úint)r’   ÚmaxcountÚwidths    €€r#   rŒ   Úchurn.<locals>.charnum  s   ø€ Ü�5˜5‘= HÑ,Ó-Ð-r   )rE   ÚosÚpathÚexistsÚwjoinÚopenÚrsplitrD   Ú
ValueErrorÚwarnr   Úlistrc   Úitemsrv   r-   ÚmaxÚ	termwidthÚdebugÚwrite)r   r   rU   r4   rN   rs   Úfpr"   ÚaliasÚactualrP   ÚttywidthrŽ   r‹   r’   rŒ   r•   r�   rq   r–   s   `              @@@@@r#   Úchurnrª   q   sï  ý€ òp5ð €DØ�h‰h�yÓ!€GÞ”r—w‘w—~‘~ d§j¡j°Ó&=×>Ñ>Ø—*‘*˜[Ó)ˆÞÜ�'˜4Ô  BÛ�ðØ$%§H¡H¨T°Q©Y×-?¸4×-GÀ4ÈÓ$K‘M�EØ*0¯,©,«.�DŸ™›Ó'ñ ÷ !ô ”	˜"˜dÐ8¨4Ò8°4Ñ8×>Ñ>Ó@ÓA€DÞØà‡x�x�×ÑØ�	‰	�à�	‰	Ñ/ˆ	Ñ0ô ”SÑ1©DÓ1Ó1Ó2×9°c€HÜÑ*¡TÓ*Ó*€Gà�|‰|‹~€HØ‡H�HÐ0°8Ñ;Ô<Ø�wÑ Ñ" QÑ&¨Ñ*€Eà‡x�x�
×ÑØ�‰ˆ÷	ñ 	ð 	�‰
ˆ÷	ö.ó ‰ˆØ
�‰‘˜Ó$Ö%ò øôa "ó ØŸ™›	�AÞØŸ™¤Ð"CÓ DÀqÑ HÔIÛð	ú÷ !Ö ús1   Á;IÂA	HÃIÈ>IÈ?IÉIÉIÉ
I)Ú__doc__Ú
__future__r   r*   r˜   r+   Úmercurial.i18nr   Ú	mercurialr   r   r   r   r	   r
   r   ÚcmdtableÚcommandÚ
testedwithr$   rc   r[   ÚCATEGORY_MAINTENANCErª   © r   r#   Ú<module>r´      s“  ðñ =å "ã Û 	Û å ÷÷ ñ ð €Ø
×
Ò
˜HÓ
%€ð
 #€
òò 9ñx 	Øð ØØÙÐ@ÓAÙˆf‹Ið	
ð ØØÙÐ<Ó=Ùˆg‹Jð	
ð ØØÙÐ:Ó;Ùˆk‹Nð	
ð ØØÙÐ-Ó.Ùˆk‹Nð	
ð ØØÙÐ@ÓAÙˆi‹Lð	
ð 
ˆ}˜e¡QÐ'LÓ%MÐNØ	ˆw˜™qÐ!HÓIÐJØ	ˆk˜5¡!Ð$MÓ"NÐOØ	ˆj˜#™qÐ!;Ó<¹aÀ»jÐIðO(ðR ×ÑñS)ñT Ð<Ó=Ø×-Ñ-Øñ]/ñ`f&óa/ñ`f&r   