
    q&fqG                         d dl Z ddlmZ ddlmZmZ ddlmZ 	 d dlZi dddd	d
dddddddddddddddddej                  dfddej                  dfddej                  dfddej                  dfddej                  dfd dej                  dfd!dej                  dfd"dej                   dfiZi dd dd#dd$dd%dd&dd'd d(d!d)d"d*dddd+d
d,dd-dd.d/d0d1d2d3d4d5d6d7d8d9d:Zi d;d<d=dd>dd?d!d@d dAd dBd dCdDdEd<dFddGddHdIdJddKddLd"dMddNdOi dPddQddRdSdTd<dUdDdVd dWddXdYdZdd[dd\d]d^dd_dd`ddaddbddcdi ddddeddfddgddhddiddjddkddld<dmddnddoddpddqddrddsd dtd!i duddvddwddxd<dydDdzd<d{d!d|dDd}d~ddDddddddddIdd~dd<ddddId!dddZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z e j@                  d      Z!d Z"d Z#dZ$ejJ                  r`d dl&Z&e&jN                  jP                  Z)e&jT                  Z+dZ, G d de&jZ                        Z. G d de&jZ                        Z/ G d de&jZ                        Z0dZ1dZ2dZ3d.Z4d,Z5dZ6dZ7d%Z8dZ9dZ:dZ;dZ<i dddd de5de4de5e4z  de3d e3e5z  d!e3e4z  d"e5e4z  e3z  de6d/dd1e9d3e8de9e8z  de7de7e9z  de7e8z  e9e8z  e7z  e:e<e;dZ$e6e:e<e;hZ=e)j}                  e1      Z?e?e?e,k(  rdZ$nb e0       Z@e)j                  e? e&j                  e@            sdZ$n6e@j                  ZD e j@                  de j                  e j                  z        ZGd ZHyy# eef$ r dZi ZY w xY w)    N   )_)encodingpycompat)
stringutil   none)Ts   sgr0    s   standout)Ts   smsor	   	   underline)Ts   smulr	   s   reverse)Ts   revr	      inverse   blink)Tr   r	      dim)Tr   r	      bold)Tr   r	   s	   invisible)Ts   invisr	   s   italic)Ts   sitmr	   s   blackFr	   s   reds   greens   yellows   blues   magentas   cyans   white          !   "   #   $   %               s   black_background(   s   red_background)   s   green_background*   +   ,   -   .   /   )   yellow_background   blue_background   purple_background   cyan_background   white_backgrounds
   grep.matchs   red bolds   grep.linenumbers   grep.revs   grep.seps   grep.filenames	   grep.users	   grep.dates   grep.inserteds
   green bolds   grep.deleteds   bookmarks.actives   branches.actives   branches.closeds
   black bolds   branches.currents   branches.inactives   diff.changeds   diff.deleteds   diff.deleted.changeds   red bold underlines   diff.deleted.unchangeds   diff.difflines   diff.extendeds	   cyan bolds   diff.file_as   diff.file_bs	   diff.hunks   diff.inserteds   diff.inserted.changeds   green bold underlines   diff.inserted.unchangeds   diff.tabs   diff.trailingwhitespaces   bold red_backgrounds   changeset.publics   changeset.drafts   changeset.secrets   diffstat.deleteds   diffstat.inserteds!   formatvariant.name.mismatchconfigs"   formatvariant.name.mismatchdefaults   formatvariant.name.uptodates!   formatvariant.repo.mismatchconfigs"   formatvariant.repo.mismatchdefaults   formatvariant.repo.uptodates   formatvariant.config.specials   formatvariant.config.defaults   formatvariant.defaults   histedit.remainings   ui.addremove.addeds   ui.addremove.removeds   ui.errors	   ui.prompts   log.changesets   patchbomb.finalsummarys   patchbomb.froms   patchbomb.tos   patchbomb.subjects   patchbomb.diffstatss   rebase.rebaseds   rebase.remainings   resolve.resolveds   resolve.unresolveds
   shelve.ages   shelve.newests   shelve.names	   blue bolds   status.addeds   status.cleans   status.copieds   status.deleteds   cyan bold underlines   status.ignoreds   status.modifieds   status.removeds   status.unknowns   magenta bold underline)s   tags.normals
   tags.locals"   upgrade-repo.requirement.preserveds   upgrade-repo.requirement.addeds    upgrade-repo.requirement.removedc                 .    t         j                  |       y N)_defaultstylesupdate)uiextname
colortables      1/usr/lib/python3/dist-packages/mercurial/color.pyloadcolortabler0      s    *%r	   c                    t         y|dvry| j                  j                  t               | j	                  d      D ]p  \  }}|j                  d      r!dt        |      df}|| j                  |dd <   8|j                  d      sJd	d|j                  d
d      f}|| j                  |dd <   r 	 t        j                          | j                  j                         j                         D ]Y  \  }\  }}}|s|rt        j                  t        j                  |            r9| j!                  d|z         | j                  |= [ t        j                  d      rt        j                  d      s<|dk(  r|r| j#                  t%        d             | j                  j                          yy# t         j                  $ r | j                  j                          Y yw xY w)zDInitialize terminfo data and the terminal if we're in terminfo mode.N)   auto   terminfo   color   color.Fr	      	   terminfo.Ts   \E   	   s   no terminfo entry for %s
setafsetabr3   s>   no terminfo entry for setab/setaf: reverting to ECMA-48 color
)curses_terminfoparamsr+   _baseterminfoparamsconfigitems
startswithintreplace	setuptermerrorclearcopyitemstigetstrr   sysstrdebugwarnr   )	r,   mode	formattedkeyvalnewvalbecs	            r/   _terminfosetuprT      s    ~))12NN8, 1S>>)$SXs+F*0Bs12w'^^L)CVW!=>F*0Bs12w'1
 ,,11399; (YaA);< HH2Q67""3'( ??7#6??7+C ;9GG' 	  " ,D << 
  "s   1F0 0-G G c                 P    t        |       }|| _        |r|dk7  rt        |        yyy)zconfigure color on a ui

    That function both set the colormode for the ui object and read
    the configuration looking for custom colors and effect definitions.   debugN)
_modesetup
_colormodeconfigstyles)r,   rL   s     r/   setuprZ      s-    
 b>DBM R !tr	   c                 |     j                  d      ry  j                  dd      }|dk(  ry|dk(  }d}|s4t        j                  |      r j	                  dd      dk(  s|dk(  rd}nd}|s|sy |xs4 t
        j                  j                  d	      d
k7  xr  j                          j                  dd      t         dd      r j                  dd      t        j                  rCddlm} dk(  rt        r|j                         rdn&dn#dk(  rt        r|j                          ndk(  rd fd}dk(  r( j                   j#                          t        sQ |        y dk(  r j                   j#                          n)dk(  r#t%                 j                   s |        dny |s|rrS y )Nr4   s   uirV   r2   Fs   --colors   alwaysTs   TERMs   dumbs   modepageractives	   pagermoder   )win32s   ansi   win32c                  R    k(  r! rj                  t        d      z         y y y )Ns(   warning: failed to set color mode to %s
)rK   r   )rM   rL   realmoder,   s   r/   modewarnz_modesetup.<locals>.modewarn
  s.     8	GGABCdJK !*r	   r3   )plainconfigr   	parseboolconfigsourcer   environgetrM   getattrr   	iswindows r]   
w32effectsenablevtmoder=   rE   rT   )	r,   rc   autoalwaysr]   ra   rM   rL   r`   s	   `     @@@r/   rW   rW      s   	xxYYuh'FWDFJ((0 OOE8,
:"FD$ W%0CR\\^  99Xw'D r=%(yy<6H7? !3!3!5"# W_ 	L 8
  "J	W	
  "	[	 r4+!!JH$9r	   c                    | j                   j                  t               | j                  d      D ]  \  }}d|vs|j	                  d      r| j                  d|      }|s1g }|D ]R  }t        | |      r|j                  |       !| j                  t        d      t        j                  |      |fz         T dj                  |      | j                   |<    y )Nr4      .)r5   r7   s:   ignoring unknown color/effect %s (configured in color.%s)
    )_stylesr+   r*   r?   r@   
configlistvalideffectappendrK   r   r   pprintjoin)r,   status
cfgeffectsgoodrR   s        r/   rY   rY   %  s    JJn% nnX6 1
v!2!23L!M]]8V4
D 
r1%KKNGG: &,,Q/8	9	
 "&4BJJv#1r	   c                 T    | j                   dk(  rt        S | j                   t        S i S )z8Return the effects map for the color mode set on the ui.r^   )rX   rk   _effects)r,   s    r/   _activeeffectsr}   ;  s(    	}} 		"Ir	   c                     | j                    xr |t        |       v xs! || j                   v xs |dd | j                   v S )z(Determine if the effect is valid or not.N)r=   r}   )r,   effects     r/   rt   rt   D  sK    """Cv1C'C "$$$Jt8J8J(Jr	   c                    d}|j                  d      rd}|dd }	 | j                  |   \  }}}|r,|r|S t        j                  t        j                  |            S |r)t        j                  t        j                  d      |      S t        j                  t        j                  d      |      S # t        $ r Y yw xY w)	z%Helper function for render_effects().Fs   _backgroundTNr   r	   r;   r:   )endswithr=   KeyErrorr<   rH   r   rI   tparm)r,   r   bgattrrO   termcodes         r/   _effect_strr   K  s     
B~& 008c8 O??8??3#788	||FOOG4c::||FOOG4c::  s   B1 1	B=<B=c                     g }| j                  |      D ]  }|s|j                  |||g        dj                  |      S )a]  Insert start sequence at every occurrence of stop sequence

    >>> s = _mergeeffects(b'cyan', b'[C]', b'|')
    >>> s = _mergeeffects(s + b'yellow', b'[Y]', b'|')
    >>> s = _mergeeffects(b'ma' + s + b'genta', b'[M]', b'|')
    >>> s = _mergeeffects(b'red' + s, b'[R]', b'|')
    >>> s
    '[R]red[M]ma[Y][C]cyan|[R][M][Y]yellow|[R][M]genta|'
    r	   )splitextendrw   )textstartstoppartsts        r/   _mergeeffectsr   a  sJ     EZZ 'eQ%&' 88E?r	   c                     |s|S  j                   r9dj                   fddg|j                         z   D              }t         d      }nwt	               }dg|j                         z   D cg c]  }t        j                  ||          }}ddj                  |      z   dz   }dt        j                  |d         z   dz   }t        |||      S c c}w )z-Wrap text in commands to turn on each effect.r	   c              3   6   K   | ]  }t        |        y wr)   )r   ).0r   r,   s     r/   	<genexpr>z"_render_effects.<locals>.<genexpr>x  s      
(.KF#
s   r      [   ;   m)r=   rw   r   r   r}   r   bytestrr   )r,   r   effectsr   r   activeeffectsrR   s   `      r/   _render_effectsr   s  s    	 
3:)gmmo2M
 
 2w'&r* Y0
 ]1-.
 
 499U++d2(**=+ABBTIud++
s   ,Cs   \x1b\[[0-9;]*mc                 .    t         j                  d|       S )z@Strip ANSI control codes which could be inserted by colorlabel()r	   )_ansieffectresub)r   s    r/   stripeffectsr     s    S$''r	   c           
         | j                   dk(  r*|r&|r$|j                  d      rd||dd fz  }|S d||fz  }|S | j                   g }|j                         D ]P  }| j                  j	                  |d      }|r|j                  |       3t        | |      s@|j                  |       R dj                  |      }|r9dj                  |j                  d      D cg c]  }t        | ||       c}      }|S c c}w )	z,add color control code according to the moderV      
s   [%s|%s]
Ns   [%s|%s]r	   rq   )	rX   r   r   rr   rg   ru   rt   rw   r   )r,   msglabelr   lslines          r/   
colorlabelr     s   	}} S||E""eS"X%66& J# !E3</" J! 
	" 	"A

q#&Aq!R#q!	" ))G$** !$		% 0 $Bg6C Js   C9r   c                   D    e Zd Zdej                  fdej                  fgZy)_COORDXYN__name__
__module____qualname__ctypesc_short_fields_ r	   r/   r   r     s    &..)C+@Ar	   r   c                   x    e Zd Zdej                  fdej                  fdej                  fdej                  fgZy)_SMALL_RECTLeftTopRightBottomNr   r   r	   r/   r   r     s9    V^^$FNN#fnn%v~~&	
r	   r   c                   .    e Zd ZdefdefdefdefdefgZy)_CONSOLE_SCREEN_BUFFER_INFOdwSizedwCursorPositionwAttributessrWindowdwMaximumWindowSizeN)r   r   r   r   _WORDr   r   r   r	   r/   r   r     s1    v(E"%"F+
r	   r   l    l          @      i @  i      r#   r$   r%   r&   )r'   s   bold_backgroundr
   r   s   \033\[([^m]*)m([^\033]*)(.*)c                 ~   |j                  dd      }t        }d }|j                         D ]D  }| j                  j                  |d      }|j                         D ]  }		  |t        |	   |      } F |j                  d      sd|z   }t        j                  t        |      }
	 |
r|
j                  d      j                  d      D ]  }|s |t        |      |      } | j                          t        j                  t        |        ||
j                  d             t        j                  t        |
j                  d	            }
|
r| j                          t        j                  t        t               y # t
        $ r Y -w xY w# | j                          t        j                  t        t               w xY w)
Nr   r	   c                 h    | dk(  rt         S | t        v r|| z  S | dkD  r| dz  |dz  z  S | dz  |dz  z  S )Nr      p      r      )origattrpassthrough)rO   r   s     r/   mapcolorzwin32print.<locals>.mapcolor  sM    by#cz!td
td{33d
td{33r	   r   s   [mr   r   r   r   )rg   r   r   rr   rk   r   r@   rematchansiregrouprA   flush	_kernel32SetConsoleTextAttributestdout)r,   	writefuncr   optsr   r   r   r   styler   msattrs               r/   
win32printr     so   #&	4  	AJJNN1c*E++- #Jv$6=D	 x(t#D HHVT"	@WWQZ--d3 :E'E
D9: 
11&$?!''!*%HHVQWWQZ0  HHJ--fh?/    , HHJ--fh?s%   E<$'F B F <	F	F	0F<)Ir   i18nr   rj   r   r   utilsr   r<   COLOR_BLACK	COLOR_REDCOLOR_GREENCOLOR_YELLOW
COLOR_BLUECOLOR_MAGENTA
COLOR_CYANCOLOR_WHITEr>   ImportErrorAttributeErrorr|   r*   r0   rT   rZ   rW   rY   r}   rt   r   r   r   compiler   r   r   rk   ri   r   windllkernel32r   c_ushortr   _INVALID_HANDLE_VALUE	Structurer   r   r   _STD_OUTPUT_HANDLE_STD_ERROR_HANDLE_FOREGROUND_BLUE_FOREGROUND_GREEN_FOREGROUND_RED_FOREGROUND_INTENSITY_BACKGROUND_BLUE_BACKGROUND_GREEN_BACKGROUND_RED_BACKGROUND_INTENSITY_COMMON_LVB_REVERSE_VIDEO_COMMON_LVB_UNDERSCOREr   GetStdHandler   csbiGetConsoleScreenBufferInfobyrefr   r   	MULTILINEDOTALLr   r   r   r	   r/   <module>r     s	   
 
 %) 	* 	'	
 	' 	' 	# 	% 	+ 	' 	5&,,c2 	((#. 	5&,,c2 	E6..4 	%**C0  	UF00#6!" 	%**C0#$ 	5&,,c2%2Qb B b	
 r R  R b Q q !  A   r!" #$ -2J;JJ J 	J
 jJ *J *J mJ [J J J J J 'J XJ  V!J" 2#J$ v%J& g'J( l)J* K+J, M-J. */J0 h1J2 53J4 5J6 7J8  69J: ;J< =J> ?J@ AJB (CJD )&EJF *9GJH #HIJJ )&KJL *9MJN #HOJP $YQJR $XSJT cUJV ;WJX 8YJZ V[J\ ]J^ )_J` iaJb scJd zeJf WgJh (iJj CkJl wmJn oJp qJr ;sJt 7uJv mwJx LyJz ]{J| W}J~ gJ@ -AJB }CJD EJF {GJH 0IJJ  +2'/)/SJZ&*#ZNb1,;,$,( 

-.(
6 
&&IOOEB!! B
f&& 

f&6&6 
 $"O"O" &#! 	 	#	
 	?%66 	! 	$6 	!$55 	/$558HH 	& 	U 	? 	. 	o0AA 	,  	.@!" 	,/@@#& //2BB1,-/J6 	!	K ##F ~#88
*,33FLFLL<NO J''HRZZ0",,2JF+@A } 	^$ Fs   B%M> >NN