# clang-tidy Python distribution
[![PyPI Release](https://img.shields.io/pypi/v/clang-tidy.svg)](https://pypi.org/project/clang-tidy)
This project packages the `clang-tidy` utility as a Python package. It allows you to install `clang-tidy` directly from PyPI:
```
python -m pip install clang-tidy
```
This projects intends to release a new PyPI package for each major and minor release of `clang-tidy`.
## Use with pipx
You can use `pipx` to run clang-tidy, as well. For example, `pipx run clang-tidy <args>` will run clang-tidy without any previous install required on any machine with pipx (including all default GitHub Actions / Azure runners, avoiding requiring a pre-install step or even `actions/setup-python`).
## Building new releases
The [clang-tidy-wheel repository](https://github.com/ssciwr/clang-tidy-wheel) provides the logic to build and publish binary wheels of the `clang-tidy` utility.
In order to add a new release, the following steps are necessary:
* Edit the [version file](https://github.com/ssciwr/clang-tidy-wheel/blob/main/clang-tidy_version.cmake) to reflect the new version.
* Make a GitHub release to trigger the [GitHub Actions release workflow](https://github.com/ssciwr/clang-tidy-wheel/actions/workflows/release.yml). Alternatively, the workflow can be triggered manually.
On manual triggers, the following input variables are available:
* `use_qemu`: Whether to build targets that require emulation (default: `true`)
* `llvm_version`: Override the LLVM version (default: `""`)
* `wheel_version`: Override the wheel packaging version (default `"0"`)
* `deploy_to_testpypi`: Whether to deploy to TestPyPI instead of PyPI (default: `false`)
The repository with the precommit hook is automatically updated using a scheduled Github Actions workflow.
## Acknowledgments
This repository extends the great work of several other projects:
* `clang-tidy` itself is [provided by the LLVM project](https://github.com/llvm/llvm-project) under the Apache 2.0 License with LLVM exceptions.
* The build logic is based on [scikit-build](https://github.com/scikit-build/scikit-build) which greatly reduces the amount of low level code necessary to package `clang-tidy`.
* The `scikit-build` packaging examples of [CMake](https://github.com/scikit-build/cmake-python-distributions) and [Ninja](https://github.com/scikit-build/ninja-python-distributions) were very helpful in packaging `clang-tidy`.
* The CI build process is controlled by [cibuildwheel](https://github.com/pypa/cibuildwheel) which makes building wheels across a number of platforms a pleasant experience (!)
We are grateful for the generous provisioning with CI resources that GitHub currently offers to Open Source projects.
## Troubleshooting
To see which clang-tidy binary the package is using
you can set `CLANG_TIDY_WHEEL_VERBOSE` to `1` in your environment.
Raw data
{
"_id": null,
"home_page": "http://clang.llvm.org/",
"name": "clang-tidy",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": null,
"author": "Dominic Kempf",
"author_email": "ssc@iwr.uni-heidelberg.de",
"download_url": "https://files.pythonhosted.org/packages/31/a5/1f7c67788f30a8a8d65afbc144034978490a0d0bb61ef2fdd2ca34700b5d/clang_tidy-19.1.0.tar.gz",
"platform": null,
"description": "# clang-tidy Python distribution\n\n[![PyPI Release](https://img.shields.io/pypi/v/clang-tidy.svg)](https://pypi.org/project/clang-tidy)\n\nThis project packages the `clang-tidy` utility as a Python package. It allows you to install `clang-tidy` directly from PyPI:\n\n```\npython -m pip install clang-tidy\n```\n\nThis projects intends to release a new PyPI package for each major and minor release of `clang-tidy`.\n\n## Use with pipx\n\nYou can use `pipx` to run clang-tidy, as well. For example, `pipx run clang-tidy <args>` will run clang-tidy without any previous install required on any machine with pipx (including all default GitHub Actions / Azure runners, avoiding requiring a pre-install step or even `actions/setup-python`).\n\n## Building new releases\n\nThe [clang-tidy-wheel repository](https://github.com/ssciwr/clang-tidy-wheel) provides the logic to build and publish binary wheels of the `clang-tidy` utility.\n\nIn order to add a new release, the following steps are necessary:\n\n* Edit the [version file](https://github.com/ssciwr/clang-tidy-wheel/blob/main/clang-tidy_version.cmake) to reflect the new version.\n* Make a GitHub release to trigger the [GitHub Actions release workflow](https://github.com/ssciwr/clang-tidy-wheel/actions/workflows/release.yml). Alternatively, the workflow can be triggered manually.\n\nOn manual triggers, the following input variables are available:\n* `use_qemu`: Whether to build targets that require emulation (default: `true`)\n* `llvm_version`: Override the LLVM version (default: `\"\"`)\n* `wheel_version`: Override the wheel packaging version (default `\"0\"`)\n* `deploy_to_testpypi`: Whether to deploy to TestPyPI instead of PyPI (default: `false`)\n\nThe repository with the precommit hook is automatically updated using a scheduled Github Actions workflow.\n\n## Acknowledgments\n\nThis repository extends the great work of several other projects:\n\n* `clang-tidy` itself is [provided by the LLVM project](https://github.com/llvm/llvm-project) under the Apache 2.0 License with LLVM exceptions.\n* The build logic is based on [scikit-build](https://github.com/scikit-build/scikit-build) which greatly reduces the amount of low level code necessary to package `clang-tidy`.\n* The `scikit-build` packaging examples of [CMake](https://github.com/scikit-build/cmake-python-distributions) and [Ninja](https://github.com/scikit-build/ninja-python-distributions) were very helpful in packaging `clang-tidy`.\n* The CI build process is controlled by [cibuildwheel](https://github.com/pypa/cibuildwheel) which makes building wheels across a number of platforms a pleasant experience (!)\n\nWe are grateful for the generous provisioning with CI resources that GitHub currently offers to Open Source projects.\n\n## Troubleshooting\n\nTo see which clang-tidy binary the package is using\nyou can set `CLANG_TIDY_WHEEL_VERBOSE` to `1` in your environment.\n",
"bugtrack_url": null,
"license": "Apache 2.0",
"summary": "clang-tidy is a clang-based C++ \u201clinter\u201d tool.",
"version": "19.1.0",
"project_urls": {
"Documentation": "https://clang.llvm.org/extra/clang-tidy/",
"Download": "https://github.com/llvm/llvm-project/releases",
"Homepage": "http://clang.llvm.org/",
"Source": "https://github.com/ssciwr/clang-tidy-wheel"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "bb4f9b4326066352c36a9296f8bad6d87874e083bf1673eaff167e5b9c066bd0",
"md5": "1f775097d424e3b46d4c28e90be4a026",
"sha256": "61c81df8fbb032888d26ea7145b0a33d0b8539c1923f80084724bc6ee71f6220"
},
"downloads": -1,
"filename": "clang_tidy-19.1.0-py2.py3-none-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "1f775097d424e3b46d4c28e90be4a026",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 27888982,
"upload_time": "2024-09-19T09:19:26",
"upload_time_iso_8601": "2024-09-19T09:19:26.104787Z",
"url": "https://files.pythonhosted.org/packages/bb/4f/9b4326066352c36a9296f8bad6d87874e083bf1673eaff167e5b9c066bd0/clang_tidy-19.1.0-py2.py3-none-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "030b3d85e0b71e07e632291c0655cd2965361e2376721d8f0ee396db61c75454",
"md5": "6c10679d432ef6a2c88a309faef94a15",
"sha256": "c7403c57db174bc17f94fec651a4c6c0bb050da74dc12e542be44edea8a77546"
},
"downloads": -1,
"filename": "clang_tidy-19.1.0-py2.py3-none-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "6c10679d432ef6a2c88a309faef94a15",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 26730679,
"upload_time": "2024-09-19T09:19:29",
"upload_time_iso_8601": "2024-09-19T09:19:29.563041Z",
"url": "https://files.pythonhosted.org/packages/03/0b/3d85e0b71e07e632291c0655cd2965361e2376721d8f0ee396db61c75454/clang_tidy-19.1.0-py2.py3-none-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7891622295ccb082db63124f3d0ac0dca403b730cad150022f9e44d4886c9cdd",
"md5": "9b2127dfc934f324c6cb856a2cb225f0",
"sha256": "79050ed7771520cf9825786f5207dc55ba7b281fff96aca037c0962b104de6ba"
},
"downloads": -1,
"filename": "clang_tidy-19.1.0-py2.py3-none-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "9b2127dfc934f324c6cb856a2cb225f0",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 43112299,
"upload_time": "2024-09-19T09:19:33",
"upload_time_iso_8601": "2024-09-19T09:19:33.341837Z",
"url": "https://files.pythonhosted.org/packages/78/91/622295ccb082db63124f3d0ac0dca403b730cad150022f9e44d4886c9cdd/clang_tidy-19.1.0-py2.py3-none-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5d8f479c82737d3139035fd14ca20638371e0297322404a04d42ff35ad83575c",
"md5": "ee6f8c5f01da65a5a0ace9cd10e84e94",
"sha256": "be843086d18f7c794fe43d9f3378c0c556fd09151a2375ed1943ff703c144970"
},
"downloads": -1,
"filename": "clang_tidy-19.1.0-py2.py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "ee6f8c5f01da65a5a0ace9cd10e84e94",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 37694702,
"upload_time": "2024-09-19T09:19:37",
"upload_time_iso_8601": "2024-09-19T09:19:37.167758Z",
"url": "https://files.pythonhosted.org/packages/5d/8f/479c82737d3139035fd14ca20638371e0297322404a04d42ff35ad83575c/clang_tidy-19.1.0-py2.py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "885998cd6415c8824077f297123bb47990b8d39d95354c17acc87c3cefe4d0aa",
"md5": "44200d578788bc51096076f790874422",
"sha256": "8441c66560a25e37bb57e3b8d63ac4067f9b6f92c4887f2952d26ed9e49143a0"
},
"downloads": -1,
"filename": "clang_tidy-19.1.0-py2.py3-none-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "44200d578788bc51096076f790874422",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 45476563,
"upload_time": "2024-09-19T09:19:41",
"upload_time_iso_8601": "2024-09-19T09:19:41.362732Z",
"url": "https://files.pythonhosted.org/packages/88/59/98cd6415c8824077f297123bb47990b8d39d95354c17acc87c3cefe4d0aa/clang_tidy-19.1.0-py2.py3-none-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "219ce3b4b92daf52dc1d7ce354c525308fcf9bcd7a2f8ce21822a816e4040f92",
"md5": "753072128d22bff139861946111d9a70",
"sha256": "ee2fe7afb34529dd6be9b8f367eaa864814c47e91479d34e3caedd56df80549b"
},
"downloads": -1,
"filename": "clang_tidy-19.1.0-py2.py3-none-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "753072128d22bff139861946111d9a70",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 40761782,
"upload_time": "2024-09-19T09:19:46",
"upload_time_iso_8601": "2024-09-19T09:19:46.090653Z",
"url": "https://files.pythonhosted.org/packages/21/9c/e3b4b92daf52dc1d7ce354c525308fcf9bcd7a2f8ce21822a816e4040f92/clang_tidy-19.1.0-py2.py3-none-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b7e68a692b91d520d90838a1477779b652cadea6f766409a5c3b5e181612b750",
"md5": "cb9a7fc667db05883b60a04756a18c5e",
"sha256": "082f520652a5268c4c97d94c1ff04686e31c9a76c29077beead491f6c345ab94"
},
"downloads": -1,
"filename": "clang_tidy-19.1.0-py2.py3-none-win32.whl",
"has_sig": false,
"md5_digest": "cb9a7fc667db05883b60a04756a18c5e",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 20053454,
"upload_time": "2024-09-19T09:19:50",
"upload_time_iso_8601": "2024-09-19T09:19:50.144683Z",
"url": "https://files.pythonhosted.org/packages/b7/e6/8a692b91d520d90838a1477779b652cadea6f766409a5c3b5e181612b750/clang_tidy-19.1.0-py2.py3-none-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b99bc9c14196d631a086386e153166e0c295bc1d690f5510078b2c528144ca51",
"md5": "50cd0a1298a3ce24ffdbfa8da962bb99",
"sha256": "27104b3f7a6841d45ece284ba27f93ac7c982a5bf38a30fc6f280c4f0cd2fcfb"
},
"downloads": -1,
"filename": "clang_tidy-19.1.0-py2.py3-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "50cd0a1298a3ce24ffdbfa8da962bb99",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 23135358,
"upload_time": "2024-09-19T09:19:54",
"upload_time_iso_8601": "2024-09-19T09:19:54.690519Z",
"url": "https://files.pythonhosted.org/packages/b9/9b/c9c14196d631a086386e153166e0c295bc1d690f5510078b2c528144ca51/clang_tidy-19.1.0-py2.py3-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "31a51f7c67788f30a8a8d65afbc144034978490a0d0bb61ef2fdd2ca34700b5d",
"md5": "3048839b855682f78e919c0b714ab61f",
"sha256": "6ae7e3fb47b0969a9ed3197f029165366ee4818437b5ce675426789279b35595"
},
"downloads": -1,
"filename": "clang_tidy-19.1.0.tar.gz",
"has_sig": false,
"md5_digest": "3048839b855682f78e919c0b714ab61f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 9753,
"upload_time": "2024-09-19T09:19:56",
"upload_time_iso_8601": "2024-09-19T09:19:56.734164Z",
"url": "https://files.pythonhosted.org/packages/31/a5/1f7c67788f30a8a8d65afbc144034978490a0d0bb61ef2fdd2ca34700b5d/clang_tidy-19.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-09-19 09:19:56",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "llvm",
"github_project": "llvm-project",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "clang-tidy"
}