/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/_known_graph_py.py

  • Committer: Jelmer Vernooij
  • Date: 2020-07-05 12:50:01 UTC
  • mfrom: (7490.40.46 work)
  • mto: (7490.40.48 work)
  • mto: This revision was merged to the branch mainline in revision 7519.
  • Revision ID: jelmer@jelmer.uk-20200705125001-7s3vo0p55szbbws7
Merge lp:brz/3.1.

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
"""Implementation of Graph algorithms when we have already loaded everything.
18
18
"""
19
19
 
 
20
from __future__ import absolute_import
 
21
 
20
22
try:
21
23
    from collections.abc import deque
22
24
except ImportError:  # python < 3.7
25
27
    errors,
26
28
    revision,
27
29
    )
 
30
from .sixish import (
 
31
    viewitems,
 
32
    viewvalues,
 
33
    )
28
34
 
29
35
 
30
36
class _KnownGraphNode(object):
82
88
          child_keys,
83
89
        """
84
90
        nodes = self._nodes
85
 
        for key, parent_keys in parent_map.items():
 
91
        for key, parent_keys in viewitems(parent_map):
86
92
            if key in nodes:
87
93
                node = nodes[key]
88
94
                node.parent_keys = parent_keys
98
104
                parent_node.child_keys.append(key)
99
105
 
100
106
    def _find_tails(self):
101
 
        return [node for node in self._nodes.values()
 
107
        return [node for node in viewvalues(self._nodes)
102
108
                if not node.parent_keys]
103
109
 
104
110
    def _find_tips(self):
105
 
        return [node for node in self._nodes.values()
 
111
        return [node for node in viewvalues(self._nodes)
106
112
                if not node.child_keys]
107
113
 
108
114
    def _find_gdfo(self):
236
242
        seen = set()
237
243
        pending = []
238
244
        min_gdfo = None
239
 
        for node in candidate_nodes.values():
 
245
        for node in viewvalues(candidate_nodes):
240
246
            if node.parent_keys:
241
247
                pending.extend(node.parent_keys)
242
248
            if min_gdfo is None or node.gdfo < min_gdfo:
263
269
 
264
270
        All parents must occur before all children.
265
271
        """
266
 
        for node in self._nodes.values():
 
272
        for node in viewvalues(self._nodes):
267
273
            if node.gdfo is None:
268
274
                raise errors.GraphCycleError(self._nodes)
269
275
        pending = self._find_tails()
341
347
        """Compute the merge sorted graph output."""
342
348
        from breezy import tsort
343
349
        as_parent_map = dict((node.key, node.parent_keys)
344
 
                             for node in self._nodes.values()
 
350
                             for node in viewvalues(self._nodes)
345
351
                             if node.parent_keys is not None)
346
352
        # We intentionally always generate revnos and never force the
347
353
        # mainline_revisions