Skip to content

omnipy.components.nested.models

Models for representing nested datasets and enumerated list structures.

CLASS DESCRIPTION
EnumeratedListModel

Convert plain lists into explicitly enumerated index/value tuples.

EnumeratedListOfTuplesModel

Store an ordered list of index/value tuples with strict sequence checks.

ListAsNestedDatasetModel

Represent list-like input as a nested dataset structure.

ATTRIBUTE DESCRIPTION
DatasetT

DatasetT module-attribute

DatasetT = TypeVar('DatasetT')

EnumeratedListModel

Bases: Model[EnumeratedListOfTuplesModel | list[object] | list[dict[str, object]]]


              flowchart BT
              omnipy.components.nested.models.EnumeratedListModel[EnumeratedListModel]
              omnipy.data.model.Model[Model]
              omnipy.data._mixins.display.ModelDisplayMixin[ModelDisplayMixin]
              omnipy.data._mixins.display.BaseDisplayMixin[BaseDisplayMixin]
              omnipy.data._data_class_creator.DataClassBase[DataClassBase]

                              omnipy.data.model.Model --> omnipy.components.nested.models.EnumeratedListModel
                                omnipy.data._mixins.display.ModelDisplayMixin --> omnipy.data.model.Model
                                omnipy.data._mixins.display.BaseDisplayMixin --> omnipy.data._mixins.display.ModelDisplayMixin
                

                omnipy.data._data_class_creator.DataClassBase --> omnipy.data.model.Model
                
                omnipy.util.pydantic.GenericModel --> omnipy.data.model.Model
                



              click omnipy.components.nested.models.EnumeratedListModel href "" "omnipy.components.nested.models.EnumeratedListModel"
              click omnipy.data.model.Model href "" "omnipy.data.model.Model"
              click omnipy.data._mixins.display.ModelDisplayMixin href "" "omnipy.data._mixins.display.ModelDisplayMixin"
              click omnipy.data._mixins.display.BaseDisplayMixin href "" "omnipy.data._mixins.display.BaseDisplayMixin"
              click omnipy.data._data_class_creator.DataClassBase href "" "omnipy.data._data_class_creator.DataClassBase"
            

Convert plain lists into explicitly enumerated index/value tuples.

Incoming list-like structures are normalized to :class:EnumeratedListOfTuplesModel using enumerate.

Source code in src/omnipy/components/nested/models.py
class EnumeratedListModel(Model[EnumeratedListOfTuplesModel | list[object]
                                | list[dict[str, object]]]):
    """Convert plain lists into explicitly enumerated index/value tuples.

    Incoming list-like structures are normalized to
    :class:`EnumeratedListOfTuplesModel` using ``enumerate``.
    """
    @classmethod
    def _parse_data(
        cls, data: EnumeratedListOfTuplesModel | list[object] | list[dict[str, object]]
    ) -> EnumeratedListOfTuplesModel:
        if not isinstance(data, EnumeratedListOfTuplesModel):
            return EnumeratedListOfTuplesModel(list(enumerate(data)))  # pyright: ignore
        else:
            return data

EnumeratedListOfTuplesModel

Bases: Model[list[tuple[int, object]]]


              flowchart BT
              omnipy.components.nested.models.EnumeratedListOfTuplesModel[EnumeratedListOfTuplesModel]
              omnipy.data.model.Model[Model]
              omnipy.data._mixins.display.ModelDisplayMixin[ModelDisplayMixin]
              omnipy.data._mixins.display.BaseDisplayMixin[BaseDisplayMixin]
              omnipy.data._data_class_creator.DataClassBase[DataClassBase]

                              omnipy.data.model.Model --> omnipy.components.nested.models.EnumeratedListOfTuplesModel
                                omnipy.data._mixins.display.ModelDisplayMixin --> omnipy.data.model.Model
                                omnipy.data._mixins.display.BaseDisplayMixin --> omnipy.data._mixins.display.ModelDisplayMixin
                

                omnipy.data._data_class_creator.DataClassBase --> omnipy.data.model.Model
                
                omnipy.util.pydantic.GenericModel --> omnipy.data.model.Model
                



              click omnipy.components.nested.models.EnumeratedListOfTuplesModel href "" "omnipy.components.nested.models.EnumeratedListOfTuplesModel"
              click omnipy.data.model.Model href "" "omnipy.data.model.Model"
              click omnipy.data._mixins.display.ModelDisplayMixin href "" "omnipy.data._mixins.display.ModelDisplayMixin"
              click omnipy.data._mixins.display.BaseDisplayMixin href "" "omnipy.data._mixins.display.BaseDisplayMixin"
              click omnipy.data._data_class_creator.DataClassBase href "" "omnipy.data._data_class_creator.DataClassBase"
            

Store an ordered list of index/value tuples with strict sequence checks.

The model asserts that tuple indices are contiguous and start at zero, preserving explicit positional semantics for nested list conversion.

Source code in src/omnipy/components/nested/models.py
class EnumeratedListOfTuplesModel(Model[list[tuple[int, object]]]):
    """Store an ordered list of index/value tuples with strict sequence checks.

    The model asserts that tuple indices are contiguous and start at zero,
    preserving explicit positional semantics for nested list conversion.
    """
    @classmethod
    def _parse_data(cls, data: list[tuple[int, object]]) -> list[tuple[int, object]]:
        for expected_index, (actual_index, _) in enumerate(data):
            if expected_index != actual_index:
                raise ValueError(f'Indices are not sequential starting from 0: '
                                 f'expected {expected_index}, got {actual_index}')
        return data

ListAsNestedDatasetModel

Bases: _ListAsNestedDatasetModel


              flowchart BT
              omnipy.components.nested.models.ListAsNestedDatasetModel[ListAsNestedDatasetModel]
              omnipy.components.nested.models._ListAsNestedDatasetModel[_ListAsNestedDatasetModel]
              omnipy.components.general.models.Chain2[Chain2]
              omnipy.components.general.models._ChainMixin[_ChainMixin]
              omnipy.data.model.Model[Model]
              omnipy.data._mixins.display.ModelDisplayMixin[ModelDisplayMixin]
              omnipy.data._mixins.display.BaseDisplayMixin[BaseDisplayMixin]
              omnipy.data._data_class_creator.DataClassBase[DataClassBase]

                              omnipy.components.nested.models._ListAsNestedDatasetModel --> omnipy.components.nested.models.ListAsNestedDatasetModel
                                omnipy.components.general.models.Chain2 --> omnipy.components.nested.models._ListAsNestedDatasetModel
                                omnipy.components.general.models._ChainMixin --> omnipy.components.general.models.Chain2
                
                omnipy.data.model.Model --> omnipy.components.general.models.Chain2
                                omnipy.data._mixins.display.ModelDisplayMixin --> omnipy.data.model.Model
                                omnipy.data._mixins.display.BaseDisplayMixin --> omnipy.data._mixins.display.ModelDisplayMixin
                

                omnipy.data._data_class_creator.DataClassBase --> omnipy.data.model.Model
                
                omnipy.util.pydantic.GenericModel --> omnipy.data.model.Model
                





              click omnipy.components.nested.models.ListAsNestedDatasetModel href "" "omnipy.components.nested.models.ListAsNestedDatasetModel"
              click omnipy.components.nested.models._ListAsNestedDatasetModel href "" "omnipy.components.nested.models._ListAsNestedDatasetModel"
              click omnipy.components.general.models.Chain2 href "" "omnipy.components.general.models.Chain2"
              click omnipy.components.general.models._ChainMixin href "" "omnipy.components.general.models._ChainMixin"
              click omnipy.data.model.Model href "" "omnipy.data.model.Model"
              click omnipy.data._mixins.display.ModelDisplayMixin href "" "omnipy.data._mixins.display.ModelDisplayMixin"
              click omnipy.data._mixins.display.BaseDisplayMixin href "" "omnipy.data._mixins.display.BaseDisplayMixin"
              click omnipy.data._data_class_creator.DataClassBase href "" "omnipy.data._data_class_creator.DataClassBase"
            

Represent list-like input as a nested dataset structure.

The model acts as a typed bridge between list representations and recursive nested dataset forms used throughout nested components.

Source code in src/omnipy/components/nested/models.py
class ListAsNestedDatasetModel(_ListAsNestedDatasetModel):
    """Represent list-like input as a nested dataset structure.

    The model acts as a typed bridge between list representations and recursive
    nested dataset forms used throughout nested components.
    """

    ...