Skip to content

Commit

Permalink
KDP-1528 refactor instances, collections, and dataqueries
Browse files Browse the repository at this point in the history
  • Loading branch information
rosinaderks committed Oct 9, 2023
1 parent 8a99eb1 commit 7cfb79c
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 51 deletions.
6 changes: 3 additions & 3 deletions src/edr_pydantic/collections.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,22 @@
from typing import List
from typing import Optional

from .data_queries import CollectionDataQueries
from .data_queries import DataQueries
from .extent import Extent
from .link import Link
from .my_base_model import EDRBaseModel
from .parameter import Parameter


# TODO instances or collections as base?
class Collection(EDRBaseModel):
id: str
title: Optional[str] = None
description: Optional[str] = None
keywords: Optional[List[str]] = None
links: List[Link]
extent: Extent
data_queries: Optional[DataQueries] = None
data_queries: Optional[CollectionDataQueries] = None
# TODO According to req A.13 it should be CRSDetails object
crs: Optional[List[str]] = None
output_formats: Optional[List[str]] = None
Expand All @@ -33,7 +33,7 @@ class CollectionsModel(EDRBaseModel):

# For now, the instance metadata corresponds to the first collection metadata. So they have equal classes
class Instance(Collection):
pass
data_queries: Optional[DataQueries] = None


class InstancesModel(EDRBaseModel):
Expand Down
19 changes: 5 additions & 14 deletions src/edr_pydantic/data_queries.py
Original file line number Diff line number Diff line change
@@ -1,21 +1,9 @@
from typing import Optional
from typing import Union

from .link import EDRQueryLink
from .my_base_model import EDRBaseModel
from .variables import CorridorVariables
from .variables import CubeVariables
from .variables import ItemVariables
from .variables import RadiusVariables
from .variables import Variables


class EDRQueryLink(EDRBaseModel, extra="allow"):
href: str
rel: str
variables: Union[Variables, CubeVariables, CorridorVariables, ItemVariables, RadiusVariables]


# TODO Why not use the Link object, difference is required variables for this link?
class EDRQuery(EDRBaseModel):
link: EDRQueryLink

Expand All @@ -27,7 +15,10 @@ class DataQueries(EDRBaseModel):
cube: Optional[EDRQuery] = None
trajectory: Optional[EDRQuery] = None
corridor: Optional[EDRQuery] = None
# TODO Difference object/req: item, location, plus instances (only for collection)?
# TODO Difference object/req: item, location?
locations: Optional[EDRQuery] = None
items: Optional[EDRQuery] = None


class CollectionDataQueries(DataQueries):
instances: Optional[EDRQuery] = None
31 changes: 0 additions & 31 deletions src/edr_pydantic/instances.py

This file was deleted.

6 changes: 5 additions & 1 deletion src/edr_pydantic/link.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,9 @@ class Link(EDRBaseModel):
title: Optional[str] = None
length: Optional[int] = None
templated: Optional[bool] = None
# TODO Dataquery link separate from Link because variables is required there?
variables: Optional[Union[Variables, CubeVariables, CorridorVariables, ItemVariables, RadiusVariables]] = None


# For EDRQueryLink the variables element is required compared to the Link object
class EDRQueryLink(Link, extra="allow"):
variables: Union[Variables, CubeVariables, CorridorVariables, ItemVariables, RadiusVariables]
3 changes: 1 addition & 2 deletions tests/test_edr.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,9 @@
from pathlib import Path

import pytest
from edr_pydantic.collections import CollectionsModel
from pydantic import ValidationError

from src.edr_pydantic.collections import CollectionsModel


happy_cases = [
("knmi-example-collection.json", CollectionsModel),
Expand Down

0 comments on commit 7cfb79c

Please sign in to comment.