Source code for nbprint.cli

from pathlib import Path
from pprint import pprint

from ccflow import FlowOptions, FlowOptionsOverride, ResultBase
from ccflow.utils.hydra import cfg_explain_cli, cfg_run
from hydra import main as hydra_main
from omegaconf import OmegaConf
from typer import Argument, Option, Typer

from .config import Configuration, Executor
from .config.hydra import load_config

__all__ = ("hydra", "main", "run")


[docs] def run( path: str, overrides: list[str] | None = Argument(None), cfg: bool = False, debug: bool = False, dry_run: bool = False, ) -> Configuration | Executor: registry = load_config(path, overrides=overrides) model = registry["callable"] if "callable" in registry else registry["nbprint"] model.debug = True if debug else model.debug global_options = registry.get("/cli/global", FlowOptions()) model_options = registry.get("/cli/model", FlowOptions()) with FlowOptionsOverride(options=global_options), FlowOptionsOverride(options=model_options): pprint(OmegaConf.to_yaml(model.model_dump(mode="json"))) if cfg else model.run(dry_run=dry_run) return model
def run_cli( path: str, overrides: list[str] | None = Argument(None), cfg: bool = Option(False, "--cfg", is_eager=True, help="Print the config"), debug: bool = Option(False, "--debug", help="Run in debug mode"), dry_run: bool = Option(False, "--dry-run", "-d", help="Run dry run"), ) -> None: run(path=path, overrides=overrides, cfg=cfg, debug=debug, dry_run=dry_run)
[docs] @hydra_main(config_path=str(Path(__file__).parent / "config" / "hydra"), config_name="base", version_base=None) def hydra(cfg) -> ResultBase: return cfg_run(cfg)
[docs] def hydra_explain() -> None: cfg_explain_cli(config_path=str(Path(__file__).parent / "config" / "hydra"), config_name="base", hydra_main=hydra)
def main() -> None: app = Typer() app.command("run")(run_cli) app()