Skip to content

Commit 8d1a9aa

Browse files
committed
Context manager available for mailbox instances
1 parent 2c0c68d commit 8d1a9aa

2 files changed

Lines changed: 11 additions & 0 deletions

File tree

Lib/mailbox.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,12 @@ def __init__(self, path, factory=None, create=True):
3838
self._path = os.path.abspath(os.path.expanduser(path))
3939
self._factory = factory
4040

41+
def __enter__(self):
42+
return self
43+
44+
def __exit__(self, type, value, traceback):
45+
self.close()
46+
4147
def add(self, message):
4248
"""Add message and return assigned key."""
4349
raise NotImplementedError('Method must be implemented by subclass')

Lib/test/test_mailbox.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -532,6 +532,11 @@ def _test_flush_or_close(self, method, should_call_close):
532532
self.assertIn(self._box.get_string(key), contents)
533533
oldbox.close()
534534

535+
def test_use_context_manager(self):
536+
# Mailboxes are usable as a context manager
537+
with self._factory(self._path) as box:
538+
self.assertIsInstance(box, self._box.__class__)
539+
535540
def test_dump_message(self):
536541
# Write message representations to disk
537542
for input in (email.message_from_string(_sample_message),

0 commit comments

Comments
 (0)