diff --git a/laborious/workflows/minimal_retrain.py b/laborious/workflows/minimal_retrain.py index f8f5151..339a6af 100644 --- a/laborious/workflows/minimal_retrain.py +++ b/laborious/workflows/minimal_retrain.py @@ -5,6 +5,7 @@ with workflow.unsafe.imports_passed_through(): from typing import Any from sientia_do.temporal.policies import retry_policy + from temporalio.exceptions import ApplicationError from laborious.activities.activities import Activities from laborious.utils.models.minio_dataframe_payload import MinioDataFramePayload @@ -87,7 +88,11 @@ class MinimalRetrain: storage_payload = MinioDataFramePayload.from_dict(storage_result) if not storage_payload.has_data(): - raise ValueError('No data returned from query') + raise ApplicationError( + 'No data returned from query', + type='NoDataReturnedError', + non_retryable=True, + ) experiment_response = await workflow.execute_activity_method( Activities.retrain_model, diff --git a/tests/laborious/workflows/test_minimal_retrain.py b/tests/laborious/workflows/test_minimal_retrain.py index 94d86da..856e840 100644 --- a/tests/laborious/workflows/test_minimal_retrain.py +++ b/tests/laborious/workflows/test_minimal_retrain.py @@ -1,6 +1,7 @@ from unittest.mock import ANY, AsyncMock, call, patch -from pytest import fixture, mark +from pytest import fixture, mark, raises +from temporalio.exceptions import ApplicationError from laborious.activities.activities import Activities from laborious.workflows.minimal_retrain import MinimalRetrain @@ -194,11 +195,12 @@ async def test_run_storage_fail(workflow_mock: AsyncMock, minimal_retrain: Minim ] ) - from pytest import raises - - with raises(ValueError, match='No data returned from query'): + with raises(ApplicationError, match='No data returned from query') as exc_info: await minimal_retrain.run(input_data) + assert exc_info.value.non_retryable is True + assert exc_info.value.type == 'NoDataReturnedError' + workflow_mock.execute_activity_method.assert_called_once_with( Activities.load_query_with_minio_offload, {