https://github.com/gabdug/mypy-to-codeclimate
Standalone tool to convert a mypy output to CodeQuality JSON, for Gitlab or other CIs.
https://github.com/gabdug/mypy-to-codeclimate
Last synced: 9 months ago
JSON representation
Standalone tool to convert a mypy output to CodeQuality JSON, for Gitlab or other CIs.
- Host: GitHub
- URL: https://github.com/gabdug/mypy-to-codeclimate
- Owner: GabDug
- License: mit
- Created: 2023-11-02T17:45:12.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-04-28T20:32:56.000Z (about 1 year ago)
- Last Synced: 2025-04-28T21:41:03.188Z (about 1 year ago)
- Language: Python
- Size: 25.4 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# mypy-code-climate

[](https://pypi.org/project/mypy-to-codeclimate/)
[](https://pepy.tech/project/mypy-to-codeclimate)

[](https://github.com/psf/black)
[](https://github.com/astral-sh/ruff)
Standalone tool to convert Mypy output to Code Climate format. It does not require the Code Climate CLI and is dependency-free: great for CI/CD. Keeps sane exit codes for your CI.
Additionally, can be used as a Python library.
## Why Code Climate
The Code Climate format is supported by Gitlab CI, so you can generate a Code Quality report from mypy output, and have it tracked and displayed in your Gitlab UI.
## Usage
```bash
mypy-to-codeclimate
```
Example:
```bash
mypy-to-codeclimate mypy-output.txt mypy-codequality.json
```
You can replace the filename by `-` to read from stdin, write to stdout, or both.
```bash
mypy | mypy-to-codeclimate - mypy-codequality.json
```
### Return codes
- `0`: Success, no mypy errors
- `1`: Mypy errors, codeclimate report generated
- `2`: Mypy crash (unexpected error) or mypy-to-codeclimate error (invalid arguments, invalid input file, etc.)
### Options
- `--version`: Print version and exit
- `--help`: Print help and exit
## Installation
```bash
pip install mypy-to-codeclimate
```
> The package is distributed on Pypi, so you can install it with pipx, PDM, Poetry or any other Python package manager.
## Supported versions
### Mypy versions
Tested against Mypy 1.6.1. It should work with any version of mypy that outputs the same format.
Please open an issue if you find a version of mypy that is not supported.
## Example usage in Gitlab CI
Example of a job that runs mypy and generates a codeclimate report, on a Linux runner.
Dependency management is left as an exercise for the reader.
See [Gitlab CI code-quality artifacts reference](https://docs.gitlab.com/ee/ci/yaml/artifacts_reports.html#artifactsreportscodequality)
```yaml
lint_python_mypy:
script:
- mypy --version
# Disable exit on error and pipefail:
# mypy-code-climate will return a non-zero exit code if there are errors but we want to continue the job to generate the report
- set +eo pipefail
- mypy | tee mypy-output.txt"
# Enable exit on error again
- set -xeo
- mypy-to-codeclimate mypy-output.txt mypy-codequality.json
artifacts:
when: always
paths:
- mypy-codequality.json
reports:
codequality: mypy-codequality.json
```
## License
MIT, see [LICENSE](LICENSE) file.
## Acknowledgements
Inspired by [codeclimate-mypy](https://github.com/larkinscott/codeclimate-mypy) by Scott Larkin (@larkinscott).