Skip to content

Commit 8166b08

Browse files
Merge pull request #25 from KNMI/parameters
Enhance Parameters functionality
2 parents c3fd7f3 + 7143545 commit 8166b08

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

src/edr_pydantic/parameter.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,17 @@ def must_not_have_unit_if_observed_property_has_categories(self):
4141
return self
4242

4343

44-
Parameters = RootModel[Dict[str, Parameter]]
44+
class Parameters(RootModel):
45+
root: Dict[str, Parameter]
46+
47+
def __iter__(self):
48+
return iter(self.root)
49+
50+
def __getitem__(self, key):
51+
return self.root[key]
52+
53+
def get(self, key, default=None):
54+
return self.root.get(key, default)
4555

4656

4757
class ParameterGroup(EdrBaseModel, extra="allow"):

tests/test_edr.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,13 @@ def test_data_type_alias():
6969
p.model_dump_json(exclude_none=True, by_alias=True)
7070
== '{"type":"Parameter","data-type":"integer","observedProperty":{"label":"Wind"}}'
7171
)
72+
73+
74+
def test_parameters_root_model():
75+
file = Path(__file__).parent.resolve() / "test_data" / "parameter-with-data-type.json"
76+
with open(file, "r") as f:
77+
parameters = Parameters.model_validate_json(f.read())
78+
79+
assert parameters["str-parameter"].observedProperty.label == "string parameter"
80+
assert parameters.get("int-parameter").observedProperty.label == "int parameter"
81+
assert len([p for p in parameters]) == 3

0 commit comments

Comments
 (0)