X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=bindings%2Fpython%2Fnotmuch%2Fglobals.py;h=32ed9ae40181ece3632fa2175a5569c89dd69e2c;hb=83b256b12be25b29f915587342b5ccb139864268;hp=f5c8d5288ea07edb249bd39dc99b9229cdd1db8e;hpb=4292b1197d8a43199c43164e9f8e764b3a809de4;p=notmuch diff --git a/bindings/python/notmuch/globals.py b/bindings/python/notmuch/globals.py index f5c8d528..32ed9ae4 100644 --- a/bindings/python/notmuch/globals.py +++ b/bindings/python/notmuch/globals.py @@ -16,9 +16,8 @@ along with notmuch. If not, see . Copyright 2010 Sebastian Spaeth ' """ - +import sys from ctypes import CDLL, c_char_p, c_int, Structure, POINTER -from ctypes.util import find_library #----------------------------------------------------------------------------- #package-global instance of the notmuch library @@ -28,6 +27,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): @@ -49,11 +58,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 unicode(Status._status2str(status)) STATUS = Status(['SUCCESS', 'OUT_OF_MEMORY', @@ -90,7 +99,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,7 +143,7 @@ class NotmuchError(Exception): self.status = status self.message = message - def __str__(self): + def __unicode__(self): if self.message is not None: return self.message elif self.status is not None: