]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commit
Implement Mypy plugin
authorMike Bayer <mike_mp@zzzcomputing.com>
Tue, 16 Feb 2021 23:36:50 +0000 (18:36 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sun, 14 Mar 2021 00:01:41 +0000 (19:01 -0500)
commit5f8ee3920066c0cbe5d6d6b0ceb987524f7542c4
treeef0f08f0d88a8e9e038deaf5b15db910120e8813
parent76b33bb435f1f55111cd68cde9b7cb735c748bcd
Implement Mypy plugin

Rudimentary and experimental support for Mypy has been added in the form of
a new plugin, which itself depends on new typing stubs for SQLAlchemy. The
plugin allows declarative mappings in their standard form to both be
compatible with Mypy as well as to provide typing support for mapped
classes and instances.

Fixes: #4609
Change-Id: Ia035978c02ad3a5c0e5b3c6c30044dd5a3155170
53 files changed:
doc/build/changelog/unreleased_14/4609.rst [new file with mode: 0644]
doc/build/conf.py
doc/build/glossary.rst
doc/build/index.rst
doc/build/orm/extensions/index.rst
doc/build/orm/extensions/mypy.rst [new file with mode: 0644]
doc/build/orm/internals.rst
doc/build/orm/mapping_styles.rst
lib/sqlalchemy/engine/interfaces.py
lib/sqlalchemy/ext/mypy/__init__.py [new file with mode: 0644]
lib/sqlalchemy/ext/mypy/decl_class.py [new file with mode: 0644]
lib/sqlalchemy/ext/mypy/names.py [new file with mode: 0644]
lib/sqlalchemy/ext/mypy/plugin.py [new file with mode: 0644]
lib/sqlalchemy/ext/mypy/util.py [new file with mode: 0644]
lib/sqlalchemy/orm/__init__.py
lib/sqlalchemy/orm/attributes.py
lib/sqlalchemy/orm/interfaces.py
lib/sqlalchemy/testing/requirements.py
setup.cfg
test/ext/mypy/files/abstract_one.py [new file with mode: 0644]
test/ext/mypy/files/cols_noninferred_plain_nonopt.py [new file with mode: 0644]
test/ext/mypy/files/cols_notype_on_fk_col.py [new file with mode: 0644]
test/ext/mypy/files/complete_orm_no_plugin.py [new file with mode: 0644]
test/ext/mypy/files/composite_props.py [new file with mode: 0644]
test/ext/mypy/files/constr_cols_only.py [new file with mode: 0644]
test/ext/mypy/files/dataclasses_workaround.py [new file with mode: 0644]
test/ext/mypy/files/decl_attrs_one.py [new file with mode: 0644]
test/ext/mypy/files/decl_attrs_two.py [new file with mode: 0644]
test/ext/mypy/files/decl_base_subclass_one.py [new file with mode: 0644]
test/ext/mypy/files/decl_base_subclass_two.py [new file with mode: 0644]
test/ext/mypy/files/declarative_base_dynamic.py [new file with mode: 0644]
test/ext/mypy/files/declarative_base_explicit.py [new file with mode: 0644]
test/ext/mypy/files/ensure_descriptor_type_fully_inferred.py [new file with mode: 0644]
test/ext/mypy/files/ensure_descriptor_type_noninferred.py [new file with mode: 0644]
test/ext/mypy/files/ensure_descriptor_type_semiinferred.py [new file with mode: 0644]
test/ext/mypy/files/imperative_table.py [new file with mode: 0644]
test/ext/mypy/files/inspect.py [new file with mode: 0644]
test/ext/mypy/files/invalid_noninferred_lh_type.py [new file with mode: 0644]
test/ext/mypy/files/mapped_attr_assign.py [new file with mode: 0644]
test/ext/mypy/files/mixin_one.py [new file with mode: 0644]
test/ext/mypy/files/mixin_two.py [new file with mode: 0644]
test/ext/mypy/files/other_mapper_props.py [new file with mode: 0644]
test/ext/mypy/files/plugin_doesnt_break_one.py [new file with mode: 0644]
test/ext/mypy/files/relationship_direct_cls.py [new file with mode: 0644]
test/ext/mypy/files/relationship_err1.py [new file with mode: 0644]
test/ext/mypy/files/relationship_err2.py [new file with mode: 0644]
test/ext/mypy/files/relationship_err3.py [new file with mode: 0644]
test/ext/mypy/files/typeless_fk_col_cant_infer.py [new file with mode: 0644]
test/ext/mypy/files/typing_err1.py [new file with mode: 0644]
test/ext/mypy/files/typing_err2.py [new file with mode: 0644]
test/ext/mypy/files/typing_err3.py [new file with mode: 0644]
test/ext/mypy/test_mypy_plugin_py3k.py [new file with mode: 0644]
tox.ini