Skip to content

Runner

danling.runners.Runner

Bases: BaseRunner

Dynamic runner entrypoint that selects stack-specific runner classes.

Source code in danling/runners/runner.py
Python
class Runner(BaseRunner):
    """Dynamic runner entrypoint that selects stack-specific runner classes."""

    @staticmethod
    def resolve_stack(config: Mapping[str, Any]) -> str:
        return normalize_stack_name(config.get("stack", "auto"))

    @classmethod
    def resolve_runner_class(cls, config: Mapping[str, Any]) -> type[TorchRunner]:
        stack = cls.resolve_stack(config)
        if stack in RUNNER_REGISTRY:
            return RUNNER_REGISTRY[stack]
        valid = ", ".join(sorted(RUNNER_REGISTRY))
        raise ValueError(f"Unknown stack: {stack!r}. Valid options are: {valid}")

    def __new__(cls, config):
        runner_cls = cls.resolve_runner_class(config)
        if cls is Runner:
            return runner_cls(config)
        dynamic_cls = type(cls.__name__, (cls, runner_cls), {})
        return super().__new__(dynamic_cls)