]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commit
handle dunder names in @declared_attr separately
authorMike Bayer <mike_mp@zzzcomputing.com>
Mon, 15 Nov 2021 01:02:10 +0000 (20:02 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Wed, 17 Nov 2021 22:48:00 +0000 (17:48 -0500)
commit836902bc8438a800d2c9cf1452da31d3ca967f3b
treea1a071e18c4d181e894a38b3cd0ca0493400ed7e
parent6206f0ff74e95c9339dc0f0e26caab55e9bcda45
handle dunder names in @declared_attr separately

Fixed Mypy crash which would occur when using Mypy plugin against code
which made use of :class:`_orm.declared_attr` methods for non-mapped names
like ``__mapper_args__``, ``__table_args__``, or other dunder names, as the
plugin would try to interpret these as mapped attributes which would then
be later mis-handled. As part of this change, the decorated function is
still converted by the plugin into a generic assignment statement (e.g.
``__mapper_args__: Any``) so that the argument signature can continue to be
annotated in the same way one would for any other ``@classmethod`` without
Mypy complaining about the wrong argument type for a method that isn't
explicitly ``@classmethod``.

Fixes: #7321
Change-Id: I55656e867876677c5c55143449db371344be8600
doc/build/changelog/unreleased_14/7321.rst [new file with mode: 0644]
lib/sqlalchemy/ext/mypy/decl_class.py
lib/sqlalchemy/ext/mypy/util.py
test/ext/mypy/files/issue_7321.py [new file with mode: 0644]
test/ext/mypy/files/issue_7321_part2.py [new file with mode: 0644]