aboutsummaryrefslogtreecommitdiffhomepage
path: root/bindings/python/notmuch/database.py
diff options
context:
space:
mode:
Diffstat (limited to 'bindings/python/notmuch/database.py')
-rw-r--r--bindings/python/notmuch/database.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/bindings/python/notmuch/database.py b/bindings/python/notmuch/database.py
index d0e38dda..533948c4 100644
--- a/bindings/python/notmuch/database.py
+++ b/bindings/python/notmuch/database.py
@@ -41,6 +41,10 @@ class Database(object):
:exc:`XapianError` as the underlying database has been
modified. Close and reopen the database to continue working with it.
+ :class:`Database` objects implement the context manager protocol
+ so you can use the :keyword:`with` statement to ensure that the
+ database is properly closed.
+
.. note::
Any function in this class can and will throw an
@@ -206,6 +210,18 @@ class Database(object):
self._close(self._db)
self._db = None
+ def __enter__(self):
+ '''
+ Implements the context manager protocol.
+ '''
+ return self
+
+ def __exit__(self, exc_type, exc_value, traceback):
+ '''
+ Implements the context manager protocol.
+ '''
+ self.close()
+
def get_path(self):
"""Returns the file path of an open database"""
self._assert_db_is_initialized()