Skip to content
Snippets Groups Projects
Commit a4194c49 authored by Timothe Jost's avatar Timothe Jost
Browse files

run callback got improved : ability to be dispatched or not

parent 466aa690
No related branches found
No related tags found
No related merge requests found
Pipeline #131867 passed
__version__ = "0.0.62" __version__ = "0.0.63"
from . import loggs from . import loggs
from .pipes import * from .pipes import *
......
...@@ -188,10 +188,9 @@ class BaseStep: ...@@ -188,10 +188,9 @@ class BaseStep:
"""Return the result of calling the get_generate_wrapped method.""" """Return the result of calling the get_generate_wrapped method."""
return self.get_generate_wrapped() return self.get_generate_wrapped()
# def make_wrapped_functions(self): @property
# self.save = self.make_wrapped_save() def run_callbacks(self):
# self.load = self.make_wrapped_load() return self.get_run_callbacks()
# self.generate = self.make_wrapped_generate()
def get_save_wrapped(self): def get_save_wrapped(self):
"""Returns a wrapped function that saves data using the disk class. """Returns a wrapped function that saves data using the disk class.
...@@ -288,6 +287,33 @@ class BaseStep: ...@@ -288,6 +287,33 @@ class BaseStep:
) )
return autoload_arguments(loggedmethod(self.generation_mechanism), self) return autoload_arguments(loggedmethod(self.generation_mechanism), self)
def get_run_callbacks(self):
def wrapper(session, extra="", show_plots=True):
logger = logging.getLogger("callback_runner")
for callback_data in self.callbacks:
arguments = {"session": session, "extra": extra, "pipeline": self.pipeline}
if isinstance(callback_data, tuple):
callback = callback_data[0]
overriding_arguments = callback_data[1]
else:
callback = callback_data
overriding_arguments = {}
arguments.update(overriding_arguments)
on_what = f"{session.alias}.{extra}" if extra else session.alias
try:
logger.info(f"Running the callback {callback.__name__} on {on_what}")
callback(**arguments)
except Exception as e:
import traceback
traceback_msg = traceback.format_exc()
logger.error(f"The callback {callback} failed with error : {e}")
logger.error(f"Full traceback below :\n{traceback_msg}")
if self.do_dispatch:
return self.pipe.dispatcher(wrapper, "callbacks")
return wrapper
def get_level(self, selfish=False) -> int: def get_level(self, selfish=False) -> int:
"""Get the level of the step. """Get the level of the step.
...@@ -521,7 +547,7 @@ class BaseStep: ...@@ -521,7 +547,7 @@ class BaseStep:
if save_output: if save_output:
logger.save(f"Saving the generated {self.relative_name}{'.' + extra if extra else ''} output.") logger.save(f"Saving the generated {self.relative_name}{'.' + extra if extra else ''} output.")
disk_object.save(result) disk_object.save(result)
self.run_callbacks(session, extra, show_plots=False) self.run_callbacks(session, extra=extra, show_plots=False)
return result return result
...@@ -555,27 +581,6 @@ class BaseStep: ...@@ -555,27 +581,6 @@ class BaseStep:
return wrapper return wrapper
def run_callbacks(self, session, extra="", show_plots=True) -> None:
logger = logging.getLogger("callback_runner")
for callback_data in self.callbacks:
arguments = {"session": session, "extra": extra, "pipeline": self.pipeline}
if isinstance(callback_data, tuple):
callback = callback_data[0]
overriding_arguments = callback_data[1]
else:
callback = callback_data
overriding_arguments = {}
arguments.update(overriding_arguments)
try:
logger.info(f"Running the callback {callback.__name__}")
callback(**arguments)
except Exception as e:
import traceback
traceback_msg = traceback.format_exc()
logger.error(f"The callback {callback} failed with error : {e}")
logger.error("Full traceback below :\n" + traceback_msg)
def generate_doc(self) -> str: def generate_doc(self) -> str:
"""Generate a new docstring by inserting a chapter about Pipeline Args before the existing """Generate a new docstring by inserting a chapter about Pipeline Args before the existing
docstring of the function. docstring of the function.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment