Return-Path: X-Original-To: notmuch@notmuchmail.org Delivered-To: notmuch@notmuchmail.org Received: from localhost (localhost [127.0.0.1]) by olra.theworths.org (Postfix) with ESMTP id 47621429E54 for ; Sun, 22 Jan 2012 05:10:10 -0800 (PST) X-Virus-Scanned: Debian amavisd-new at olra.theworths.org X-Spam-Flag: NO X-Spam-Score: 0 X-Spam-Level: X-Spam-Status: No, score=0 tagged_above=-999 required=5 tests=[none] autolearn=disabled Received: from olra.theworths.org ([127.0.0.1]) by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id uxVkOKMapNY1 for ; Sun, 22 Jan 2012 05:10:09 -0800 (PST) Received: from mail.cryptobitch.de (cryptobitch.de [88.198.7.68]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by olra.theworths.org (Postfix) with ESMTPS id 2C9FE429E40 for ; Sun, 22 Jan 2012 05:10:09 -0800 (PST) Received: from mail.jade-hamburg.de (unknown [85.183.11.228]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.cryptobitch.de (Postfix) with ESMTPSA id 6487B52C70D for ; Sun, 22 Jan 2012 14:10:07 +0100 (CET) Received: by mail.jade-hamburg.de (Postfix, from userid 401) id 783C9DF2A3; Sun, 22 Jan 2012 14:10:06 +0100 (CET) Received: from thinkbox.jade-hamburg.de (unknown [10.1.1.109]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: teythoon) by mail.jade-hamburg.de (Postfix) with ESMTPSA id EF7B4DF2A0; Sun, 22 Jan 2012 14:10:01 +0100 (CET) Received: from teythoon by thinkbox.jade-hamburg.de with local (Exim 4.77) (envelope-from ) id 1RoxBI-0004iZ-VU; Sun, 22 Jan 2012 14:10:01 +0100 From: Justus Winter <4winter@informatik.uni-hamburg.de> To: notmuch@notmuchmail.org Subject: [PATCH] python: fix error handling Date: Sun, 22 Jan 2012 14:09:35 +0100 Message-Id: <1327237776-18100-1-git-send-email-4winter@informatik.uni-hamburg.de> X-Mailer: git-send-email 1.7.8.3 In-Reply-To: <87obtvc42c.fsf@zancas.localnet> References: <87obtvc42c.fsf@zancas.localnet> X-BeenThere: notmuch@notmuchmail.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2012 13:10:10 -0000 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 | 16 ++++++++-------- bindings/python/notmuch/filename.py | 2 +- bindings/python/notmuch/message.py | 6 +++--- bindings/python/notmuch/tag.py | 2 +- bindings/python/notmuch/thread.py | 6 +++--- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/bindings/python/notmuch/database.py b/bindings/python/notmuch/database.py index 7923f76..0074ba3 100644 --- a/bindings/python/notmuch/database.py +++ b/bindings/python/notmuch/database.py @@ -168,7 +168,7 @@ class Database(object): 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 @@ -188,7 +188,7 @@ class Database(object): """ 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 @@ -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)) - if query_p is None: + if not 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) - if threads_p is None: + if not threads_p: 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) - if msgs_p is None: + if not msgs_p: 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""" - if self._dir_p is None: + if not self._dir_p: 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): - if self._files_p is None: + if not 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 """ - if self._files_p is None: + if not self._files_p: raise NotmuchError(STATUS.NOT_INITIALIZED) i = 0 diff --git a/bindings/python/notmuch/filename.py b/bindings/python/notmuch/filename.py index a7cd7e6..f7313ec 100644 --- a/bindings/python/notmuch/filename.py +++ b/bindings/python/notmuch/filename.py @@ -69,7 +69,7 @@ class Filenames(object): 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 diff --git a/bindings/python/notmuch/message.py b/bindings/python/notmuch/message.py index ce8e718..5540df3 100644 --- a/bindings/python/notmuch/message.py +++ b/bindings/python/notmuch/message.py @@ -116,7 +116,7 @@ class Messages(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 @@ -321,7 +321,7 @@ class Message(object): 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 @@ -380,7 +380,7 @@ class Message(object): msgs_p = Message._get_replies(self._msg) - if msgs_p is None: + if not msgs_p: return None return Messages(msgs_p, self) diff --git a/bindings/python/notmuch/tag.py b/bindings/python/notmuch/tag.py index 2fb7d32..4881db9 100644 --- a/bindings/python/notmuch/tag.py +++ b/bindings/python/notmuch/tag.py @@ -70,7 +70,7 @@ class Tags(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 diff --git a/bindings/python/notmuch/thread.py b/bindings/python/notmuch/thread.py index 5058846..594fa52 100644 --- a/bindings/python/notmuch/thread.py +++ b/bindings/python/notmuch/thread.py @@ -97,7 +97,7 @@ class Threads(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 @@ -227,7 +227,7 @@ class Thread(object): 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 @@ -288,7 +288,7 @@ class Thread(object): 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) -- 1.7.8.3