equal
deleted
inserted
replaced
7 |
7 |
8 from __future__ import absolute_import |
8 from __future__ import absolute_import |
9 |
9 |
10 import email |
10 import email |
11 import email.charset |
11 import email.charset |
|
12 import email.generator |
12 import email.header |
13 import email.header |
13 import email.message |
14 import email.message |
14 import email.parser |
15 import email.parser |
15 import io |
16 import io |
16 import os |
17 import os |
418 return mimetextqp(s, b'plain', cs) |
419 return mimetextqp(s, b'plain', cs) |
419 |
420 |
420 |
421 |
421 if pycompat.ispy3: |
422 if pycompat.ispy3: |
422 |
423 |
|
424 Generator = email.generator.BytesGenerator |
|
425 |
423 def parse(fp): |
426 def parse(fp): |
424 ep = email.parser.Parser() |
427 ep = email.parser.Parser() |
425 # disable the "universal newlines" mode, which isn't binary safe. |
428 # disable the "universal newlines" mode, which isn't binary safe. |
426 # I have no idea if ascii/surrogateescape is correct, but that's |
429 # I have no idea if ascii/surrogateescape is correct, but that's |
427 # what the standard Python email parser does. |
430 # what the standard Python email parser does. |
433 finally: |
436 finally: |
434 fp.detach() |
437 fp.detach() |
435 |
438 |
436 |
439 |
437 else: |
440 else: |
|
441 |
|
442 Generator = email.generator.Generator |
438 |
443 |
439 def parse(fp): |
444 def parse(fp): |
440 ep = email.parser.Parser() |
445 ep = email.parser.Parser() |
441 return ep.parse(fp) |
446 return ep.parse(fp) |
442 |
447 |