From: Justus Winter <4winter@informatik.uni-hamburg.de>
Date: Wed, 15 Feb 2012 21:41:16 +0000 (+0100)
Subject: python: implement the context manager protocol for database objects
X-Git-Tag: debian/0.12_rc1-1~78
X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;h=36ce7e3c989f6f66a4b250483de3b45e902d68d1;p=obsolete%2Fnotmuch-old

python: implement the context manager protocol for database objects

Signed-off-by: Justus Winter <4winter@informatik.uni-hamburg.de>
---

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()