[build-system] requires = ["setuptools>=61.0", "setuptools-rust>=1.10", "setuptools-scm>=8.0", "wheel"] build-backend = "setuptools.build_meta" [project] name = "sglang" dynamic = ["version"] description = "SGLang is a fast serving framework for large language models and vision language models." readme = "README.md" requires-python = ">=3.10" license = { file = "LICENSE" } classifiers = [ "Programming Language :: Python :: 3", "License :: OSI Approved :: Apache Software License", ] # Please keep dependency lists in this file sorted alphabetically by package name. dependencies = [ "aiohttp", "anthropic>=0.20.0", "apache-tvm-ffi==0.1.11", "av ; sys_platform == 'linux' and (platform_machine == 'aarch64' or platform_machine == 'arm64' or platform_machine == 'armv7l')", "blobfile==3.0.0", "build", "compressed-tensors", "cuda-python>=13.0", "datasets", "decord2 ; sys_platform == 'linux' and (platform_machine == 'aarch64' or platform_machine == 'arm64' or platform_machine == 'armv7l')", "distro", "easydict", # Required by remote model code (e.g. DeepSeek-OCR) loaded via trust_remote_code; validated by transformers 5.4+ check_imports "einops", "fastapi", "flash-attn-4==4.0.0b15", "flashinfer_python[cu13]==0.6.14", # keep it aligned with jit-cache version in Dockerfile "gguf", "interegular", "IPython", "kernels>=0.14.1,<0.15", "llguidance>=0.7.11,<0.8.0", "mistral_common>=1.11.5", "modelscope", "msgspec", "ninja", "numpy", "nvidia-cutlass-dsl[cu13]==4.5.2", "nvidia-mathdx==25.6.0", "nvidia-ml-py", "openai==2.6.1", "openai-harmony==0.0.4", "orjson", "outlines==0.1.11", "packaging", "partial_json_parser", "pillow", "prometheus-client>=0.20.0", "psutil", "py-spy", "pybase64", "pydantic", "python-multipart", "pyzmq>=25.1.2", "quack-kernels>=0.4.1", "requests", "scipy", "sentencepiece", "setproctitle", "sgl-deep-gemm==0.1.4.post1", "sglang-kernel==0.4.4", "smg-grpc-servicer>=0.5.0", "soundfile==0.13.1", "tiktoken", "tilelang==0.1.11", "timm==1.0.16", "tokenspeed_mla==0.1.7", "torch==2.11.0", "torch_memory_saver>=0.0.9.post1", "torchao==0.17.0", "torchaudio==2.11.0", "torchcodec==0.11.1 ; sys_platform != 'linux' or (sys_platform == 'linux' and platform_machine != 'aarch64' and platform_machine != 'arm64' and platform_machine != 'armv7l')", # torchcodec 0.11.1 for torch 2.11.x (0.10 is ABI-incompatible: references the pre-2.11 c10::MessageLogger ctor signature). Not available on Linux ARM. "torchvision", "tqdm", "transformers==5.12.1", "uvicorn", "uvloop", "watchfiles", "xgrammar==0.2.1", "zstandard", ] [[tool.uv.index]] name = "pypi" url = "https://pypi.org/simple" default = true [project.optional-dependencies] checkpoint-engine = ["checkpoint-engine==0.1.2"] runai = ["runai-model-streamer[s3,gcs,azure]>=0.15.7"] diffusion = [ "addict==2.4.0", "av==16.1.0", "cache-dit==1.3.0", "cloudpickle==3.1.2", "diffusers==0.37.0", "imageio==2.36.0", "imageio-ffmpeg==0.5.1", "moviepy>=2.0.0", "msgpack", "nvidia-modelopt", "opencv-python-headless==4.10.0.84", "PyYAML==6.0.1", "remote-pdb==2.1.0", "runai_model_streamer>=0.15.7", "scikit-image==0.25.2", "st_attn==0.0.7 ; platform_machine != 'aarch64' and platform_machine != 'arm64'", "trimesh>=4.0.0", "vsa==0.0.4 ; platform_machine != 'aarch64' and platform_machine != 'arm64'", "websockets", "xatlas", ] ray = [ "ray[default]>=2.55.1", ] tracing = [ "opentelemetry-api", "opentelemetry-exporter-otlp", "opentelemetry-exporter-otlp-proto-grpc", "opentelemetry-sdk", ] http2 = [ "granian>=2.6.0", ] fastokens = [ "fastokens>=0.1.1,<0.2.0", ] test = [ "accelerate", "addict", "auto-round>=0.13.1", "bitsandbytes", "pymupdf", "diff-cover", "expecttest", "granian>=2.6.0", "jsonlines", "lm-eval[api]>=0.4.9.2", "matplotlib", # Pin sgl-eval to a git SHA: upgrading changes zero-shot \boxed{} grading, so # re-baseline MODEL_SCORE_THRESHOLDS in test_text_models_gsm8k_eval.py first. # antlr4 4.9.3 is forced because latex2sympy2_extended raises ImportError on # 4.7.x, and an older transitive pin can win during install. "antlr4-python3-runtime==4.9.3", "sgl-eval @ git+https://github.com/sgl-project/sgl-eval.git@b2a2703c42cae379bbcb8b7ff092df6601a61694", "pandas", "parameterized", "peft>=0.18.0", "polars", "pytest", "pytest-cov", "sentence_transformers", "sglang[fastokens]", "tabulate", ] dev = ["sglang[test]"] all = [ "sglang[diffusion]", "sglang[http2]", "sglang[tracing]", ] [tool.uv.extra-build-dependencies] st-attn = ["setuptools", "torch"] vsa = ["setuptools", "torch"] [project.urls] "Homepage" = "https://github.com/sgl-project/sglang" "Bug Tracker" = "https://github.com/sgl-project/sglang/issues" [project.scripts] sglang = "sglang.cli.main:main" killall_sglang = "sglang.cli.killall:main" [tool.setuptools.package-data] "sglang" = [ "srt/**/*", "jit_kernel/**/*", "multimodal_gen/apps/realtime_webui/**/*" ] [tool.setuptools.packages.find] exclude = [ "assets*", "benchmark*", "docs*", "dist*", "playground*", "scripts*", "tests*", ] [tool.wheel] exclude = [ "assets*", "benchmark*", "docs*", "dist*", "playground*", "scripts*", "tests*", ] [tool.setuptools_scm] root = ".." version_file = "sglang/_version.py" git_describe_command = ["python3", "python/tools/get_version_tag.py"] # Allow editable installs even when .git metadata is not available. fallback_version = "0.0.0.dev0" [[tool.setuptools-rust.ext-modules]] target = "sglang.srt.grpc._core" path = "../rust/sglang-grpc/Cargo.toml" binding = "PyO3" [tool.kernels.dependencies] "kernels-community/sgl-flash-attn3" = 1