]> git.phdru.name Git - m_librarian.git/commitdiff
Python 3 compatibility
authorOleg Broytman <phd@phdru.name>
Mon, 25 Jul 2016 12:50:49 +0000 (15:50 +0300)
committerOleg Broytman <phd@phdru.name>
Mon, 25 Jul 2016 12:50:49 +0000 (15:50 +0300)
ml-search.py still doesn't work with Python 3 - it requires m_lib.defenc
and m_lib hasn't been ported to Python 3 yet.

m_librarian/compat.py [new file with mode: 0644]
m_librarian/config.py
m_librarian/db.py
m_librarian/inp.py
scripts/ml-search.py

diff --git a/m_librarian/compat.py b/m_librarian/compat.py
new file mode 100644 (file)
index 0000000..a3f342f
--- /dev/null
@@ -0,0 +1,11 @@
+import sys
+
+# Compatability definitions
+PY2 = sys.version_info[0] < 3
+if PY2:
+    # disable flake8 checks on python 3
+    string_type = basestring  # noqa
+    unicode_type = unicode  # noqa
+else:
+    string_type = str
+    unicode_type = str
index 2540ac463097408de93019713243c4e56d6c78c0..e1ee7d935d8616ee61d16b3d916fdb7ba7d320ff 100755 (executable)
@@ -2,7 +2,10 @@
 
 from __future__ import print_function
 import os
-from ConfigParser import RawConfigParser
+try:
+    from ConfigParser import RawConfigParser
+except ImportError:  # py3
+    from configparser import RawConfigParser
 
 __all__ = ['get_config']
 
index ecabfdbcfd146cf583ea2d8aa6dcfe1e1a7d1be0..42735afe8f3b9b2fa1c12b1a90d2b72ddcda9be1 100755 (executable)
@@ -5,6 +5,7 @@ import os
 from sqlobject import SQLObject, StringCol, UnicodeCol, IntCol, BoolCol, \
     ForeignKey, DateCol, DatabaseIndex, RelatedJoin, \
     connectionForURI, sqlhub, SQLObjectNotFound, dberrors
+from .compat import string_type
 from .config import get_config
 
 __all__ = ['Author', 'Book', 'Extension', 'Genre', 'Language',
@@ -156,7 +157,7 @@ def open_db(db_uri=None):
 
     if connection.dbName == 'sqlite':
         def lower(s):
-            if isinstance(s, basestring):
+            if isinstance(s, string_type):
                 return s.lower()
             return s
 
index a030ebc8993dfe65735d773291f085baf964a14b..e16df6c5d91496d9f652e966084429737ce21a5e 100644 (file)
@@ -72,6 +72,7 @@ def import_inp(archive, inp):
             Select(Book.q.file, Book.q.archive == archive))):
         files.add(file)
     for line in inp:
+        line = line.decode('utf-8')
         parts = split_line(line)
         file = parts[5]
         if file not in files:
index 1aad934555c609c773376dde5522a67f121c6e7d..bae79cb93f1ccf2e6c023f3b627a36e915cb24e8 100755 (executable)
@@ -6,6 +6,7 @@ import sys
 from sqlobject.sqlbuilder import CONCAT
 
 from m_lib.defenc import default_encoding
+from m_librarian.compat import string_type
 from m_librarian.config import get_config
 from m_librarian.db import Author, Book, Extension, Genre, Language, open_db
 from m_librarian.download import download
@@ -22,7 +23,7 @@ def _get_values(args, *columns):
     for column in columns:
         value = getattr(args, column)
         if value:
-            if isinstance(value, basestring):
+            if isinstance(value, string_type):
                 value = unicode(value, default_encoding)
             values[column] = value
     return values
@@ -30,7 +31,7 @@ def _get_values(args, *columns):
 
 def _guess_case_sensitivity(values):
     for value in values.values():
-        if isinstance(value, basestring) and not value.islower():
+        if isinstance(value, string_type) and not value.islower():
             return True
     return False