diff mercurial/mail.py @ 43576:14b96072797d

mail: let addressencode() / addrlistencode() return native strings Avoids conversion to "str" on py3.
author Denis Laxalde <denis@laxalde.org>
date Sat, 09 Nov 2019 15:16:52 +0100
parents 67b4439c09b2
children 599e25add437
line wrap: on
line diff
--- a/mercurial/mail.py	Sat Nov 09 12:45:14 2019 +0100
+++ b/mercurial/mail.py	Sat Nov 09 15:16:52 2019 +0100
@@ -385,15 +385,13 @@
             addr.decode('ascii')
         except UnicodeDecodeError:
             raise error.Abort(_(b'invalid local address: %s') % addr)
-    return pycompat.bytesurl(
-        email.utils.formataddr((name, encoding.strfromlocal(addr)))
-    )
+    return email.utils.formataddr((name, encoding.strfromlocal(addr)))
 
 
 def addressencode(ui, address, charsets=None, display=False):
     '''Turns address into RFC-2047 compliant header.'''
     if display or not address:
-        return address or b''
+        return encoding.strfromlocal(address or b'')
     name, addr = email.utils.parseaddr(encoding.strfromlocal(address))
     return _addressencode(ui, name, encoding.strtolocal(addr), charsets)
 
@@ -405,7 +403,7 @@
     for a in addrs:
         assert isinstance(a, bytes), '%r unexpectedly not a bytestr' % a
     if display:
-        return [a.strip() for a in addrs if a.strip()]
+        return [encoding.strfromlocal(a.strip()) for a in addrs if a.strip()]
 
     result = []
     for name, addr in email.utils.getaddresses(