What's New in Pylint 3.3¶
:Release:3.3 :Date: 2024-09-20
Summary -- Release highlights¶
What's new in Pylint 3.3.0?¶
Release date: TBA
No significant changes.
What's new in Pylint 3.3.0?¶
Release date: 2024-09-20
Changes requiring user actions¶
We migrated
symilar
to argparse, from getopt, so the error and help output changed (for the better). We exit with 2 instead of sometime 1, sometime 2. The error output is not captured by the runner anymore. It's not possible to use a value for the boolean options anymore (--ignore-comments 1
should become--ignore-comments
).Refs #9731 (#9731)
New Features¶
Add new declare-non-slot error which reports when a class has a __slots__ member and a type hint on the class is not present in __slots__.
Refs #9499 (#9499)
New Checks¶
Added too-many-positional-arguments to allow distinguishing the configuration for too many total arguments (with keyword-only params specified after *) from the configuration for too many positional-or-keyword or positional-only arguments.
As part of evaluating whether this check makes sense for your project, ensure you adjust the value of --max-positional-arguments.
Closes #9099 (#9099)
Add using-exception-group-in-unsupported-version and using-generic-type-syntax-in-unsupported-version for uses of Python 3.11+ or 3.12+ features on lower supported versions provided with --py-version.
Closes #9791 (#9791)
Add using-assignment-expression-in-unsupported-version for uses of := (walrus operator) on Python versions below 3.8 provided with --py-version.
Closes #9820 (#9820)
Add using-positional-only-args-in-unsupported-version for uses of positional-only args on Python versions below 3.8 provided with --py-version.
Closes #9823 (#9823)
Add
unnecessary-default-type-args
to thetyping
extension to detect the use of unnecessary default type args fortyping.Generator
andtyping.AsyncGenerator
.Refs #9938 (#9938)
False Negatives Fixed¶
Fix computation of never-returning function: Never is handled in addition to NoReturn, and priority is given to the explicit --never-returning-functions option.
Closes #7565. (#7565)
Fix a false negative for await-outside-async when await is inside Lambda.
Refs #9653 (#9653)
Fix a false negative for
duplicate-argument-name
by includingpositional-only
,*args
and**kwargs
arguments in the check.Closes #9669 (#9669)
Fix false negative for multiple-statements when multiple statements are present on else and finally lines of try.
Refs #9759 (#9759)
Fix false negatives when isinstance does not have exactly two arguments. pylint now emits a too-many-function-args or no-value-for-parameter appropriately for isinstance calls.
Closes #9847 (#9847)
Other Bug Fixes¶
--enable with --disable=all now produces an error, when an unknown msg code is used. Internal pylint messages are no longer affected by --disable=all.
Closes #9403 (#9403)
Impossible to compile regexes for paths in the configuration or argument given to pylint won't crash anymore but raise an argparse error and display the error message from
re.compile
instead.Closes #9680 (#9680)
Fix a bug where a
tox.ini
file with pylint configuration was ignored and it exists in the current directory..cfg
and.ini
files containing aPylint
configuration may now use a section named[pylint]
. This enhancement impacts the scenario where these file types are used as defaults when they are present and have not been explicitly referred to, using the--rcfile
option.Closes #9727 (#9727)
Improve file discovery for directories that are not python packages.
Closes #9764 (#9764)
Other Changes¶
Internal Changes¶
All variables, classes, functions and file names containing the word 'similar', when it was, in fact, referring to 'symilar' (the standalone program for the duplicate-code check) were renamed to 'symilar'.
Closes #9734 (#9734)
Remove old-style classes (Python 2) code and remove check for new-style class since everything is new-style in Python 3. Updated doc for exception checker to remove reference to new style class.
Refs #9925 (#9925)