diff options
| author | mike bayer <mike_mp@zzzcomputing.com> | 2019-08-27 19:29:21 +0000 |
|---|---|---|
| committer | Gerrit Code Review <gerrit@bbpush.zzzcomputing.com> | 2019-08-27 19:29:21 +0000 |
| commit | 1e78d076cd022e76ead9dbae31be8ce866a79dbe (patch) | |
| tree | d6df993f5f852bc5fade5efa3c253ea9411474ec /lib/sqlalchemy/orm/mapper.py | |
| parent | 3980a9a455d08c5073cabc3c2b77de46fa36d7b4 (diff) | |
| parent | 75b2518b2659796c885396fd0893dd7f9b19a9ef (diff) | |
| download | sqlalchemy-1e78d076cd022e76ead9dbae31be8ce866a79dbe.tar.gz | |
Merge "Implement type-level sorting for Enum; apply to ORM primary keys"
Diffstat (limited to 'lib/sqlalchemy/orm/mapper.py')
| -rw-r--r-- | lib/sqlalchemy/orm/mapper.py | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py index 0c4e1543b..e8b215653 100644 --- a/lib/sqlalchemy/orm/mapper.py +++ b/lib/sqlalchemy/orm/mapper.py @@ -2749,6 +2749,25 @@ class Mapper(InspectionAttr): return identity_key[1] @_memoized_configured_property + def _persistent_sortkey_fn(self): + key_fns = [col.type.sort_key_function for col in self.primary_key] + + if set(key_fns).difference([None]): + + def key(state): + return tuple( + key_fn(val) if key_fn is not None else val + for key_fn, val in zip(key_fns, state.key[1]) + ) + + else: + + def key(state): + return state.key[1] + + return key + + @_memoized_configured_property def _identity_key_props(self): return [self._columntoproperty[col] for col in self.primary_key] |
