]> git.ipfire.org Git - thirdparty/sqlalchemy/alembic.git/commitdiff
Use inspect(), not Inspector.from_engine()
authorMike Bayer <mike_mp@zzzcomputing.com>
Mon, 3 Feb 2020 17:20:10 +0000 (12:20 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Mon, 3 Feb 2020 17:27:07 +0000 (12:27 -0500)
The internal inspection routines no longer use SQLAlchemy's
``Inspector.from_engine()`` method, which is expected to be deprecated in
1.4.  The ``inspect()`` function is now used.

Change-Id: I81ea16e5d750d8c48d8db1a5098815988ea60f6c

alembic/autogenerate/api.py
alembic/autogenerate/compare.py
docs/build/unreleased/inspect.rst [new file with mode: 0644]
tests/_autogen_fixtures.py
tests/test_autogen_diffs.py
tests/test_batch.py
tests/test_script_production.py
tests/test_sqlite.py
tests/test_version_table.py

index db929d07b6efa6e1097643e41dd37781cbf4a636..2902f80a9fdf3e0e2283ada3818b87bc5ee34a54 100644 (file)
@@ -3,7 +3,7 @@ automatically."""
 
 import contextlib
 
-from sqlalchemy.engine.reflection import Inspector
+from sqlalchemy import inspect
 
 from . import compare
 from . import render
@@ -316,7 +316,7 @@ class AutogenContext(object):
 
     @util.memoized_property
     def inspector(self):
-        return Inspector.from_engine(self.connection)
+        return inspect(self.connection)
 
     @contextlib.contextmanager
     def _within_batch(self):
index 92df3fc5a5a04d0c01c1e0f5183c9f5969a2e51e..8429b6612a44e7321e9dfb8be208b0e038e09999 100644 (file)
@@ -3,9 +3,9 @@ import logging
 import re
 
 from sqlalchemy import event
+from sqlalchemy import inspect
 from sqlalchemy import schema as sa_schema
 from sqlalchemy import types as sqltypes
-from sqlalchemy.engine.reflection import Inspector
 from sqlalchemy.util import OrderedSet
 
 from alembic.ddl.base import _fk_spec
@@ -34,7 +34,7 @@ def _produce_net_changes(autogen_context, upgrade_ops):
     connection = autogen_context.connection
     include_schemas = autogen_context.opts.get("include_schemas", False)
 
-    inspector = Inspector.from_engine(connection)
+    inspector = inspect(connection)
 
     default_schema = connection.dialect.default_schema_name
     if include_schemas:
diff --git a/docs/build/unreleased/inspect.rst b/docs/build/unreleased/inspect.rst
new file mode 100644 (file)
index 0000000..8f601fb
--- /dev/null
@@ -0,0 +1,7 @@
+.. change::
+    :tags: change
+
+    The internal inspection routines no longer use SQLAlchemy's
+    ``Inspector.from_engine()`` method, which is expected to be deprecated in
+    1.4.  The ``inspect()`` function is now used.
+
index 0f3a6cf4403f95be684b80cd0610c31bcdc8ff2c..29169627324e6abfc0d71f3d0959171ee6023fc8 100644 (file)
@@ -4,6 +4,7 @@ from sqlalchemy import Column
 from sqlalchemy import event
 from sqlalchemy import ForeignKey
 from sqlalchemy import Index
+from sqlalchemy import inspect
 from sqlalchemy import Integer
 from sqlalchemy import MetaData
 from sqlalchemy import Numeric
@@ -12,7 +13,6 @@ from sqlalchemy import Table
 from sqlalchemy import Text
 from sqlalchemy import text
 from sqlalchemy import UniqueConstraint
-from sqlalchemy.engine.reflection import Inspector
 
 from alembic import autogenerate
 from alembic import util
@@ -187,9 +187,7 @@ class _ComparesFKs(object):
         eq_([elem.column.name for elem in diff[1].elements], target_columns)
         if conditional_name is not None:
             if conditional_name == "servergenerated":
-                fks = Inspector.from_engine(self.bind).get_foreign_keys(
-                    source_table
-                )
+                fks = inspect(self.bind).get_foreign_keys(source_table)
                 server_fk_name = fks[0]["name"]
                 eq_(diff[1].name, server_fk_name)
             else:
index ca818e6dab0234160657de4c32042d28cfa32992..470aaaf675a9f62c988a12d08aad2aec3025f04e 100644 (file)
@@ -10,6 +10,7 @@ from sqlalchemy import DECIMAL
 from sqlalchemy import ForeignKey
 from sqlalchemy import ForeignKeyConstraint
 from sqlalchemy import Index
+from sqlalchemy import inspect
 from sqlalchemy import INTEGER
 from sqlalchemy import Integer
 from sqlalchemy import MetaData
@@ -24,7 +25,6 @@ from sqlalchemy import TypeDecorator
 from sqlalchemy import UniqueConstraint
 from sqlalchemy import VARCHAR
 from sqlalchemy.dialects import sqlite
-from sqlalchemy.engine.reflection import Inspector
 from sqlalchemy.types import NULLTYPE
 from sqlalchemy.types import VARBINARY
 
@@ -546,7 +546,7 @@ class AutogenerateDiffTest(ModelOne, AutogenTest, TestBase):
     def test_dont_barf_on_already_reflected(self):
         from sqlalchemy.util import OrderedSet
 
-        inspector = Inspector.from_engine(self.bind)
+        inspector = inspect(self.bind)
         uo = ops.UpgradeOps(ops=[])
         autogenerate.compare._compare_tables(
             OrderedSet([(None, "extra"), (None, "user")]),
index 1d7684167745283ad639cfefe3402802e12a9999..a344d0c48c79893e04e0d4ef6d51e52425ed6b7b 100644 (file)
@@ -11,13 +11,13 @@ from sqlalchemy import ForeignKey
 from sqlalchemy import ForeignKeyConstraint
 from sqlalchemy import func
 from sqlalchemy import Index
+from sqlalchemy import inspect
 from sqlalchemy import Integer
 from sqlalchemy import MetaData
 from sqlalchemy import PrimaryKeyConstraint
 from sqlalchemy import String
 from sqlalchemy import Table
 from sqlalchemy import UniqueConstraint
-from sqlalchemy.engine.reflection import Inspector
 from sqlalchemy.schema import CreateIndex
 from sqlalchemy.schema import CreateTable
 from sqlalchemy.sql import column
@@ -1153,7 +1153,7 @@ class BatchRoundTripTest(TestBase):
                 type_=Integer,
                 existing_type=Boolean(create_constraint=True, name="ck1"),
             )
-        insp = Inspector.from_engine(config.db)
+        insp = inspect(config.db)
 
         eq_(
             [
@@ -1202,7 +1202,7 @@ class BatchRoundTripTest(TestBase):
         self._boolean_fixture()
         with self.op.batch_alter_table("hasbool") as batch_op:
             batch_op.drop_column("x")
-        insp = Inspector.from_engine(config.db)
+        insp = inspect(config.db)
 
         assert "x" not in (c["name"] for c in insp.get_columns("hasbool"))
 
@@ -1212,7 +1212,7 @@ class BatchRoundTripTest(TestBase):
             batch_op.alter_column(
                 "x", type_=Boolean(create_constraint=True, name="ck1")
             )
-        insp = Inspector.from_engine(config.db)
+        insp = inspect(config.db)
 
         if exclusions.against(config, "sqlite"):
             eq_(
@@ -1253,7 +1253,7 @@ class BatchRoundTripTest(TestBase):
             batch_op.alter_column("data", type_=String(30))
             batch_op.create_index("ix_data", ["data"])
 
-        insp = Inspector.from_engine(config.db)
+        insp = inspect(config.db)
         eq_(
             set(
                 (ix["name"], tuple(ix["column_names"]))
@@ -1297,7 +1297,7 @@ class BatchRoundTripTest(TestBase):
                 "data", new_column_name="newdata", existing_type=String(50)
             )
 
-        insp = Inspector.from_engine(self.conn)
+        insp = inspect(self.conn)
         eq_(
             [
                 (
@@ -1344,9 +1344,8 @@ class BatchRoundTripTest(TestBase):
                 "data", new_column_name="newdata", existing_type=String(50)
             )
 
-        insp = Inspector.from_engine(self.conn)
+        insp = inspect(self.conn)
 
-        insp = Inspector.from_engine(self.conn)
         eq_(
             [
                 (
@@ -1394,7 +1393,7 @@ class BatchRoundTripTest(TestBase):
             batch_op.drop_column("id")
             batch_op.add_column(Column("id", Integer))
 
-        pk_const = Inspector.from_engine(self.conn).get_pk_constraint("foo")
+        pk_const = inspect(self.conn).get_pk_constraint("foo")
         eq_(pk_const["constrained_columns"], [])
 
     def test_drop_pk_col_readd_pk_col(self):
@@ -1403,7 +1402,7 @@ class BatchRoundTripTest(TestBase):
             batch_op.drop_column("id")
             batch_op.add_column(Column("id", Integer, primary_key=True))
 
-        pk_const = Inspector.from_engine(self.conn).get_pk_constraint("foo")
+        pk_const = inspect(self.conn).get_pk_constraint("foo")
         eq_(pk_const["constrained_columns"], ["id"])
 
     def test_drop_pk_col_readd_col_also_pk_const(self):
@@ -1414,7 +1413,7 @@ class BatchRoundTripTest(TestBase):
             batch_op.add_column(Column("id", Integer))
             batch_op.create_primary_key("newpk", ["id"])
 
-        pk_const = Inspector.from_engine(self.conn).get_pk_constraint("foo")
+        pk_const = inspect(self.conn).get_pk_constraint("foo")
         eq_(pk_const["constrained_columns"], ["id"])
 
     def test_add_pk_constraint(self):
@@ -1422,7 +1421,7 @@ class BatchRoundTripTest(TestBase):
         with self.op.batch_alter_table("nopk", recreate="always") as batch_op:
             batch_op.create_primary_key("newpk", ["a", "b"])
 
-        pk_const = Inspector.from_engine(self.conn).get_pk_constraint("nopk")
+        pk_const = inspect(self.conn).get_pk_constraint("nopk")
         with config.requirements.reflects_pk_names.fail_if():
             eq_(pk_const["name"], "newpk")
         eq_(pk_const["constrained_columns"], ["a", "b"])
@@ -1463,7 +1462,7 @@ class BatchRoundTripTest(TestBase):
             "bar", naming_convention=naming_convention
         ) as batch_op:
             batch_op.drop_constraint("fk_bar_foo_id_foo", type_="foreignkey")
-        eq_(Inspector.from_engine(self.conn).get_foreign_keys("bar"), [])
+        eq_(inspect(self.conn).get_foreign_keys("bar"), [])
 
     def test_drop_column_fk_recreate(self):
         with self.op.batch_alter_table("foo", recreate="always") as batch_op:
@@ -1612,7 +1611,7 @@ class BatchRoundTripTest(TestBase):
         )
 
     def test_create_drop_index(self):
-        insp = Inspector.from_engine(config.db)
+        insp = inspect(config.db)
         eq_(insp.get_indexes("foo"), [])
 
         with self.op.batch_alter_table("foo", recreate="always") as batch_op:
@@ -1628,7 +1627,7 @@ class BatchRoundTripTest(TestBase):
             ]
         )
 
-        insp = Inspector.from_engine(config.db)
+        insp = inspect(config.db)
         eq_(
             [
                 dict(
@@ -1644,7 +1643,7 @@ class BatchRoundTripTest(TestBase):
         with self.op.batch_alter_table("foo", recreate="always") as batch_op:
             batch_op.drop_index("ix_data")
 
-        insp = Inspector.from_engine(config.db)
+        insp = inspect(config.db)
         eq_(insp.get_indexes("foo"), [])
 
 
index aca16a3f02abcacc2d3ed941303b2c83ca5394d0..60335120dc4c92880db34742b94e8681d5ecdf2e 100644 (file)
@@ -4,7 +4,7 @@ import re
 
 from dateutil import tz
 import sqlalchemy as sa
-from sqlalchemy.engine.reflection import Inspector
+from sqlalchemy import inspect
 
 from alembic import autogenerate
 from alembic import command
@@ -555,10 +555,7 @@ def downgrade():
         with self._env_fixture(process_revision_directives, m):
             command.upgrade(self.cfg, "heads")
 
-            eq_(
-                Inspector.from_engine(self.engine).get_table_names(),
-                ["alembic_version"],
-            )
+            eq_(inspect(self.engine).get_table_names(), ["alembic_version"])
 
             command.revision(
                 self.cfg, message="some message", autogenerate=True
@@ -567,16 +564,13 @@ def downgrade():
             command.upgrade(self.cfg, "model1@head")
 
             eq_(
-                Inspector.from_engine(self.engine).get_table_names(),
+                inspect(self.engine).get_table_names(),
                 ["alembic_version", "t"],
             )
 
             command.upgrade(self.cfg, "model2@head")
 
-            eq_(
-                Inspector.from_engine(self.engine).get_table_names(),
-                ["alembic_version"],
-            )
+            eq_(inspect(self.engine).get_table_names(), ["alembic_version"])
 
     def test_programmatic_command_option(self):
         def process_revision_directives(context, rev, generate_revisions):
index ef87c8debb783bdd6bc177bdd9ed7e36054c1eb6..76bf65d7be357a30e36618b8941eeb163756e00b 100644 (file)
@@ -3,12 +3,12 @@ from sqlalchemy import Column
 from sqlalchemy import DateTime
 from sqlalchemy import Float
 from sqlalchemy import func
+from sqlalchemy import inspect
 from sqlalchemy import Integer
 from sqlalchemy import MetaData
 from sqlalchemy import String
 from sqlalchemy import Table
 from sqlalchemy import text
-from sqlalchemy.engine.reflection import Inspector
 from sqlalchemy.sql import column
 
 from alembic import autogenerate
@@ -130,7 +130,7 @@ class SQLiteDefaultCompareTest(TestBase):
 
         t1.create(self.bind)
 
-        insp = Inspector.from_engine(self.bind)
+        insp = inspect(self.bind)
         cols = insp.get_columns(t1.name)
         insp_col = Column(
             "somecol", cols[0]["type"], server_default=text(cols[0]["default"])
@@ -151,7 +151,7 @@ class SQLiteDefaultCompareTest(TestBase):
 
     def _compare_default(self, t1, t2, col, rendered):
         t1.create(self.bind, checkfirst=True)
-        insp = Inspector.from_engine(self.bind)
+        insp = inspect(self.bind)
         cols = insp.get_columns(t1.name)
         ctx = self.autogen_context.migration_context
 
index b2e4acdb830c3bcd0e3a823fef88a47114665cb6..34bdfabf26d61642f0896573a718b0d47a745006 100644 (file)
@@ -1,8 +1,8 @@
 from sqlalchemy import Column
+from sqlalchemy import inspect
 from sqlalchemy import MetaData
 from sqlalchemy import String
 from sqlalchemy import Table
-from sqlalchemy.engine.reflection import Inspector
 
 from alembic import migration
 from alembic.testing import assert_raises
@@ -88,7 +88,7 @@ class TestMigrationContext(TestBase):
             connection=self.connection, opts={"version_table": "version_table"}
         )
         eq_(context.get_current_revision(), None)
-        insp = Inspector(self.connection)
+        insp = inspect(self.connection)
         assert "version_table" not in insp.get_table_names()
 
     def test_get_current_revision(self):
@@ -155,8 +155,7 @@ class TestMigrationContext(TestBase):
     def test_stamp_api_creates_table(self):
         context = self.make_one(connection=self.connection)
         assert (
-            "alembic_version"
-            not in Inspector(self.connection).get_table_names()
+            "alembic_version" not in inspect(self.connection).get_table_names()
         )
 
         script = mock.Mock(
@@ -168,9 +167,7 @@ class TestMigrationContext(TestBase):
 
         context.stamp(script, "b")
         eq_(context.get_current_heads(), ("a", "b"))
-        assert (
-            "alembic_version" in Inspector(self.connection).get_table_names()
-        )
+        assert "alembic_version" in inspect(self.connection).get_table_names()
 
 
 class UpdateRevTest(TestBase):