From b9fa78e2a0501c715e001cc1353d2c0c2d29c968 Mon Sep 17 00:00:00 2001 From: Collin Funk <collin.funk1@gmail.com> Date: Fri, 19 Apr 2024 12:00:33 -0700 Subject: [PATCH] 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. --- ChangeLog | 10 ++++++++++ pygnulib/GLModuleSystem.py | 18 ++++++++---------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index d907a52c53..65770c9c33 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +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. 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]: -- 2.39.5