~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/_annotator_py.py

  • Committer: John Arbash Meinel
  • Date: 2009-07-08 15:41:18 UTC
  • mto: This revision was merged to the branch mainline in revision 4522.
  • Revision ID: john@arbash-meinel.com-20090708154118-q0k3jyyhhnmoezr7
Move the core loops into module-level helpers.

Not sure if it really matters, but it does make it a bit simpler, and it
means the code matches _update_from_first_parent.

Show diffs side-by-side

added added

removed removed

Lines of Context:
143
143
 
144
144
    def _update_from_first_parent(self, key, annotations, lines, parent_key):
145
145
        """Reannotate this text relative to its first parent."""
146
 
        parent_annotations, matching_blocks = self._get_parent_annotations_and_matches(
147
 
            key, lines, parent_key)
 
146
        (parent_annotations,
 
147
         matching_blocks) = self._get_parent_annotations_and_matches(
 
148
                                key, lines, parent_key)
148
149
 
149
150
        for parent_idx, lines_idx, match_len in matching_blocks:
150
151
            # For all matching regions we copy across the parent annotations
154
155
    def _update_from_other_parents(self, key, annotations, lines,
155
156
                                   this_annotation, parent_key):
156
157
        """Reannotate this text relative to a second (or more) parent."""
157
 
        parent_annotations, matching_blocks = self._get_parent_annotations_and_matches(
158
 
            key, lines, parent_key)
 
158
        (parent_annotations,
 
159
         matching_blocks) = self._get_parent_annotations_and_matches(
 
160
                                key, lines, parent_key)
159
161
 
160
162
        last_ann = None
161
163
        last_parent = None
239
241
        self._heads_provider = None
240
242
 
241
243
    def annotate(self, key):
242
 
        """Return annotated fulltext for the given key."""
 
244
        """Return annotated fulltext for the given key.
 
245
 
 
246
        :param key: A tuple defining the text to annotate
 
247
        :return: ([annotations], [lines])
 
248
            annotations is a list of tuples of keys, one for each line in lines
 
249
                        each key is a possible source for the given line.
 
250
            lines the text of "key" as a list of lines
 
251
        """
243
252
        pb = ui.ui_factory.nested_progress_bar()
244
253
        try:
245
254
            for text_key, text, num_lines in self._get_needed_texts(key, pb=pb):
261
270
        """Determine the single-best-revision to source for each line.
262
271
 
263
272
        This is meant as a compatibility thunk to how annotate() used to work.
 
273
        :return: [(ann_key, line)]
 
274
            A list of tuples with a single annotation key for each line.
264
275
        """
265
276
        annotations, lines = self.annotate(key)
266
277
        assert len(annotations) == len(lines)