From: Mike Bayer Date: Sun, 24 Jul 2011 19:49:04 +0000 (-0400) Subject: - recall that groupby() expects a sorted collection, ditch it X-Git-Tag: rel_0_7_2~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9867086943d60e347695930dd7f442f9e95e4577;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - recall that groupby() expects a sorted collection, ditch it --- diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py index 8a33ee3767..035b728283 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."""