[orm] [usecase] Added new event hook _orm.MapperEvents.after_mapper_constructed(),
which supplies an event hook to take place right as the
_orm.Mapper object has been fully constructed, but before the
_orm.registry.configure() call has been called. This allows code that
can create additional mappings and table structures based on the initial
configuration of a _orm.Mapper, which also integrates within
Declarative configuration. Previously, when using Declarative, where the
_orm.Mapper object is created within the class creation process,
there was no documented means of running code at this point. The change
is to immediately benefit custom mapping schemes such as that
of the examples_versioned_history example, which generate additional
mappers and tables in response to the creation of mapped classes.
[orm] [usecase] The infrequently used _orm.Mapper.iterate_properties attribute and
_orm.Mapper.get_property() method, which are primarily used
internally, no longer implicitly invoke the _orm.registry.configure()
process. Public access to these methods is extremely rare and the only
benefit to having _orm.registry.configure() would have been allowing
"backref" properties be present in these collections. In order to support
the new _orm.MapperEvents.after_mapper_constructed() event, iteration
and access to the internal _orm.MapperProperty objects is now
possible without triggering an implicit configure of the mapper itself.
The more-public facing route to iteration of all mapper attributes, the
_orm.Mapper.attrs collection and similar, will still implicitly
invoke the _orm.registry.configure() step thus making backref
attributes available.
In all cases, the _orm.registry.configure() is always available to
be called directly.
[orm] [bug] [regression] Fixed obscure ORM inheritance issue caused by #8705 where some
scenarios of inheriting mappers that indicated groups of columns from the
local table and the inheriting table together under a
_orm.column_property() would nonetheless warn that properties of the
same name were being combined implicitly.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Updates the requirements on sqlalchemy to permit the latest version.
Release notes
Sourced from sqlalchemy's releases.
... (truncated)
Commits
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)