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.PY2
andsix.PY3
for conditional imports.Closes #3501
-
A new
github
reporter has been added. This reporter returns the output ofpylint
in a format that
Github can use to automatically annotate code. Use it withpylint --output-format=github
on your Github Workflows.Closes #9443.
New Checks
-
Add check
possibly-used-before-assignment
when 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 y
and 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-parameters
in the case of parameters which arepositional-only
,keyword-only
,variadic positional
orvariadic 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-tuple
being enabled for a file or not is now
done once per file instead of once for each token.Refs #9608.