https://github.com/kludex/promypy
Progressive type annotation without regression! 🚀
https://github.com/kludex/promypy
annotation mypy python type
Last synced: 6 months ago
JSON representation
Progressive type annotation without regression! 🚀
- Host: GitHub
- URL: https://github.com/kludex/promypy
- Owner: Kludex
- License: mit
- Created: 2022-07-01T11:46:02.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-10-16T05:54:39.000Z (about 3 years ago)
- Last Synced: 2025-04-14T01:04:21.046Z (6 months ago)
- Topics: annotation, mypy, python, type
- Language: Python
- Homepage:
- Size: 32.2 KB
- Stars: 30
- Watchers: 2
- Forks: 5
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
promypy
You've decided to add type annotation on the code source. What's your plan? 😅
This package is a small tool set to help you to achieve your dreamed fully type annotation project. 🚀
Using `mypy`, you'd probably add a [`files`](https://mypy.readthedocs.io/en/stable/config_file.html#confval-files)
entry on your configuration file, and each time someone on the team wants to include type annotation on that file,
you'd add on the `files` list. There are a some problems with this approach:1. Each new file is not added to the `files` list.
2. If a file gets fully type annotated, you don't notice, and it will not be added to the `files` list.The `1.` is more important, as we don't want to have regressions on our goal to have our code source fully type annotated.
But you don't want to worry about `2.` as well...What this package does:
- [`dump`](#dump): Generates a **list** of files that are currently not type annotated.
- [`check`](#check): Given an input of files:
- If a file is in the **list**, and is fully type annotated, it will be removed from the **list**.
- If a file is in the **list**, and is **not** fully annotated, it will be ignored.
- If a file is **not** in the **list**, and is fully annotated, it will be ignored.
- If a file is **not** in the **list**, and is **not** fully annotated, it will raise errors.## Installation
As usual.
```bash
pip install promypy
```## Usage
There are two commands available: `dump` and `check`.
### Dump
The idea of this command is to store the list of files that are not fully type annotated into a file.
```bash
Usage: promypy dump [OPTIONS] FILES...Generate a list of files that are not fully type annotated.
Arguments:
FILES... [required]Options:
--mypy-args TEXT
--output TEXT
--help Show this message and exit.
```### Check
```bash
Usage: promypy check [OPTIONS] FILES...Check the given files with mypy, applying a set of custom rules.
Arguments:
FILES... [required]Options:
-f, --ignore-file PATH [required]
--mypy-args TEXT
--help Show this message and exit.
```### Pre-commit
Add the following to your `.pre-commit-config.yaml` file:
```yaml
- repo: https://github.com/Kludex/promypy
rev: 0.3.0
hooks:
- id: promypy
args:
- --ignore-file=
```## License
This project is licensed under the terms of the MIT license.