~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/identitymap.py

  • Committer: Andrew Bennetts
  • Date: 2007-03-26 06:24:01 UTC
  • mto: This revision was merged to the branch mainline in revision 2376.
  • Revision ID: andrew.bennetts@canonical.com-20070326062401-k3nbefzje5332jaf
Deal with review comments from Robert:

  * Add my name to the NEWS file
  * Move the test case to a new module in branch_implementations
  * Remove revision_history cruft from identitymap and test_identitymap
  * Improve some docstrings

Also, this fixes a bug where revision_history was not returning a copy of the
cached data, allowing the cache to be corrupted.

Show diffs side-by-side

added added

removed removed

Lines of Context:
32
32
    that is store in the map. Look for find_CLASS and add_CLASS methods.
33
33
    """
34
34
 
35
 
    def add_revision_history(self, revision_history):
36
 
        """Add a revision_history object to the map.
37
 
 
38
 
        There can only be one!
39
 
        """
40
 
        if self._revision_history is not None:
41
 
            raise errors.BzrError("A revision history (%s) is already "
42
 
                                  "identity map" % self._revision_history)
43
 
        self._revision_history = revision_history
44
 
 
45
35
    def add_weave(self, id, weave):
46
36
        """Add weave to the map with a given id."""
47
37
        if self._weave_key(id) in self._map:
49
39
        self._map[self._weave_key(id)] = weave
50
40
        self._reverse_map[weave] = self._weave_key(id)
51
41
 
52
 
    def find_revision_history(self):
53
 
        return self._revision_history
54
 
 
55
42
    def find_weave(self, id):
56
43
        """Return the weave for 'id', or None if it is not present."""
57
44
        return self._map.get(self._weave_key(id), None)
60
47
        super(IdentityMap, self).__init__()
61
48
        self._map = {}
62
49
        self._reverse_map = {}
63
 
        self._revision_history = None
64
50
 
65
51
    def remove_object(self, an_object):
66
52
        """Remove object from map."""
67
53
        if isinstance(an_object, list):
68
 
            if self._revision_history is an_object:
69
 
                self._revision_history = None
70
 
            else:
71
 
                raise KeyError('%r not in identity map' % an_object)
 
54
            raise KeyError('%r not in identity map' % an_object)
72
55
        else:
73
56
            self._map.pop(self._reverse_map[an_object])
74
57
            self._reverse_map.pop(an_object)
87
70
    def add_weave(self, id, weave):
88
71
        """See IdentityMap.add_weave."""
89
72
 
90
 
    def add_revision_history(self, revision_history):
91
 
        """See IdentityMap.add_revision_history."""
92
 
 
93
73
    def find_weave(self, id):
94
74
        """See IdentityMap.find_weave."""
95
75
        return None
96
 
 
97
 
    def find_revision_history(self):
98
 
        """See IdentityMap.find_revision_history."""