33 lines
742 B
Python
33 lines
742 B
Python
from collections.abc import Callable
|
|
from dataclasses import dataclass
|
|
from typing import Any
|
|
|
|
from pydantic import BaseModel
|
|
|
|
from core.base import BaseWorker
|
|
from core.schemas import ModuleManifest
|
|
from reporting.models import PluginRuntimeError
|
|
|
|
WorkerBuilder = Callable[[BaseModel | dict[str, Any]], BaseWorker]
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class LoadedModule:
|
|
package_name: str
|
|
manifest: ModuleManifest
|
|
build_worker: WorkerBuilder
|
|
config_model: type[BaseModel]
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class LoadedWorker:
|
|
worker: BaseWorker
|
|
manifest: ModuleManifest
|
|
config: BaseModel | dict[str, Any]
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class ModuleLoadResult:
|
|
loaded_workers: list[LoadedWorker]
|
|
errors: list[PluginRuntimeError]
|