Skip to content

Commit 1008775

Browse files
soxofaanPeter Van Bouwel
authored and
Peter Van Bouwel
committed
Issue Open-EO#346 some more ProcessArgs porting
for less boilerplate code and better error messages
1 parent c6ae0ff commit 1008775

File tree

1 file changed

+23
-28
lines changed

1 file changed

+23
-28
lines changed

openeo_driver/ProcessGraphDeserializer.py

+23-28
Original file line numberDiff line numberDiff line change
@@ -936,22 +936,18 @@ def save_result(args: Dict, env: EvalEnv) -> SaveResult: # TODO: return type no
936936

937937
@process_registry_100.add_function(spec=read_spec("openeo-processes/experimental/save_ml_model.json"))
938938
@process_registry_2xx.add_function(spec=read_spec("openeo-processes/experimental/save_ml_model.json"))
939-
def save_ml_model(args: dict, env: EvalEnv) -> MlModelResult:
940-
data: DriverMlModel = extract_arg(args, "data", process_id="save_ml_model")
941-
if not isinstance(data, DriverMlModel):
942-
raise ProcessParameterInvalidException(
943-
parameter="data", process="save_ml_model", reason=f"Invalid data type {type(data)!r} expected raster-cube."
944-
)
945-
options = args.get("options", {})
939+
def save_ml_model(args: ProcessArgs, env: EvalEnv) -> MlModelResult:
940+
data = args.get_required("data", expected_type=DriverMlModel)
941+
options = args.get_optional("options", default={}, expected_type=dict)
946942
return MlModelResult(ml_model=data, options=options)
947943

948944

949945
@process_registry_100.add_function(spec=read_spec("openeo-processes/experimental/load_ml_model.json"))
950946
@process_registry_2xx.add_function(spec=read_spec("openeo-processes/experimental/load_ml_model.json"))
951-
def load_ml_model(args: dict, env: EvalEnv) -> DriverMlModel:
947+
def load_ml_model(args: ProcessArgs, env: EvalEnv) -> DriverMlModel:
952948
if env.get(ENV_DRY_RUN_TRACER):
953949
return DriverMlModel()
954-
job_id = extract_arg(args, "id")
950+
job_id = args.get_required("id", expected_type=str)
955951
return env.backend_implementation.load_ml_model(job_id)
956952

957953

@@ -1430,17 +1426,17 @@ def filter_temporal(args: dict, env: EvalEnv) -> DriverDataCube:
14301426
extent = _extract_temporal_extent(args, field="extent", process_id="filter_temporal")
14311427
return cube.filter_temporal(start=extent[0], end=extent[1])
14321428

1429+
14331430
@process_registry_100.add_function(spec=read_spec("openeo-processes/1.x/proposals/filter_labels.json"))
14341431
@process_registry_2xx.add_function(spec=read_spec("openeo-processes/2.x/proposals/filter_labels.json"))
1435-
def filter_labels(args: dict, env: EvalEnv) -> DriverDataCube:
1436-
cube = extract_arg(args, 'data')
1437-
if not isinstance(cube, DriverDataCube):
1438-
raise ProcessParameterInvalidException(
1439-
parameter="data", process="filter_labels",
1440-
reason=f"Invalid data type {type(cube)!r} expected cube."
1441-
)
1432+
def filter_labels(args: ProcessArgs, env: EvalEnv) -> DriverDataCube:
1433+
cube: DriverDataCube = args.get_required("data", expected_type=DriverDataCube)
1434+
# TODO: validation that condition is a process graph construct
1435+
condition = args.get_required("condition", expected_type=dict)
1436+
dimension = args.get_required("dimension", expected_type=str)
1437+
context = args.get_optional("context", default=None)
1438+
return cube.filter_labels(condition=condition, dimension=dimension, context=context, env=env)
14421439

1443-
return cube.filter_labels(condition=extract_arg(args,"condition"),dimension=extract_arg(args,"dimension"),context=args.get("context",None),env=env)
14441440

14451441
def _extract_bbox_extent(args: dict, field="extent", process_id="filter_bbox", handle_geojson=False) -> dict:
14461442
extent = extract_arg(args, name=field, process_id=process_id)
@@ -1505,13 +1501,11 @@ def filter_spatial(args: ProcessArgs, env: EvalEnv) -> DriverDataCube:
15051501

15061502

15071503
@process
1508-
def filter_bands(args: Dict, env: EvalEnv) -> Union[DriverDataCube, DriverVectorCube]:
1509-
cube: Union[DriverDataCube, DriverVectorCube] = extract_arg(args, "data")
1510-
if not isinstance(cube, DriverDataCube) and not isinstance(cube, DriverVectorCube):
1511-
raise ProcessParameterInvalidException(
1512-
parameter="data", process="filter_bands", reason=f"Invalid data type {type(cube)!r} expected raster-cube."
1513-
)
1514-
bands = extract_arg(args, "bands", process_id="filter_bands")
1504+
def filter_bands(args: ProcessArgs, env: EvalEnv) -> Union[DriverDataCube, DriverVectorCube]:
1505+
cube: Union[DriverDataCube, DriverVectorCube] = args.get_required(
1506+
"data", expected_type=(DriverDataCube, DriverVectorCube)
1507+
)
1508+
bands = args.get_required("bands", expected_type=list)
15151509
return cube.filter_bands(bands=bands)
15161510

15171511

@@ -2325,10 +2319,11 @@ def load_result(args: ProcessArgs, env: EvalEnv) -> DriverDataCube:
23252319

23262320
@process_registry_100.add_function(spec=read_spec("openeo-processes/1.x/proposals/inspect.json"))
23272321
@process_registry_2xx.add_function(spec=read_spec("openeo-processes/2.x/proposals/inspect.json"))
2328-
def inspect(args: dict, env: EvalEnv):
2329-
data = extract_arg(args, "data")
2330-
message = args.get("message", "")
2331-
level = args.get("level", "info")
2322+
def inspect(args: ProcessArgs, env: EvalEnv):
2323+
data = args.get_required("data")
2324+
message = args.get_optional("message", default="")
2325+
code = args.get_optional("code", default="User")
2326+
level = args.get_optional("level", default="info")
23322327
if message:
23332328
_log.log(level=logging.getLevelName(level.upper()), msg=message)
23342329
data_message = str(data)

0 commit comments

Comments
 (0)