Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions docs/data_models/version_1.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@
.. autopydantic_model:: mdio.schemas.v1.variable.Coordinate
:inherited-members: BaseModel

.. autopydantic_model:: mdio.schemas.v1.variable.CoordinateMetadata
:inherited-members: BaseModel

.. automodule:: mdio.schemas.metadata
:members: UserAttributes

Expand Down
26 changes: 18 additions & 8 deletions src/mdio/schemas/v1/variable.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,23 @@
from mdio.schemas.v1.stats import StatisticsMetadata
from mdio.schemas.v1.units import AllUnits

CoordinateMetadata = create_model(
"CoordinateMetadata",
**model_fields(AllUnits),
**model_fields(UserAttributes),
__base__=CamelCaseStrictModel,
__doc__="Reduced Metadata, perfect for simple Coordinates.",
)


class Coordinate(NamedArray):
"""An MDIO coordinate array with metadata."""
"""A simple MDIO Coordinate array with metadata.

data_type: ScalarType = Field(..., description="Data type of coordinate.")
metadata: list[AllUnits | UserAttributes] | None = Field(
default=None, description="Coordinate metadata."
)
For large or complex Coordinates, define a Variable instead.
"""

data_type: ScalarType = Field(..., description="Data type of Coordinate.")
metadata: CoordinateMetadata | None = Field(default=None, description="Coordinate Metadata.")


VariableMetadata = create_model(
Expand All @@ -40,14 +49,15 @@ class Coordinate(NamedArray):
**model_fields(StatisticsMetadata),
**model_fields(UserAttributes),
__base__=CamelCaseStrictModel,
__doc__="Complete Metadata for Variables and complex or large Coordinates.",
)


class Variable(NamedArray):
"""An MDIO variable that has coordinates and metadata."""
"""An MDIO Variable that has coordinates and metadata."""

coordinates: list[Coordinate] | list[str] | None = Field(
default=None,
description="Coordinates of the MDIO variable dimensions.",
description="Coordinates of the MDIO Variable dimensions.",
)
metadata: VariableMetadata | None = Field(default=None, description="Variable metadata.")
metadata: VariableMetadata | None = Field(default=None, description="Variable Metadata.")
Loading