Source code for simpleml.orm.dataset

"""
ORM module for dataset objects
"""

[docs]__author__ = "Elisha Yadgaran"
import logging from typing import Any, Dict, List, Optional from sqlalchemy import Column, ForeignKey, Index, UniqueConstraint from sqlalchemy.orm import relationship from simpleml.orm.persistable import ORMPersistable from simpleml.orm.sqlalchemy_types import GUID
[docs]LOGGER = logging.getLogger(__name__)
[docs]class ORMDataset(ORMPersistable): """ Base class for all Dataset objects. ------- Schema ------- pipeline_id: foreign key relation to the dataset pipeline used as input """
[docs] __tablename__ = "datasets"
[docs] pipeline_id = Column(GUID, ForeignKey("pipelines.id"))
[docs] pipeline = relationship( "ORMPipeline", enable_typechecks=False, foreign_keys=[pipeline_id]
)
[docs] __table_args__ = ( # Unique constraint for versioning UniqueConstraint("name", "version", name="dataset_name_version_unique"), # Index for searching through friendly names Index("dataset_name_index", "name"),
) @classmethod
[docs] def load_pipeline(cls, id: str): # avoid circular import from simpleml.orm.pipeline import ORMPipeline return cls.load_reference(ORMPipeline, id)