diff --git a/knowledge/knowing.py b/knowledge/knowing.py index 1e21b6e..48248dd 100644 --- a/knowledge/knowing.py +++ b/knowledge/knowing.py @@ -44,24 +44,24 @@ class Knowing(object): del self._knowledge[obj] del obj._knowers[self] - def getMissingKnowledge(self, position): - knowledge = self.getKnowledge() + def getMissingKnowledge(self, profile): + knowledge = list(self.getKnowledge()) missing = [] - toCheck = [k for k in position.getRequirements() if k not in knowledge] + toCheck = [k for k in profile.getRequirements() if k not in knowledge] while toCheck: k = toCheck.pop() missing.insert(0, k) for d in k.getDependencies(): - if d in knowledge or k in toCheck: + if d in knowledge or d in toCheck: continue if d in missing: - # TODO: rearrange missing, but care for cycles... + # TODO: rearrange missing, but care for cycles... continue toCheck.append(d) return tuple(missing) - def getProvidersNeeded(self, position): + def getProvidersNeeded(self, profile): return ((k, k.getProviders()) - for k in self.getMissingKnowledge(position)) + for k in self.getMissingKnowledge(profile)) diff --git a/knowledge/provider.py b/knowledge/provider.py index 73c608b..e64025d 100644 --- a/knowledge/provider.py +++ b/knowledge/provider.py @@ -40,7 +40,7 @@ class KnowledgeProvider(object): self._providedKnowledge[obj] = True obj._providers.add(self) - def removeDependency(self, obj): + def removeProvidedKnowledge(self, obj): del self._providedKnowledge[obj] del obj._providers[self]