comparison mercurial/mail.py @ 43671:af3e341dbf03

mail: use a native string for "subtype" value This is somehow similar to previous changeset and avoids one str conversion.
author Denis Laxalde <denis.laxalde@logilab.fr>
date Wed, 13 Nov 2019 15:23:04 +0100
parents bdb0ddab7bb3
children ddb5d097d561
comparison
equal deleted inserted replaced
43670:bdb0ddab7bb3 43671:af3e341dbf03
261 if cs.startswith("iso") and not cs.startswith("iso-"): 261 if cs.startswith("iso") and not cs.startswith("iso-"):
262 return "iso-" + cs[3:] 262 return "iso-" + cs[3:]
263 return cs 263 return cs
264 264
265 265
266 def mimetextpatch(s, subtype=b'plain', display=False): 266 def mimetextpatch(s, subtype='plain', display=False):
267 # type: (bytes, bytes, bool) -> email.message.Message 267 # type: (bytes, str, bool) -> email.message.Message
268 '''Return MIME message suitable for a patch. 268 '''Return MIME message suitable for a patch.
269 Charset will be detected by first trying to decode as us-ascii, then utf-8, 269 Charset will be detected by first trying to decode as us-ascii, then utf-8,
270 and finally the global encodings. If all those fail, fall back to 270 and finally the global encodings. If all those fail, fall back to
271 ISO-8859-1, an encoding with that allows all byte sequences. 271 ISO-8859-1, an encoding with that allows all byte sequences.
272 Transfer encodings will be used if necessary.''' 272 Transfer encodings will be used if necessary.'''
288 288
289 return mimetextqp(s, subtype, "iso-8859-1") 289 return mimetextqp(s, subtype, "iso-8859-1")
290 290
291 291
292 def mimetextqp(body, subtype, charset): 292 def mimetextqp(body, subtype, charset):
293 # type: (bytes, bytes, str) -> email.message.Message 293 # type: (bytes, str, str) -> email.message.Message
294 '''Return MIME message. 294 '''Return MIME message.
295 Quoted-printable transfer encoding will be used if necessary. 295 Quoted-printable transfer encoding will be used if necessary.
296 ''' 296 '''
297 cs = email.charset.Charset(charset) 297 cs = email.charset.Charset(charset)
298 msg = email.message.Message() 298 msg = email.message.Message()
299 msg.set_type(pycompat.sysstr(b'text/' + subtype)) 299 msg.set_type('text/' + subtype)
300 300
301 for line in body.splitlines(): 301 for line in body.splitlines():
302 if len(line) > 950: 302 if len(line) > 950:
303 cs.body_encoding = email.charset.QP 303 cs.body_encoding = email.charset.QP
304 break 304 break
448 '''creates mime text object, encodes it if needed, and sets 448 '''creates mime text object, encodes it if needed, and sets
449 charset and transfer-encoding accordingly.''' 449 charset and transfer-encoding accordingly.'''
450 cs = 'us-ascii' 450 cs = 'us-ascii'
451 if not display: 451 if not display:
452 s, cs = _encode(ui, s, charsets) 452 s, cs = _encode(ui, s, charsets)
453 return mimetextqp(s, b'plain', cs) 453 return mimetextqp(s, 'plain', cs)
454 454
455 455
456 if pycompat.ispy3: 456 if pycompat.ispy3:
457 457
458 Generator = email.generator.BytesGenerator 458 Generator = email.generator.BytesGenerator