From ab4cc5f2b5c616b29f750df4347966ef83416b23 Mon Sep 17 00:00:00 2001
From: Bruno Haible <bruno@clisp.org>
Date: Thu, 5 Dec 2024 09:43:14 +0100
Subject: [PATCH] gnulib-tool.py: Fix invalid use of cache.

* pygnulib/GLModuleSystem.py (GLModule._getDependents): Make the modules
argument mandatory. Don't store the result in self.cache.
---
 ChangeLog                  |  4 ++++
 pygnulib/GLModuleSystem.py | 21 ++++++++-------------
 2 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 892ead004f..800faf5fe0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2024-12-05  Bruno Haible  <bruno@clisp.org>
 
+	gnulib-tool.py: Fix invalid use of cache.
+	* pygnulib/GLModuleSystem.py (GLModule._getDependents): Make the modules
+	argument mandatory. Don't store the result in self.cache.
+
 	gnulib-tool.py: Refactor.
 	* pygnulib/GLModuleSystem.py (GLModuleSystem.getAllModules): Moved here
 	from GLModule._getAllModules. No need to eliminate empty module names.
diff --git a/pygnulib/GLModuleSystem.py b/pygnulib/GLModuleSystem.py
index 1a5c93b0d8..c99cfe25ad 100644
--- a/pygnulib/GLModuleSystem.py
+++ b/pygnulib/GLModuleSystem.py
@@ -574,19 +574,6 @@ class GLModule:
 
         return outmodules
 
-    def _getDependents(self, modules: list[GLModule] | None = None) -> list[GLModule]:
-        '''Internal function for getDependentsRecursively
-        accepting an optional argument modules.'''
-        if 'dependents' not in self.cache:
-            result = []
-            if modules is None:
-                modules = self.modulesystem.getAllModules()
-            for module in modules:
-                if self in set(module.getDependenciesWithoutConditions()):
-                    result.append(module)
-            self.cache['dependents'] = result
-        return self.cache['dependents']
-
     def getDependents(self) -> list[GLModule]:
         '''Return list of dependents (a.k.a. "reverse dependencies"),
         as a list of GLModule objects.
@@ -639,6 +626,14 @@ class GLModule:
             self.cache['dependents'] = result
         return self.cache['dependents']
 
+    def _getDependents(self, modules: list[GLModule]) -> list[GLModule]:
+        '''Return the list of dependents of this module,
+        among the given set of modules.'''
+        result = []
+        for module in modules:
+            if self in set(module.getDependenciesWithoutConditions()):
+                result.append(module)
+        return result
 
     def getDependentsRecursively(self) -> set[GLModule]:
         '''Return a list of recursive dependents of this module,
-- 
2.39.5