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: def __init__(self, error: AEErrs, mesg=None) -> None:
if mesg is None: if mesg is None:
self.mesg = str(error) self.mesg = str(error)
else:
self.mesg = mesg
super().__init__(self.mesg) super().__init__(self.mesg)
self.value = error.value self.value = error.value
@@ -105,8 +107,8 @@ class Commands(Thread):
self.stopped = True self.stopped = True
def free(self): def free(self):
""" Virtual method used to clean resources for threaded Commands """ Virtual method used to clean resources for all Commands
when they are stopped. when the application is exited.
""" """
pass pass
@@ -297,9 +299,15 @@ class CommandsLoader:
def _load_dependencies(self): def _load_dependencies(self):
for k, v in self.cmods.items(): for k, v in self.cmods.items():
if hasattr(v, "dependencies"): if hasattr(v, "dependencies"):
for p in v.dependencies: deps = v.dependencies
if p in self.cmods.keys(): # dependencies can be a list or dictionary
setattr(v, p, self.cmods[p]) 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: else:
self.log.error( self.log.error(
'Dependency "{}" of module "{}" could not be satisfied'.format( 'Dependency "{}" of module "{}" could not be satisfied'.format(
@@ -325,7 +333,6 @@ class CommandsLoader:
def free(self): def free(self):
for k, v in self.cmods.items(): for k, v in self.cmods.items():
if v.threaded:
v.free() v.free()