Skip to content
Snippets Groups Projects
Commit fdeadd7e authored by Christian Dreher's avatar Christian Dreher
Browse files

Merge branch...

Merge branch '273-features-with-multiple-module-dependencies-are-not-correctly-added-to-the-dependency-graph' into 'main'

Resolve "Features with multiple module dependencies are not correctly added to the dependency graph"

Closes #273 and #185

See merge request !481
parents 20459ec8 55810fe6
No related branches found
No related tags found
1 merge request!481Add all required modules of a feature to the dependency graph if indirectly satisfied
Pipeline #7686 passed
......@@ -41,19 +41,22 @@ class ModuleGraph(nx.DiGraph):
# Add edges by implicitly enabled features.
for _, module in self.nodes(data="module"):
module: Module
for feature_name, required_name in module.features.items():
# Check whether the module required by this feature is active.
if self.has_node(required_name):
edge = (module.name, required_name)
if not self.has_edge(*edge):
# We should respect the optional dependency even
# though the feature was not enabled explicitly.
# => Consider the feature be enabled.
dependency = Dependency(feature_name=feature_name)
module.required_modules[required_name] = dependency
self.add_edge(*edge, dependency=dependency)
assert self.has_edge(*edge)
for feature_name, required_modules in module.features.items():
required_modules = [required_modules] if isinstance(required_modules, str)\
else required_modules
# Check whether all modules required by this feature are active.
if all(self.has_node(required_module) for required_module in required_modules):
edges = [(module.name, required_module) for required_module in required_modules]
for edge in edges:
if not self.has_edge(*edge):
# We should respect the optional dependency even
# though the feature was not enabled explicitly.
# => Consider the feature be enabled.
dependency = Dependency(feature_name=feature_name)
module.required_modules[edge[1]] = dependency
self.add_edge(*edge, dependency=dependency)
assert self.has_edge(*edge)
return self
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment