~simpoir/landscape-client/py3fix-network-usage

« back to all changes in this revision

Viewing changes to landscape/diff.py

  • Committer: Christopher Armstrong
  • Date: 2008-06-10 10:56:01 UTC
  • Revision ID: radix@twistedmatrix.com-20080610105601-l9qfvqjf88e7j8b6
Import landscape-client into public branch

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
def diff(old, new):
 
2
    """Returns the set of differences between two C{dict}s.
 
3
 
 
4
    @return: A 3-tuple of dicts with the changes that would need to be
 
5
        made to convert C{old} into C{new}: C{(creates, updates, deletes)}
 
6
    """
 
7
    new_keys = set(new.iterkeys())
 
8
    old_keys = set(old.iterkeys())
 
9
 
 
10
    creates = {}
 
11
    for key in new_keys - old_keys:
 
12
        creates[key] = new[key]
 
13
 
 
14
    updates = {}
 
15
    for key in old_keys & new_keys:
 
16
        if old[key] != new[key]:
 
17
            updates[key] = new[key]
 
18
 
 
19
    deletes = {}
 
20
    for key in old_keys - new_keys:
 
21
        deletes[key] = old[key]
 
22
 
 
23
    return creates, updates, deletes