py3: avoid iterating over a literal bytes in highlight stable
authorDenis Laxalde <denis.laxalde@logilab.fr>
Tue, 12 Nov 2019 11:05:03 +0100
branchstable
changeset 43597 856cce0c255c
parent 43588 a825ba8eb0a1
child 43661 32048206e7be
child 43666 4394687b298b
py3: avoid iterating over a literal bytes in highlight In Python 3, iterating over a bytes literal yields integers. Since we use the value in `text.replace()`, this fails on Python 3 with the following trackback: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/mercurial/hgweb/hgwebdir_mod.py", line 378, in run_wsgi for r in self._runwsgi(req, res): File "/usr/lib/python3/dist-packages/mercurial/hgweb/hgweb_mod.py", line 326, in run_wsgi for r in self._runwsgi(req, res, repo): File "/usr/lib/python3/dist-packages/mercurial/hgweb/hgweb_mod.py", line 449, in _runwsgi return getattr(webcommands, cmd)(rctx) File "/usr/lib/python3/dist-packages/mercurial/hgweb/webcommands.py", line 211, in file return _filerevision(web, webutil.filectx(web.repo, web.req)) File "/usr/lib/python3/dist-packages/hgext/highlight/__init__.py", line 72, in filerevision_highlight pygmentize(web, b'fileline', fctx, web.tmpl) File "/usr/lib/python3/dist-packages/hgext/highlight/__init__.py", line 58, in pygmentize field, fctx, style, tmpl, guessfilenameonly=filenameonly File "/usr/lib/python3/dist-packages/hgext/highlight/highlight.py", line 62, in pygmentize text = text.replace(c, b'') TypeError: a bytes-like object is required, not 'int'
hgext/highlight/highlight.py
--- a/hgext/highlight/highlight.py	Tue Nov 05 13:31:40 2019 -0800
+++ b/hgext/highlight/highlight.py	Tue Nov 12 11:05:03 2019 +0100
@@ -57,7 +57,7 @@
         return
 
     # str.splitlines() != unicode.splitlines() because "reasons"
-    for c in b"\x0c\x1c\x1d\x1e":
+    for c in b"\x0c", b"\x1c", b"\x1d", b"\x1e":
         if c in text:
             text = text.replace(c, b'')