diff options
| author | 2019-05-26 20:27:17 +0100 | |
|---|---|---|
| committer | 2019-05-26 20:27:17 +0100 | |
| commit | 2a93a8f1dddf2ffc23194dc04511fbfa34d3f972 (patch) | |
| tree | de00b97073952eeed5209cb77a1ec8c3f5ff7a44 /src/ModuleManager.py | |
| parent | Update CHANGELOG (diff) | |
| signature | ||
Only check for unknown dependencies once
Diffstat (limited to 'src/ModuleManager.py')
| -rw-r--r-- | src/ModuleManager.py | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/ModuleManager.py b/src/ModuleManager.py index 62dd6fa6..bbe7ab30 100644 --- a/src/ModuleManager.py +++ b/src/ModuleManager.py @@ -19,8 +19,10 @@ class ModuleNotLoadedWarning(ModuleWarning): pass class ModuleDependencyNotFulfilled(ModuleException): - def __init__(self, message, dependency): - ModuleException.__init__(self, message) + def __init__(self, module, dependency): + ModuleException.__init__(self, "Dependency for %s not fulfilled: %s" + % (module, dependency)) + self.module = module self.dependency = dependency class ModuleType(enum.Enum): @@ -155,9 +157,8 @@ class ModuleManager(object): dependencies = definition.get_dependencies() for dependency in dependencies: if not dependency in self.modules: - raise ModuleDependencyNotFulfilled( - "Dependency for %s not fulfilled: %s" % - (definition.name, dependency) ,dependency) + raise ModuleDependencyNotFulfilled(definition.name, + dependency) for hashflag, value in definition.hashflags: if hashflag == "ignore": @@ -235,6 +236,12 @@ class ModuleManager(object): definition_dependencies = { d.name: d.get_dependencies() for d in definitions} + for name, deps in definition_dependencies.items(): + for dep in deps: + if not dep in definition_dependencies: + # unknown dependency! + raise ModuleDependencyNotFulfilled(name, dep) + while definition_dependencies: changed = False @@ -256,7 +263,8 @@ class ModuleManager(object): for name, deps in definition_dependencies.items(): for dep_name in deps: if name in definition_dependencies[dep_name]: - self.log.warn("Circular dependencies: %s<->%s", + self.log.warn( + "Circular dependencies detected: %s<->%s", [name, dep_name]) # snap a circular dependence deps.remove(dep_name) |
