Mercurial > hg
changeset 41405:9b3be572ff0c
mail: document behavior of Python 3
test-notify.t (and possibly other tests) are failing on Python 3
because email.message.Message is now aware of encodings and
attempts to roundtrip values with the specified message encoding.
Python 2 doesn't perform this roundtripping. We have tests with
non-ascii data being serialized to a message that claims to use
ascii encoding.
I /think/ Mercurial's behavior may be buggy here. But I'm not
sure.
I'm documenting the behavior so the next person who looks into
this doesn't start from scratch like I did.
Differential Revision: https://phab.mercurial-scm.org/D5714
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sat, 26 Jan 2019 10:40:37 -0800 |
parents | 43f9b8c0574b |
children | 2bf689b13a17 |
files | mercurial/mail.py |
diffstat | 1 files changed, 7 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/mail.py Sat Jan 26 10:22:09 2019 -0800 +++ b/mercurial/mail.py Sat Jan 26 10:40:37 2019 -0800 @@ -243,6 +243,13 @@ cs.body_encoding = email.charset.QP break + # On Python 2, this simply assigns a value. Python 3 inspects + # body and does different things depending on whether it has + # encode() or decode() attributes. We can get the old behavior + # if we pass a str and charset is None and we call set_charset(). + # But we may get into trouble later due to Python attempting to + # encode/decode using the registered charset (or attempting to + # use ascii in the absence of a charset). msg.set_payload(body, cs) return msg