
    6h                    n    S SK Jr  S SKJrJr  S SKJrJrJrJ	r	  S SK
Jr   " S S5      r " S S\5      rg	)
    )annotations)hexshort)encodingpycompattemplatefiltersutil)dateutilc                  R    \ rS rSrSrS rS	S jr\R                  S 5       r	S r
Srg)
defaultformatter   zEthe default formatter that does leftpad and support some common flagsc                  ^^^^^^^ Xl         X0l        UR                  (       a  [        R                  nO[        R
                  n[        R                  " U5      n[        R                  " U4S j5      mU R                  mU R                  R                  S5      S:X  ag  TmU4S jmT" TS   R                  5       5      S-   mSTS   R                  5       -  mSmUR                  S	5      (       d  TS-  mS
mUU4S jnU4S jnO[        R                  =pVSS
U4S jUR                  4SS
U4S jU4S	S
U4S jU4SS
U4S jU4SS
S [        R                  4SSS [        R                  4/nSSS.nU V	V
VVs/ s H2  u  ppUR                  U	5      (       d  M  XUR                  X5      U4PM4     nnn
n	n[        US   5      US'   SUS   S'   Xl        g s  snnn
n	f )Nc                   > TU S      $ Nr    )xrepos    >/usr/lib/python3/dist-packages/hgext/fastannotate/formatter.py<lambda>+defaultformatter.__init__.<locals>.<lambda>$   s    $qt*    s   revs   wdir()c                   > U c  S $ T" U 5      $ Nr   )r   origs    r   r   r   *   s    	 >tAw >r      .   +   %dr   	   changeset    c                   > U c  T$ SU -  T-   $ )Nr   r   )r   wrevwrevpads    r   r   r   1   s    qytKuqyG6KKr   c                @   > U c  T$ [         R                  " U 5      S-   $ )Nr   )r   bytestr)r   wnodes    r   csetenc*defaultformatter.__init__.<locals>.csetenc3   s#    9 L''*T11r   s   userc                0   > T" U 5      R                  5       $ r   )userr   getctxs    r   r   r   =       fQinn&6r      numberc                0   > T" U 5      R                  5       $ r   )revr*   s    r   r   r   >   s    q	r   c                   > T" U S   5      $ r   r   )r   hexfuncs    r   r   r   ?   s    71Q4=r      datec                0   > T" U 5      R                  5       $ r   )dater*   s    r   r   r   @   r,   r   s   filec                    U S   $ )N   r   r   s    r   r   r   A   s    adr   s   line_number   :c                    U S   S-   $ )N   r   r7   s    r   r   r   B   s    QqTAXr      node)r-   r   r   r:   )uioptsquietr
   	shortdatedatestrr	   	cachefunc_hexfuncgetnoder/   r   r$   	shortuserlistfuncmap)selfr<   r   r=   datefuncrevencr&   opmapfieldnamemapopseprC   encrG   r+   r1   r   r%   r!   r"   s     `           @@@@@@r   __init__defaultformatter.__init__   s   	88))H''H>>(+ 45-- 99== I-D>GDJOO-.5E4:>>++DG88L))KF2  (///F d6E7@4!8'Bd6AdNH,<,<=T#5x7G7GH
 $*A &+
%*!xx| 6S|''/5%* 	 
 '!*%

1
s   =G
G
Nc           	     6   / n/ nU R                    H  u  pgpU V
s/ s H  o" U" U
5      5      PM     nn
UR                  U5        US;   a  USS n[        R                  " [        R
                  [        U5      5      nU(       a  [        U5      OSnUR                  U5        M     Sn[        [        U5      5       H  n[        U5       H<  u  nnU R                   U   S   nSUU   [        UU   5      -
  -  nXU-   UU   -   -  nM>     U(       aT  Uc  USX/   -   -  nOFX   S   X   S   4nUU;   a  USX/   -   -  nO'USU R                  R                  S	X/   -   S
5      -   -  nUSS S:w  d  M  US-  nM     U R                  R                  U5        gs  sn
f )z(annotateresult, [str], set([rev, linenum])) -> None. write output.
annotateresult can be [(node, linenum, path)], or [(node, linenum)]
)r;   r2   Nr:   r   r   r   s   : s   :     -s   diff.deleted   
)rG   appendr   maplistr   colwidthsetmaxrangelen	enumerater<   labelwrite)rH   annotatedresultlinesexistinglinespieces	maxwidthsfrN   namerO   r   lwidthsmaxwidthresultijppaddingkeys                       r   r_   defaultformatter.writeO   s    	 "&AD$34OqQqTOA4MM!))bqE%%h&7&7Q@F&,s6{!HX& ". s?+,A!&)1ll1oa()A,QqT":;-!A$.. *  (eeh..F*-a0/2DQ2GHCm+&58"33%$''-- 58O_+ #  bc{e#%% -( 	f= 5s   Fc                    U R                   R                  (       d   U R                  R                  S5      (       a  [        $ [
        $ )Ns	   long_hash)r<   	debugflagr=   rC   r   r   rH   s    r   rB   defaultformatter._hexfuncx   s+    77		l ; ;JLr   c                    g r   r   rs   s    r   enddefaultformatter.end   s    r   )rG   r=   r<   NN)__name__
__module____qualname____firstlineno____doc__rP   r_   r	   propertycacherB   rv   __static_attributes__r   r   r   r   r      s0    O2h'R 
 r   r   c                  b   ^  \ rS rSrU 4S jrSS jrS r\R                  S 5       r	S r
SrU =r$ )	jsonformatter   c                j   > [         TU ]  XU5        U R                  R                  S5        SU l        g )N   [F)superrP   r<   r_   	needcomma)rH   r<   r   r=   	__class__s       r   rP   jsonformatter.__init__   s)    4(dr   c                v   U(       a  U R                  5         U R                   VVVVs/ s H  u  pEpgU[        R                  " XA5      4PM      nnnnnUb  UR	                  SU45        UR                  5         S/[        US S 5      -  S/-   n	Sn
[        U5      S-
  n[        [        U5      5       HS  nU
S-  n
[        U5       H-  u  pUu  nnU
SU[        R                  " UU   SS	9X   4-  -  n
M/     U
S
X:X  a  SOS-  -  n
MU     US:  a  SU l        U R                  R                  U
5        g s  snnnnf )Ns   line   ,rT   r   r:   s   
 {
s     "%s": %s%s
F)paranoids    }%sr   T)_writecommarG   r   rW   rV   sortr\   r[   r]   r   jsonr   r<   r_   )rH   r`   ra   rb   re   rN   rf   rO   rc   sepsrj   lastirk   rl   rm   kvss                    r   r_   jsonformatter.write   sG    &*\\
%1! 8##A78%1 	 
 MM7E*+vF3BK((C50O$q(s?+,AiF!&)2+#((A?G/   * g
==F - A:!DNf3
s   %D3
c                l    U R                   (       a#  U R                  R                  S5        SU l         g g )Nr   F)r   r<   r_   rs   s    r   r   jsonformatter._writecomma   s%    >>GGMM$"DN r   c                    [         $ r   )r   rs   s    r   rB   jsonformatter._hexfunc   s    
r   c                :    U R                   R                  S5        g )Ns   
]
)r<   r_   rs   s    r   rv   jsonformatter.end   s    hr   )r   rx   )ry   rz   r{   r|   rP   r_   r   r	   r~   rB   rv   r   __classcell__)r   s   @r   r   r      s6    
>#
 
    r   r   N)
__future__r   mercurial.noder   r   	mercurialr   r   r   r	   mercurial.utilsr
   r   r   r   r   r   <module>r      s8    #  %
h hV/ $ / r   