178 lines
4.0 KiB
TOML
178 lines
4.0 KiB
TOML
# Licensed to the Apache Software Foundation (ASF) under one
|
|
# or more contributor license agreements. See the NOTICE file
|
|
# distributed with this work for additional information
|
|
# regarding copyright ownership. The ASF licenses this file
|
|
# to you under the Apache License, Version 2.0 (the
|
|
# "License"); you may not use this file except in compliance
|
|
# with the License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing,
|
|
# software distributed under the License is distributed on an
|
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
# KIND, either express or implied. See the License for the
|
|
# specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
[project]
|
|
name = "mlc_llm"
|
|
# Note: Call version.py to update the version before building the wheel
|
|
version = "0.20.0.dev0"
|
|
description = "MLC LLM: an universal LLM deployment engine via ML compilation."
|
|
|
|
authors = [{ name = "MLC LLM Contributors" }]
|
|
readme = "README.md"
|
|
license = { text = "Apache 2.0" }
|
|
classifiers = [
|
|
"License :: OSI Approved :: Apache Software License",
|
|
"Development Status :: 4 - Beta",
|
|
"Intended Audience :: Developers",
|
|
"Intended Audience :: Education",
|
|
"Intended Audience :: Science/Research",
|
|
]
|
|
keywords = ["machine learning"]
|
|
requires-python = ">=3.9"
|
|
|
|
dependencies = [
|
|
"apache-tvm-ffi",
|
|
"datasets",
|
|
"fastapi",
|
|
"flashinfer-python; sys_platform == 'linux'",
|
|
"ml_dtypes>=0.5.1",
|
|
"openai",
|
|
"pandas",
|
|
"prompt_toolkit",
|
|
"requests",
|
|
"safetensors",
|
|
"sentencepiece",
|
|
"shortuuid",
|
|
"tiktoken",
|
|
"torch",
|
|
"tqdm",
|
|
"transformers",
|
|
"uvicorn",
|
|
]
|
|
|
|
[project.urls]
|
|
Homepage = "https://llm.mlc.ai/"
|
|
Documentation = "https://llm.mlc.ai/docs/"
|
|
Repository = "https://github.com/mlc-ai/mlc-llm"
|
|
"Bug Tracker" = "https://github.com/mlc-ai/mlc-llm/issues"
|
|
|
|
|
|
[build-system]
|
|
requires = ["scikit-build-core>=0.10.0"]
|
|
build-backend = "scikit_build_core.build"
|
|
|
|
[tool.scikit-build]
|
|
# Point to the root CMakeLists.txt
|
|
cmake.source-dir = "."
|
|
cmake.build-type = "Release"
|
|
|
|
# Configure the wheel to be Python version-agnostic
|
|
wheel.py-api = "py3"
|
|
|
|
# Build configuration
|
|
build-dir = "build"
|
|
|
|
# CMake configuration - ensure proper installation paths
|
|
cmake.args = ["-DMLC_LLM_BUILD_PYTHON_MODULE=ON"]
|
|
|
|
# Wheel configuration
|
|
wheel.packages = ["python/mlc_llm"]
|
|
wheel.install-dir = "mlc_llm"
|
|
|
|
# Source distribution configuration
|
|
sdist.include = [
|
|
# Build files
|
|
"/CMakeLists.txt",
|
|
"/pyproject.toml",
|
|
"/cmake/**/*",
|
|
"/3rdparty/**/*",
|
|
|
|
# Source code
|
|
"/src/**/*.cc",
|
|
"/src/**/*.h",
|
|
|
|
# Python source
|
|
"/python/mlc_llm/**/*.py",
|
|
|
|
# Documentation and metadata
|
|
"/docs/**/*",
|
|
"/LICENSE",
|
|
"/README.md",
|
|
"/NOTICE",
|
|
|
|
# Tests
|
|
"/tests/**/*",
|
|
|
|
"/.pre-commit-config.yaml",
|
|
]
|
|
|
|
sdist.exclude = [
|
|
"**/.git",
|
|
"**/.github",
|
|
"**/__pycache__",
|
|
"**/*.pyc",
|
|
"build",
|
|
"dist",
|
|
"3rdparty/tvm",
|
|
"**/3rdparty/*/docs",
|
|
"**/3rdparty/*/media",
|
|
"**/3rdparty/*/examples",
|
|
"**/3rdparty/*/test",
|
|
]
|
|
|
|
# Logging
|
|
logging.level = "INFO"
|
|
|
|
|
|
[tool.ruff]
|
|
include = [
|
|
"python/**/*.py",
|
|
"tests/**/*.py",
|
|
"examples/**/*.py",
|
|
"docs/**/*.py",
|
|
"cmake/**/*.py",
|
|
"version.py",
|
|
]
|
|
line-length = 100
|
|
indent-width = 4
|
|
target-version = "py39"
|
|
exclude = ["3rdparty", "build", "dist", ".venv", ".ruff_cache"]
|
|
|
|
[tool.ruff.lint]
|
|
select = [
|
|
"E", # pycodestyle errors
|
|
"F", # pyflakes
|
|
"I", # isort
|
|
"UP", # pyupgrade
|
|
"RUF", # ruff-specific rules
|
|
]
|
|
ignore = [
|
|
"UP028", # yield-in-for-loop
|
|
"UP030", # format-literals
|
|
"UP031", # printf-string-formatting
|
|
"RUF010", # explicit-f-string-type-conversion — !s/!r/!a is obscure; prefer explicit str()/repr()
|
|
"RUF043", # pytest-raises-ambiguous-pattern
|
|
"RUF059", # unused-unpacked-variable
|
|
]
|
|
fixable = ["ALL"]
|
|
unfixable = []
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
|
"__init__.py" = ["E402", "F401", "F403", "F405"]
|
|
|
|
[tool.ruff.lint.isort]
|
|
known-first-party = ["mlc_llm"]
|
|
|
|
[tool.ruff.format]
|
|
quote-style = "double"
|
|
indent-style = "space"
|
|
skip-magic-trailing-comma = false
|
|
line-ending = "auto"
|
|
|
|
[dependency-groups]
|
|
lint = ["pre-commit"]
|