SM737's picture
Upload folder using huggingface_hub (part 4)
a358495 verified
Raw History Blame Contribute Delete
910 Bytes
from __future__ import annotations
from dataclasses import dataclass
from typing import Any, Iterable
from satquery_engine.models.compatibility import CompatibilityResult, ModelCompatibility
from satquery_engine.models.manifest import ModelManifest
@dataclass(frozen=True)
class RoutedModel:
role: str
manifest: ModelManifest
compatibility: CompatibilityResult
class CompatibilityRouter:
"""Select the first healthy, input-compatible model for a task role."""
def route(
self,
candidates: Iterable[tuple[str, ModelManifest]],
raster_profile: Any,
task: str,
) -> RoutedModel | None:
for role, manifest in candidates:
result = ModelCompatibility.evaluate(manifest, raster_profile, task)
if result.compatible:
return RoutedModel(role=role, manifest=manifest, compatibility=result)
return None