Skip to content
Merged
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
10 changes: 10 additions & 0 deletions sgl-router/bindings/python/sglang_router/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
import sys
from typing import List, Optional

from sglang_router.sglang_router_rs import get_short_version_string, get_version_string


def create_parser() -> argparse.ArgumentParser:
"""Create the main CLI parser with subcommands."""
Expand Down Expand Up @@ -51,6 +53,14 @@ def main(argv: Optional[List[str]] = None) -> None:
if argv is None:
argv = sys.argv[1:]

# Handle version flags before parsing
if argv and argv[0] in ["--version", "-V"]:
if argv[0] == "--version":
print(get_version_string())
else:
print(get_short_version_string())
sys.exit(0)

# Handle empty command - show help
if not argv or argv[0] not in ["launch", "server", "-h", "--help"]:
parser = create_parser()
Expand Down
14 changes: 14 additions & 0 deletions sgl-router/bindings/python/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -704,6 +704,18 @@ impl Router {
}
}

/// Get formatted version information string with full build details
#[pyfunction]
fn get_version_string() -> String {
version::get_version_string()
}

/// Get short version information string
#[pyfunction]
fn get_short_version_string() -> String {
version::get_short_version_string()
}

#[pymodule]
fn sglang_router_rs(m: &Bound<'_, PyModule>) -> PyResult<()> {
m.add_class::<PolicyType>()?;
Expand All @@ -712,5 +724,7 @@ fn sglang_router_rs(m: &Bound<'_, PyModule>) -> PyResult<()> {
m.add_class::<PyOracleConfig>()?;
m.add_class::<PyPostgresConfig>()?;
m.add_class::<Router>()?;
m.add_function(wrap_pyfunction!(get_version_string, m)?)?;
m.add_function(wrap_pyfunction!(get_short_version_string, m)?)?;
Ok(())
}
Loading