def _create_history(attr, state, current): original = state.committed_state.get(attr.key, NEVER_SET) if hasattr(attr, 'get_collection'): current = attr.get_collection(state, current) if original is NO_VALUE: return (list(current), [], []) elif original is NEVER_SET: return ([], list(current), []) else: collection = util.OrderedIdentitySet(current) s = util.OrderedIdentitySet(original) return (list(collection.difference(s)), list(collection.intersection(s)), list(s.difference(collection))) else: if current is NO_VALUE: if original not in [None, NEVER_SET, NO_VALUE]: deleted = [original] else: deleted = [] return ([], [], deleted) elif original is NO_VALUE: return ([current], [], []) elif original is NEVER_SET or attr.is_equal( current, original ) is True: # dont let ClauseElement expressions here trip things up return ([], [current], []) else: if original is not None: deleted = [original] else: deleted = [] return ([current], [], deleted)
def test_intersection(self): elem = object eq_ = self.assert_eq a, b, c, d, e, f, g = elem(), elem(), elem(), elem(), elem(), elem(), elem() s1 = util.OrderedIdentitySet([a, b, c]) s2 = util.OrderedIdentitySet([d, e, f]) s3 = util.OrderedIdentitySet([a, d, f, g]) eq_(s1.intersection(s2), []) eq_(s1.intersection(s3), [a]) eq_(s1.union(s2).intersection(s3), [a, d, f])
def test_add(self): elem = object s = util.OrderedIdentitySet() s.add(elem()) s.add(elem())
def __init__(self): self.deleted_items = util.IdentitySet() self.added_items = util.OrderedIdentitySet()