aboutsummaryrefslogtreecommitdiffhomepage
path: root/bindings
diff options
context:
space:
mode:
authorGravatar Sebastian Spaeth <Sebastian@SSpaeth.de>2011-10-05 17:55:30 +0200
committerGravatar Sebastian Spaeth <Sebastian@SSpaeth.de>2011-10-05 17:55:30 +0200
commit5e75398c80ab3008ca0ecd60544897dc5e546e47 (patch)
tree5328250f33c1dfc7c6bf6de23c4ede5a7f371eb5 /bindings
parent42f184c23668173e675a006864f188155826d1bd (diff)
python: help function Query._assert_query_is_initialized
Remove code duplication by using the new helper function. Also raise the new fine grained exceptions in many cases, rather than the more generic NotmuchErrors. Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Diffstat (limited to 'bindings')
-rw-r--r--bindings/python/notmuch/database.py35
1 files changed, 14 insertions, 21 deletions
diff --git a/bindings/python/notmuch/database.py b/bindings/python/notmuch/database.py
index 68d31cef..f4bc53e0 100644
--- a/bindings/python/notmuch/database.py
+++ b/bindings/python/notmuch/database.py
@@ -20,7 +20,7 @@ Copyright 2010 Sebastian Spaeth <Sebastian@SSpaeth.de>'
import os
from ctypes import c_int, c_char_p, c_void_p, c_uint, c_long, byref
from notmuch.globals import (nmlib, STATUS, NotmuchError, NotInitializedError,
- OutOfMemoryError, XapianError, Enum, _str)
+ NullPointerError, OutOfMemoryError, XapianError, Enum, _str)
from notmuch.thread import Threads
from notmuch.message import Messages, Message
from notmuch.tag import Tags
@@ -486,7 +486,6 @@ class Database(object):
This function is a python extension and not in the underlying C API.
"""
- self._assert_db_is_initialized()
return Query(self, querystring)
def __repr__(self):
@@ -572,6 +571,11 @@ class Query(object):
self.sort = None
self.create(db, querystr)
+ def _assert_query_is_initialized(self):
+ """Raises :exc:`NotInitializedError` if self._query is `None`"""
+ if self._query is None:
+ raise NotInitializedError()
+
def create(self, db, querystr):
"""Creates a new query derived from a Database
@@ -589,14 +593,13 @@ class Query(object):
:exc:`NotInitializedError` if the underlying db was not
intitialized.
"""
- if db.db_p is None:
- raise NotmuchError(STATUS.NOT_INITIALIZED)
+ db._assert_db_is_initialized()
# create reference to parent db to keep it alive
self._db = db
# create query, return None if too little mem available
query_p = Query._create(db.db_p, _str(querystr))
if query_p is None:
- raise NotmuchError(STATUS.NULL_POINTER)
+ raise NullPointerError
self._query = query_p
def set_sort(self, sort):
@@ -604,9 +607,7 @@ class Query(object):
:param sort: Sort order (see :attr:`Query.SORT`)
"""
- if self._query is None:
- raise NotmuchError(STATUS.NOT_INITIALIZED)
-
+ self._assert_query_is_initialized()
self.sort = sort
nmlib.notmuch_query_set_sort(self._query, sort)
@@ -624,14 +625,11 @@ class Query(object):
:returns: :class:`Threads`
:exception: :exc:`NullPointerError` if search_threads failed
"""
- if self._query is None:
- raise NotmuchError(STATUS.NOT_INITIALIZED)
-
+ self._assert_query_is_initialized()
threads_p = Query._search_threads(self._query)
if threads_p is None:
- raise NotmuchError(STATUS.NULL_POINTER)
-
+ raise NullPointerError
return Threads(threads_p, self)
def search_messages(self):
@@ -641,14 +639,11 @@ class Query(object):
:returns: :class:`Messages`
:exception: :exc:`NullPointerError` if search_messages failed
"""
- if self._query is None:
- raise NotmuchError(STATUS.NOT_INITIALIZED)
-
+ self._assert_query_is_initialized()
msgs_p = Query._search_messages(self._query)
if msgs_p is None:
- raise NotmuchError(STATUS.NULL_POINTER)
-
+ raise NullPointerError
return Messages(msgs_p, self)
def count_messages(self):
@@ -663,9 +658,7 @@ class Query(object):
:returns: :class:`Messages`
"""
- if self._query is None:
- raise NotmuchError(STATUS.NOT_INITIALIZED)
-
+ self._assert_query_is_initialized()
return Query._count_messages(self._query)
def __del__(self):