From 3d402db2c225e017c8b92c53ea77e587fee2bd79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Dausseur?= Date: Sat, 20 Sep 2025 16:33:21 +0200 Subject: [PATCH] free not limited to threaded modules. modified the modules dependencies management. --- src/appengine/__init__.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/appengine/__init__.py b/src/appengine/__init__.py index bdc7720..13d84c8 100644 --- a/src/appengine/__init__.py +++ b/src/appengine/__init__.py @@ -48,6 +48,8 @@ class AppEngineException(Exception): def __init__(self, error: AEErrs, mesg=None) -> None: if mesg is None: self.mesg = str(error) + else: + self.mesg = mesg super().__init__(self.mesg) self.value = error.value @@ -105,8 +107,8 @@ class Commands(Thread): self.stopped = True def free(self): - """ Virtual method used to clean resources for threaded Commands - when they are stopped. + """ Virtual method used to clean resources for all Commands + when the application is exited. """ pass @@ -297,9 +299,15 @@ class CommandsLoader: def _load_dependencies(self): for k, v in self.cmods.items(): if hasattr(v, "dependencies"): - for p in v.dependencies: - if p in self.cmods.keys(): - setattr(v, p, self.cmods[p]) + deps = v.dependencies + # dependencies can be a list or dictionary + if isinstance(v.dependencies, list): + deps = {} + for d in v.dependencies: + deps[d] = d + for p, pv in deps.items(): + if pv in self.cmods.keys(): + setattr(v, p, self.cmods[pv]) else: self.log.error( 'Dependency "{}" of module "{}" could not be satisfied'.format( @@ -325,8 +333,7 @@ class CommandsLoader: def free(self): for k, v in self.cmods.items(): - if v.threaded: - v.free() + v.free() class AppEngine: