From aac21993f511344301ebafab1517a7c424f64e80 Mon Sep 17 00:00:00 2001 From: Federico Caselli Date: Fri, 16 Apr 2021 22:25:56 +0200 Subject: [PATCH] Fixed ``instrument_declarative`` registry call. Fixed :func:`_declarative.instrument_declarative` that called a non existing registry method. Fixes: #6291 Change-Id: I6fc8db84f72240cc82e7f6f3a784c424f5ccfc96 --- doc/build/changelog/unreleased_14/6291.rst | 6 +++++ lib/sqlalchemy/ext/declarative/extensions.py | 6 ++--- test/ext/declarative/test_deprecations.py | 25 ++++++++++++++++++++ 3 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 doc/build/changelog/unreleased_14/6291.rst create mode 100644 test/ext/declarative/test_deprecations.py diff --git a/doc/build/changelog/unreleased_14/6291.rst b/doc/build/changelog/unreleased_14/6291.rst new file mode 100644 index 0000000000..150f6704fb --- /dev/null +++ b/doc/build/changelog/unreleased_14/6291.rst @@ -0,0 +1,6 @@ +.. change:: + :tags: bug, declarative, regression + :tickets: 6291 + + Fixed :func:`_declarative.instrument_declarative` that called + a non existing registry method. diff --git a/lib/sqlalchemy/ext/declarative/extensions.py b/lib/sqlalchemy/ext/declarative/extensions.py index fd8bed6be8..5e1e3fe853 100644 --- a/lib/sqlalchemy/ext/declarative/extensions.py +++ b/lib/sqlalchemy/ext/declarative/extensions.py @@ -32,9 +32,9 @@ def instrument_declarative(cls, cls_registry, metadata): MetaData object. """ - return registry( - metadata=metadata, class_registry=cls_registry - ).instrument_declarative(cls) + registry(metadata=metadata, class_registry=cls_registry).map_declaratively( + cls + ) class ConcreteBase(object): diff --git a/test/ext/declarative/test_deprecations.py b/test/ext/declarative/test_deprecations.py new file mode 100644 index 0000000000..f2055541a3 --- /dev/null +++ b/test/ext/declarative/test_deprecations.py @@ -0,0 +1,25 @@ +import sqlalchemy as sa +from sqlalchemy.ext.declarative import instrument_declarative +from sqlalchemy.orm import Mapper +from sqlalchemy.testing import expect_deprecated_20 +from sqlalchemy.testing import fixtures +from sqlalchemy.testing import is_ +from sqlalchemy.testing import is_true + + +class TestInstrumentDeclarative(fixtures.TestBase): + def test_ok(self): + class Foo(object): + __tablename__ = "foo" + id = sa.Column(sa.Integer, primary_key=True) + + meta = sa.MetaData() + reg = {} + with expect_deprecated_20( + "the instrument_declarative function is deprecated" + ): + instrument_declarative(Foo, reg, meta) + + mapper = sa.inspect(Foo) + is_true(isinstance(mapper, Mapper)) + is_(mapper.class_, Foo) -- 2.47.3