From 04bc791177526cbeb5494af5e579d7cabe415d14 Mon Sep 17 00:00:00 2001 From: Stefaan Lippens Date: Fri, 11 Oct 2024 13:59:46 +0200 Subject: [PATCH] Issue #604/#644 explicitly use default value from schema as fallback improves long term traceability and observability --- openeo/extra/job_management.py | 10 +++++++--- tests/extra/test_job_management.py | 4 ++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/openeo/extra/job_management.py b/openeo/extra/job_management.py index d10be9ac6..7dd43bfed 100644 --- a/openeo/extra/job_management.py +++ b/openeo/extra/job_management.py @@ -895,7 +895,7 @@ def create_job_db(path: Union[str, Path], df: pd.DataFrame, *, on_exists: str = class UDPJobFactory: """ Batch job factory based on a parameterized process definition - (e.g a user-defined process (UDP) or a remote process definitions), + (e.g a user-defined process (UDP) or a remote process definition), to be used together with :py:class:`MultiBackendJobManager`. """ @@ -946,9 +946,13 @@ def start_job(self, row: pd.Series, connection: Connection, **_) -> BatchJob: elif name in self._parameter_defaults: # Fallback on default values from constructor value = self._parameter_defaults[name] + elif parameter.has_default(): + # Explicitly use default value from parameter schema + value = parameter.default + elif parameter.optional: + # Skip optional parameters without any fallback default value + continue else: - if parameter.optional: - continue raise ValueError(f"Missing required parameter {name!r} for process {self._process_id!r}") # TODO: validation or normalization based on schema? diff --git a/tests/extra/test_job_management.py b/tests/extra/test_job_management.py index 8e57212ae..6a93b26b1 100644 --- a/tests/extra/test_job_management.py +++ b/tests/extra/test_job_management.py @@ -1041,7 +1041,7 @@ def test_basic(self, con120, dummy_backend): "increment1": { "process_id": "increment", "namespace": "https://remote.test/increment.json", - "arguments": {"data": 123}, + "arguments": {"data": 123, "increment": 1}, "result": True, } }, @@ -1052,7 +1052,7 @@ def test_basic(self, con120, dummy_backend): @pytest.mark.parametrize( ["parameter_defaults", "row", "expected_arguments"], [ - (None, {"data": 123}, {"data": 123}), + (None, {"data": 123}, {"data": 123, "increment": 1}), (None, {"data": 123, "increment": 5}, {"data": 123, "increment": 5}), ({"increment": 5}, {"data": 123}, {"data": 123, "increment": 5}), ({"increment": 5}, {"data": 123, "increment": 1000}, {"data": 123, "increment": 1000}),