Coverage for src / autoencodix / data / _datasetcontainer.py: 94%
16 statements
« prev ^ index » next coverage.py v7.14.0, created at 2026-05-21 10:09 +0200
« prev ^ index » next coverage.py v7.14.0, created at 2026-05-21 10:09 +0200
1from typing import Optional, Union
2from dataclasses import dataclass
3from autoencodix.base._base_dataset import BaseDataset
6@dataclass
7class DatasetContainer:
8 """A container for datasets used in training, validation, and testing.
10 Attributes:
11 train : Dataset
12 The training dataset.
13 valid : Dataset
14 The validation dataset.
15 test : Dataset
16 The testing dataset.
17 """
19 train: Optional[Union[BaseDataset, None]] = None
20 valid: Optional[Union[BaseDataset, None]] = None
21 test: Optional[Union[BaseDataset, None]] = None
23 def __getitem__(self, key: str) -> BaseDataset:
24 """Allows dictionary-like access to datasets."""
25 if key not in {"train", "valid", "test"}:
26 raise KeyError(f"Invalid key: {key}. Must be 'train', 'valid', or 'test'.")
27 return getattr(self, key)
29 def __setitem__(self, key: str, value: BaseDataset):
30 """Allows dictionary-like assignment of datasets."""
31 if key not in {"train", "valid", "test"}:
32 raise KeyError(f"Invalid key: {key}. Must be 'train', 'valid', or 'test'.")
33 setattr(self, key, value)