Source code for panther.tuner.SkAutoTuner.Configs.TuningConfigs

from typing import Callable, Iterator, List

from .LayerConfig import LayerConfig


[docs] class TuningConfigs: """ Collection of LayerConfig objects for tuning multiple layer groups. """
[docs] def __init__(self, configs: List[LayerConfig]): """ Initialize with a list of layer configurations. Args: configs: List of LayerConfig objects """ self.configs = configs
def __repr__(self): return f"TuningConfigs(configs={self.configs})" def __len__(self) -> int: return len(self.configs) def __getitem__(self, index: int) -> LayerConfig: return self.configs[index] def __iter__(self) -> Iterator[LayerConfig]: return iter(self.configs)
[docs] def add(self, config: LayerConfig) -> "TuningConfigs": """Add a LayerConfig, returning a new TuningConfigs.""" return TuningConfigs(self.configs + [config])
[docs] def remove(self, index: int) -> "TuningConfigs": """Remove a LayerConfig by index, returning a new TuningConfigs.""" if index < 0 or index >= len(self.configs): raise IndexError(f"Config index {index} out of range") new_configs = self.configs.copy() new_configs.pop(index) return TuningConfigs(new_configs)
[docs] def replace(self, index: int, config: LayerConfig) -> "TuningConfigs": """Replace a LayerConfig at index, returning a new TuningConfigs.""" if index < 0 or index >= len(self.configs): raise IndexError(f"Config index {index} out of range") new_configs = self.configs.copy() new_configs[index] = config return TuningConfigs(new_configs)
[docs] def clone(self) -> "TuningConfigs": """Create a deep copy of this TuningConfigs.""" return TuningConfigs([config.clone() for config in self.configs])
[docs] def merge(self, other: "TuningConfigs") -> "TuningConfigs": """Merge with another TuningConfigs, returning a new TuningConfigs.""" return TuningConfigs(self.configs + other.configs)
[docs] def filter(self, predicate: Callable[[LayerConfig], bool]) -> "TuningConfigs": """Filter configs by predicate, returning a new TuningConfigs.""" return TuningConfigs([config for config in self.configs if predicate(config)])
[docs] def map(self, transform: Callable[[LayerConfig], LayerConfig]) -> "TuningConfigs": """Apply a transformation to each config, returning a new TuningConfigs.""" return TuningConfigs([transform(config) for config in self.configs])