Пример #1
0
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)
Пример #2
0
 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])
Пример #3
0
 def test_add(self):
     elem = object
     s = util.OrderedIdentitySet()
     s.add(elem())
     s.add(elem())
Пример #4
0
 def __init__(self):
     self.deleted_items = util.IdentitySet()
     self.added_items = util.OrderedIdentitySet()