Mercurial > hg-stable
comparison mercurial/mail.py @ 41427: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 | d2d89d31cbb5 |
children | 2cc453284d5c |
comparison
equal
deleted
inserted
replaced
41426:43f9b8c0574b | 41427:9b3be572ff0c |
---|---|
241 for line in body.splitlines(): | 241 for line in body.splitlines(): |
242 if len(line) > 950: | 242 if len(line) > 950: |
243 cs.body_encoding = email.charset.QP | 243 cs.body_encoding = email.charset.QP |
244 break | 244 break |
245 | 245 |
246 # On Python 2, this simply assigns a value. Python 3 inspects | |
247 # body and does different things depending on whether it has | |
248 # encode() or decode() attributes. We can get the old behavior | |
249 # if we pass a str and charset is None and we call set_charset(). | |
250 # But we may get into trouble later due to Python attempting to | |
251 # encode/decode using the registered charset (or attempting to | |
252 # use ascii in the absence of a charset). | |
246 msg.set_payload(body, cs) | 253 msg.set_payload(body, cs) |
247 | 254 |
248 return msg | 255 return msg |
249 | 256 |
250 def _charsets(ui): | 257 def _charsets(ui): |