Merge "Make the graph '_unsatisfied_requires' be a staticmethod"

This commit is contained in:
Jenkins
2015-03-30 07:36:17 +00:00
committed by Gerrit Code Review

View File

@@ -22,7 +22,6 @@ from taskflow.types import graph as gr
def _unsatisfied_requires(node, graph, *additional_provided): def _unsatisfied_requires(node, graph, *additional_provided):
"""Extracts the unsatisified symbol requirements of a single node."""
requires = set(node.requires) requires = set(node.requires)
if not requires: if not requires:
return requires return requires
@@ -64,6 +63,9 @@ class Flow(flow.Flow):
self._graph = gr.DiGraph() self._graph = gr.DiGraph()
self._graph.freeze() self._graph.freeze()
#: Extracts the unsatisified symbol requirements of a single node.
_unsatisfied_requires = staticmethod(_unsatisfied_requires)
def link(self, u, v): def link(self, u, v):
"""Link existing node u as a runtime dependency of existing node v.""" """Link existing node u as a runtime dependency of existing node v."""
if not self._graph.has_node(u): if not self._graph.has_node(u):
@@ -153,8 +155,8 @@ class Flow(flow.Flow):
provided[value].append(self._retry) provided[value].append(self._retry)
for item in self._graph.nodes_iter(): for item in self._graph.nodes_iter():
for value in _unsatisfied_requires(item, self._graph, for value in self._unsatisfied_requires(item, self._graph,
retry_provides): retry_provides):
required[value].append(item) required[value].append(item)
for value in item.provides: for value in item.provides:
provided[value].append(item) provided[value].append(item)
@@ -168,8 +170,8 @@ class Flow(flow.Flow):
# Try to find a valid provider. # Try to find a valid provider.
if resolve_requires: if resolve_requires:
for value in _unsatisfied_requires(item, tmp_graph, for value in self._unsatisfied_requires(item, tmp_graph,
retry_provides): retry_provides):
if value in provided: if value in provided:
providers = provided[value] providers = provided[value]
if len(providers) > 1: if len(providers) > 1:
@@ -232,7 +234,8 @@ class Flow(flow.Flow):
retry_provides.update(self._retry.provides) retry_provides.update(self._retry.provides)
g = self._get_subgraph() g = self._get_subgraph()
for item in g.nodes_iter(): for item in g.nodes_iter():
requires.update(_unsatisfied_requires(item, g, retry_provides)) requires.update(self._unsatisfied_requires(item, g,
retry_provides))
return frozenset(requires) return frozenset(requires)