[build-system] requires = ["scikit-build-core >=0.11.6", "nanobind >=2.12.0"] build-backend = "scikit_build_core.build" [project] name = "llvm-nanobind" version = "21.1.6.3" description = "LLVM-C Python bindings with nanobind." readme = "README.md" requires-python = ">=3.12" dependencies = [] [project.urls] Homepage = "https://github.com/LLVMParty/llvm-nanobind" [dependency-groups] dev = [ "auto-faulthandler>=1.0.0", "coverage>=7.11.3", "lit>=18.1.8", "nanobind>=2.12.0", "pytest", "scikit-build-core>=0.11.6", ] [tool.scikit-build] # Protect the configuration against future changes in scikit-build-core minimum-version = "build-system.requires" # Setuptools-style build caching in a local directory build-dir = "build/{wheel_tag}" # Package builds only need the extension and generated stubs. build.targets = ["llvm_stub"] # Build stable ABI wheels for CPython 3.12+ wheel.py-api = "cp312" # This setup only works properly in redirect mode editable.mode = "redirect" # Do not auto-copy Python packages into wheels; the extension module is installed by CMake. wheel.packages = [] [tool.uv] cache-keys = [ { file = "CMakeLists.txt" }, { file = "cmake/*.cmake" }, { file = "src/**/*.cpp" }, { file = "src/**/*.h" }, ] [tool.ty.src] exclude = [ ".llvm", ".llvm-cache", ".venv", "build", "dist", "htmlcov", "wheelhouse", ] [tool.ty.environment] # Don't include src/ in first-party search path so ty finds the installed # package (with .pyi stubs) in .venv/lib/python3.12/site-packages/ instead root = ["."] [tool.pyright] include = ["tests"] exclude = [ "build/**", ".venv/**", "**/__pycache__", "**/node_modules", "**/.*", ] extraPaths = [] venvPath = "." venv = ".venv" [tool.mypy] exclude = [ "^build/", ] [tool.coverage.run] source = ["llvm_c_test", "."] omit = [ "tests/*", "build/*", ".venv/*", "llvm-c/*", ] [tool.coverage.report] exclude_lines = [ "pragma: no cover", "def __repr__", "raise AssertionError", "raise NotImplementedError", "if __name__ == .__main__.:", "if TYPE_CHECKING:", "class .*\\bProtocol\\):", "@(abc\\.)?abstractmethod", ] [tool.pytest.ini_options] addopts = "--deselect tests/regressions/test_symbol_size_crash.py" pythonpath = ["."]