From bd54b3bca3f825fbac2be9a3ecd915ac2c2908ba Mon Sep 17 00:00:00 2001 From: Collin Funk Date: Fri, 19 Apr 2024 12:00:33 -0700 Subject: [PATCH 2/2] 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 + + 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 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 @@ def addConditional(self, parent: GLModule, module: GLModule, condition: str | bo 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 @@ def getCondition(self, parent: GLModule, module: GLModule) -> str | bool | None: 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.44.0