]> git.notmuchmail.org Git - notmuch/blobdiff - bindings/python/notmuch/globals.py
python: use absolute import for SOVERSION
[notmuch] / bindings / python / notmuch / globals.py
index 442f3e3521077469b378d1ed70a4d9f00a640194..70cfdc3d12f5d3d7b6e6a84208ec7c133926afa3 100644 (file)
@@ -14,50 +14,24 @@ for more details.
 You should have received a copy of the GNU General Public License
 along with notmuch.  If not, see <http://www.gnu.org/licenses/>.
 
-Copyright 2010 Sebastian Spaeth <Sebastian@SSpaeth.de>'
+Copyright 2010 Sebastian Spaeth <Sebastian@SSpaeth.de>
 """
-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.")
 
-
-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')
-
+from .compat import Python3StringMixIn, encode_utf8 as _str
 
 class Enum(object):
     """Provides ENUMS as "code=Enum(['a','b','c'])" where code.a=0 etc..."""