]> git.notmuchmail.org Git - notmuch/commitdiff
python: fix error handling
authorJustus Winter <4winter@informatik.uni-hamburg.de>
Sun, 22 Jan 2012 05:14:57 +0000 (06:14 +0100)
committerJustus Winter <4winter@informatik.uni-hamburg.de>
Sun, 22 Jan 2012 05:14:57 +0000 (06:14 +0100)
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.

bindings/python/notmuch/database.py
bindings/python/notmuch/filename.py
bindings/python/notmuch/message.py
bindings/python/notmuch/tag.py
bindings/python/notmuch/thread.py

index 24da8e99f1b715d43ffd8136e10ca4a7ed921b72..6238b2891e066cf76a9361fc573509a287851124 100644 (file)
@@ -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(
                 message="Could not create the specified database")
         self._db = res
             raise NotmuchError(
                 message="Could not create the specified database")
         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")
         self._db = res
 
             raise NotmuchError(message="Could not open the specified database")
         self._db = res
 
@@ -651,7 +651,7 @@ class Query(object):
         self._db = db
         # create query, return None if too little mem available
         query_p = Query._create(db.db_p, _str(querystr))
         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:
+        if not query_p:
             raise NullPointerError
         self._query = query_p
 
             raise NullPointerError
         self._query = query_p
 
@@ -685,7 +685,7 @@ class Query(object):
         self._assert_query_is_initialized()
         threads_p = Query._search_threads(self._query)
 
         self._assert_query_is_initialized()
         threads_p = Query._search_threads(self._query)
 
-        if threads_p is None:
+        if not threads_p:
             raise NullPointerError
         return Threads(threads_p, self)
 
             raise NullPointerError
         return Threads(threads_p, self)
 
@@ -699,7 +699,7 @@ class Query(object):
         self._assert_query_is_initialized()
         msgs_p = Query._search_messages(self._query)
 
         self._assert_query_is_initialized()
         msgs_p = Query._search_messages(self._query)
 
-        if msgs_p is None:
+        if not msgs_p:
             raise NullPointerError
         return Messages(msgs_p, self)
 
             raise NullPointerError
         return Messages(msgs_p, self)
 
@@ -765,7 +765,7 @@ class Directory(object):
     def _assert_dir_is_initialized(self):
         """Raises a NotmuchError(:attr:`STATUS`.NOT_INITIALIZED)
         if dir_p is None"""
     def _assert_dir_is_initialized(self):
         """Raises a NotmuchError(:attr:`STATUS`.NOT_INITIALIZED)
         if dir_p is None"""
-        if self._dir_p is None:
+        if not self._dir_p:
             raise NotmuchError(STATUS.NOT_INITIALIZED)
 
     def __init__(self, path, dir_p, parent):
             raise NotmuchError(STATUS.NOT_INITIALIZED)
 
     def __init__(self, path, dir_p, parent):
@@ -926,7 +926,7 @@ class Filenames(object):
     _move_to_next.restype = None
 
     def __next__(self):
     _move_to_next.restype = None
 
     def __next__(self):
-        if self._files_p is None:
+        if not self._files_p:
             raise NotmuchError(STATUS.NOT_INITIALIZED)
 
         if not self._valid(self._files_p):
             raise NotmuchError(STATUS.NOT_INITIALIZED)
 
         if not self._valid(self._files_p):
@@ -953,7 +953,7 @@ class Filenames(object):
                      # NotmuchError(:attr:`STATUS`.NOT_INITIALIZED)
                      for file in files: print file
         """
                      # NotmuchError(:attr:`STATUS`.NOT_INITIALIZED)
                      for file in files: print file
         """
-        if self._files_p is None:
+        if not self._files_p:
             raise NotmuchError(STATUS.NOT_INITIALIZED)
 
         i = 0
             raise NotmuchError(STATUS.NOT_INITIALIZED)
 
         i = 0
index 51dae202d5d656963a977739ae053ef55b35adb5..3f541046ff495bc65cb6f28f50eb5fff2e64b0b3 100644 (file)
@@ -69,7 +69,7 @@ class Filenames(Python3StringMixIn):
              reference to it, so we can automatically delete the db object
              once all derived objects are dead.
         """
              reference to it, so we can automatically delete the db object
              once all derived objects are dead.
         """
-        if files_p is None:
+        if not files_p:
             raise NotmuchError(STATUS.NULL_POINTER)
 
         self._files = files_p
             raise NotmuchError(STATUS.NULL_POINTER)
 
         self._files = files_p
index d40a575d92d8587e355935abbb312117e2ec0a0c..883ed233c7e170fbfcab9b58aca2676f31417920 100644 (file)
@@ -117,7 +117,7 @@ class Messages(object):
         :TODO: Make the iterator work more than once and cache the tags in
                the Python object.(?)
         """
         :TODO: Make the iterator work more than once and cache the tags in
                the Python object.(?)
         """
-        if msgs_p is None:
+        if not msgs_p:
             raise NotmuchError(STATUS.NULL_POINTER)
 
         self._msgs = msgs_p
             raise NotmuchError(STATUS.NULL_POINTER)
 
         self._msgs = msgs_p
@@ -349,7 +349,7 @@ class Message(Python3StringMixIn):
               automatically delete the parent object once all derived
               objects are dead.
         """
               automatically delete the parent object once all derived
               objects are dead.
         """
-        if msg_p is None:
+        if not msg_p:
             raise NotmuchError(STATUS.NULL_POINTER)
         self._msg = msg_p
         #keep reference to parent, so we keep it alive
             raise NotmuchError(STATUS.NULL_POINTER)
         self._msg = msg_p
         #keep reference to parent, so we keep it alive
@@ -407,7 +407,7 @@ class Message(Python3StringMixIn):
 
         msgs_p = Message._get_replies(self._msg)
 
 
         msgs_p = Message._get_replies(self._msg)
 
-        if msgs_p is None:
+        if not msgs_p:
             return EmptyMessagesResult(self)
 
         return Messages(msgs_p, self)
             return EmptyMessagesResult(self)
 
         return Messages(msgs_p, self)
index ceb724410606a729bd042a394b2937816afc30ed..71d81dd6bc46bdfd5bb3cffddfbea084b3d7b93b 100644 (file)
@@ -70,7 +70,7 @@ class Tags(Python3StringMixIn):
         :TODO: Make the iterator optionally work more than once by
                cache the tags in the Python object(?)
         """
         :TODO: Make the iterator optionally work more than once by
                cache the tags in the Python object(?)
         """
-        if tags_p is None:
+        if not tags_p:
             raise NotmuchError(STATUS.NULL_POINTER)
 
         self._tags = tags_p
             raise NotmuchError(STATUS.NULL_POINTER)
 
         self._tags = tags_p
index e81ff1bdea305de55fada9a308508c4a5e6bd5d2..104710c4374cd30cf3e5ff755f09fa8297aca14b 100644 (file)
@@ -97,7 +97,7 @@ class Threads(Python3StringMixIn):
         :TODO: Make the iterator work more than once and cache the tags in
                the Python object.(?)
         """
         :TODO: Make the iterator work more than once and cache the tags in
                the Python object.(?)
         """
-        if threads_p is None:
+        if not threads_p:
             raise NotmuchError(STATUS.NULL_POINTER)
 
         self._threads = threads_p
             raise NotmuchError(STATUS.NULL_POINTER)
 
         self._threads = threads_p
@@ -228,7 +228,7 @@ class Thread(object):
               automatically delete the parent object once all derived
               objects are dead.
         """
               automatically delete the parent object once all derived
               objects are dead.
         """
-        if thread_p is None:
+        if not thread_p:
             raise NotmuchError(STATUS.NULL_POINTER)
         self._thread = thread_p
         #keep reference to parent, so we keep it alive
             raise NotmuchError(STATUS.NULL_POINTER)
         self._thread = thread_p
         #keep reference to parent, so we keep it alive
@@ -289,7 +289,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)
 
         return Messages(msgs_p, self)
             raise NotmuchError(STATUS.NULL_POINTER)
 
         return Messages(msgs_p, self)