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.notmuchmail.org/git?p=notmuch;a=commitdiff_plain;h=36ce7e3c989f6f66a4b250483de3b45e902d68d1 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()