]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
remove declarative warnings
authorMike Bayer <mike_mp@zzzcomputing.com>
Wed, 29 Sep 2021 19:07:36 +0000 (15:07 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Thu, 30 Sep 2021 02:19:43 +0000 (22:19 -0400)
* sqlalchemy.ext.declarative names
* declarative_base(bind)

Change-Id: I0ca26894b224458b58e46504c5ff7b5d3031a829

23 files changed:
lib/sqlalchemy/testing/suite/test_types.py
lib/sqlalchemy/testing/warnings.py
test/aaa_profiling/test_memusage.py
test/dialect/postgresql/test_types.py
test/ext/declarative/test_deprecations.py
test/ext/declarative/test_inheritance.py
test/ext/test_associationproxy.py
test/ext/test_hybrid.py
test/ext/test_indexable.py
test/ext/test_mutable.py
test/orm/declarative/test_basic.py
test/orm/declarative/test_deprecations.py [new file with mode: 0644]
test/orm/declarative/test_inheritance.py
test/orm/inheritance/test_basic.py
test/orm/test_collection.py
test/orm/test_descriptor.py
test/orm/test_events.py
test/orm/test_froms.py
test/orm/test_inspect.py
test/orm/test_load_on_fks.py
test/orm/test_rel_fn.py
test/orm/test_relationships.py
test/orm/test_unitofworkv2.py

index d367e7dc3c4ca99e0babf4023944808e7b6c5151..22b85f398d92657df546a546fe84f5f6e93b90a6 100644 (file)
@@ -39,7 +39,7 @@ from ... import TypeDecorator
 from ... import Unicode
 from ... import UnicodeText
 from ... import util
-from ...ext.declarative import declarative_base
+from ...orm import declarative_base
 from ...orm import Session
 from ...util import u
 
index d22fb175ec10f2cb8b062564c3b27f5923d48a63..f72d53d676e18a2d3ff97fd749f95161bd698189 100644 (file)
@@ -70,10 +70,6 @@ def setup_filters():
         #
         r"Calling the mapper\(\) function directly outside of a "
         "declarative registry",
-        r"The ``declarative_base\(\)`` function is now available ",
-        r"The ``has_inherited_table\(\)`` function is now available",
-        r"The ``bind`` argument to declarative_base is deprecated and will "
-        "be removed in SQLAlchemy 2.0.",
         #
         # ORM Query
         #
index 1c08c30a243ca541171c166327df176647454f23..d196793a40d3dd34e9070ccb1fa1a72a12a65f1a 100644 (file)
@@ -19,6 +19,7 @@ from sqlalchemy.orm import aliased
 from sqlalchemy.orm import clear_mappers
 from sqlalchemy.orm import configure_mappers
 from sqlalchemy.orm import create_session
+from sqlalchemy.orm import declarative_base
 from sqlalchemy.orm import join as orm_join
 from sqlalchemy.orm import joinedload
 from sqlalchemy.orm import Load
@@ -1609,8 +1610,6 @@ class CycleTest(_fixtures.FixtureTest):
     @testing.provide_metadata
     def test_optimized_get(self):
 
-        from sqlalchemy.ext.declarative import declarative_base
-
         Base = declarative_base(metadata=self.metadata)
 
         class Employee(Base):
index 1b527df2cef98a00da85648d3839779ed37ea1a1..bb8e44876fd6f8e6954cc2ef56fbdd2d9a7a3de1 100644 (file)
@@ -45,7 +45,7 @@ from sqlalchemy.dialects.postgresql import NUMRANGE
 from sqlalchemy.dialects.postgresql import TSRANGE
 from sqlalchemy.dialects.postgresql import TSTZRANGE
 from sqlalchemy.exc import CompileError
-from sqlalchemy.ext.declarative import declarative_base
+from sqlalchemy.orm import declarative_base
 from sqlalchemy.orm import Session
 from sqlalchemy.sql import operators
 from sqlalchemy.sql import sqltypes
index f2055541a3df06e3b44fc3b8508813ea4d419700..130c127389108e04e30c77f80022e04bcf0566d3 100644 (file)
@@ -1,9 +1,13 @@
 import sqlalchemy as sa
+from sqlalchemy import inspect
+from sqlalchemy.ext import declarative as legacy_decl
 from sqlalchemy.ext.declarative import instrument_declarative
 from sqlalchemy.orm import Mapper
+from sqlalchemy.testing import eq_
 from sqlalchemy.testing import expect_deprecated_20
 from sqlalchemy.testing import fixtures
 from sqlalchemy.testing import is_
+from sqlalchemy.testing import is_false
 from sqlalchemy.testing import is_true
 
 
@@ -23,3 +27,67 @@ class TestInstrumentDeclarative(fixtures.TestBase):
         mapper = sa.inspect(Foo)
         is_true(isinstance(mapper, Mapper))
         is_(mapper.class_, Foo)
+
+
+class DeprecatedImportsTest(fixtures.TestBase):
+    def _expect_warning(self, name):
+        return expect_deprecated_20(
+            r"The ``%s\(\)`` function is now available as "
+            r"sqlalchemy.orm.%s\(\)" % (name, name)
+        )
+
+    def test_declarative_base(self):
+        with self._expect_warning("declarative_base"):
+            Base = legacy_decl.declarative_base()
+
+        class Foo(Base):
+            __tablename__ = "foo"
+            id = sa.Column(sa.Integer, primary_key=True)
+
+        assert inspect(Foo).mapper
+
+    def test_as_declarative(self):
+        with self._expect_warning("as_declarative"):
+
+            @legacy_decl.as_declarative()
+            class Base(object):
+                pass
+
+        class Foo(Base):
+            __tablename__ = "foo"
+            id = sa.Column(sa.Integer, primary_key=True)
+
+        assert inspect(Foo).mapper
+
+    def test_has_inherited_table(self, registry):
+        @registry.mapped
+        class Foo(object):
+            __tablename__ = "foo"
+            id = sa.Column(sa.Integer, primary_key=True)
+
+        @registry.mapped
+        class Bar(Foo):
+            __tablename__ = "bar"
+            id = sa.Column(sa.ForeignKey("foo.id"), primary_key=True)
+
+        with self._expect_warning("has_inherited_table"):
+            is_true(legacy_decl.has_inherited_table(Bar))
+
+        with self._expect_warning("has_inherited_table"):
+            is_false(legacy_decl.has_inherited_table(Foo))
+
+    def test_synonym_for(self, registry):
+        with self._expect_warning("synonym_for"):
+
+            @registry.mapped
+            class Foo(object):
+                __tablename__ = "foo"
+                id = sa.Column(sa.Integer, primary_key=True)
+
+                @legacy_decl.synonym_for("id")
+                @property
+                def id_prop(self):
+                    return self.id
+
+        f1 = Foo(id=5)
+        eq_(f1.id_prop, 5)
index a8292752ae8627f30b5337debc40d0d346ebce3e..34bee1d142521d14adbb33d5f0123016e348fdb5 100644 (file)
@@ -4,15 +4,15 @@ from sqlalchemy import Integer
 from sqlalchemy import select
 from sqlalchemy import String
 from sqlalchemy import testing
-from sqlalchemy.ext import declarative as decl
 from sqlalchemy.ext.declarative import AbstractConcreteBase
 from sqlalchemy.ext.declarative import ConcreteBase
-from sqlalchemy.ext.declarative import declared_attr
-from sqlalchemy.ext.declarative import has_inherited_table
 from sqlalchemy.orm import clear_mappers
 from sqlalchemy.orm import close_all_sessions
 from sqlalchemy.orm import configure_mappers
+from sqlalchemy.orm import declarative_base
+from sqlalchemy.orm import declared_attr
 from sqlalchemy.orm import exc as orm_exc
+from sqlalchemy.orm import has_inherited_table
 from sqlalchemy.orm import polymorphic_union
 from sqlalchemy.orm import relationship
 from sqlalchemy.orm import Session
@@ -34,7 +34,7 @@ class DeclarativeTestBase(fixtures.TestBase, testing.AssertsExecutionResults):
 
     def setup_test(self):
         global Base
-        Base = decl.declarative_base(testing.db)
+        Base = declarative_base()
 
     def teardown_test(self):
         close_all_sessions()
@@ -348,7 +348,7 @@ class ConcreteInhTest(
             }
 
         Base.metadata.create_all(testing.db)
-        sess = Session()
+        sess = fixture_session()
         sess.add(Engineer(name="d"))
         sess.commit()
 
@@ -691,52 +691,52 @@ class ConcreteExtensionConfigTest(
             __mapper_args__ = {"polymorphic_identity": "c", "concrete": True}
 
         Base.metadata.create_all(testing.db)
-        sess = Session()
-        sess.add_all(
-            [
-                A(
-                    data="a1",
-                    collection=set(
-                        [
-                            B(data="a1b1", b_data="a1b1"),
-                            C(data="a1b2", c_data="a1c1"),
-                            B(data="a1b2", b_data="a1b2"),
-                            C(data="a1c2", c_data="a1c2"),
-                        ]
+        with Session(testing.db) as sess:
+            sess.add_all(
+                [
+                    A(
+                        data="a1",
+                        collection=set(
+                            [
+                                B(data="a1b1", b_data="a1b1"),
+                                C(data="a1b2", c_data="a1c1"),
+                                B(data="a1b2", b_data="a1b2"),
+                                C(data="a1c2", c_data="a1c2"),
+                            ]
+                        ),
                     ),
-                ),
-                A(
-                    data="a2",
-                    collection=set(
-                        [
-                            B(data="a2b1", b_data="a2b1"),
-                            C(data="a2c1", c_data="a2c1"),
-                            B(data="a2b2", b_data="a2b2"),
-                            C(data="a2c2", c_data="a2c2"),
-                        ]
+                    A(
+                        data="a2",
+                        collection=set(
+                            [
+                                B(data="a2b1", b_data="a2b1"),
+                                C(data="a2c1", c_data="a2c1"),
+                                B(data="a2b2", b_data="a2b2"),
+                                C(data="a2c2", c_data="a2c2"),
+                            ]
+                        ),
                     ),
-                ),
-            ]
-        )
-        sess.commit()
-        sess.expunge_all()
+                ]
+            )
+            sess.commit()
 
-        eq_(
-            sess.query(A).filter_by(data="a2").all(),
-            [
-                A(
-                    data="a2",
-                    collection=set(
-                        [
-                            B(data="a2b1", b_data="a2b1"),
-                            B(data="a2b2", b_data="a2b2"),
-                            C(data="a2c1", c_data="a2c1"),
-                            C(data="a2c2", c_data="a2c2"),
-                        ]
-                    ),
-                )
-            ],
-        )
+        with Session(testing.db) as sess:
+            eq_(
+                sess.query(A).filter_by(data="a2").all(),
+                [
+                    A(
+                        data="a2",
+                        collection=set(
+                            [
+                                B(data="a2b1", b_data="a2b1"),
+                                B(data="a2b2", b_data="a2b2"),
+                                C(data="a2c1", c_data="a2c1"),
+                                C(data="a2c2", c_data="a2c2"),
+                            ]
+                        ),
+                    )
+                ],
+            )
 
         self.assert_compile(
             sess.query(A).join(A.collection),
index db837e6b669e573f894ee68c1a7891920112be98..56797104c6a2f093550230e5f8620771523e5b71 100644 (file)
@@ -14,13 +14,13 @@ from sqlalchemy import testing
 from sqlalchemy.engine import default
 from sqlalchemy.ext.associationproxy import _AssociationList
 from sqlalchemy.ext.associationproxy import association_proxy
-from sqlalchemy.ext.declarative import declarative_base
-from sqlalchemy.ext.declarative import declared_attr
 from sqlalchemy.orm import aliased
 from sqlalchemy.orm import clear_mappers
 from sqlalchemy.orm import collections
 from sqlalchemy.orm import composite
 from sqlalchemy.orm import configure_mappers
+from sqlalchemy.orm import declarative_base
+from sqlalchemy.orm import declared_attr
 from sqlalchemy.orm import mapper
 from sqlalchemy.orm import relationship
 from sqlalchemy.orm import Session
index dcaee0823c0690a4c1efd6ca0a931ef62b0a3626..f0bb87055a56b7e0aa5c1853993eb290ac694737 100644 (file)
@@ -12,8 +12,8 @@ from sqlalchemy import select
 from sqlalchemy import String
 from sqlalchemy import testing
 from sqlalchemy.ext import hybrid
-from sqlalchemy.ext.declarative import declarative_base
 from sqlalchemy.orm import aliased
+from sqlalchemy.orm import declarative_base
 from sqlalchemy.orm import relationship
 from sqlalchemy.orm import Session
 from sqlalchemy.orm import synonym
index 295325b7b5f120e54ee252eb4aa0fc17f512aba7..7a9765efb38dc8585847a2d0338a745fe0458877 100644 (file)
@@ -3,8 +3,8 @@ from sqlalchemy import inspect
 from sqlalchemy import Integer
 from sqlalchemy import testing
 from sqlalchemy import Text
-from sqlalchemy.ext.declarative import declarative_base
 from sqlalchemy.ext.indexable import index_property
+from sqlalchemy.orm import declarative_base
 from sqlalchemy.orm import Session
 from sqlalchemy.sql.sqltypes import ARRAY
 from sqlalchemy.sql.sqltypes import JSON
index 49d3b9d90a54764630be9f3f88356abe44ee2258..676d7d8b7862f8e314554653fbc75d9f6db13678 100644 (file)
@@ -15,6 +15,7 @@ from sqlalchemy.ext.mutable import MutableSet
 from sqlalchemy.orm import attributes
 from sqlalchemy.orm import column_property
 from sqlalchemy.orm import composite
+from sqlalchemy.orm import declarative_base
 from sqlalchemy.orm import mapper
 from sqlalchemy.orm.instrumentation import ClassManager
 from sqlalchemy.orm.mapper import Mapper
@@ -1004,7 +1005,6 @@ class MutableColumnCopyJSONTest(_MutableDictTestBase, fixtures.MappedTest):
     @classmethod
     def define_tables(cls, metadata):
         import json
-        from sqlalchemy.ext.declarative import declarative_base
 
         class JSONEncodedDict(TypeDecorator):
             impl = VARCHAR(50)
@@ -1052,7 +1052,6 @@ class MutableColumnCopyArrayTest(_MutableListTestBase, fixtures.MappedTest):
 
     @classmethod
     def define_tables(cls, metadata):
-        from sqlalchemy.ext.declarative import declarative_base
         from sqlalchemy.sql.sqltypes import ARRAY
 
         MutableList = cls._type_fixture()
index 4e2c465d849510568b76d2fd0fa6e818cefe3e87..14f25c4793893d0a5ce6500d92323ffd2b7ed6ee 100644 (file)
@@ -67,9 +67,9 @@ class DeclarativeTestBase(
         global Base
 
         if self.base_style == "dynamic":
-            Base = declarative_base(testing.db)
+            Base = declarative_base()
         elif self.base_style == "explicit":
-            mapper_registry = registry(_bind=testing.db)
+            mapper_registry = registry()
 
             class Base(with_metaclass(DeclarativeMeta)):
                 __abstract__ = True
@@ -86,6 +86,32 @@ class DeclarativeTestBase(
     ("dynamic",), ("explicit",), argnames="base_style", id_="s"
 )
 class DeclarativeTest(DeclarativeTestBase):
+    def test_unbound_declarative_base(self):
+        Base = declarative_base()
+
+        class User(Base):
+            __tablename__ = "user"
+            id = Column(Integer, primary_key=True)
+
+        s = Session()
+
+        with testing.expect_raises(exc.UnboundExecutionError):
+            s.get_bind(User)
+
+    def test_unbound_cls_registry(self):
+        reg = registry()
+
+        Base = reg.generate_base()
+
+        class User(Base):
+            __tablename__ = "user"
+            id = Column(Integer, primary_key=True)
+
+        s = Session()
+
+        with testing.expect_raises(exc.UnboundExecutionError):
+            s.get_bind(User)
+
     def test_basic(self):
         class User(Base, fixtures.ComparableEntity):
             __tablename__ = "users"
@@ -1056,8 +1082,8 @@ class DeclarativeTest(DeclarativeTestBase):
 
     def test_shared_class_registry(self):
         reg = {}
-        Base1 = declarative_base(testing.db, class_registry=reg)
-        Base2 = declarative_base(testing.db, class_registry=reg)
+        Base1 = declarative_base(class_registry=reg)
+        Base2 = declarative_base(class_registry=reg)
 
         class A(Base1):
             __tablename__ = "a"
diff --git a/test/orm/declarative/test_deprecations.py b/test/orm/declarative/test_deprecations.py
new file mode 100644 (file)
index 0000000..e3015f6
--- /dev/null
@@ -0,0 +1,49 @@
+from sqlalchemy import Integer
+from sqlalchemy import testing
+from sqlalchemy.orm import declarative_base
+from sqlalchemy.orm import registry
+from sqlalchemy.orm import Session
+from sqlalchemy.testing import fixtures
+from sqlalchemy.testing import is_
+from sqlalchemy.testing.schema import Column
+
+
+class BoundMetadataDeclarativeTest(fixtures.MappedTest):
+    def test_bound_declarative_base(self):
+        with testing.expect_deprecated(
+            "The ``bind`` argument to declarative_base"
+        ):
+            Base = declarative_base(testing.db)
+
+        class User(Base):
+            __tablename__ = "user"
+            id = Column(Integer, primary_key=True)
+
+        s = Session()
+
+        is_(s.get_bind(User), testing.db)
+
+    def test_bound_cls_registry_base(self):
+        reg = registry(_bind=testing.db)
+
+        Base = reg.generate_base()
+
+        class User(Base):
+            __tablename__ = "user"
+            id = Column(Integer, primary_key=True)
+
+        s = Session()
+
+        is_(s.get_bind(User), testing.db)
+
+    def test_bound_cls_registry_decorated(self):
+        reg = registry(_bind=testing.db)
+
+        @reg.mapped
+        class User(object):
+            __tablename__ = "user"
+            id = Column(Integer, primary_key=True)
+
+        s = Session()
+
+        is_(s.get_bind(User), testing.db)
index a1e5c605bb4db43521a76e211172de2e50b3420a..e5da21447a73b467063858431588569cc640b4a8 100644 (file)
@@ -3,12 +3,12 @@ from sqlalchemy import ForeignKey
 from sqlalchemy import Integer
 from sqlalchemy import String
 from sqlalchemy import testing
-from sqlalchemy.ext import declarative as decl
-from sqlalchemy.ext.declarative import declared_attr
 from sqlalchemy.orm import class_mapper
 from sqlalchemy.orm import clear_mappers
 from sqlalchemy.orm import close_all_sessions
 from sqlalchemy.orm import configure_mappers
+from sqlalchemy.orm import declarative_base
+from sqlalchemy.orm import declared_attr
 from sqlalchemy.orm import deferred
 from sqlalchemy.orm import mapper
 from sqlalchemy.orm import relationship
@@ -29,7 +29,7 @@ Base = None
 class DeclarativeTestBase(fixtures.TestBase, testing.AssertsExecutionResults):
     def setup_test(self):
         global Base
-        Base = decl.declarative_base(testing.db)
+        Base = declarative_base()
 
     def teardown_test(self):
         close_all_sessions()
index 1ca005bd094aa0e6c8f68ba7ca50d61c8bbf5ee6..a905d8aff21f6903034631bc04ae3e75fb9f5765 100644 (file)
@@ -13,12 +13,12 @@ from sqlalchemy import String
 from sqlalchemy import table
 from sqlalchemy import testing
 from sqlalchemy import util
-from sqlalchemy.ext.declarative import declarative_base
 from sqlalchemy.orm import attributes
 from sqlalchemy.orm import class_mapper
 from sqlalchemy.orm import clear_mappers
 from sqlalchemy.orm import column_property
 from sqlalchemy.orm import composite
+from sqlalchemy.orm import declarative_base
 from sqlalchemy.orm import deferred
 from sqlalchemy.orm import exc as orm_exc
 from sqlalchemy.orm import joinedload
index 6188af7690a5610def12629dab2613c5dae8d03a..4ca2f999c3e74e2de3a52f90ea36caaad2faceb6 100644 (file)
@@ -10,6 +10,7 @@ from sqlalchemy import testing
 from sqlalchemy import text
 from sqlalchemy import util
 from sqlalchemy.orm import attributes
+from sqlalchemy.orm import declarative_base
 from sqlalchemy.orm import instrumentation
 from sqlalchemy.orm import mapper
 from sqlalchemy.orm import relationship
@@ -2001,8 +2002,6 @@ class DictHelpersTest(OrderedDictFixture, fixtures.MappedTest):
         """test that uncompiled attribute usage works with
         column_mapped_collection"""
 
-        from sqlalchemy.ext.declarative import declarative_base
-
         BaseObject = declarative_base()
 
         class Foo(BaseObject):
index 7b530b928100cad528a5f51762631e87f33eb856..cea518e7c608f9d09f8d8ba03d37fc1504852178 100644 (file)
@@ -2,8 +2,8 @@ from sqlalchemy import Column
 from sqlalchemy import func
 from sqlalchemy import Integer
 from sqlalchemy import String
-from sqlalchemy.ext.declarative import declarative_base
 from sqlalchemy.orm import aliased
+from sqlalchemy.orm import declarative_base
 from sqlalchemy.orm import descriptor_props
 from sqlalchemy.orm.interfaces import PropComparator
 from sqlalchemy.orm.properties import ColumnProperty
index 6831c8b108acfc56d3af396f937bd95069b572d8..8062ca7b66b15ebacbce16f8c26ce5bb549b9eb9 100644 (file)
@@ -9,10 +9,10 @@ from sqlalchemy import select
 from sqlalchemy import String
 from sqlalchemy import testing
 from sqlalchemy import update
-from sqlalchemy.ext.declarative import declarative_base
 from sqlalchemy.orm import attributes
 from sqlalchemy.orm import class_mapper
 from sqlalchemy.orm import configure_mappers
+from sqlalchemy.orm import declarative_base
 from sqlalchemy.orm import deferred
 from sqlalchemy.orm import events
 from sqlalchemy.orm import EXT_SKIP
index 8ddb9ee4c0f0ff5e98e5e988ad13403323af0f75..863690ffb56301e7b2d71ed51ad40f8df107d186 100644 (file)
@@ -18,13 +18,13 @@ from sqlalchemy import true
 from sqlalchemy import union
 from sqlalchemy import util
 from sqlalchemy.engine import default
-from sqlalchemy.ext.declarative import declarative_base
 from sqlalchemy.orm import aliased
 from sqlalchemy.orm import backref
 from sqlalchemy.orm import clear_mappers
 from sqlalchemy.orm import column_property
 from sqlalchemy.orm import configure_mappers
 from sqlalchemy.orm import contains_eager
+from sqlalchemy.orm import declarative_base
 from sqlalchemy.orm import joinedload
 from sqlalchemy.orm import mapper
 from sqlalchemy.orm import relationship
index d19d65e22a83493672d3fb532964833a9ce65f83..72ab37c7014f88a34da5df9b10dda9ecc3054263 100644 (file)
@@ -516,7 +516,7 @@ class %s(SuperCls):
 
     @testing.requires.pep520
     def test_all_orm_descriptors_pep520_noinh(self):
-        from sqlalchemy.ext.declarative import declarative_base
+        from sqlalchemy.orm import declarative_base
 
         Base = declarative_base()
 
@@ -529,7 +529,7 @@ class %s(SuperCls):
 
     @testing.requires.pep520
     def test_all_orm_descriptors_pep520_onelevel_inh(self):
-        from sqlalchemy.ext.declarative import declarative_base
+        from sqlalchemy.orm import declarative_base
 
         Base = declarative_base()
 
index 42b5b3e459087def1ffd15a73f1af56b4776442b..02de9b2bb4389d1195e5821d21c0e60249b384d5 100644 (file)
@@ -2,8 +2,8 @@ from sqlalchemy import ForeignKey
 from sqlalchemy import Integer
 from sqlalchemy import String
 from sqlalchemy import testing
-from sqlalchemy.ext.declarative import declarative_base
 from sqlalchemy.orm import backref
+from sqlalchemy.orm import declarative_base
 from sqlalchemy.orm import relationship
 from sqlalchemy.orm import Session
 from sqlalchemy.orm.attributes import instance_state
index ef1bf2e603d9fbbf68104332df60369d2928f310..6f6b0d56dfefc843038b3f8be96e015cd6bfc9a9 100644 (file)
@@ -1239,7 +1239,7 @@ class LazyClauseTest(_JoinFixtures, fixtures.TestBase, AssertsCompiledSQL):
 
 class DeannotateCorrectlyTest(fixtures.TestBase):
     def test_pj_deannotates(self):
-        from sqlalchemy.ext.declarative import declarative_base
+        from sqlalchemy.orm import declarative_base
 
         Base = declarative_base()
 
index 95c5a196ff95a8b4cd9e357a7b3bb1dc04ea74ca..f9c8bae7aa50c3d8ecad696a14d4f603bee2df36 100644 (file)
@@ -2464,7 +2464,7 @@ class NoLoadBackPopulates(_fixtures.FixtureTest):
 
 class JoinConditionErrorTest(fixtures.TestBase):
     def test_clauseelement_pj(self):
-        from sqlalchemy.ext.declarative import declarative_base
+        from sqlalchemy.orm import declarative_base
 
         Base = declarative_base()
 
@@ -2481,7 +2481,7 @@ class JoinConditionErrorTest(fixtures.TestBase):
         assert_raises(sa.exc.ArgumentError, configure_mappers)
 
     def test_clauseelement_pj_false(self):
-        from sqlalchemy.ext.declarative import declarative_base
+        from sqlalchemy.orm import declarative_base
 
         Base = declarative_base()
 
@@ -2522,7 +2522,7 @@ class JoinConditionErrorTest(fixtures.TestBase):
         assert_raises(sa.exc.ArgumentError, configure_mappers)
 
     def test_invalid_string_args(self):
-        from sqlalchemy.ext.declarative import declarative_base
+        from sqlalchemy.orm import declarative_base
 
         for argname, arg in [
             ("remote_side", ["c1.id"]),
index 365a9b7601e6436db22aaffa962ef560a53ca078..b468fa72e73a7098fc81ce2539fa8da6a977fb6f 100644 (file)
@@ -16,10 +16,10 @@ from sqlalchemy import String
 from sqlalchemy import testing
 from sqlalchemy import text
 from sqlalchemy import util
-from sqlalchemy.ext.declarative import declarative_base
 from sqlalchemy.orm import attributes
 from sqlalchemy.orm import backref
 from sqlalchemy.orm import clear_mappers
+from sqlalchemy.orm import declarative_base
 from sqlalchemy.orm import exc as orm_exc
 from sqlalchemy.orm import mapper
 from sqlalchemy.orm import relationship