| 1771 | |
| 1772 | |
| 1773 | def _sort_states(mapper, states): |
| 1774 | pending = set(states) |
| 1775 | persistent = {s for s in pending if s.key is not None} |
| 1776 | pending.difference_update(persistent) |
| 1777 | |
| 1778 | try: |
| 1779 | persistent_sorted = sorted( |
| 1780 | persistent, key=mapper._persistent_sortkey_fn |
| 1781 | ) |
| 1782 | except TypeError as err: |
| 1783 | raise sa_exc.InvalidRequestError( |
| 1784 | "Could not sort objects by primary key; primary key " |
| 1785 | "values must be sortable in Python (was: %s)" % err |
| 1786 | ) from err |
| 1787 | return ( |
| 1788 | sorted(pending, key=operator.attrgetter("insert_order")) |
| 1789 | + persistent_sorted |
| 1790 | ) |