--- bindings/python/notmuch/filename.py | 3 +++ bindings/python/notmuch/globals.py | 11 +++++++---- bindings/python/notmuch/message.py | 14 ++++++++------ bindings/python/notmuch/tag.py | 7 +++++-- 4 files changed, 23 insertions(+), 12 deletions(-)
diff --git a/bindings/python/notmuch/filename.py b/bindings/python/notmuch/filename.py index 077754e..80755ee 100644 --- a/bindings/python/notmuch/filename.py +++ b/bindings/python/notmuch/filename.py @@ -99,6 +99,9 @@ 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 .. note:: As this iterates over the filenames, we will not be diff --git a/bindings/python/notmuch/globals.py b/bindings/python/notmuch/globals.py index 36354fc..62b2df1 100644 --- a/bindings/python/notmuch/globals.py +++ b/bindings/python/notmuch/globals.py @@ -49,11 +49,11 @@ class Status(Enum): @classmethod def status2str(self, status): - """Get a string representation of a notmuch_status_t value.""" + """Get a (unicode) string representation of a notmuch_status_t value.""" # define strings for custom error messages if status == STATUS.NOT_INITIALIZED: - return "Operation on uninitialized object impossible." - return str(Status._status2str(status)) + return u"Operation on uninitialized object impossible." + return unicode(Status._status2str(status)) STATUS = Status(['SUCCESS', 'OUT_OF_MEMORY', @@ -133,12 +133,15 @@ class NotmuchError(Exception): self.message = message def __str__(self): + return unicode(self).encode('utf-8') + + def __unicode__(self): if self.message is not None: return self.message elif self.status is not None: return STATUS.status2str(self.status) else: - return 'Unknown error' + return u'Unknown error' # List of Subclassed exceptions that correspond to STATUS values and are # subclasses of NotmuchError. diff --git a/bindings/python/notmuch/message.py b/bindings/python/notmuch/message.py index e0c7eda..fac575c 100644 --- a/bindings/python/notmuch/message.py +++ b/bindings/python/notmuch/message.py @@ -794,12 +794,14 @@ class Message(object): return self.__str__() def __str__(self): - """A message() is represented by a 1-line summary""" - msg = {} - msg['from'] = self.get_header('from') - msg['tags'] = self.get_tags() - msg['date'] = date.fromtimestamp(self.get_date()) - return "%(from)s (%(date)s) (%(tags)s)" % (msg) + return unicode(self).encode('utf-8') + + def __unicode__(self): + format = "%(from)s (%(date)s) (%(tags)s)" + return format % (self.get_header('from'), + self.get_tags(), + date.fromtimestamp(self.get_date()), + ) def get_message_parts(self): """Output like notmuch show""" diff --git a/bindings/python/notmuch/tag.py b/bindings/python/notmuch/tag.py index f3a3d27..36aeeed 100644 --- a/bindings/python/notmuch/tag.py +++ b/bindings/python/notmuch/tag.py @@ -95,7 +95,7 @@ class Tags(object): if not self._valid(self._tags): self._tags = None raise StopIteration - tag = Tags._get(self._tags).decode('UTF-8') + tag = Tags._get(self._tags) self._move_to_next(self._tags) return tag @@ -111,7 +111,10 @@ class Tags(object): return self._valid(self._tags) > 0 def __str__(self): - """The str() representation of Tags() is a space separated list of tags + return unicode(self).encode('utf-8') + + def __unicode__(self): + """string representation of :class:`Tags`: a space separated list of tags .. note:: As this iterates over the tags, we will not be able to iterate over them again (as in retrieve them)! If -- 1.7.4.1 _______________________________________________ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch