From 9729d633983a1f013cb5675e172e4a329ec8815e Mon Sep 17 00:00:00 2001 From: Théo de la Hogue Date: Wed, 3 Apr 2024 15:36:50 +0200 Subject: Fixing children method. --- src/argaze/DataFeatures.py | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/src/argaze/DataFeatures.py b/src/argaze/DataFeatures.py index 5e5ac08..19c45fe 100644 --- a/src/argaze/DataFeatures.py +++ b/src/argaze/DataFeatures.py @@ -842,11 +842,21 @@ class PipelineStepObject(): child.__enter__() + # Start observers + for observer in self.observers: + + observer.__enter__() + return self def __exit__(self, exception_type, exception_value, exception_traceback): """Define default method to exit from pipeline step object context.""" + # Stop observers + for observer in self.observers: + + observer.__exit__(exception_type, exception_value, exception_traceback) + # Stop children pipeline step objects for child in self.children: @@ -1063,25 +1073,30 @@ class PipelineStepObject(): def children(self) -> object: """Iterate over children pipeline step objects.""" - for name in dir(self): + for name, value in self.properties: + + # Pipeline step object attribute + if issubclass(type(value), PipelineStepObject) and value != self.parent: - if not name.startswith('_'): + yield value + + # Pipeline step objects list attribute + elif type(value) == list: - attr = getattr(self, name) + for p in value: - # Pipeline step object attribute - if issubclass(type(attr), PipelineStepObject) and attr != self.parent: + if issubclass(type(p), PipelineStepObject): - yield attr + yield p - # Pipeline step objects list attribute - elif isinstance(attr, list): + # Pipeline step objects list attribute + elif type(value) == dict: - for p in attr: + for p in value.values(): - if issubclass(type(p), PipelineStepObject): + if issubclass(type(p), PipelineStepObject): - yield p + yield p def PipelineStepMethod(method): """Define a decorator use into PipelineStepObject class to declare pipeline method. -- cgit v1.1