v3.2.0
What's new in Pylint 3.2.0?
Release date: 2024-05-14
Of note: a github reporter, two new checks (possibly-used-before-assignment and contextmanager-generator-missing-cleanup), performance improvements, and an astroid upgrade providing support for @overload and .pyi stubs.
New Features
-
Understand
six.PY2andsix.PY3for conditional imports.Closes #3501
-
A new
githubreporter has been added. This reporter returns the output ofpylintin a format that
Github can use to automatically annotate code. Use it withpylint --output-format=githubon your Github Workflows.Closes #9443.
New Checks
-
Add check
possibly-used-before-assignmentwhen relying on names after anif/else
switch when one branch failed to define the name, raise, or return.Closes #1727
-
Checks for generators that use contextmanagers that don't handle cleanup properly.
Is meant to raise visibilty on the case that a generator is not fully exhausted and the contextmanager is not cleaned up properly.
A contextmanager must yield a non-constant value and not handle cleanup for GeneratorExit.
The using generator must attempt to use the yielded context valuewith x() as yand not justwith x().Closes #2832
False Negatives Fixed
-
If and Try nodes are now checked for useless return statements as well.
Closes #9449.
-
Fix false negative for
property-with-parametersin the case of parameters which arepositional-only,keyword-only,variadic positionalorvariadic keyword.Closes #9584
False Positives Fixed
Performance Improvements
-
Ignored modules are now not checked at all, instead of being checked and then
ignored. This should speed up the analysis of large codebases which have
ignored modules.Closes #9442
-
ImportChecker's logic has been modified to avoid context files when possible. This makes it possible
to cache module searches on astroid and reduce execution times.Refs #9310.
-
An internal check for
trailing-comma-tuplebeing enabled for a file or not is now
done once per file instead of once for each token.Refs #9608.