Skip to content

Commit 2eea6dc

Browse files
committed
Issue#550/#551 fine-tuning: do param sniffing for correct "target" param name
Also avoid local import ref: Open-EO/openeo-python-driver#274
1 parent d1c68f8 commit 2eea6dc

File tree

2 files changed

+49
-8
lines changed

2 files changed

+49
-8
lines changed

openeo/rest/vectorcube.py

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import shapely.geometry.base
99

10+
import openeo.rest.datacube
1011
from openeo.api.process import Parameter
1112
from openeo.internal.documentation import openeo_process
1213
from openeo.internal.graph_building import PGNode
@@ -59,7 +60,7 @@ def process(
5960
**kwargs,
6061
) -> VectorCube:
6162
"""
62-
Generic helper to create a new DataCube by applying a process.
63+
Generic helper to create a new VectorCube by applying a process.
6364
6465
:param process_id: process id of the process.
6566
:param args: argument dictionary for the process.
@@ -559,7 +560,7 @@ def apply_dimension(
559560
)
560561
return self.process(process_id="apply_dimension", arguments=arguments)
561562

562-
def vector_to_raster(self, target_data_cube):
563+
def vector_to_raster(self, target) -> openeo.rest.datacube.DataCube:
563564
"""
564565
Converts this vector cube into a :py:class:`~openeo.rest.datacube.DataCube`.
565566
The bounding polygon of homogenous areas of pixels is constructed.
@@ -570,7 +571,21 @@ def vector_to_raster(self, target_data_cube):
570571
571572
.. versionadded:: 0.28.0
572573
"""
573-
from openeo.rest.datacube import DataCube
574-
575-
pg_node = PGNode(process_id="vector_to_raster", arguments={"data": self, "target_data_cube": target_data_cube})
576-
return DataCube(pg_node, connection=self._connection, metadata=self.metadata)
574+
# TODO: this parameter sniffing is a temporary workaround until
575+
# the `target` parameter name rename has fully settled
576+
# https://github.com/Open-EO/openeo-python-driver/issues/274
577+
# After that has settled, it is still useful to verify assumptions about this non-standard process.
578+
try:
579+
process_spec = self.connection.describe_process("vector_to_raster")
580+
target_parameter = process_spec["parameters"][1]["name"]
581+
assert "target" in target_parameter
582+
except Exception:
583+
target_parameter = "target"
584+
585+
pg_node = PGNode(
586+
process_id="vector_to_raster",
587+
arguments={"data": self, target_parameter: target},
588+
)
589+
# TODO: the correct metadata has to be passed here:
590+
# replace "geometry" dimension with spatial dimensions of the target cube
591+
return openeo.rest.datacube.DataCube(pg_node, connection=self._connection, metadata=self.metadata)

tests/rest/datacube/test_vectorcube.py

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -646,7 +646,30 @@ def test_vectorcube_execute_batch_validation(
646646
assert caplog.messages == []
647647

648648

649-
def test_vector_to_raster(s2cube, vector_cube):
649+
@pytest.mark.parametrize(
650+
["target_parameter", "expected_target_parameter"],
651+
[
652+
(None, "target"),
653+
("target_data_cube", "target_data_cube"),
654+
("target", "target"),
655+
],
656+
)
657+
def test_vector_to_raster(s2cube, vector_cube, requests_mock, target_parameter, expected_target_parameter):
658+
if target_parameter:
659+
requests_mock.get(
660+
API_URL + "/processes",
661+
json={
662+
"processes": [
663+
{
664+
"id": "vector_to_raster",
665+
"parameters": [
666+
{"name": "data"},
667+
{"name": target_parameter},
668+
],
669+
}
670+
]
671+
},
672+
)
650673
raster_cube = vector_cube.vector_to_raster(s2cube)
651674
assert raster_cube.flat_graph() == {
652675
"loadgeojson1": {
@@ -659,7 +682,10 @@ def test_vector_to_raster(s2cube, vector_cube):
659682
},
660683
"vectortoraster1": {
661684
"process_id": "vector_to_raster",
662-
"arguments": {"data": {"from_node": "loadgeojson1"}, "target_data_cube": {"from_node": "loadcollection1"}},
685+
"arguments": {
686+
"data": {"from_node": "loadgeojson1"},
687+
expected_target_parameter: {"from_node": "loadcollection1"},
688+
},
663689
"result": True,
664690
},
665691
}

0 commit comments

Comments
 (0)