Source code for openeo_udf.server.data_model.variables_collection_schema

# -*- coding: utf-8 -*-
from typing import List, Union

from pydantic import BaseModel, Schema as pyField

__license__ = "Apache License, Version 2.0"
__author__ = "Soeren Gebbert"
__copyright__ = "Copyright 2018, Soeren Gebbert"
__maintainer__ = "Soeren Gebbert"
__email__ = "soerengebbert@googlemail.com"


[docs]class VariableModel(BaseModel): """This represents a variable definition with values and labels""" name: str = pyField(..., description="Name of the variable.") description: str = pyField(None, description="Description of the variable.") unit: str = pyField(..., description="The unit of the variable.", examples=[{"unit": "m"}, {"unit": "NDVI"}, {"unit": "Watt"}]) values: List[Union[float, int]] = pyField(..., description="The variable values that must be numeric.", examples=[{"values": [1, 2, 3]}]) labels: List[str] = pyField(..., description="Label for each variable value.", examples=[{"labels": ["a", "b", "c"]}])
[docs]class VariablesCollectionModel(BaseModel): """A collection of variables that all have the same size""" name: str = pyField(..., description="Name of the variables collection.") size: List[int] = pyField(..., description="The size of the variables collection. Each variable of " "this collection must have the same size. The size of " "the variable can be mutli-dimensional. However, variables are stored " "as one dimensional arrays and must be " "re-shaped in the multi-dimensional form for processing.", examples=[{"size": [100]}, {"size": [3, 3, 3]}]) number_of_variables: int = pyField(..., description="The number of variables in this collection.") variables: List[VariableModel] = pyField(..., description="A list of variables with the same size.")