| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- # -*- coding: utf-8 -*-
- """
- Abstrakte Basisklasse fuer alle Trixy-Trainer.
- Trainer laufen als isolierter Subprocess und sind
- unabhaengig vom Event-Loop der Hauptanwendung.
- """
- from abc import ABC, abstractmethod
- from multiprocessing import Queue, Event as MPEvent
- from trixy_core.trainer.dataclasses import (
- TrainerInfo,
- TrainingProgress,
- ValidationResult,
- FormSchema,
- )
- class ITrainer(ABC):
- """
- Abstrakte Basisklasse fuer ML-Trainer.
- Jeder Trainer implementiert Schema-Methoden fuer die TUI
- und die eigentliche Trainingslogik.
- """
- @abstractmethod
- def get_info(self) -> TrainerInfo:
- """Liefert Metadaten des Trainers."""
- @abstractmethod
- def get_settings_schema(self) -> FormSchema:
- """Liefert das Formular-Schema fuer Trainings-Einstellungen."""
- @abstractmethod
- def get_dataset_schema(self) -> FormSchema:
- """Liefert das Formular-Schema fuer Dataset-Konfiguration."""
- def get_optional_schema(self) -> FormSchema | None:
- """Liefert optionales Schema (None = Tab ausblenden)."""
- return None
- @abstractmethod
- def get_settings(self) -> dict:
- """Liefert die aktuellen Einstellungswerte."""
- @abstractmethod
- def set_settings(self, settings: dict) -> None:
- """Setzt Einstellungswerte aus dem Formular."""
- @abstractmethod
- def get_dataset_info(self) -> dict:
- """Liefert aktuelle Dataset-Informationen."""
- def set_dataset_config(self, config: dict) -> None:
- """Setzt Dataset-Konfiguration aus dem Formular."""
- pass
- @abstractmethod
- def validate(self) -> ValidationResult:
- """Validiert Einstellungen und Dataset vor dem Training."""
- @abstractmethod
- def train(
- self,
- progress_queue: Queue,
- pause_flag: MPEvent,
- stop_flag: MPEvent,
- ) -> None:
- """
- Fuehrt das Training durch (laeuft im Subprocess).
- Args:
- progress_queue: Queue fuer TrainingProgress-Updates
- pause_flag: Gesetzt wenn Training pausiert werden soll
- stop_flag: Gesetzt wenn Training gestoppt werden soll
- """
- def pause(self) -> None:
- """Zusaetzliche Pause-Logik (optional)."""
- pass
- def resume(self) -> None:
- """Zusaetzliche Resume-Logik (optional)."""
- pass
- def stop(self) -> None:
- """Zusaetzliche Stop-Logik (optional)."""
- pass
- def execute_action(self, action: str, params: dict) -> dict:
- """
- Fuehrt eine benannte Aktion aus (z.B. TTS-Datengenerierung).
- Args:
- action: Name der Aktion
- params: Parameter fuer die Aktion
- Returns:
- dict mit "success" (bool), "message" (str), optionalen Daten
- """
- return {"success": False, "message": f"Aktion '{action}' nicht unterstuetzt"}
|