Mercurial > public > mercurial-scm > hg
diff mercurial/color.py @ 39644:3b421154d2ca
py3: fix str vs bytes in enough places to run `hg version` on Windows
I don't have Visual Studio 2015 at home, but this now works with a handful of
extensions (blackbox, extdiff, patchbomb, phabricator and rebase, but not
evolve):
$ HGMODULEPOLICY=py py -3 ../hg version
Enabling the evolve extension causes the usual "failed to import ..." line, but
then print this before the usual version output:
('commit', '[b'debugancestor', b'debugapplystreamclonebundle', ...,
b'verify', b'version']')
... where the elided part seems to be every command and alias known.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Thu, 13 Sep 2018 22:07:00 -0400 |
parents | ddc1da134772 |
children | cabf09dbc6e0 |
line wrap: on
line diff
--- a/mercurial/color.py Thu Sep 13 20:54:53 2018 -0400 +++ b/mercurial/color.py Thu Sep 13 22:07:00 2018 -0400 @@ -408,21 +408,21 @@ _INVALID_HANDLE_VALUE = -1 class _COORD(ctypes.Structure): - _fields_ = [('X', ctypes.c_short), - ('Y', ctypes.c_short)] + _fields_ = [(r'X', ctypes.c_short), + (r'Y', ctypes.c_short)] class _SMALL_RECT(ctypes.Structure): - _fields_ = [('Left', ctypes.c_short), - ('Top', ctypes.c_short), - ('Right', ctypes.c_short), - ('Bottom', ctypes.c_short)] + _fields_ = [(r'Left', ctypes.c_short), + (r'Top', ctypes.c_short), + (r'Right', ctypes.c_short), + (r'Bottom', ctypes.c_short)] class _CONSOLE_SCREEN_BUFFER_INFO(ctypes.Structure): - _fields_ = [('dwSize', _COORD), - ('dwCursorPosition', _COORD), - ('wAttributes', _WORD), - ('srWindow', _SMALL_RECT), - ('dwMaximumWindowSize', _COORD)] + _fields_ = [(r'dwSize', _COORD), + (r'dwCursorPosition', _COORD), + (r'wAttributes', _WORD), + (r'srWindow', _SMALL_RECT), + (r'dwMaximumWindowSize', _COORD)] _STD_OUTPUT_HANDLE = 0xfffffff5 # (DWORD)-11 _STD_ERROR_HANDLE = 0xfffffff4 # (DWORD)-12 @@ -484,7 +484,7 @@ w32effects = None else: origattr = csbi.wAttributes - ansire = re.compile('\033\[([^m]*)m([^\033]*)(.*)', + ansire = re.compile(b'\033\[([^m]*)m([^\033]*)(.*)', re.MULTILINE | re.DOTALL) def win32print(ui, writefunc, *msgs, **opts): @@ -516,15 +516,15 @@ # them if not found pass # hack to ensure regexp finds data - if not text.startswith('\033['): - text = '\033[m' + text + if not text.startswith(b'\033['): + text = b'\033[m' + text # Look for ANSI-like codes embedded in text m = re.match(ansire, text) try: while m: - for sattr in m.group(1).split(';'): + for sattr in m.group(1).split(b';'): if sattr: attr = mapcolor(int(sattr), attr) ui.flush()