Source code for openeo.udf.structured_data
"""
"""
# Note: this module was initially developed under the ``openeo-udf`` project (https://github.com/Open-EO/openeo-udf)
from __future__ import annotations
import builtins
from typing import Union
[docs]
class StructuredData:
"""
This class represents structured data that is produced by an UDF and can not be represented
as a raster or vector data cube. For example: the result of a statistical
computation.
Usage example::
>>> StructuredData([3, 5, 8, 13])
>>> StructuredData({"mean": 5, "median": 8})
>>> StructuredData([('col_1', 'col_2'), (1, 2), (2, 3)], type="table")
"""
def __init__(self, data: Union[list, dict], description: str = None, type: str = None):
self.data = data
self.type = type or builtins.type(data).__name__
self.description = description or self.type
def __repr__(self):
return f"<{type(self).__name__} with {self.type}>"
def to_dict(self) -> dict:
return dict(
data=self.data,
description=self.description,
type=self.type,
)
@classmethod
def from_dict(cls, data: dict) -> StructuredData:
return cls(
data=data["data"],
description=data.get("description"),
type=data.get("type")
)