Merge #11605: don't use set/get_payload in feedparser; they do conversions.
This commit is contained in:
commit
a0b1c77a19
|
@ -368,12 +368,12 @@ class FeedParser:
|
||||||
end = len(mo.group(0))
|
end = len(mo.group(0))
|
||||||
self._last.epilogue = epilogue[:-end]
|
self._last.epilogue = epilogue[:-end]
|
||||||
else:
|
else:
|
||||||
payload = self._last.get_payload()
|
payload = self._last._payload
|
||||||
if isinstance(payload, str):
|
if isinstance(payload, str):
|
||||||
mo = NLCRE_eol.search(payload)
|
mo = NLCRE_eol.search(payload)
|
||||||
if mo:
|
if mo:
|
||||||
payload = payload[:-len(mo.group(0))]
|
payload = payload[:-len(mo.group(0))]
|
||||||
self._last.set_payload(payload)
|
self._last._payload = payload
|
||||||
self._input.pop_eof_matcher()
|
self._input.pop_eof_matcher()
|
||||||
self._pop_message()
|
self._pop_message()
|
||||||
# Set the multipart up for newline cleansing, which will
|
# Set the multipart up for newline cleansing, which will
|
||||||
|
|
|
@ -3143,6 +3143,53 @@ class Test8BitBytesHandling(unittest.TestCase):
|
||||||
g = email.generator.BytesGenerator(s)
|
g = email.generator.BytesGenerator(s)
|
||||||
g.flatten(msg, linesep='\r\n')
|
g.flatten(msg, linesep='\r\n')
|
||||||
self.assertEqual(s.getvalue(), text)
|
self.assertEqual(s.getvalue(), text)
|
||||||
|
|
||||||
|
def test_8bit_multipart(self):
|
||||||
|
# Issue 11605
|
||||||
|
source = textwrap.dedent("""\
|
||||||
|
Date: Fri, 18 Mar 2011 17:15:43 +0100
|
||||||
|
To: foo@example.com
|
||||||
|
From: foodwatch-Newsletter <bar@example.com>
|
||||||
|
Subject: Aktuelles zu Japan, Klonfleisch und Smiley-System
|
||||||
|
Message-ID: <76a486bee62b0d200f33dc2ca08220ad@localhost.localdomain>
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: multipart/alternative;
|
||||||
|
boundary="b1_76a486bee62b0d200f33dc2ca08220ad"
|
||||||
|
|
||||||
|
--b1_76a486bee62b0d200f33dc2ca08220ad
|
||||||
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Guten Tag, ,
|
||||||
|
|
||||||
|
mit großer Betroffenheit verfolgen auch wir im foodwatch-Team die
|
||||||
|
Nachrichten aus Japan.
|
||||||
|
|
||||||
|
|
||||||
|
--b1_76a486bee62b0d200f33dc2ca08220ad
|
||||||
|
Content-Type: text/html; charset="utf-8"
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<title>foodwatch - Newsletter</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>mit großer Betroffenheit verfolgen auch wir im foodwatch-Team
|
||||||
|
die Nachrichten aus Japan.</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
--b1_76a486bee62b0d200f33dc2ca08220ad--
|
||||||
|
|
||||||
|
""").encode('utf-8')
|
||||||
|
msg = email.message_from_bytes(source)
|
||||||
|
s = BytesIO()
|
||||||
|
g = email.generator.BytesGenerator(s)
|
||||||
|
g.flatten(msg)
|
||||||
|
self.assertEqual(s.getvalue(), source)
|
||||||
|
|
||||||
maxDiff = None
|
maxDiff = None
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -94,6 +94,9 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #11605: email.parser.BytesFeedParser was incorrectly converting multipart
|
||||||
|
subpararts with an 8bit CTE into unicode instead of preserving the bytes.
|
||||||
|
|
||||||
- Issue #10963: Ensure that subprocess.communicate() never raises EPIPE.
|
- Issue #10963: Ensure that subprocess.communicate() never raises EPIPE.
|
||||||
|
|
||||||
- Issue #10791: Implement missing method GzipFile.read1(), allowing GzipFile
|
- Issue #10791: Implement missing method GzipFile.read1(), allowing GzipFile
|
||||||
|
|
Loading…
Reference in New Issue