diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2022-06-14 09:31:09 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2022-06-14 10:58:31 -0400 |
| commit | 54f5def028d8f46ead37e8046d2aea3bb9953ebc (patch) | |
| tree | 481594f1d9ffe6cce70636cdfffab48be7e21916 /lib/sqlalchemy/orm/session.py | |
| parent | 4010a61af7b88e0d3b18bcd560a465269384f250 (diff) | |
| download | sqlalchemy-54f5def028d8f46ead37e8046d2aea3bb9953ebc.tar.gz | |
typing adjustments for composites
* if dataclass isn't used, columns have to be named
* _CompositeClassProto is not useful as dataclasses have no
methods / bases we can use, so composite is against Any
* Adjust session.get() feature to work w/ dataclass composites
Change-Id: Icc606cc76871c738dc794ea4555fca8a1ab0e0fd
Diffstat (limited to 'lib/sqlalchemy/orm/session.py')
| -rw-r--r-- | lib/sqlalchemy/orm/session.py | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/sqlalchemy/orm/session.py b/lib/sqlalchemy/orm/session.py index 788821b98..ec6f41b28 100644 --- a/lib/sqlalchemy/orm/session.py +++ b/lib/sqlalchemy/orm/session.py @@ -35,6 +35,7 @@ import weakref from . import attributes from . import context +from . import descriptor_props from . import exc from . import identity from . import loading @@ -3193,8 +3194,15 @@ class Session(_SessionClassMethods, EventTarget): ) -> Optional[_O]: # convert composite types to individual args - if is_composite_class(primary_key_identity): - primary_key_identity = primary_key_identity.__composite_values__() + if ( + is_composite_class(primary_key_identity) + and type(primary_key_identity) + in descriptor_props._composite_getters + ): + getter = descriptor_props._composite_getters[ + type(primary_key_identity) + ] + primary_key_identity = getter(primary_key_identity) mapper: Optional[Mapper[_O]] = inspect(entity) |
