Mercurial > public > mercurial-scm > hg
comparison mercurial/mail.py @ 43628:ddb5d097d561
mail: move strtolocal call in _addressencode()
author | Denis Laxalde <denis.laxalde@logilab.fr> |
---|---|
date | Wed, 13 Nov 2019 16:46:28 +0100 |
parents | af3e341dbf03 |
children | 7b14d649af1b |
comparison
equal
deleted
inserted
replaced
43627:af3e341dbf03 | 43628:ddb5d097d561 |
---|---|
393 return email.header.Header(s, cs).encode() | 393 return email.header.Header(s, cs).encode() |
394 return encoding.strfromlocal(s) | 394 return encoding.strfromlocal(s) |
395 | 395 |
396 | 396 |
397 def _addressencode(ui, name, addr, charsets=None): | 397 def _addressencode(ui, name, addr, charsets=None): |
398 # type: (Any, str, bytes, List[str]) -> str | 398 # type: (Any, str, str, List[str]) -> str |
399 assert isinstance(addr, bytes) | 399 addr = encoding.strtolocal(addr) |
400 name = headencode(ui, name, charsets) | 400 name = headencode(ui, name, charsets) |
401 try: | 401 try: |
402 acc, dom = addr.split(b'@') | 402 acc, dom = addr.split(b'@') |
403 acc.decode('ascii') | 403 acc.decode('ascii') |
404 dom = dom.decode(pycompat.sysstr(encoding.encoding)).encode('idna') | 404 dom = dom.decode(pycompat.sysstr(encoding.encoding)).encode('idna') |
418 # type: (Any, bytes, List[str], bool) -> str | 418 # type: (Any, bytes, List[str], bool) -> str |
419 '''Turns address into RFC-2047 compliant header.''' | 419 '''Turns address into RFC-2047 compliant header.''' |
420 if display or not address: | 420 if display or not address: |
421 return encoding.strfromlocal(address or b'') | 421 return encoding.strfromlocal(address or b'') |
422 name, addr = email.utils.parseaddr(encoding.strfromlocal(address)) | 422 name, addr = email.utils.parseaddr(encoding.strfromlocal(address)) |
423 return _addressencode(ui, name, encoding.strtolocal(addr), charsets) | 423 return _addressencode(ui, name, addr, charsets) |
424 | 424 |
425 | 425 |
426 def addrlistencode(ui, addrs, charsets=None, display=False): | 426 def addrlistencode(ui, addrs, charsets=None, display=False): |
427 # type: (Any, List[bytes], List[str], bool) -> List[str] | 427 # type: (Any, List[bytes], List[str], bool) -> List[str] |
428 '''Turns a list of addresses into a list of RFC-2047 compliant headers. | 428 '''Turns a list of addresses into a list of RFC-2047 compliant headers. |
436 return [a.strip() for a in straddrs if a.strip()] | 436 return [a.strip() for a in straddrs if a.strip()] |
437 | 437 |
438 result = [] | 438 result = [] |
439 for name, addr in email.utils.getaddresses(straddrs): | 439 for name, addr in email.utils.getaddresses(straddrs): |
440 if name or addr: | 440 if name or addr: |
441 r = _addressencode(ui, name, encoding.strtolocal(addr), charsets) | 441 r = _addressencode(ui, name, addr, charsets) |
442 result.append(r) | 442 result.append(r) |
443 return result | 443 return result |
444 | 444 |
445 | 445 |
446 def mimeencode(ui, s, charsets=None, display=False): | 446 def mimeencode(ui, s, charsets=None, display=False): |