]> git.ipfire.org Git - thirdparty/sqlalchemy/alembic.git/commitdiff
basestring and str are gone since Python 3
authorHong Minhee <minhee@dahlia.kr>
Fri, 12 Apr 2013 19:28:48 +0000 (04:28 +0900)
committerHong Minhee <minhee@dahlia.kr>
Fri, 12 Apr 2013 19:28:48 +0000 (04:28 +0900)
alembic/autogenerate.py
alembic/ddl/impl.py
alembic/ddl/mysql.py
alembic/operations.py
tests/__init__.py
tests/test_autogenerate.py

index c54d788f7e55622ff3620fafe9c07f8c4fe67e59..452fe7feb79e32b0f7aef91e268b1ff53b91958a 100644 (file)
@@ -1,6 +1,10 @@
 """Provide the 'autogenerate' feature which can produce migration operations
 automatically."""
 
+try:
+    import builtins
+except ImportError:
+    import __builtin__ as builtins
 import logging
 import re
 
@@ -584,17 +588,18 @@ def _render_column(column, autogen_context):
     }
 
 def _render_server_default(default, autogen_context):
+    string_type = getattr(builtins, 'basestring', str)
     rendered = _user_defined_render("server_default", default, autogen_context)
     if rendered is not False:
         return rendered
 
     if isinstance(default, sa_schema.DefaultClause):
-        if isinstance(default.arg, basestring):
+        if isinstance(default.arg, string_type):
             default = default.arg
         else:
             default = str(default.arg.compile(
                             dialect=autogen_context['dialect']))
-    if isinstance(default, basestring):
+    if isinstance(default, string_type):
         # TODO: this is just a hack to get
         # tests to pass until we figure out
         # WTF sqlite is doing
index 22cda2cbc2fccbe343302dc37438b05bac31d7d2..1c44534f6a03bb35d64797099fc1b6a13192d60a 100644 (file)
@@ -1,3 +1,8 @@
+try:
+    import builtins
+except ImportError:
+    import __builtin__ as builtins
+
 from sqlalchemy.sql.expression import _BindParamClause
 from sqlalchemy.ext.compiler import compiles
 from sqlalchemy import schema, text
@@ -58,12 +63,13 @@ class DefaultImpl(ImplMeta('_ImplBase', (object,), {})):
     def _exec(self, construct, execution_options=None,
                             multiparams=(),
                             params=util.immutabledict()):
-        if isinstance(construct, basestring):
+        if isinstance(construct, getattr(builtins, 'basestring', str)):
             construct = text(construct)
         if self.as_sql:
             if multiparams or params:
                 # TODO: coverage
                 raise Exception("Execution arguments not allowed with as_sql")
+            unicode = getattr(builtins, 'unicode', str)
             self.static_output(unicode(
                     construct.compile(dialect=self.dialect)
                     ).replace("\t", "    ").strip() + self.command_terminator)
index d04727ea7be55e79538863ecb73ae84fa03f3d35..440eef153fb316f13ba5bc090ca5a3017e2e17c3 100644 (file)
@@ -1,3 +1,8 @@
+try:
+    import builtins
+except ImportError:
+    import __builtin__ as builtins
+
 from sqlalchemy.ext.compiler import compiles
 from sqlalchemy import types as sqltypes
 from sqlalchemy import schema
@@ -89,7 +94,7 @@ def _mysql_alter_column(element, compiler, **kw):
     )
 
 def _render_value(compiler, expr):
-    if isinstance(expr, basestring):
+    if isinstance(expr, getattr(builtins, 'basestring', str)):
         return "'%s'" % expr
     else:
         return compiler.sql_compiler.process(expr)
index 1b29a7591ce47ac7cced875b0c4689b889f5747d..9f365024d745fdf6ed6767dfbe9f459c5849e2fb 100644 (file)
@@ -1,3 +1,7 @@
+try:
+    import builtins
+except ImportError:
+    import __builtin__ as builtins
 from contextlib import contextmanager
 
 from sqlalchemy.types import NULLTYPE, Integer
@@ -143,7 +147,7 @@ class Operations(object):
         ForeignKey.
 
         """
-        if isinstance(fk._colspec, basestring):
+        if isinstance(fk._colspec, getattr(builtins, 'basestring', str)):
             table_key, cname = fk._colspec.rsplit('.', 1)
             sname, tname = self._parse_table_key(table_key)
             if table_key not in metadata.tables:
index 87f8b1d026c23ce11fe42f76749655eaa4d2d3c3..97737fdc2bc1eb68bccc58dce95693336648718e 100644 (file)
@@ -97,6 +97,7 @@ def _get_dialect(name):
 
 def assert_compiled(element, assert_string, dialect=None):
     dialect = _get_dialect(dialect)
+    unicode = getattr(builtins, 'unicode', str)
     eq_(
         unicode(element.compile(dialect=dialect)).\
                     replace("\n", "").replace("\t", ""),
@@ -160,6 +161,8 @@ def op_fixture(dialect='default', as_sql=False):
             # as tests get more involved
             self.connection = None
         def _exec(self, construct, *args, **kw):
+            basestring = getattr(builtins, 'basestring', str)
+            unicode = getattr(builtins, 'unicode', str)
             if isinstance(construct, basestring):
                 construct = text(construct)
             sql = unicode(construct.compile(dialect=self.dialect))
@@ -315,6 +318,8 @@ def clear_staging_env():
 def write_script(scriptdir, rev_id, content):
     old = scriptdir._revision_map[rev_id]
     path = old.path
+    if not hasattr(builtins, 'unicode') and isinstance(content, bytes):
+        content = content.decode()
     with open(path, 'w') as fp:
         fp.write(textwrap.dedent(content))
     pyc_path = util.pyc_file_from_path(path)
index 1519d82a3d083a3ca243f90c08e526bd8915b3c6..4e8a05f9506e5ae6c1cdc1b7608baeeed8d97c99 100644 (file)
@@ -667,7 +667,7 @@ class AutogenerateDiffTest(AutogenTest, TestCase):
         )
         eq_(
             [(rec[0], rec[1].name) for rec in diffs],
-            [('remove_table', 'extra'), ('remove_table', u'user')]
+            [('remove_table', 'extra'), ('remove_table', 'user')]
         )
 
 class AutogenKeyTest(AutogenTest, TestCase):