diff --git a/docs/source/changes.md b/docs/source/changes.md index 21daeaa85..34b8abaef 100644 --- a/docs/source/changes.md +++ b/docs/source/changes.md @@ -38,6 +38,7 @@ releases are available on [PyPI](https://pypi.org/project/pytask) and created. See https://github.com/fsspec/s3fs/issues/851 for more info. - {pull}`593` recreate `PythonNode`s every run since they carry the `_NoDefault` enum as the value whose state is `None`. +- {pull}`594` publishes `NodeLoadError`. ## 0.4.7 - 2024-03-19 diff --git a/src/_pytask/execute.py b/src/_pytask/execute.py index 7ef1dd009..afd93d99e 100644 --- a/src/_pytask/execute.py +++ b/src/_pytask/execute.py @@ -175,7 +175,7 @@ def pytask_execute_task_setup(session: Session, task: PTask) -> None: # noqa: C node.path.parent.mkdir(parents=True, exist_ok=True) -def _safe_load(node: PNode | PProvisionalNode, task: PTask, is_product: bool) -> Any: +def _safe_load(node: PNode | PProvisionalNode, task: PTask, *, is_product: bool) -> Any: try: return node.load(is_product=is_product) except Exception as e: # noqa: BLE001 @@ -193,11 +193,13 @@ def pytask_execute_task(session: Session, task: PTask) -> bool: kwargs = {} for name, value in task.depends_on.items(): - kwargs[name] = tree_map(lambda x: _safe_load(x, task, False), value) + kwargs[name] = tree_map(lambda x: _safe_load(x, task, is_product=False), value) for name, value in task.produces.items(): if name in parameters: - kwargs[name] = tree_map(lambda x: _safe_load(x, task, True), value) + kwargs[name] = tree_map( + lambda x: _safe_load(x, task, is_product=True), value + ) out = task.execute(**kwargs) diff --git a/src/pytask/__init__.py b/src/pytask/__init__.py index 41271e2cc..d7226f240 100644 --- a/src/pytask/__init__.py +++ b/src/pytask/__init__.py @@ -26,7 +26,7 @@ from _pytask.exceptions import CollectionError from _pytask.exceptions import ConfigurationError from _pytask.exceptions import ExecutionError -from _pytask.exceptions import NodeNotCollectedError +from _pytask.exceptions import NodeNotCollectedError, NodeLoadError from _pytask.exceptions import NodeNotFoundError from _pytask.exceptions import PytaskError from _pytask.exceptions import ResolvingDependenciesError @@ -105,6 +105,7 @@ "MarkDecorator", "MarkGenerator", "NodeInfo", + "NodeLoadError", "NodeNotCollectedError", "NodeNotFoundError", "PNode",