diff --git a/mercurial/templatekw.py b/mercurial/templatekw.py --- a/mercurial/templatekw.py +++ b/mercurial/templatekw.py @@ -192,11 +192,15 @@ def one(v, tag=name): try: vmapping.update(v) - except (AttributeError, ValueError): + # Python 2 raises ValueError if the type of v is wrong. Python + # 3 raises TypeError. + except (AttributeError, TypeError, ValueError): try: + # Python 2 raises ValueError trying to destructure an e.g. + # bytes. Python 3 raises TypeError. for a, b in v: vmapping[a] = b - except ValueError: + except (TypeError, ValueError): vmapping[name] = v return templ(tag, **pycompat.strkwargs(vmapping)) lastname = 'last_' + name