--- a/mercurial/templateutil.py Sat Mar 17 20:00:54 2018 +0900
+++ b/mercurial/templateutil.py Sat Mar 17 20:04:20 2018 +0900
@@ -263,18 +263,9 @@
def stringify(thing):
"""Turn values into bytes by converting into text and concatenating them"""
- thing = unwraphybrid(thing)
- if util.safehasattr(thing, '__iter__') and not isinstance(thing, bytes):
- if isinstance(thing, str):
- # This is only reachable on Python 3 (otherwise
- # isinstance(thing, bytes) would have been true), and is
- # here to prevent infinite recursion bugs on Python 3.
- raise error.ProgrammingError(
- 'stringify got unexpected unicode string: %r' % thing)
- return "".join([stringify(t) for t in thing if t is not None])
- if thing is None:
- return ""
- return pycompat.bytestr(thing)
+ if isinstance(thing, bytes):
+ return thing # retain localstr to be round-tripped
+ return b''.join(flatten(thing))
def findsymbolicname(arg):
"""Find symbolic name for the given compiled expression; returns None