Source code for openeo_udf.server.data_model.udf_schemas
# -*- coding: utf-8 -*-
from typing import List
from pydantic import BaseModel, Schema
from openeo_udf.server.data_model.machine_learn_schema import MachineLearnModel
from openeo_udf.server.data_model.structured_data_schema import StructuredDataModel
from openeo_udf.server.data_model.data_collection_schema import DataCollectionModel
__license__ = "Apache License, Version 2.0"
__author__ = "Soeren Gebbert"
__copyright__ = "Copyright 2018, Soeren Gebbert"
__maintainer__ = "Soeren Gebbert"
__email__ = "soerengebbert@googlemail.com"
[docs]class UdfDataModel(BaseModel):
"""
The UDF data object that stores data cubes, simple feature collection and machine learn models.
This object is argument for the UDF as well as their return value.
"""
user_context: dict = Schema({}, description="A dictionary that contains the user context, "
"like function parameters or configuration of an algorithm.")
server_context: dict = Schema({}, description="A dictionary that contains the server context")
data_collection: DataCollectionModel = Schema([], description="The data collection with data cubes and "
"simple feature collections.")
structured_data_list: List[StructuredDataModel] = Schema([], description="A list of structured data objects "
"that contain processing results that "
"cant be represented "
"by raster- or feature "
"collection tiles.")
machine_learn_models: List[MachineLearnModel] = Schema([], description="A list of machine learn models.")
# The following classes are used to implement the UDF test server POST endpoint
[docs]class UdfCodeModel(BaseModel):
"""
The object that stores the UDF code and language specification. This class is not part of the UDF
API but used to create the UDF test server."
"""
language: str = Schema(..., description="The language of UDF code")
source: str = Schema(..., description="The UDF source code as a string")
[docs]class UdfRequestModel(BaseModel):
"""
The udf request JSON specification. This class is not part of the UDF API but used to create the UDF test server.
"""
code: UdfCodeModel
data: UdfDataModel
[docs]class ErrorResponseModel(BaseModel):
"""
The error message. This class is not part of the UDF API but used to create the UDF test server."
"""
message: str = Schema(..., description="The error message")
traceback: str = Schema(None, description="The optional python traceback")