free not limited to threaded modules. modified the modules dependencies management.
This commit is contained in:
@@ -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,8 +333,7 @@ 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()
|
|
||||||
|
|
||||||
|
|
||||||
class AppEngine:
|
class AppEngine:
|
||||||
|
|||||||
Reference in New Issue
Block a user