Python linter that warns you about using deprecated modules, classes, and functions. It provides a CLI as well as flake8 and pylint plugins.
Installation:
python3 -m pip install flake8-warnings
Now, you can use it in one of the following ways:
- Directly from CLI:
python3 -m flake8_warnings ./my_project/
- As a flake8 plugin. Just run
flake8 ./my_project/
, it will automatically detect the plugin. - As a pylint plugin. For pylint, plugins must be explicitly specified:
pylint --load-plugins=flake8_warnings ./my_project/
.
It analyzes all imported modules, classes and functions and detects the following:
- warnings.warn function calls.
- Deprecation decorators like deprecated or deprecation.
- Deprecation messages in docstrings.
- Stdlib modules deprecated by PEP 594.
The tool provides a different error code for each warning category:
- 01: Warning
- 02: UserWarning
- 03: DeprecationWarning
- 04: SyntaxWarning
- 05: RuntimeWarning
- 06: FutureWarning
- 07: PendingDeprecationWarning
- 08: ImportWarning
- 09: UnicodeWarning
- 10: BytesWarning
- 11: ResourceWarning
This is how they are used in different linters:
- In flake8, the code prefix is
WS0
, soDeprecationWarning
will be reported asWS003
. - In pylint, the prefix is
W99
, soDeprecationWarning
will be reported asW9903
. The "message-symbol" is the warning category. So, if you want to ignore an error aboutDeprecationWarning
, add# pylint: disable=DeprecationWarning
to this line. - If you use CLI, the warning category will be shown you directly, without any obscure codes.
In all cases, the error message is the detected warning message.
- flake8-wranings is licensed under MIT License. On practice, I don't care how you're going to use it. i did the project because it is fun, not because I want to be famous or whatever.
- astroid is a direct runtime dependency of flake8-warning and it is licensed under LGPL-2.1 License. It allows commercial and private usage, distribution and whatever, don't confuse it with GPL. However, if your legal department is still nervous, just don't make flake8-warnings a production dependency (why would you?), use it only on dev and test environments.