Mercurial > public > mercurial-scm > hg
comparison mercurial/mail.py @ 43575:67b4439c09b2
mail: let headencode() return a native string
This is to avoid conversion to/from str on py3.
author | Denis Laxalde <denis@laxalde.org> |
---|---|
date | Sat, 09 Nov 2019 12:45:14 +0100 |
parents | 9f70512ae2cf |
children | 14b96072797d |
comparison
equal
deleted
inserted
replaced
43574:02802fa87b74 | 43575:67b4439c09b2 |
---|---|
363 def headencode(ui, s, charsets=None, display=False): | 363 def headencode(ui, s, charsets=None, display=False): |
364 '''Returns RFC-2047 compliant header from given string.''' | 364 '''Returns RFC-2047 compliant header from given string.''' |
365 if not display: | 365 if not display: |
366 # split into words? | 366 # split into words? |
367 s, cs = _encode(ui, s, charsets) | 367 s, cs = _encode(ui, s, charsets) |
368 return encoding.strtolocal(email.header.Header(s, cs).encode()) | 368 return email.header.Header(s, cs).encode() |
369 return s | 369 return encoding.strfromlocal(s) |
370 | 370 |
371 | 371 |
372 def _addressencode(ui, name, addr, charsets=None): | 372 def _addressencode(ui, name, addr, charsets=None): |
373 assert isinstance(addr, bytes) | 373 assert isinstance(addr, bytes) |
374 name = encoding.strfromlocal(headencode(ui, name, charsets)) | 374 name = headencode(ui, name, charsets) |
375 try: | 375 try: |
376 acc, dom = addr.split(b'@') | 376 acc, dom = addr.split(b'@') |
377 acc.decode('ascii') | 377 acc.decode('ascii') |
378 dom = dom.decode(pycompat.sysstr(encoding.encoding)).encode('idna') | 378 dom = dom.decode(pycompat.sysstr(encoding.encoding)).encode('idna') |
379 addr = b'%s@%s' % (acc, dom) | 379 addr = b'%s@%s' % (acc, dom) |