X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=bindings%2Fpython%2Fnotmuch%2Fglobals.py;h=11e328b76c6e8fbb94997ddbf19bcb0d47b41dd2;hb=bc58b5ad0d0e1201dddaf03efc86a0b31e133fc0;hp=823c3e23332fce884505f07f25fa4b2ed896c00a;hpb=1f08664a6b8f7cba63f63855833f877b66bbbe05;p=notmuch
diff --git a/bindings/python/notmuch/globals.py b/bindings/python/notmuch/globals.py
index 823c3e23..11e328b7 100644
--- a/bindings/python/notmuch/globals.py
+++ b/bindings/python/notmuch/globals.py
@@ -12,52 +12,31 @@ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
-along with notmuch. If not, see .
+along with notmuch. If not, see .
Copyright 2010 Sebastian Spaeth
"""
-import sys
+
from ctypes import CDLL, Structure, POINTER
+from notmuch.version import SOVERSION
#-----------------------------------------------------------------------------
#package-global instance of the notmuch library
try:
- nmlib = CDLL("libnotmuch.so.2")
+ from os import uname
+ if uname()[0] == 'Darwin':
+ nmlib = CDLL("libnotmuch.{0:s}.dylib".format(SOVERSION))
+ else:
+ nmlib = CDLL("libnotmuch.so.{0:s}".format(SOVERSION))
except:
raise ImportError("Could not find shared 'notmuch' library.")
+from .compat import Python3StringMixIn, encode_utf8 as _str
-if sys.version_info[0] == 2:
- class Python3StringMixIn(object):
- def __str__(self):
- return unicode(self).encode('utf-8')
-
-
- 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" % type(value))
- if isinstance(value, unicode):
- return value.encode('UTF-8')
- return value
-else:
- class Python3StringMixIn(object):
- def __str__(self):
- return self.__unicode__()
-
-
- 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, str):
- raise TypeError("Expected str, got %s" % type(value))
- return value.encode('UTF-8')
-
+# We import these on behalf of other modules. Silence warning about
+# these symbols not being used.
+Python3StringMixIn
+_str
class Enum(object):
"""Provides ENUMS as "code=Enum(['a','b','c'])" where code.a=0 etc..."""
@@ -96,6 +75,11 @@ class NotmuchMessageS(Structure):
NotmuchMessageP = POINTER(NotmuchMessageS)
+class NotmuchMessagePropertiesS(Structure):
+ pass
+NotmuchMessagePropertiesP = POINTER(NotmuchMessagePropertiesS)
+
+
class NotmuchTagsS(Structure):
pass
NotmuchTagsP = POINTER(NotmuchTagsS)
@@ -109,3 +93,13 @@ NotmuchDirectoryP = POINTER(NotmuchDirectoryS)
class NotmuchFilenamesS(Structure):
pass
NotmuchFilenamesP = POINTER(NotmuchFilenamesS)
+
+
+class NotmuchConfigListS(Structure):
+ pass
+NotmuchConfigListP = POINTER(NotmuchConfigListS)
+
+
+class NotmuchIndexoptsS(Structure):
+ pass
+NotmuchIndexoptsP = POINTER(NotmuchIndexoptsS)