File size: 1,615 Bytes
e0265b9 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | from __future__ import annotations
import logging
from dataclasses import dataclass
from pathlib import Path
from adam.config import ConfigManager
from adam.executor import ToolExecutor
from adam.job_manager import JobManager
from adam.logging_setup import configure_logging
from adam.monitoring import SystemMonitor
from adam.planner import Planner
from adam.registry import ToolRegistry
from adam.tool_folders import ToolFolderManager
from adam.ui.main_window import MainWindow
@dataclass(slots=True)
class ApplicationServices:
jobs: JobManager
monitor: SystemMonitor
logger: logging.Logger
def shutdown(self) -> None:
self.jobs.shutdown()
self.monitor.close()
for handler in list(self.logger.handlers):
self.logger.removeHandler(handler)
handler.close()
def build_application(root: Path) -> tuple[MainWindow, ApplicationServices]:
root = root.resolve()
logger = configure_logging(root)
config = ConfigManager(root)
registry = ToolRegistry(root)
tool_folders = ToolFolderManager(config)
monitor = SystemMonitor(root)
executor = ToolExecutor(
root,
registry,
logger,
step_delay=float(config.get("demo_step_delay", 0.24)),
)
jobs = JobManager(root, executor, logger, config)
planner = Planner(root, registry, config)
window = MainWindow(
root,
planner,
registry,
jobs,
config,
monitor,
tool_folders,
)
services = ApplicationServices(jobs=jobs, monitor=monitor, logger=logger)
return window, services
|