Dataclass-based CLI¶
This example shows how to build a CLI using dataclasses and hydra-config.
Define classes¶
from typing import Any
from hydra_config import HydraContainerConfig, config_wrapper
@config_wrapper
class Config(HydraContainerConfig):
param_any: Any
@config_wrapper
class ConfigInt(Config):
param_int: int
@config_wrapper
class ConfigFloat(Config):
param_float: float
class System:
def __init__(self, config: Config):
self.config = config
Register the CLI entrypoint¶
from hydra_config.cli import register_cli, run_cli
@register_cli
def dataclass_cli(system: System, x: int, flag: bool = False):
print("System Config Param:", system.config.param_any, type(system.config.param_any))
print("X:", x, type(x))
print("Flag:", flag, type(flag))
Call the CLI¶
if __name__ == "__main__":
run_cli(dataclass_cli)
Run the CLI¶
python examples/dataclass_cli.py system=System system/config=Config x=1 system.config.param_any=1