Esempio n. 1
0
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"]
                                }])
Esempio n. 2
0
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.")
Esempio n. 3
0
class FTGField(BaseRepoModel):
    field_type: str
    subfields: FTGSubfields = pyField(default_factory=FTGSubfields)
    field_annotation: FTGFieldAnnotation = pyField(default_factory=FTGFieldAnnotation)

    @classmethod
    def from_resource(cls, resource: t.Type[Field]) -> 'FTGField':
        safe_mod = resource.__module__.split('.')[0].replace('_', '').lower()

        ftg_field =  cls(fieldType = resource._RESOURCE_ID)

        for p in resource._SUB_FIELDS:
            ftg_field.subfields.subfield.append(
                FTGSubfield(
                    name=to_camel(p.name),
                    type=field_type_str(p.field_type)
                )
            )

        return ftg_field
Esempio n. 4
0
class FTGPatch(BaseRepoModel):
    """
    FTG Patch
    """
    stitches_version: str = '0.6'
    field_additions: t.List[FTGFieldAddition] = pyField(default_factory=list)
Esempio n. 5
0
class FTGFieldAnnotation(BaseRepoModel):
    max_serialized_size_bytes: t.Any = pyField(default_factory=default_mssb)
    nested_types: dict = pyField(default_factory=dict)
Esempio n. 6
0
class FTGSubfields(BaseRepoModel):
    subfield: t.List[FTGSubfield] = pyField(default_factory=list)