~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/graph.py

  • Committer: Andrew Bennetts
  • Date: 2008-12-12 01:17:04 UTC
  • mto: This revision was merged to the branch mainline in revision 3899.
  • Revision ID: andrew.bennetts@canonical.com-20081212011704-m5208objzpfsjar7
Remove broken debugging cruft, and some unused imports.

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
    trace,
25
25
    tsort,
26
26
    )
27
 
from bzrlib.deprecated_graph import (node_distances, select_farthest)
28
27
 
29
28
STEP_UNIQUE_SEARCHER_EVERY = 5
30
29
 
109
108
 
110
109
    The cache is enabled by default, but may be disabled and re-enabled.
111
110
    """
112
 
    def __init__(self, parent_provider=None, get_parent_map=None, debug=False):
 
111
    def __init__(self, parent_provider=None, get_parent_map=None):
113
112
        """Constructor.
114
113
 
115
114
        :param parent_provider: The ParentProvider to use.  It or
116
115
            get_parent_map must be supplied.
117
116
        :param get_parent_map: The get_parent_map callback to use.  It or
118
117
            parent_provider must be supplied.
119
 
        :param debug: If true, mutter debugging messages.
120
118
        """
121
119
        self._real_provider = parent_provider
122
120
        if get_parent_map is None:
125
123
            self._get_parent_map = get_parent_map
126
124
        self._cache = {}
127
125
        self._cache_misses = True
128
 
        self._debug = debug
129
 
        if self._debug:
130
 
            self._requested_parents = None
131
126
 
132
127
    def __repr__(self):
133
128
        return "%s(%r)" % (self.__class__.__name__, self._real_provider)
138
133
            raise AssertionError('Cache enabled when already enabled.')
139
134
        self._cache = {}
140
135
        self._cache_misses = cache_misses
141
 
        if self._debug:
142
 
            self._requested_parents = set()
143
136
 
144
137
    def disable_cache(self):
145
138
        """Disable and clear the cache."""
146
139
        self._cache = None
147
 
        if self._debug:
148
 
            self._requested_parents = None
149
140
 
150
141
    def get_cached_map(self):
151
142
        """Return any cached get_parent_map values."""
166
157
            missing_revisions = set(key for key in keys if key not in ancestry)
167
158
        if missing_revisions:
168
159
            parent_map = self._get_parent_map(missing_revisions)
169
 
            if self._debug:
170
 
                mutter('re-retrieved revisions: %d of %d',
171
 
                        len(set(ancestry).intersection(parent_map)),
172
 
                        len(parent_map))
173
160
            ancestry.update(parent_map)
174
161
            if self._cache_misses:
175
162
                # None is never a valid parents list, so it can be used to
177
164
                ancestry.update(dict((k, None) for k in missing_revisions
178
165
                                     if k not in parent_map))
179
166
        present_keys = [k for k in keys if ancestry.get(k) is not None]
180
 
        if self._debug:
181
 
            if self._requested_parents is not None and len(ancestry) != 0:
182
 
                self._requested_parents.update(present_keys)
183
 
                mutter('Current hit rate: %d%%',
184
 
                    100.0 * len(self._requested_parents) / len(ancestry))
185
167
        return dict((k, ancestry[k]) for k in present_keys)
186
168
 
187
169