Add Database.create_query() as a shorthand for db=Database();q=Query(db,"")

This is a convenience extension to the C API. I hardly saves any typing, but
let's us automatically free the top-level Database() object when we delete
the Query().
This commit is contained in:
Sebastian Spaeth 2010-03-19 10:55:06 +01:00
parent c90c28ded7
commit 0b57cb8ed9
2 changed files with 23 additions and 0 deletions

View file

@ -293,6 +293,28 @@ class Database(object):
raise NotmuchError(STATUS.NULL_POINTER) raise NotmuchError(STATUS.NULL_POINTER)
return Tags(tags_p, self) return Tags(tags_p, self)
def create_query(self, querystring):
"""Returns a :class:`Query` derived from this database
This is a shorthand method for doing::
# short version
# Automatically frees the Database() when 'q' is deleted
q = Database(dbpath).create_query('from:"Biene Maja"')
# long version, which is functionally equivalent but will keep the
# Database in the 'db' variable around after we delete 'q':
db = Database(dbpath)
q = Query(db,'from:"Biene Maja"')
This function is a python extension and not in the underlying C API.
"""
# Raise a NotmuchError if not initialized
self._verify_initialized_db()
return Query(self._db, querystring)
def __repr__(self): def __repr__(self):
return "'Notmuch DB " + self.get_path() + "'" return "'Notmuch DB " + self.get_path() + "'"

View file

@ -61,6 +61,7 @@ or::
.. automethod:: get_all_tags .. automethod:: get_all_tags
.. automethod:: create_query
.. attribute:: Database.MODE .. attribute:: Database.MODE