D6103: py3: use pycompat.iterbytestr to convert itertools.takewhile result back to bytes

Kwan (Ian Moody) phabricator at mercurial-scm.org
Fri Mar 8 22:00:58 EST 2019


Kwan created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  itertools.takewhile on a bytestring returns the bytes as ints in py3, use
  iterbytestr to get the individual characters as bytestring like in py2.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D6103

AFFECTED FILES
  hgext/phabricator.py

CHANGE DETAILS

diff --git a/hgext/phabricator.py b/hgext/phabricator.py
--- a/hgext/phabricator.py
+++ b/hgext/phabricator.py
@@ -671,8 +671,10 @@
     pos = 0
     length = len(text)
     while pos < length:
-        symbol = b''.join(itertools.takewhile(lambda ch: ch not in special,
-                                              view[pos:]))
+        symbol = b''.join(pycompat.iterbytestr(itertools.takewhile(
+            lambda ch: ch not in special,
+            view[pos:]
+        )))
         if symbol:
             yield (b'symbol', symbol, pos)
             pos += len(symbol)



To: Kwan, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list