[PATCH 2 of 4] py3: convert set of revset initial symbols back to bytes

Yuya Nishihara yuya at tcha.org
Sun Mar 12 20:41:54 EDT 2017


# HG changeset patch
# User Yuya Nishihara <yuya at tcha.org>
# Date 1489363814 25200
#      Sun Mar 12 17:10:14 2017 -0700
# Node ID 06527fc4ae45e3950b098a2509a6a55b4a275a2f
# Parent  75c128696f8dbc4aaa56f0e2200ebd7f560a36d5
py3: convert set of revset initial symbols back to bytes

Otherwise tokenize() would fail due to comparison between unicode and bytes.

diff --git a/mercurial/revsetlang.py b/mercurial/revsetlang.py
--- a/mercurial/revsetlang.py
+++ b/mercurial/revsetlang.py
@@ -46,12 +46,13 @@ elements = {
 keywords = set(['and', 'or', 'not'])
 
 # default set of valid characters for the initial letter of symbols
-_syminitletters = set(
-    string.ascii_letters +
-    string.digits + pycompat.sysstr('._@')) | set(map(chr, xrange(128, 256)))
+_syminitletters = set(pycompat.iterbytestr(
+    string.ascii_letters.encode('ascii') +
+    string.digits.encode('ascii') +
+    '._@')) | set(map(pycompat.bytechr, xrange(128, 256)))
 
 # default set of valid characters for non-initial letters of symbols
-_symletters = _syminitletters | set(pycompat.sysstr('-/'))
+_symletters = _syminitletters | set(pycompat.iterbytestr('-/'))
 
 def tokenize(program, lookup=None, syminitletters=None, symletters=None):
     '''


More information about the Mercurial-devel mailing list