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 EB0D3429E2F for ; Wed, 14 Dec 2011 05:04:50 -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 L4+mpuVvnR5N for ; Wed, 14 Dec 2011 05:04:50 -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 BEC39429E27 for ; Wed, 14 Dec 2011 05:04:49 -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 8936950F522 for ; Wed, 14 Dec 2011 14:04:48 +0100 (CET) Received: by mail.jade-hamburg.de (Postfix, from userid 401) id 7CCBADF2A1; Wed, 14 Dec 2011 14:04:47 +0100 (CET) Received: from thinkbox.jade-hamburg.de (unknown [85.183.11.228]) (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 E77F4DF29F; Wed, 14 Dec 2011 14:04:43 +0100 (CET) Received: from teythoon by thinkbox.jade-hamburg.de with local (Exim 4.77) (envelope-from ) id 1RaoVm-00086t-N6; Wed, 14 Dec 2011 14:04:42 +0100 From: Justus Winter <4winter@informatik.uni-hamburg.de> To: notmuch@notmuchmail.org Subject: [PATCH 6/7] py3k: Add and use a mixin class that implements __str__ Date: Wed, 14 Dec 2011 14:04:35 +0100 Message-Id: <1323867875-30684-1-git-send-email-4winter@informatik.uni-hamburg.de> X-Mailer: git-send-email 1.7.7.3 In-Reply-To: References: 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: Wed, 14 Dec 2011 13:04:51 -0000 --- bindings/python/notmuch/filename.py | 7 ++----- bindings/python/notmuch/globals.py | 15 +++++++++++---- bindings/python/notmuch/message.py | 8 +++----- bindings/python/notmuch/tag.py | 7 ++----- bindings/python/notmuch/thread.py | 7 ++----- 5 files changed, 20 insertions(+), 24 deletions(-) diff --git a/bindings/python/notmuch/filename.py b/bindings/python/notmuch/filename.py index a7cd7e6..969931a 100644 --- a/bindings/python/notmuch/filename.py +++ b/bindings/python/notmuch/filename.py @@ -18,10 +18,10 @@ Copyright 2010 Sebastian Spaeth ' """ from ctypes import c_char_p from notmuch.globals import (nmlib, STATUS, NotmuchError, - NotmuchFilenamesP, NotmuchMessageP) + NotmuchFilenamesP, NotmuchMessageP, _str, Python3StringMixIn) -class Filenames(object): +class Filenames(Python3StringMixIn): """Represents a list of filenames as returned by notmuch This object contains the Filenames iterator. The main function is @@ -98,9 +98,6 @@ class Filenames(object): self._files = None - def __str__(self): - return unicode(self).encode('utf-8') - def __unicode__(self): """Represent Filenames() as newline-separated list of full paths diff --git a/bindings/python/notmuch/globals.py b/bindings/python/notmuch/globals.py index c52790c..2111b86 100644 --- a/bindings/python/notmuch/globals.py +++ b/bindings/python/notmuch/globals.py @@ -28,6 +28,16 @@ except: raise ImportError("Could not find shared 'notmuch' library.") +if sys.version_info[0] == 2: + class Python3StringMixIn(object): + def __str__(self): + return unicode(self).encode('utf-8') +else: + class Python3StringMixIn(object): + def __str__(self): + return self.__unicode__() + + class Enum(object): """Provides ENUMS as "code=Enum(['a','b','c'])" where code.a=0 etc...""" def __init__(self, names): @@ -90,7 +100,7 @@ argument to receive a human readable string""" STATUS.__name__ = 'STATUS' -class NotmuchError(Exception): +class NotmuchError(Exception, Python3StringMixIn): """Is initiated with a (notmuch.STATUS[, message=None]). It will not return an instance of the class NotmuchError, but a derived instance of a more specific Error Message, e.g. OutOfMemoryError. Each status @@ -134,9 +144,6 @@ class NotmuchError(Exception): self.status = status self.message = message - def __str__(self): - return unicode(self).encode('utf-8') - def __unicode__(self): if self.message is not None: return self.message diff --git a/bindings/python/notmuch/message.py b/bindings/python/notmuch/message.py index bf0c4da..955382d 100644 --- a/bindings/python/notmuch/message.py +++ b/bindings/python/notmuch/message.py @@ -21,7 +21,8 @@ Copyright 2010 Sebastian Spaeth ' from ctypes import c_char_p, c_long, c_uint, c_int from datetime import date -from notmuch.globals import (nmlib, STATUS, NotmuchError, Enum, _str, +from notmuch.globals import ( + nmlib, STATUS, NotmuchError, Enum, _str, Python3StringMixIn, NotmuchTagsP, NotmuchMessagesP, NotmuchMessageP, NotmuchFilenamesP) from notmuch.tag import Tags from notmuch.filename import Filenames @@ -239,7 +240,7 @@ class Messages(object): sys.stdout.write(set_end) -class Message(object): +class Message(Python3StringMixIn): """Represents a single Email message Technically, this wraps the underlying *notmuch_message_t* @@ -796,9 +797,6 @@ class Message(object): """Represent a Message() object by str()""" return self.__str__() - def __str__(self): - return unicode(self).encode('utf-8') - def __unicode__(self): format = "%s (%s) (%s)" return format % (self.get_header('from'), diff --git a/bindings/python/notmuch/tag.py b/bindings/python/notmuch/tag.py index d42ba77..ceb7244 100644 --- a/bindings/python/notmuch/tag.py +++ b/bindings/python/notmuch/tag.py @@ -17,10 +17,10 @@ along with notmuch. If not, see . Copyright 2010 Sebastian Spaeth ' """ from ctypes import c_char_p -from notmuch.globals import nmlib, STATUS, NotmuchError, NotmuchTagsP +from notmuch.globals import nmlib, STATUS, NotmuchError, NotmuchTagsP, _str, Python3StringMixIn -class Tags(object): +class Tags(Python3StringMixIn): """Represents a list of notmuch tags This object provides an iterator over a list of notmuch tags (which @@ -111,9 +111,6 @@ class Tags(object): left.""" return self._valid(self._tags) > 0 - def __str__(self): - return unicode(self).encode('utf-8') - def __unicode__(self): """string representation of :class:`Tags`: a space separated list of tags diff --git a/bindings/python/notmuch/thread.py b/bindings/python/notmuch/thread.py index 39285d6..7393097 100644 --- a/bindings/python/notmuch/thread.py +++ b/bindings/python/notmuch/thread.py @@ -20,13 +20,13 @@ Copyright 2010 Sebastian Spaeth ' from ctypes import c_char_p, c_long, c_int from notmuch.globals import (nmlib, STATUS, NotmuchError, NotmuchThreadP, NotmuchThreadsP, NotmuchMessagesP, - NotmuchTagsP,) + NotmuchTagsP, Python3StringMixIn) from notmuch.message import Messages from notmuch.tag import Tags from datetime import date -class Threads(object): +class Threads(Python3StringMixIn): """Represents a list of notmuch threads This object provides an iterator over a list of notmuch threads @@ -392,9 +392,6 @@ class Thread(object): raise NotmuchError(STATUS.NULL_POINTER) return Tags(tags_p, self) - def __str__(self): - return unicode(self).encode('utf-8') - def __unicode__(self): frm = "thread:%s %12s [%d/%d] %s; %s (%s)" -- 1.7.7.3