summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/orm/context.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2022-01-10 22:11:50 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2022-01-11 09:27:58 -0500
commit3b77079321d35f63103ead5092d9eeeb5ef546ca (patch)
tree440d9e6d0f9e8ca92e57ba6ad5c48df42357a91f /lib/sqlalchemy/orm/context.py
parent4e9fe6e3b7a72fc3b116403ea9b27e847b5bf186 (diff)
downloadsqlalchemy-3b77079321d35f63103ead5092d9eeeb5ef546ca.tar.gz
change state.load_options to a tuple
having this be an immutable sequence is safer and possibly lower overhead. The change here went in with no issues save for tests that asserted it was a set. InstanceState.load_options is only referred towards when the object is first loaded, and then within the logic that emits an object refresh as well as within a lazy loader. it's only accessed as a whole collection. Fixes: #7558 Change-Id: Id1adbec0f93bcfbfc934ec9cd39e71e74727845d
Diffstat (limited to 'lib/sqlalchemy/orm/context.py')
-rw-r--r--lib/sqlalchemy/orm/context.py6
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/sqlalchemy/orm/context.py b/lib/sqlalchemy/orm/context.py
index 8ec18b865..cba7cf07d 100644
--- a/lib/sqlalchemy/orm/context.py
+++ b/lib/sqlalchemy/orm/context.py
@@ -103,7 +103,7 @@ class QueryContext:
self.loaders_require_uniquing = False
self.params = params
- self.propagated_loader_options = {
+ self.propagated_loader_options = tuple(
# issue 7447.
# propagated loader options will be present on loaded InstanceState
# objects under state.load_options and are typically used by
@@ -118,14 +118,14 @@ class QueryContext:
cached_o
for cached_o in compile_state.select_statement._with_options
if cached_o.propagate_to_loaders and cached_o._is_compile_state
- } | {
+ ) + tuple(
# for user defined loader options that are not "compile state",
# those just need to be present as they are
uncached_o
for uncached_o in statement._with_options
if uncached_o.propagate_to_loaders
and not uncached_o._is_compile_state
- }
+ )
self.attributes = dict(compile_state.attributes)