# HG changeset patch # User Yuya Nishihara # Date 2018-04-08 06:22:30 # Node ID 7edf68862fe3114784d7c23ddeca60d9a0362589 # Parent ef661ce45cdbaced8efa9d1d0fcb3b754d208d14 py3: work around weird handling of bytes/unicode in decode_header() Basically decode_header() works as follows, and on Python 3, email headers ARE UNICODE. def decode_header(header): if not ecre.search(header): # ecre is unicode regexp return [(header, None)] # so header is unicode string ... decode header into [(bytes_data, unicode_charset_name)] return collapsed diff --git a/mercurial/mail.py b/mercurial/mail.py --- a/mercurial/mail.py +++ b/mercurial/mail.py @@ -332,6 +332,11 @@ def headdecode(s): continue except UnicodeDecodeError: pass + # On Python 3, decode_header() may return either bytes or unicode + # depending on whether the header has =?? or not + if isinstance(part, type(u'')): + uparts.append(part) + continue try: uparts.append(part.decode('UTF-8')) continue