X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=cnotmuch%2Fdatabase.py;h=6a74f5d58014eaafeaef4e79b4d0d936b0d77442;hb=cd19699e0d32eccc6481c0a3294b38c4fe0042e8;hp=9c1be67520a6b7e64d0d234de61249a4d0c383da;hpb=d566ae643c0ec59157d34fe62b8aafdb1a49ef43;p=notmuch diff --git a/cnotmuch/database.py b/cnotmuch/database.py index 9c1be675..6a74f5d5 100644 --- a/cnotmuch/database.py +++ b/cnotmuch/database.py @@ -250,6 +250,11 @@ class Query(object): _search_messages = nmlib.notmuch_query_search_messages _search_messages.restype = c_void_p + + """notmuch_query_count_messages""" + _count_messages = _nmlib.notmuch_query_count_messages + _count_messages.restype = c_uint + def __init__(self, db, querystr): """ :param db: An open database which we derive the Query from. @@ -327,6 +332,24 @@ class Query(object): return Messages(msgs_p,self) + def count_messages(self): + """Estimate the number of messages matching the query + + This function performs a search and returns Xapian's best + guess as to the number of matching messages. It is somewhat + faster than performing :meth:`search_messages` and counting + the result with `len()`. Technically, it wraps the underlying + *notmuch_query_count_messages* function. + + :returns: :class:`Messages` + :exception: :exc:`NotmuchError` + + * STATUS.NOT_INITIALIZED if query is not inited + """ + if self._query is None: + raise NotmuchError(STATUS.NOT_INITIALIZED) + + return Query._count_messages(self._query) def __del__(self): """Close and free the Query"""