diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2022-10-25 10:22:14 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2022-10-25 10:22:14 -0400 |
| commit | eae9d1420bbfde4dbd835b654e80653cd5ac2155 (patch) | |
| tree | c930f0a6a030c6cf2c08e9af21e7c4e255fb3e47 /lib/sqlalchemy/orm | |
| parent | 37b29b58cb3e1b0715711327724166b0fb991c70 (diff) | |
| download | sqlalchemy-eae9d1420bbfde4dbd835b654e80653cd5ac2155.tar.gz | |
raise for non-Load opt passed to options()
Fixed the exception that's raised when the
:func:`_orm.with_loader_criteria` option is attempted to be used within a
specific loader path, like in loader.options().
:func:`_orm.with_loader_criteria` is only intended to be used at the top
level.
Fixes: #8711
Change-Id: Iaa7b13956b808761e618a6be6406e5c82df1c65c
Diffstat (limited to 'lib/sqlalchemy/orm')
| -rw-r--r-- | lib/sqlalchemy/orm/strategy_options.py | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/sqlalchemy/orm/strategy_options.py b/lib/sqlalchemy/orm/strategy_options.py index 114030346..23b3466f5 100644 --- a/lib/sqlalchemy/orm/strategy_options.py +++ b/lib/sqlalchemy/orm/strategy_options.py @@ -1218,7 +1218,16 @@ class Load(_AbstractLoad): """ for opt in opts: - opt._apply_to_parent(self) + try: + opt._apply_to_parent(self) + except AttributeError as ae: + if not isinstance(opt, _AbstractLoad): + raise sa_exc.ArgumentError( + f"Loader option {opt} is not compatible with the " + "Load.options() method." + ) from ae + else: + raise return self def _clone_for_bind_strategy( |
