diff options
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | pygnulib/GLModuleSystem.py | 18 |
2 files changed, 18 insertions, 10 deletions
@@ -1,5 +1,15 @@ 2024-04-19 Collin Funk <collin.funk1@gmail.com> + gnulib-tool.py: Make use of GLModule's __hash__ method. + * pygnulib/GLModuleSystem.py (GLModuleTable.addUnconditional) + (GLModuleTable.isConditional): Use the GLModule object instead of the + module name directly. + (GLModuleTable.addConditional, GLModuleTable.getCondition): Likewise. + Use a tuple of two GLModule objects as a key for the conditionals + dictionary. + +2024-04-19 Collin Funk <collin.funk1@gmail.com> + gnulib-tool.py: Simplify data structures for dependencies. * pygnulib/GLModuleSystem.py (GLModuleTable.__init__): Use a defaultdict for dependers to remove the base initialization case. diff --git a/pygnulib/GLModuleSystem.py b/pygnulib/GLModuleSystem.py index ce1fad110c..6d5e874375 100644 --- a/pygnulib/GLModuleSystem.py +++ b/pygnulib/GLModuleSystem.py @@ -762,27 +762,26 @@ class GLModuleTable: if not (type(condition) is str or condition == True): raise TypeError('condition must be a string or True, not %s' % type(condition).__name__) - if str(module) not in self.unconditionals: + if module not in self.unconditionals: # No unconditional dependency to the given module is known at this point. - self.dependers[str(module)].add(str(parent)) - key = '%s---%s' % (str(parent), str(module)) - self.conditionals[key] = condition + self.dependers[module].add(parent) + self.conditionals[(parent, module)] = condition def addUnconditional(self, module: GLModule) -> None: '''Add module as unconditional dependency.''' if type(module) is not GLModule: raise TypeError('module must be a GLModule, not %s' % type(module).__name__) - self.unconditionals.add(str(module)) - if str(module) in self.dependers: - self.dependers.pop(str(module)) + self.unconditionals.add(module) + if module in self.dependers: + self.dependers.pop(module) def isConditional(self, module: GLModule) -> bool: '''Check whether module is unconditional.''' if type(module) is not GLModule: raise TypeError('module must be a GLModule, not %s' % type(module).__name__) - result = str(module) in self.dependers + result = module in self.dependers return result def getCondition(self, parent: GLModule, module: GLModule) -> str | bool | None: @@ -794,8 +793,7 @@ class GLModuleTable: if type(module) is not GLModule: raise TypeError('module must be a GLModule, not %s' % type(module).__name__) - key = '%s---%s' % (str(parent), str(module)) - result = self.conditionals.get(key, None) + result = self.conditionals.get((parent, module), None) return result def transitive_closure(self, modules: list[GLModule]) -> list[GLModule]: |