X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=bindings%2Fpython%2Fnotmuch%2Fglobals.py;h=2a57c411f3b6c4a07f61ec069c59397efe928059;hp=77f2905b2fb405d3583e98525e463430ec2ea4c4;hb=fc2d353eeb074f3659df3ad60720d119480ab192;hpb=c49bcfd4e2b539e65b0b4d59a414c2101f5178a2 diff --git a/bindings/python/notmuch/globals.py b/bindings/python/notmuch/globals.py index 77f2905b..2a57c411 100644 --- a/bindings/python/notmuch/globals.py +++ b/bindings/python/notmuch/globals.py @@ -65,6 +65,7 @@ STATUS = Status(['SUCCESS', 'NULL_POINTER', 'TAG_TOO_LONG', 'UNBALANCED_FREEZE_THAW', + 'UNBALANCED_ATOMIC', 'NOT_INITIALIZED']) """STATUS is a class, whose attributes provide constants that serve as return indicators for notmuch functions. Currently the following ones are defined. For @@ -81,6 +82,7 @@ description. * NULL_POINTER * TAG_TOO_LONG * UNBALANCED_FREEZE_THAW + * UNBALANCED_ATOMIC * NOT_INITIALIZED Invoke the class method `notmuch.STATUS.status2str` with a status value as @@ -91,10 +93,23 @@ STATUS.__name__ = 'STATUS' class NotmuchError(Exception): def __init__(self, status=None, message=None): """Is initiated with a (notmuch.STATUS[,message=None])""" - super(NotmuchError, self).__init__(message, status) + self.status = status + self.message = message def __str__(self): - if self.args[0] is not None: - return self.args[0] + if self.message is not None: + return self.message else: - return STATUS.status2str(self.args[1]) + return STATUS.status2str(self.status) + +def _str(value): + """Ensure a nicely utf-8 encoded string to pass to libnotmuch + + C++ code expects strings to be well formatted and + unicode strings to have no null bytes.""" + if not isinstance(value, basestring): + raise TypeError("Expected str or unicode, got %s" % str(type(value))) + if isinstance(value, unicode): + return value.encode('UTF-8') + return value +