</span>

cppllvm makes it easy to set up a consistent C/C++ developer environment with Python packaging.
Instead of asking every developer or CI job to install and manage a matching LLVM toolchain by hand, you can install ctidy and cformat with uv and immediately get reproducible clang-tidy and clang-format commands in your environment.
This is useful when you want:
| Package | PyPI project | Release trigger | Package docs |
|---|---|---|---|
ctidy |
ctidy | ctidy-v* tag |
packages/ctidy/README.md |
cformat |
cformat | cformat-v* tag |
packages/cformat/README.md |
PyPI releases are wheel-only. Neither package publishes an sdist.
Available wheels are limited to the upstream LLVM 20 prebuilt assets pinned by this repository.
| Platform | Python ABI | ctidy |
cformat |
|---|---|---|---|
Linux x86_64 |
cp39+ |
✅ | ✅ |
macOS x86_64 |
cp39+ |
✅ | ✅ |
macOS arm64 |
cp39+ |
✅ | ✅ |
Windows x86_64 |
cp39+ |
✅ | ✅ |
If the upstream static build release does not publish an asset for an OS/CPU pair, this repository does not produce a wheel for that platform.
Recommended package installation is with uv:
uv add ctidy
uv add cformat
For one-off usage without modifying a project environment, use uvx:
uvx ctidy --version
uvx cformat --version
Package-specific usage and examples live in the package READMEs.
This repository does not build LLVM from source. During wheel builds, each package only:
muttleyxd/clang-tools-static-binaries.sha512sum filesctidy, downloads official LLVM release headers for lib/clang/<major>/includectidy, bundles the upstream LLVM run-clang-tidy.pypackages/
cformat/ Python package for bundled clang-format
ctidy/ Python package for bundled clang-tidy tools
tests/ Repository-level tests for packaging and CLI behavior
tools/ Release and maintenance helpers
Install the workspace tooling:
uv sync --group dev
Run the repository checks:
PYTHONPATH=packages/ctidy/src:packages/cformat/src:. python -m unittest discover -s tests
ruff check .
ty check .