diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2011-07-24 15:49:04 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2011-07-24 15:49:04 -0400 |
| commit | 9867086943d60e347695930dd7f442f9e95e4577 (patch) | |
| tree | d3ac6bae24cd02c9061615ee98cdd93146f0aa8c /lib/sqlalchemy | |
| parent | eba7816abb96745c24ae7f3788a82bf327aa54e9 (diff) | |
| download | sqlalchemy-9867086943d60e347695930dd7f442f9e95e4577.tar.gz | |
- recall that groupby() expects a sorted collection, ditch it
Diffstat (limited to 'lib/sqlalchemy')
| -rw-r--r-- | lib/sqlalchemy/orm/mapper.py | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py index 8a33ee376..035b72828 100644 --- a/lib/sqlalchemy/orm/mapper.py +++ b/lib/sqlalchemy/orm/mapper.py @@ -2819,13 +2819,11 @@ def _event_on_resurrect(state): def _sort_states(states): - ret = [] - for haskey, g in groupby(states, key=lambda s:s.key is not None): - if haskey: - ret.extend(sorted(g, key=lambda st: st.key[1])) - else: - ret = sorted(g, key=operator.attrgetter("insert_order")) + ret - return ret + pending = set(states) + persistent = set(s for s in pending if s.key is not None) + pending.difference_update(persistent) + return sorted(pending, key=operator.attrgetter("insert_order")) + \ + sorted(persistent, key=lambda q:q.key[1]) class _ColumnMapping(util.py25_dict): """Error reporting helper for mapper._columntoproperty.""" |
