diff --git a/.github/workflows/pr-test-rust.yml b/.github/workflows/pr-test-rust.yml index 2170fe1b0..b944bc516 100644 --- a/.github/workflows/pr-test-rust.yml +++ b/.github/workflows/pr-test-rust.yml @@ -166,10 +166,10 @@ jobs: source "$HOME/.cargo/env" export RUSTC_WRAPPER=sccache cd sgl-router - python3 -m venv .venv python3 -m pip install --upgrade pip maturin - maturin develop --release --profile ci --features vendored-openssl - + pip uninstall -y sglang-router + maturin build --release --profile ci --features vendored-openssl + pip install target/wheels/*.whl - name: Run Python unit tests run: | @@ -266,7 +266,9 @@ jobs: cd sgl-router python3 -m venv .venv python3 -m pip install --upgrade pip maturin - maturin develop --release --profile ci --features vendored-openssl + pip uninstall -y sglang-router + maturin build --release --profile ci --features vendored-openssl + pip install target/wheels/*.whl - name: Run Python E2E response API tests run: | diff --git a/sgl-router/py_test/conftest.py b/sgl-router/py_test/conftest.py index 894e12bf5..b3c6dc66a 100644 --- a/sgl-router/py_test/conftest.py +++ b/sgl-router/py_test/conftest.py @@ -1,8 +1,15 @@ import sys +from importlib.util import find_spec from pathlib import Path -# Ensure local sources in py_src are importable ahead of any installed package +# Only add py_src to path if the wheel is not installed (for local development) +# This ensures CI tests use the installed wheel which contains the Rust extension _ROOT = Path(__file__).resolve().parents[1] _SRC = _ROOT / "py_src" -if str(_SRC) not in sys.path: + +# Check if sglang_router is already installed with the Rust extension +_wheel_installed = find_spec("sglang_router.sglang_router_rs") is not None + +# Only add py_src if wheel is not installed (development mode) +if not _wheel_installed and str(_SRC) not in sys.path: sys.path.insert(0, str(_SRC))