]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commit
Simplified module pre-loading strategy and made it linter friendly
authorFederico Caselli <cfederico87@gmail.com>
Sat, 7 Mar 2020 18:17:07 +0000 (19:17 +0100)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 7 Mar 2020 22:50:45 +0000 (17:50 -0500)
commiteda6dbbf387def2063d1b6719b64b20f9e7f2ab4
tree4af5f41edfac169b0fdc6d6cab0fce4e8bf776cf
parent851fb8f5a661c66ee76308181118369c8c4df9e0
Simplified module pre-loading strategy and made it linter friendly

Introduced a modules registry to register modules that should be lazily loaded
in the package init. This ensures that they are in the system module cache,
avoiding potential thread safety issues as when importing them directly
in the function that uses them. The module registry is used to obtain
these modules directly, ensuring that the all the lazily loaded modules
are resolved at the proper time

This replaces dependency_for decorator and the dependencies decorator logic,
removing the need to pass the resolved modules as arguments of the
decodated functions and removes possible errors caused by linters.

Fixes: #4689
Fixes: #4656
Change-Id: I2e291eba4297867fc0ddb5d875b9f7af34751d01
38 files changed:
doc/build/orm/internals.rst
examples/versioned_history/history_meta.py
lib/sqlalchemy/__init__.py
lib/sqlalchemy/ext/__init__.py
lib/sqlalchemy/ext/declarative/api.py
lib/sqlalchemy/ext/declarative/base.py
lib/sqlalchemy/ext/declarative/clsregistry.py
lib/sqlalchemy/orm/__init__.py
lib/sqlalchemy/orm/descriptor_props.py
lib/sqlalchemy/orm/dynamic.py
lib/sqlalchemy/orm/events.py
lib/sqlalchemy/orm/exc.py
lib/sqlalchemy/orm/loading.py
lib/sqlalchemy/orm/mapper.py
lib/sqlalchemy/orm/persistence.py
lib/sqlalchemy/orm/properties.py
lib/sqlalchemy/orm/query.py
lib/sqlalchemy/orm/relationships.py
lib/sqlalchemy/orm/session.py
lib/sqlalchemy/orm/state.py
lib/sqlalchemy/orm/strategies.py
lib/sqlalchemy/orm/unitofwork.py
lib/sqlalchemy/sql/__init__.py
lib/sqlalchemy/sql/base.py
lib/sqlalchemy/sql/compiler.py
lib/sqlalchemy/sql/elements.py
lib/sqlalchemy/sql/schema.py
lib/sqlalchemy/sql/selectable.py
lib/sqlalchemy/sql/sqltypes.py
lib/sqlalchemy/sql/traversals.py
lib/sqlalchemy/sql/type_api.py
lib/sqlalchemy/util/__init__.py
lib/sqlalchemy/util/langhelpers.py
test/base/test_utils.py
test/ext/declarative/test_basic.py
test/orm/test_mapper.py
test/profiles.txt
test/test_deprecations.py