dev-strender's picture
Replace v24-era demo with v34 pipeline demo (engine-vendored bundle)
9c84f9d verified
Raw History Blame
2.67 kB
"""Solar Eval CLI entry point."""
from pathlib import Path
import click
from solar_eval._version import __version__
from solar_eval.cli.config import CLIConfig
@click.group("solar-eval")
@click.version_option(version=__version__)
@click.option(
"--config",
"config_file",
type=click.Path(exists=True, dir_okay=False),
default=None,
envvar="SOLAR_EVAL_CONFIG",
help="Path to YAML config file",
)
@click.option("--remote", envvar="SOLAR_EVAL_URL", default=None, help="Remote eval-engine URL")
@click.option("--projects-dir", type=click.Path(), default=None, help="YAML projects directory")
@click.option(
"--verbose",
"-V",
is_flag=True,
default=False,
help="Verbose output (show pipeline step details)",
)
@click.pass_context
def solar_eval_cli(
ctx: click.Context,
config_file: str | None,
remote: str | None,
projects_dir: str | None,
verbose: bool,
) -> None:
"""Solar Eval CLI — run evaluations locally or manage a remote eval engine."""
import logging
ctx.ensure_object(dict)
cfg = CLIConfig(config_path=Path(config_file) if config_file else None)
if remote:
cfg.remote_url = remote
if projects_dir:
cfg.override_projects_dir(Path(projects_dir))
ctx.obj["config"] = cfg
# Set log level for pipeline details
level = logging.DEBUG if verbose else logging.WARNING
for name in ("solar_eval.pipelines.pipeline", "solar_eval.pipelines.steps.llm"):
logging.getLogger(name).setLevel(level)
# Register command groups
from solar_eval.cli.commands.projects import projects_group
from solar_eval.cli.commands.prompts import prompts_group
from solar_eval.cli.commands.runs import runs_group
from solar_eval.cli.commands.eval import eval_group
from solar_eval.cli.commands.dashboard import dashboard_group
from solar_eval.cli.commands.datasets import datasets_group
from solar_eval.cli.commands.compare import compare_command
from solar_eval.cli.commands.quickrun import quick_run
from solar_eval.cli.commands.sync import sync_to_mongodb
solar_eval_cli.add_command(projects_group)
solar_eval_cli.add_command(prompts_group)
solar_eval_cli.add_command(runs_group)
solar_eval_cli.add_command(eval_group)
solar_eval_cli.add_command(dashboard_group)
solar_eval_cli.add_command(datasets_group)
solar_eval_cli.add_command(compare_command)
solar_eval_cli.add_command(quick_run)
solar_eval_cli.add_command(sync_to_mongodb)
def entrypoint() -> None:
"""CLI entry point registered in pyproject.toml."""
try:
solar_eval_cli()
except Exception as e:
click.secho(f"ERROR: {e}", bold=True, fg="red")
raise SystemExit(1)