mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-28 21:54:10 +01:00
python: fix error handling
Before 3434d1940
the return values of libnotmuch functions were
declared as c_void_p and the code checking for errors compared the
returned value to None, which is the ctypes equivalent of a NULL
pointer.
But said commit wrapped all the data types in python classes and the
semantic changed in a subtle way. If a function returns NULL, the
wrapped python value is falsish, but no longer equal to None.
Backported from master to 0.11.
This commit is contained in:
parent
ffce9b7c25
commit
221c7e0b38
5 changed files with 16 additions and 16 deletions
|
@ -168,7 +168,7 @@ class Database(object):
|
||||||
|
|
||||||
res = Database._create(_str(path), Database.MODE.READ_WRITE)
|
res = Database._create(_str(path), Database.MODE.READ_WRITE)
|
||||||
|
|
||||||
if res is None:
|
if not res:
|
||||||
raise NotmuchError(
|
raise NotmuchError(
|
||||||
message="Could not create the specified database")
|
message="Could not create the specified database")
|
||||||
self._db = res
|
self._db = res
|
||||||
|
@ -188,7 +188,7 @@ class Database(object):
|
||||||
"""
|
"""
|
||||||
res = Database._open(_str(path), mode)
|
res = Database._open(_str(path), mode)
|
||||||
|
|
||||||
if res is None:
|
if not res:
|
||||||
raise NotmuchError(message="Could not open the specified database")
|
raise NotmuchError(message="Could not open the specified database")
|
||||||
self._db = res
|
self._db = res
|
||||||
|
|
||||||
|
@ -645,7 +645,7 @@ class Query(object):
|
||||||
self._db = db
|
self._db = db
|
||||||
# create query, return None if too little mem available
|
# create query, return None if too little mem available
|
||||||
query_p = Query._create(db.db_p, _str(querystr))
|
query_p = Query._create(db.db_p, _str(querystr))
|
||||||
if query_p is None:
|
if not query_p:
|
||||||
raise NullPointerError
|
raise NullPointerError
|
||||||
self._query = query_p
|
self._query = query_p
|
||||||
|
|
||||||
|
@ -679,7 +679,7 @@ class Query(object):
|
||||||
self._assert_query_is_initialized()
|
self._assert_query_is_initialized()
|
||||||
threads_p = Query._search_threads(self._query)
|
threads_p = Query._search_threads(self._query)
|
||||||
|
|
||||||
if threads_p is None:
|
if not threads_p:
|
||||||
raise NullPointerError
|
raise NullPointerError
|
||||||
return Threads(threads_p, self)
|
return Threads(threads_p, self)
|
||||||
|
|
||||||
|
@ -693,7 +693,7 @@ class Query(object):
|
||||||
self._assert_query_is_initialized()
|
self._assert_query_is_initialized()
|
||||||
msgs_p = Query._search_messages(self._query)
|
msgs_p = Query._search_messages(self._query)
|
||||||
|
|
||||||
if msgs_p is None:
|
if not msgs_p:
|
||||||
raise NullPointerError
|
raise NullPointerError
|
||||||
return Messages(msgs_p, self)
|
return Messages(msgs_p, self)
|
||||||
|
|
||||||
|
@ -759,7 +759,7 @@ class Directory(object):
|
||||||
def _assert_dir_is_initialized(self):
|
def _assert_dir_is_initialized(self):
|
||||||
"""Raises a NotmuchError(:attr:`STATUS`.NOT_INITIALIZED)
|
"""Raises a NotmuchError(:attr:`STATUS`.NOT_INITIALIZED)
|
||||||
if dir_p is None"""
|
if dir_p is None"""
|
||||||
if self._dir_p is None:
|
if not self._dir_p:
|
||||||
raise NotmuchError(STATUS.NOT_INITIALIZED)
|
raise NotmuchError(STATUS.NOT_INITIALIZED)
|
||||||
|
|
||||||
def __init__(self, path, dir_p, parent):
|
def __init__(self, path, dir_p, parent):
|
||||||
|
@ -920,7 +920,7 @@ class Filenames(object):
|
||||||
_move_to_next.restype = None
|
_move_to_next.restype = None
|
||||||
|
|
||||||
def next(self):
|
def next(self):
|
||||||
if self._files_p is None:
|
if not self._files_p:
|
||||||
raise NotmuchError(STATUS.NOT_INITIALIZED)
|
raise NotmuchError(STATUS.NOT_INITIALIZED)
|
||||||
|
|
||||||
if not self._valid(self._files_p):
|
if not self._valid(self._files_p):
|
||||||
|
@ -946,7 +946,7 @@ class Filenames(object):
|
||||||
# NotmuchError(:attr:`STATUS`.NOT_INITIALIZED)
|
# NotmuchError(:attr:`STATUS`.NOT_INITIALIZED)
|
||||||
for file in files: print file
|
for file in files: print file
|
||||||
"""
|
"""
|
||||||
if self._files_p is None:
|
if not self._files_p:
|
||||||
raise NotmuchError(STATUS.NOT_INITIALIZED)
|
raise NotmuchError(STATUS.NOT_INITIALIZED)
|
||||||
|
|
||||||
i = 0
|
i = 0
|
||||||
|
|
|
@ -69,7 +69,7 @@ class Filenames(object):
|
||||||
reference to it, so we can automatically delete the db object
|
reference to it, so we can automatically delete the db object
|
||||||
once all derived objects are dead.
|
once all derived objects are dead.
|
||||||
"""
|
"""
|
||||||
if files_p is None:
|
if not files_p:
|
||||||
raise NotmuchError(STATUS.NULL_POINTER)
|
raise NotmuchError(STATUS.NULL_POINTER)
|
||||||
|
|
||||||
self._files = files_p
|
self._files = files_p
|
||||||
|
|
|
@ -116,7 +116,7 @@ class Messages(object):
|
||||||
:TODO: Make the iterator work more than once and cache the tags in
|
:TODO: Make the iterator work more than once and cache the tags in
|
||||||
the Python object.(?)
|
the Python object.(?)
|
||||||
"""
|
"""
|
||||||
if msgs_p is None:
|
if not msgs_p:
|
||||||
raise NotmuchError(STATUS.NULL_POINTER)
|
raise NotmuchError(STATUS.NULL_POINTER)
|
||||||
|
|
||||||
self._msgs = msgs_p
|
self._msgs = msgs_p
|
||||||
|
@ -321,7 +321,7 @@ class Message(object):
|
||||||
automatically delete the parent object once all derived
|
automatically delete the parent object once all derived
|
||||||
objects are dead.
|
objects are dead.
|
||||||
"""
|
"""
|
||||||
if msg_p is None:
|
if not msg_p:
|
||||||
raise NotmuchError(STATUS.NULL_POINTER)
|
raise NotmuchError(STATUS.NULL_POINTER)
|
||||||
self._msg = msg_p
|
self._msg = msg_p
|
||||||
#keep reference to parent, so we keep it alive
|
#keep reference to parent, so we keep it alive
|
||||||
|
@ -380,7 +380,7 @@ class Message(object):
|
||||||
|
|
||||||
msgs_p = Message._get_replies(self._msg)
|
msgs_p = Message._get_replies(self._msg)
|
||||||
|
|
||||||
if msgs_p is None:
|
if not msgs_p:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
return Messages(msgs_p, self)
|
return Messages(msgs_p, self)
|
||||||
|
|
|
@ -70,7 +70,7 @@ class Tags(object):
|
||||||
:TODO: Make the iterator optionally work more than once by
|
:TODO: Make the iterator optionally work more than once by
|
||||||
cache the tags in the Python object(?)
|
cache the tags in the Python object(?)
|
||||||
"""
|
"""
|
||||||
if tags_p is None:
|
if not tags_p:
|
||||||
raise NotmuchError(STATUS.NULL_POINTER)
|
raise NotmuchError(STATUS.NULL_POINTER)
|
||||||
|
|
||||||
self._tags = tags_p
|
self._tags = tags_p
|
||||||
|
|
|
@ -97,7 +97,7 @@ class Threads(object):
|
||||||
:TODO: Make the iterator work more than once and cache the tags in
|
:TODO: Make the iterator work more than once and cache the tags in
|
||||||
the Python object.(?)
|
the Python object.(?)
|
||||||
"""
|
"""
|
||||||
if threads_p is None:
|
if not threads_p:
|
||||||
raise NotmuchError(STATUS.NULL_POINTER)
|
raise NotmuchError(STATUS.NULL_POINTER)
|
||||||
|
|
||||||
self._threads = threads_p
|
self._threads = threads_p
|
||||||
|
@ -227,7 +227,7 @@ class Thread(object):
|
||||||
automatically delete the parent object once all derived
|
automatically delete the parent object once all derived
|
||||||
objects are dead.
|
objects are dead.
|
||||||
"""
|
"""
|
||||||
if thread_p is None:
|
if not thread_p:
|
||||||
raise NotmuchError(STATUS.NULL_POINTER)
|
raise NotmuchError(STATUS.NULL_POINTER)
|
||||||
self._thread = thread_p
|
self._thread = thread_p
|
||||||
#keep reference to parent, so we keep it alive
|
#keep reference to parent, so we keep it alive
|
||||||
|
@ -288,7 +288,7 @@ class Thread(object):
|
||||||
|
|
||||||
msgs_p = Thread._get_toplevel_messages(self._thread)
|
msgs_p = Thread._get_toplevel_messages(self._thread)
|
||||||
|
|
||||||
if msgs_p is None:
|
if not msgs_p:
|
||||||
raise NotmuchError(STATUS.NULL_POINTER)
|
raise NotmuchError(STATUS.NULL_POINTER)
|
||||||
|
|
||||||
return Messages(msgs_p, self)
|
return Messages(msgs_p, self)
|
||||||
|
|
Loading…
Reference in a new issue