Skip to content

Commit 719b2ab

Browse files
authored
fix(plugins): dedl required queryables (#2241)
1 parent a88b1e4 commit 719b2ab

3 files changed

Lines changed: 16 additions & 9 deletions

File tree

eodag/plugins/search/qssearch.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2279,7 +2279,9 @@ def discover_queryables(
22792279
# convert provider json field definition to python
22802280
default = kwargs.get(param, json_mtd.get("default"))
22812281
annotated_def = json_field_definition_to_python(
2282-
json_mtd, default_value=default
2282+
json_mtd,
2283+
default_value=default,
2284+
required=json_param in resp_as_json.get("required", []),
22832285
)
22842286
field_definition = get_args(annotated_def)
22852287

eodag/types/__init__.py

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -252,15 +252,10 @@ def json_field_definition_to_python(
252252
else:
253253
field_default = default_value
254254

255-
metadata = [
256-
python_type,
257-
Field(field_default, **field_type_kwargs),
258-
]
259-
255+
field = Field(field_default, **field_type_kwargs)
260256
if required:
261-
metadata.append("json_schema_required")
262-
263-
return Annotated[tuple(metadata)]
257+
field.metadata.append("json_schema_required")
258+
return Annotated[python_type, field]
264259

265260

266261
def python_field_definition_to_json(

tests/units/test_search_plugins.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2436,12 +2436,14 @@ def test_plugins_search_dedl_discover_queryables(self, mock_request):
24362436
self.assertEqual(get_origin(base_type), list)
24372437
literal_args = get_args(base_type)
24382438
self.assertEqual(literal_args, (Literal["00:00"],))
2439+
self.assertIn("json_schema_required", args[1].metadata)
24392440

24402441
# Check that "start" has type Annotated[str, ...]
24412442
self.assertIn("start", queryables_dedl)
24422443
annotated_type = queryables_dedl["start"]
24432444
args = get_args(annotated_type)
24442445
self.assertEqual(args[0], str)
2446+
self.assertNotIn("json_schema_required", args[1].metadata)
24452447

24462448
# Check that "geom" has type Annotated[Union[str, dict[str, float], BaseGeometry], ...]
24472449
self.assertIn("geom", queryables_dedl)
@@ -2459,6 +2461,14 @@ def test_plugins_search_dedl_discover_queryables(self, mock_request):
24592461
if isinstance(arg, type)
24602462
)
24612463
)
2464+
self.assertTrue(args[1].is_required())
2465+
2466+
# Check that "bbox" has type fieldInfo with "required": "True" and json_schema_required in metadata
2467+
self.assertIn("bbox", queryables_dedl)
2468+
annotated_type = queryables_dedl["bbox"]
2469+
args = get_args(annotated_type)
2470+
self.assertTrue(args[1].is_required())
2471+
self.assertIn("json_schema_required", args[1].metadata)
24622472

24632473
@mock.patch(
24642474
"eodag.plugins.search.qssearch.QueryStringSearch._request", autospec=True

0 commit comments

Comments
 (0)