summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2011-07-24 15:49:04 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2011-07-24 15:49:04 -0400
commit9867086943d60e347695930dd7f442f9e95e4577 (patch)
treed3ac6bae24cd02c9061615ee98cdd93146f0aa8c /lib/sqlalchemy
parenteba7816abb96745c24ae7f3788a82bf327aa54e9 (diff)
downloadsqlalchemy-9867086943d60e347695930dd7f442f9e95e4577.tar.gz
- recall that groupby() expects a sorted collection, ditch it
Diffstat (limited to 'lib/sqlalchemy')
-rw-r--r--lib/sqlalchemy/orm/mapper.py12
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."""