free not limited to threaded modules. modified the modules dependencies management.

This commit is contained in:
François Dausseur
2025-09-20 16:33:21 +02:00
parent de04b2b3b9
commit 3d402db2c2

View File

@@ -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: