]> git.notmuchmail.org Git - notmuch/commitdiff
python: fix error handling
authorJustus Winter <4winter@informatik.uni-hamburg.de>
Sun, 22 Jan 2012 13:09:35 +0000 (14:09 +0100)
committerDavid Bremner <bremner@debian.org>
Mon, 23 Jan 2012 11:44:08 +0000 (07:44 -0400)
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.

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 7923f768b1f78caec831c3018b5280367feb9712..0074ba36b2fc7995cddbd3a81af0e4e8c39b087d 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
 
@@ -645,7 +645,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
 
@@ -679,7 +679,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)
 
@@ -693,7 +693,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)
 
@@ -759,7 +759,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):
@@ -920,7 +920,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):
@@ -946,7 +946,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 a7cd7e63d44bf03076b5e21087e77ae425761a7a..f7313ec5ae856ccb008fe5ce16461e67e875faed 100644 (file)
@@ -69,7 +69,7 @@ class Filenames(object):
              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 ce8e7181b2743f162843c8f2d387baf3515d3f9c..5540df3e76ad562b545802756e31ed8f8e9afb14 100644 (file)
@@ -116,7 +116,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
@@ -321,7 +321,7 @@ class Message(object):
               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
@@ -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 Messages(msgs_p, self)
             return None
 
         return Messages(msgs_p, self)
index 2fb7d3287a8413e295b1e9b5b2840d9d06bdb476..4881db9fa2cdae0220f0f28398e14b69c334b7c1 100644 (file)
@@ -70,7 +70,7 @@ class Tags(object):
         :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 5058846d7ce89d4bbd0cbef5fb6bab06079e3047..594fa5228ecbc7dec1b32554fbdea1f956650c62 100644 (file)
@@ -97,7 +97,7 @@ class Threads(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 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
@@ -227,7 +227,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
@@ -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)
 
         return Messages(msgs_p, self)
             raise NotmuchError(STATUS.NULL_POINTER)
 
         return Messages(msgs_p, self)