[Python-checkins] bpo-31522: mailbox.get_string: pass `from_` parameter to `get_bytes` (#9857)

R. David Murray webhook-mailer at python.org
Thu Oct 18 20:21:50 EDT 2018


https://github.com/python/cpython/commit/d16f012f842e5719ff9fb90e217efc0f795853f2
commit: d16f012f842e5719ff9fb90e217efc0f795853f2
branch: master
author: Cheryl Sabella <cheryl.sabella at gmail.com>
committer: R. David Murray <rdmurray at bitdance.com>
date: 2018-10-18T20:21:47-04:00
summary:

bpo-31522: mailbox.get_string: pass `from_` parameter to `get_bytes` (#9857)

This allows *from_* to be successfully set to a non-default value when calling mbox.get_string.

files:
A Misc/NEWS.d/next/Library/2018-10-13-18-16-20.bpo-31522.rWBb43.rst
M Lib/mailbox.py
M Lib/test/test_mailbox.py

diff --git a/Lib/mailbox.py b/Lib/mailbox.py
index 056251dce0ad..5b4e86419f11 100644
--- a/Lib/mailbox.py
+++ b/Lib/mailbox.py
@@ -784,7 +784,7 @@ def get_message(self, key):
     def get_string(self, key, from_=False):
         """Return a string representation or raise a KeyError."""
         return email.message_from_bytes(
-            self.get_bytes(key)).as_string(unixfrom=from_)
+            self.get_bytes(key, from_)).as_string(unixfrom=from_)
 
     def get_bytes(self, key, from_=False):
         """Return a string representation or raise a KeyError."""
diff --git a/Lib/test/test_mailbox.py b/Lib/test/test_mailbox.py
index 3807b95b1582..a75c8cb00e80 100644
--- a/Lib/test/test_mailbox.py
+++ b/Lib/test/test_mailbox.py
@@ -988,6 +988,34 @@ def assertMailboxEmpty(self):
         with open(self._path) as f:
             self.assertEqual(f.readlines(), [])
 
+    def test_get_bytes_from(self):
+        # Get bytes representations of messages with _unixfrom.
+        unixfrom = 'From foo at bar blah\n'
+        key0 = self._box.add(unixfrom + self._template % 0)
+        key1 = self._box.add(unixfrom + _sample_message)
+        self.assertEqual(self._box.get_bytes(key0, from_=False),
+            (self._template % 0).encode('ascii'))
+        self.assertEqual(self._box.get_bytes(key1, from_=False),
+            _bytes_sample_message)
+        self.assertEqual(self._box.get_bytes(key0, from_=True),
+            (unixfrom + self._template % 0).encode('ascii'))
+        self.assertEqual(self._box.get_bytes(key1, from_=True),
+            unixfrom.encode('ascii') + _bytes_sample_message)
+
+    def test_get_string_from(self):
+        # Get string representations of messages with _unixfrom.
+        unixfrom = 'From foo at bar blah\n'
+        key0 = self._box.add(unixfrom + self._template % 0)
+        key1 = self._box.add(unixfrom + _sample_message)
+        self.assertEqual(self._box.get_string(key0, from_=False),
+                         self._template % 0)
+        self.assertEqual(self._box.get_string(key1, from_=False).split('\n'),
+                         _sample_message.split('\n'))
+        self.assertEqual(self._box.get_string(key0, from_=True),
+                         unixfrom + self._template % 0)
+        self.assertEqual(self._box.get_string(key1, from_=True).split('\n'),
+                         (unixfrom + _sample_message).split('\n'))
+
     def test_add_from_string(self):
         # Add a string starting with 'From ' to the mailbox
         key = self._box.add('From foo at bar blah\nFrom: foo\n\n0\n')
diff --git a/Misc/NEWS.d/next/Library/2018-10-13-18-16-20.bpo-31522.rWBb43.rst b/Misc/NEWS.d/next/Library/2018-10-13-18-16-20.bpo-31522.rWBb43.rst
new file mode 100644
index 000000000000..5aea7173fc6d
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2018-10-13-18-16-20.bpo-31522.rWBb43.rst
@@ -0,0 +1 @@
+The `mailbox.mbox.get_string` function *from_* parameter can now successfully be set to a non-default value.



More information about the Python-checkins mailing list