| # SGLang Model Gateway Python Bindings |
|
|
| This directory contains the Python bindings for the SGLang Router, built using [maturin](https://github.com/PyO3/maturin) and [PyO3](https://github.com/PyO3/pyo3). |
|
|
| ## Directory Structure |
|
|
| ``` |
| bindings/python/ |
| βββ src/ # Source code (src layout) |
| β βββ lib.rs # Rust/PyO3 bindings implementation |
| β βββ sglang_router/ # Python source code |
| β βββ __init__.py |
| β βββ version.py |
| β βββ launch_server.py |
| β βββ launch_router.py |
| β βββ router.py |
| β βββ router_args.py |
| β βββ mini_lb.py |
| βββ tests/ # Python unit tests |
| β βββ conftest.py |
| β βββ test_validation.py |
| β βββ test_arg_parser.py |
| β βββ test_router_config.py |
| β βββ test_startup_sequence.py |
| βββ Cargo.toml # Rust package configuration for bindings |
| βββ pyproject.toml # Python package configuration |
| βββ setup.py # Setup configuration |
| βββ MANIFEST.in # Package manifest |
| βββ .coveragerc # Test coverage configuration |
| βββ README.md # This file |
| ``` |
|
|
| ## Building |
|
|
| ### Development Build |
|
|
| ```bash |
| # Install maturin |
| pip install maturin |
| |
| # Build and install in development mode |
| cd sgl-model-gateway/bindings/python |
| maturin develop --features vendored-openssl |
| ``` |
|
|
| ### Production Build |
|
|
| ```bash |
| # Build wheel |
| cd sgl-model-gateway/bindings/python |
| maturin build --release --out dist --features vendored-openssl |
| |
| # Install the built wheel |
| pip install dist/sglang_router-*.whl |
| ``` |
|
|
| ## Testing |
|
|
| ```bash |
| # Run Python unit tests (after maturin develop) |
| cd sgl-model-gateway/bindings/python |
| pytest tests/ |
| ``` |
|
|
| ## Configuration |
|
|
| - **pyproject.toml**: Defines package metadata, dependencies, and build configuration |
| - **python-source**: Set to `"src"` indicating Python source uses the src layout |
| - **module-name**: `sglang_router.sglang_router_rs` - the Rust extension module name |
|
|
| ## Notes |
|
|
| - The Rust bindings source code is located in `src/lib.rs` |
| - The bindings have their own `Cargo.toml` in this directory |
| - The main sglang-router library is located in `../../` and is used as a dependency |
| - The package includes both Python code and Rust extensions built with PyO3 |
| - PyO3 types are prefixed with `Py` in Rust but exposed to Python without the prefix using the `name` attribute |
|
|