[PATCH] use __unicode__ for string representation

patricktotzke at googlemail.com patricktotzke at googlemail.com
Mon Dec 5 14:56:40 PST 2011


From: Patrick Totzke <patricktotzke at gmail.com>

---
 bindings/python/notmuch/filename.py |    3 +++
 bindings/python/notmuch/globals.py  |   11 +++++++----
 bindings/python/notmuch/message.py  |   14 ++++++++------
 bindings/python/notmuch/tag.py      |    5 ++++-
 4 files changed, 22 insertions(+), 11 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..52607ed 100644
--- a/bindings/python/notmuch/tag.py
+++ b/bindings/python/notmuch/tag.py
@@ -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