What's New in Pylint 3.2¶
- Release:
3.2
- Date:
TBA
Summary -- Release highlights¶
What's new in Pylint 3.2.1?¶
Release date: 2024-05-18
False Positives Fixed¶
Exclude if/else branches containing terminating functions (e.g. sys.exit()) from possibly-used-before-assignment checks.
Closes #9627 (#9627)
Don't emit
typevar-name-incorrect-variance
warnings for PEP 695 style TypeVars. The variance is inferred automatically by the type checker. Adding_co
or_contra
suffix can help to reason about TypeVar.Refs #9638 (#9638)
Fix a false positive for possibly-used-before-assignment when using typing.assert_never() (3.11+) to indicate exhaustiveness.
Closes #9643 (#9643)
Other Bug Fixes¶
Fix a false negative for
--ignore-patterns
when the directory to be linted is specified using a dot(.
) and all files are ignored instead of only the files whose name begin with a dot.Closes #9273 (#9273)
Restore "errors / warnings by module" section to report output (with -ry).
Closes #9145 (#9145)
trailing-comma-tuple
should now be correctly emitted when it was disabled globally but enabled via local message control, after removal of an over-optimisation.Refs #9608. (#9608)
Add --prefer-stubs=yes option to opt-in to the astroid 3.2 feature that prefers .pyi stubs over same-named .py files. This has the potential to reduce no-member errors but at the cost of more errors such as not-an-iterable from function bodies appearing as ....
Defaults to no.
Closes #9626 Closes #9623 (#9626)
Internal Changes¶
Update astroid version to 3.2.1. This solves some reports of
RecursionError
and also makes the prefer .pyi stubs feature in astroid 3.2.0 opt-in with the aforementioned--prefer-stubs=y
option.Refs #9139 (#9139)
What's new in Pylint 3.2.0?¶
Release date: 2024-05-14
New Features¶
Understand six.PY2 and six.PY3 for conditional imports.
Closes #3501 (#3501)
A new github reporter has been added. This reporter returns the output of pylint in a format that Github can use to automatically annotate code. Use it with pylint --output-format=github on your Github Workflows.
Closes #9443. (#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 (#1727)
Checks for generators that use contextmanagers that don't handle cleanup properly. Is meant to raise visibility 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 value with x() as y and not just with x().
Closes #2832 (#2832)
False Negatives Fixed¶
False Positives Fixed¶
pylint now understands the @overload
decorator return values better.
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.
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. (#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. (#9608)