Skip to content

Commit d37cc7e

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 2b607e2 commit d37cc7e

File tree

1 file changed

+17
-43
lines changed

1 file changed

+17
-43
lines changed

openeo_driver/ProcessGraphDeserializer.py

+17-43
Original file line numberDiff line numberDiff line change
@@ -1360,14 +1360,10 @@ def aggregate_spatial(args: ProcessArgs, env: EvalEnv) -> DriverDataCube:
13601360

13611361

13621362
@process
1363-
def mask(args: dict, env: EvalEnv) -> DriverDataCube:
1364-
cube = extract_arg(args, 'data')
1365-
if not isinstance(cube, DriverDataCube):
1366-
raise ProcessParameterInvalidException(
1367-
parameter="data", process="mask", reason=f"Invalid data type {type(cube)!r} expected raster-cube."
1368-
)
1369-
mask = extract_arg(args, 'mask')
1370-
replacement = args.get('replacement', None)
1363+
def mask(args: ProcessArgs, env: EvalEnv) -> DriverDataCube:
1364+
cube: DriverDataCube = args.get_required("data", expected_type=DriverDataCube)
1365+
mask: DriverDataCube = args.get_required("mask", expected_type=DriverDataCube)
1366+
replacement = args.get_optional("replacement", default=None)
13711367
return cube.mask(mask=mask, replacement=replacement)
13721368

13731369

@@ -1471,24 +1467,16 @@ def _extract_bbox_extent(args: dict, field="extent", process_id="filter_bbox", h
14711467

14721468

14731469
@process
1474-
def filter_bbox(args: Dict, env: EvalEnv) -> DriverDataCube:
1475-
cube = extract_arg(args, 'data')
1476-
if not isinstance(cube, DriverDataCube):
1477-
raise ProcessParameterInvalidException(
1478-
parameter="data", process="filter_bbox", reason=f"Invalid data type {type(cube)!r} expected raster-cube."
1479-
)
1470+
def filter_bbox(args: ProcessArgs, env: EvalEnv) -> DriverDataCube:
1471+
cube: DriverDataCube = args.get_required("data", expected_type=DriverDataCube)
14801472
spatial_extent = _extract_bbox_extent(args, "extent", process_id="filter_bbox")
14811473
return cube.filter_bbox(**spatial_extent)
14821474

14831475

14841476
@process
1485-
def filter_spatial(args: Dict, env: EvalEnv) -> DriverDataCube:
1486-
cube = extract_arg(args, 'data')
1487-
geometries = extract_arg(args, 'geometries')
1488-
if not isinstance(cube, DriverDataCube):
1489-
raise ProcessParameterInvalidException(
1490-
parameter="data", process="filter_spatial", reason=f"Invalid data type {type(cube)!r} expected raster-cube."
1491-
)
1477+
def filter_spatial(args: ProcessArgs, env: EvalEnv) -> DriverDataCube:
1478+
cube: DriverDataCube = args.get_required("data", expected_type=DriverDataCube)
1479+
geometries = args.get_required("geometries")
14921480

14931481
if isinstance(geometries, dict):
14941482
if "type" in geometries and geometries["type"] != "GeometryCollection":
@@ -1974,14 +1962,10 @@ def get_geometries(args: Dict, env: EvalEnv) -> Union[DelayedVector, dict]:
19741962
.param('data', description="A raster data cube.", schema={"type": "object", "subtype": "raster-cube"})
19751963
.returns("vector-cube", schema={"type": "object", "subtype": "vector-cube"})
19761964
)
1977-
def raster_to_vector(args: Dict, env: EvalEnv):
1978-
image_collection = extract_arg(args, 'data')
1979-
if not isinstance(image_collection, DriverDataCube):
1980-
raise ProcessParameterInvalidException(
1981-
parameter="data", process="raster_to_vector",
1982-
reason=f"Invalid data type {type(image_collection)!r} expected raster-cube."
1983-
)
1984-
return image_collection.raster_to_vector()
1965+
def raster_to_vector(args: ProcessArgs, env: EvalEnv):
1966+
cube: DriverDataCube = args.get_required("data", expected_type=DriverDataCube)
1967+
# TODO: raster_to_vector is only defined on GeopysparkDataCube, not DriverDataCube
1968+
return cube.raster_to_vector()
19851969

19861970

19871971
@non_standard_process(
@@ -2221,13 +2205,8 @@ def discard_result(args: ProcessArgs, env: EvalEnv):
22212205

22222206
@process_registry_100.add_function(spec=read_spec("openeo-processes/experimental/mask_scl_dilation.json"))
22232207
@process_registry_2xx.add_function(spec=read_spec("openeo-processes/experimental/mask_scl_dilation.json"))
2224-
def mask_scl_dilation(args: Dict, env: EvalEnv):
2225-
cube: DriverDataCube = extract_arg(args, 'data')
2226-
if not isinstance(cube, DriverDataCube):
2227-
raise ProcessParameterInvalidException(
2228-
parameter="data", process="mask_scl_dilation",
2229-
reason=f"Invalid data type {type(cube)!r} expected raster-cube."
2230-
)
2208+
def mask_scl_dilation(args: ProcessArgs, env: EvalEnv):
2209+
cube: DriverDataCube = args.get_required("data", expected_type=DriverDataCube)
22312210
if hasattr(cube, "mask_scl_dilation"):
22322211
the_args = args.copy()
22332212
del the_args["data"]
@@ -2258,13 +2237,8 @@ def to_scl_dilation_mask(args: ProcessArgs, env: EvalEnv):
22582237

22592238
@process_registry_100.add_function(spec=read_spec("openeo-processes/experimental/mask_l1c.json"))
22602239
@process_registry_2xx.add_function(spec=read_spec("openeo-processes/experimental/mask_l1c.json"))
2261-
def mask_l1c(args: Dict, env: EvalEnv):
2262-
cube: DriverDataCube = extract_arg(args, 'data')
2263-
if not isinstance(cube, DriverDataCube):
2264-
raise ProcessParameterInvalidException(
2265-
parameter="data", process="mask_l1c",
2266-
reason=f"Invalid data type {type(cube)!r} expected raster-cube."
2267-
)
2240+
def mask_l1c(args: ProcessArgs, env: EvalEnv):
2241+
cube: DriverDataCube = args.get_required("data", expected_type=DriverDataCube)
22682242
if hasattr(cube, "mask_l1c"):
22692243
return cube.mask_l1c()
22702244
else:

0 commit comments

Comments
 (0)