Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions src/llmflux/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,21 @@
import subprocess
import logging
from typing import Optional, List, Dict
from importlib.metadata import PackageNotFoundError, version as pkg_version

from .slurm.runner import SlurmRunner
from .processors import BatchProcessor
from .core.config import Config, EngineConfig
from .benchmark_utils import create_test_prompts_file


def _get_llmflux_version() -> str:
"""Return installed llmflux version (best effort)."""
try:
return pkg_version("llmflux")
except PackageNotFoundError:
return "unknown"

def _parse_sbatch_args(sbatch_arg_list: Optional[List[str]]) -> Optional[Dict[str, str]]:
"""Parse --sbatch-arg arguments into a dictionary.

Expand Down Expand Up @@ -296,6 +305,14 @@ def _run_command(args: argparse.Namespace) -> int:

def build_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(prog="llmflux", description="LLMFlux CLI")
parser.add_argument(
"--version",
"-V",
"-v",
action="version",
version=f"%(prog)s {_get_llmflux_version()}",
help="Show llmflux version and exit",
)
subparsers = parser.add_subparsers(dest="command", required=True)

# run subcommand
Expand Down
24 changes: 24 additions & 0 deletions tests/test_cli_version.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import pytest


def test_llmflux_version_flag_prints_and_exits(capsys):
from llmflux.cli import main

with pytest.raises(SystemExit) as excinfo:
main(["--version"])

assert excinfo.value.code == 0
out = capsys.readouterr().out.strip()
assert out.startswith("llmflux ")


def test_llmflux_short_version_flag_prints_and_exits(capsys):
from llmflux.cli import main

with pytest.raises(SystemExit) as excinfo:
main(["-V"])

assert excinfo.value.code == 0
out = capsys.readouterr().out.strip()
assert out.startswith("llmflux ")