[PATCH 2/3] use __unicode__ for string representation
Patrick Totzke
patricktotzke at googlemail.com
Mon Dec 5 13:19:28 PST 2011
---
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
More information about the notmuch
mailing list