# Copyright (c) 2024 by FlashInfer team. # # Licensed 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 = "flashinfer-python" description = "FlashInfer: Kernel Library for LLM Serving" requires-python = ">=3.9,<4.0" authors = [{ name = "FlashInfer team" }] license = "Apache-2.0" readme = "README.md" urls = { Homepage = "https://github.com/flashinfer-ai/flashinfer" } dynamic = ["dependencies", "version"] license-files = ["LICENSE", "licenses/*"] [build-system] requires = ["setuptools>=77", "packaging>=24"] build-backend = "custom_backend" backend-path = ["."] [tool.codespell] ignore-words-list = "3nd" skip = [ "build", "3rdparty", "dist", ".venv" ] [tool.setuptools] packages = [ "flashinfer", "flashinfer.cute_dsl", "flashinfer.data", "flashinfer.data.aot", "flashinfer.data.csrc", "flashinfer.data.cutlass", "flashinfer.data.spdlog", "flashinfer.data.tvm_binding", "flashinfer.data.include", "flashinfer.fused_moe", "flashinfer.jit", "flashinfer.jit.attention", "flashinfer.jit.cutlass_gemm", "flashinfer.testing", "flashinfer.triton", "flashinfer.tuning_configs", "flashinfer.profiler", "flashinfer.triton.kernels", "flashinfer.comm", "flashinfer.cudnn", "flashinfer.logits_processor", ] include-package-data = false [tool.setuptools.package-dir] "flashinfer.data" = "." "flashinfer.data.aot" = "build/aot-ops-package-dir" "flashinfer.data.cutlass" = "3rdparty/cutlass" "flashinfer.data.spdlog" = "3rdparty/spdlog" [tool.setuptools.package-data] "flashinfer.data" = [ "csrc/**", "include/**", "tvm_binding/**", "version.txt" ] "flashinfer.data.aot" = [ "**" ] "flashinfer.data.cutlass" = [ "include/**", "tools/util/include/**" ] "flashinfer.data.spdlog" = [ "include/**", ] [tool.mypy] ignore_missing_imports = false show_column_numbers = true show_error_context = true follow_imports = "skip" ignore_errors = false strict_optional = false [tool.ruff.lint] select = [ # pycodestyle "E", # Pyflakes "F", # pyupgrade # "UP", # flake8-bugbear "B", # flake8-simplify "SIM", # isort # "I", ] ignore = [ # Module level import not at top of file "E402", # star imports "F405", "F403", # ambiguous name "E741", # line too long "E501", # key in dict.keys() "SIM118", # memory leaks "B019", # No such file or directory "E902", # nested `if` statements "SIM102", # `if`-`else`-block "SIM108", # assign `lambda` expressions "E731", # Loop control variable overrides iterable it iterates "B020", # Return te negated condition directly "SIM103", # Function definition does not bind loop variable "B023", ] [tool.ruff.lint.per-file-ignores] "__init__.py" = ["F401"]