db-migrate: backport some changes for py3 compat.

This commit is contained in:
Marcin Kuzminski 2020-05-13 21:29:53 +02:00
parent ff2c8fd444
commit 0021e33e42
7 changed files with 33 additions and 11 deletions

View file

@ -12,10 +12,11 @@ from sqlalchemy import __version__ as _sa_version
warnings.simplefilter('always', DeprecationWarning)
_sa_version = tuple(int(re.match("\d+", x).group(0))
for x in _sa_version.split("."))
_sa_version = tuple(int(re.match("\d+", x).group(0)) for x in _sa_version.split("."))
SQLA_07 = _sa_version >= (0, 7)
SQLA_08 = _sa_version >= (0, 8)
SQLA_09 = _sa_version >= (0, 9)
SQLA_10 = _sa_version >= (1, 0)
del re
del _sa_version
@ -23,8 +24,8 @@ del _sa_version
from rhodecode.lib.dbmigrate.migrate.changeset.schema import *
from rhodecode.lib.dbmigrate.migrate.changeset.constraint import *
sqlalchemy.schema.Table.__bases__ += (ChangesetTable,)
sqlalchemy.schema.Column.__bases__ += (ChangesetColumn,)
sqlalchemy.schema.Index.__bases__ += (ChangesetIndex,)
sqlalchemy.schema.Table.__bases__ += (ChangesetTable, )
sqlalchemy.schema.Column.__bases__ += (ChangesetColumn, )
sqlalchemy.schema.Index.__bases__ += (ChangesetIndex, )
sqlalchemy.schema.DefaultClause.__bases__ += (ChangesetDefaultClause,)
sqlalchemy.schema.DefaultClause.__bases__ += (ChangesetDefaultClause, )

View file

@ -97,7 +97,6 @@ class ANSIColumnGenerator(AlterTableVisitor, SchemaGenerator):
table = self.start_alter_table(column)
self.append("ADD ")
self.append(self.get_column_specification(column))
for cons in column.constraints:

View file

@ -111,7 +111,7 @@ class ForeignKeyConstraint(ConstraintChangeset, schema.ForeignKeyConstraint):
refcolnames, reftable = self._normalize_columns(refcolumns,
table_name=True)
super(ForeignKeyConstraint, self).__init__(
colnames, refcolnames, *args,**kwargs
colnames, refcolnames, *args, **kwargs
)
if table is not None:
self._set_parent(table)

View file

@ -3,11 +3,15 @@
.. _`SQLite`: http://www.sqlite.org/
"""
from UserDict import DictMixin
try: # Python 3
from collections.abc import MutableMapping as DictMixin
except ImportError: # Python 2
from UserDict import DictMixin
from copy import copy
import re
from sqlalchemy.databases import sqlite as sa_base
from sqlalchemy.schema import ForeignKeyConstraint
from sqlalchemy.schema import UniqueConstraint
from rhodecode.lib.dbmigrate.migrate import exceptions

View file

@ -1,10 +1,13 @@
"""
Schema module providing common schema operations.
"""
import abc
try: # Python 3
from collections.abc import MutableMapping as DictMixin
except ImportError: # Python 2
from UserDict import DictMixin
import warnings
from UserDict import DictMixin
import sqlalchemy
from sqlalchemy.schema import ForeignKeyConstraint

View file

@ -1,6 +1,17 @@
"""
Safe quoting method
"""
from rhodecode.lib.dbmigrate.migrate.changeset import SQLA_10
def fk_column_names(constraint):
if SQLA_10:
return [
constraint.columns[key].name for key in constraint.column_keys]
else:
return [
element.parent.name for element in constraint.elements]
def safe_quote(obj):
# this is the SQLA 0.9 approach

View file

@ -27,6 +27,10 @@ class InvalidVersionError(ControlledSchemaError):
"""Invalid version number."""
class VersionNotFoundError(KeyError):
"""Specified version is not present."""
class DatabaseNotControlledError(ControlledSchemaError):
"""Database should be under version control, but it's not."""