[build-system]
requires = ["maturin>=1.0,<2.0"]
build-backend = "maturin"

[project]
name = "sglang-router"
version = "0.3.2"
description = "High-performance Rust-based load balancer for SGLang with multiple routing algorithms and prefill-decode disaggregation support"
authors = [
    {name = "Simo Lin", email = "linsimo.mark@gmail.com"},
    {name = "Chang Su", email = "mckvtl@gmail.com"},
    {name = "Keyang Ru", email = "rukeyang@gmail.com"},
    {name = "Byron Hsu", email = "byronhsu1230@gmail.com"}
]
requires-python = ">=3.8"
readme = "../../README.md"
license = { text = "Apache-2.0" }
classifiers = [
    "Programming Language :: Python :: Implementation :: CPython",
    "Programming Language :: Rust",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.8",
    "Programming Language :: Python :: 3.9",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13",
    "Programming Language :: Python :: 3.14",
]

dependencies = [
    "setproctitle",
    "aiohttp",
    "orjson",
    "uvicorn",
    "fastapi",
]

[project.optional-dependencies]
dev = [
    "requests>=2.25.0",
    "pytest>=7.0.0",
]

[project.scripts]
smg = "sglang_router.cli:main"
amg = "sglang_router.cli:main"
sglang-router = "sglang_router.cli:main"


[tool.maturin]
python-source = "src"
module-name = "sglang_router.sglang_router_rs"
# Exclude bindings/python/README.md to use root README only
exclude = ["README.md"]

[tool.pytest.ini_options]
testpaths = ["tests"]
python_files = ["test_*.py"]
python_classes = ["Test*"]
python_functions = ["test_*"]
markers = [
    "unit: mark test as a unit test (no GPU required)",
]
