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)
|