Source code for sequifier.io.yaml
import numpy
import yaml
from pydantic import BaseModel
from sequifier.config.train_config import (
DotDict,
ModelSpecModel,
TrainingSpecModel,
TrainModel,
)
from sequifier.helpers import ModelWindowView, StoredWindowLayout
[docs]def represent_sequifier_object(dumper, data):
"""Represent sequifier config objects as plain YAML mappings."""
return dumper.represent_dict(data.__dict__)
[docs]def represent_dot_dict(dumper, data):
"""Represent DotDict as a plain YAML mapping."""
return dumper.represent_dict(dict(data))
[docs]def represent_numpy_float(dumper, data):
"""Represent NumPy floats as YAML floats."""
return dumper.represent_float(float(data))
[docs]def represent_numpy_int(dumper, data):
"""Represent NumPy integers as YAML integers."""
return dumper.represent_int(int(data))
[docs]class TrainModelDumper(yaml.Dumper):
"""YAML dumper for sequifier config objects."""
[docs] def increase_indent(self, flow=False, indentless=False):
"""Indent block sequences."""
return super(TrainModelDumper, self).increase_indent(flow, False)
TrainModelDumper.add_representer(TrainModel, represent_sequifier_object)
TrainModelDumper.add_representer(ModelSpecModel, represent_sequifier_object)
TrainModelDumper.add_representer(TrainingSpecModel, represent_sequifier_object)
TrainModelDumper.add_representer(StoredWindowLayout, represent_sequifier_object)
TrainModelDumper.add_representer(ModelWindowView, represent_sequifier_object)
TrainModelDumper.add_multi_representer(BaseModel, represent_sequifier_object)
TrainModelDumper.add_representer(DotDict, represent_dot_dict)
TrainModelDumper.add_representer(numpy.float64, represent_numpy_float)
TrainModelDumper.add_representer(
numpy.float32, represent_numpy_float
) # Add for other numpy float types if necessary
TrainModelDumper.add_representer(numpy.int64, represent_numpy_int)
TrainModelDumper.add_representer(
numpy.int32, represent_numpy_int
) # Add for other numpy int types if necessary