1
+ import dataclasses
1
2
import logging
3
+ from typing import List , NamedTuple , Optional , Union
4
+
2
5
import requests
3
- from typing import NamedTuple , List , Optional , Union
6
+
4
7
from openeo_driver .errors import OpenEOApiException
5
8
from openeo_driver .util .http import is_http_url
6
9
@@ -28,7 +31,8 @@ class ProcessGraphFlatDict(dict):
28
31
pass
29
32
30
33
31
- class ProcessDefinition (NamedTuple ):
34
+ @dataclasses .dataclass (frozen = True )
35
+ class ProcessDefinition :
32
36
"""
33
37
Like `UserDefinedProcessMetadata`, but with different defaults
34
38
(e.g. process graph and parameters are required).
@@ -43,8 +47,8 @@ class ProcessDefinition(NamedTuple):
43
47
# Definition what the process returns
44
48
returns : Optional [dict ] = None
45
49
46
- # TODO: official naming of these " processing parameter" related properties is undecided at the moment.
47
- # see https://github.com/Open-EO/openeo-api/pull/471#discussion_r1904253964
50
+ # Default processing options as defined by the Processing Parameters Extension
51
+ # (conformance class https://api.openeo.org/extensions/processing-parameters/0.1.0)
48
52
default_job_options : Optional [dict ] = None
49
53
default_synchronous_options : Optional [dict ] = None
50
54
@@ -111,18 +115,9 @@ def _get_process_definition_from_url(process_id: str, url: str) -> ProcessDefini
111
115
message = f"No valid process definition for { process_id !r} found at { url !r} ." ,
112
116
)
113
117
114
- # TODO: official property name for these "processing parameters" is undecided at the moment.
115
- # see https://github.com/Open-EO/openeo-api/pull/471#discussion_r1904253964
116
- if "default_job_parameters" in spec :
117
- _log .warning ("Extracting experimental 'default_job_parameters' from process definition." )
118
- default_job_options = spec ["default_job_parameters" ]
119
- else :
120
- default_job_options = None
121
- if "default_synchronous_parameters" in spec :
122
- _log .warning ("Extracting experimental 'default_synchronous_parameters' from process definition." )
123
- default_synchronous_options = spec ["default_synchronous_parameters" ]
124
- else :
125
- default_synchronous_options = None
118
+ # Support for fields from Processing Parameters Extension
119
+ default_job_options = spec .get ("default_job_options" , None )
120
+ default_synchronous_options = spec .get ("default_synchronous_options" , None )
126
121
127
122
return ProcessDefinition (
128
123
id = process_id ,
0 commit comments