Context manager handling the experiment’s creation and execution.
Parameters: yaml_file (str) – The experiment filename
A SafeExecutionContext should be used as a context manager to handle all possible errors in a clear way.
>>> with SafeExecutionContext(...) as ex: >>> ...
__exit__(self, exc_type: Optional[Type[BaseException]], exc_value: Optional[BaseException], tb: Optional[TracebackType])¶
Exit method for the context manager.
This method will catch any exception, and return True. This means that all exceptions produced in a SafeExecutionContext (used with the context manager) will not continue to raise.
Returns: True, as an exception should not continue to raise. Return type: Optional[bool]
preprocess(self, secrets: Optional[str] = None, download_ext: bool = True, install_ext: bool = False, import_ext: bool = True, check_tags: bool = True, **kwargs)¶
Preprocess the runnable file.
Looks for syntax errors, import errors, etc. Also injects the secrets into the runnables.
If this method runs and ends without exceptions, then the experiment is ok to be run. If this method raises an Error and the SafeExecutionContext is used as context manager, then the __exit__ method will be executed.
- secrets (Optional[str]) – Optional path to the secrets file
- install_ext (bool) – Whether to install the extensions or not. This process also downloads the remote extensions. Defaults to False
- install_ext – Whether to import the extensions or not. Defaults to True.
- check_tags (bool) – Whether to check that all tags are valid. Defaults to True.
A tuple containing the compiled Runnable and a dict containing the extensions the Runnable uses.
Tuple[Runnable, Dict[str, str]]
Exception– Depending on the error.
Check if valid YAML file and also load config
In this first parse the runnable does not get compiled because it could be a custom Runnable, so it needs the extensions to be imported first.
Check that all the tags are valid.
Parameters: content (str) – The content of the YAML file Raises: