| |
| """ |
| Bump sgl-kernel version in SGLang files to match the version in sgl-kernel/pyproject.toml. |
| Updates: |
| - python/pyproject.toml |
| - python/sglang/srt/entrypoints/engine.py |
| - docker/Dockerfile |
| """ |
|
|
| import re |
| import sys |
| from pathlib import Path |
|
|
| try: |
| import tomllib |
| except ImportError: |
| import tomli as tomllib |
|
|
|
|
| def get_kernel_version_from_source() -> str: |
| """Extract version from sgl-kernel/pyproject.toml""" |
| pyproject_path = Path("sgl-kernel/pyproject.toml") |
|
|
| if not pyproject_path.exists(): |
| print(f"Error: {pyproject_path} not found") |
| sys.exit(1) |
|
|
| with open(pyproject_path, "rb") as f: |
| data = tomllib.load(f) |
|
|
| version = data.get("project", {}).get("version") |
| if not version: |
| print("Error: Could not find version in sgl-kernel/pyproject.toml") |
| sys.exit(1) |
|
|
| return version |
|
|
|
|
| def update_python_pyproject(new_version: str) -> bool: |
| """Update sgl-kernel version in python/pyproject.toml""" |
| pyproject_path = Path("python/pyproject.toml") |
|
|
| if not pyproject_path.exists(): |
| print(f"Error: {pyproject_path} not found") |
| sys.exit(1) |
|
|
| content = pyproject_path.read_text() |
|
|
| |
| new_content = re.sub( |
| r'"sgl-kernel==[^"]+"', |
| f'"sgl-kernel=={new_version}"', |
| content, |
| ) |
|
|
| if content == new_content: |
| print("No changes needed in python/pyproject.toml") |
| return False |
|
|
| pyproject_path.write_text(new_content) |
| print(f"β Updated python/pyproject.toml to version {new_version}") |
| return True |
|
|
|
|
| def update_engine_py(new_version: str) -> bool: |
| """Update sgl-kernel version in python/sglang/srt/entrypoints/engine.py""" |
| engine_path = Path("python/sglang/srt/entrypoints/engine.py") |
|
|
| if not engine_path.exists(): |
| print(f"Error: {engine_path} not found") |
| sys.exit(1) |
|
|
| content = engine_path.read_text() |
|
|
| |
| new_content = re.sub( |
| r'(assert_pkg_version\s*\(\s*"sgl-kernel"\s*,\s*)"[^"]+"', |
| rf'\1"{new_version}"', |
| content, |
| ) |
|
|
| if content == new_content: |
| print("No changes needed in engine.py") |
| return False |
|
|
| engine_path.write_text(new_content) |
| print(f"β Updated engine.py to version {new_version}") |
| return True |
|
|
|
|
| def update_dockerfile(new_version: str) -> bool: |
| """Update SGL_KERNEL_VERSION in docker/Dockerfile""" |
| dockerfile_path = Path("docker/Dockerfile") |
|
|
| if not dockerfile_path.exists(): |
| print(f"Error: {dockerfile_path} not found") |
| sys.exit(1) |
|
|
| content = dockerfile_path.read_text() |
|
|
| |
| new_content = re.sub( |
| r"^(ARG\s+SGL_KERNEL_VERSION=)(.+)$", |
| rf"\g<1>{new_version}", |
| content, |
| flags=re.MULTILINE, |
| ) |
|
|
| if content == new_content: |
| print("No changes needed in Dockerfile") |
| return False |
|
|
| dockerfile_path.write_text(new_content) |
| print(f"β Updated Dockerfile to version {new_version}") |
| return True |
|
|
|
|
| def main(): |
| kernel_version = get_kernel_version_from_source() |
| print(f"Bumping sgl-kernel version to: {kernel_version}\n") |
|
|
| updated_files = [] |
|
|
| if update_python_pyproject(kernel_version): |
| updated_files.append("python/pyproject.toml") |
|
|
| if update_engine_py(kernel_version): |
| updated_files.append("python/sglang/srt/entrypoints/engine.py") |
|
|
| if update_dockerfile(kernel_version): |
| updated_files.append("docker/Dockerfile") |
|
|
| print() |
| if updated_files: |
| print(f"β Successfully updated {len(updated_files)} file(s):") |
| for file in updated_files: |
| print(f" - {file}") |
| else: |
| print("β All files already have the correct version") |
|
|
|
|
| if __name__ == "__main__": |
| main() |
|
|