Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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 [symilar] Migrate from getopt to argparse #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 Check "__slots__" and "@dataclass" attributes #9499
New Checks
Added
too-many-positional-arguments
to allow distinguishing the configuration for too manytotal arguments (with keyword-only params specified after
*
) from the configurationfor 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 [feature request] New warning: too many positional arguments #9099
Add
using-exception-group-in-unsupported-version
andusing-generic-type-syntax-in-unsupported-version
for uses of Python 3.11+ or3.12+ features on lower supported versions provided with
--py-version
.Closes Add check for using major 3.11 and 3.12 features with lower
--py-version
#9791Add
using-assignment-expression-in-unsupported-version
for uses of:=
(walrus operator)on Python versions below 3.8 provided with
--py-version
.Closes Assign expression / walrus operator is 3.8+ #9820
Add
using-positional-only-args-in-unsupported-version
for uses of positional-only args onPython versions below 3.8 provided with
--py-version
.Closes Positional-only parameters are 3.8+ #9823
Add
unnecessary-default-type-args
to thetyping
extension to detect the useof unnecessary default type args for
typing.Generator
andtyping.AsyncGenerator
.Refs Add check for
unnecessary-default-type-args
#9938False Negatives Fixed
Fix computation of never-returning function:
Never
is handled in addition toNoReturn
, and priority is given to the explicit--never-returning-functions
option.Closes typing_extensions assert_never's Never not supported #7565.
Fix a false negative for
await-outside-async
when await is inside Lambda.Refs Also check Lambda for await-outside-async #9653
Fix a false negative for
duplicate-argument-name
by includingpositional-only
,*args
and**kwargs
arguments in the check.Closes False negatives for
duplicate-argument-name
#9669Fix false negative for
multiple-statements
when multiple statements are present onelse
andfinally
lines oftry
.Refs
multiple-statements
no longer detected in afinally:
block #9759Fix false negatives when
isinstance
does not have exactly two arguments.pylint now emits a
too-many-function-args
orno-value-for-parameter
appropriately for
isinstance
calls.Closes False negative: Wrong number of arguments for
isinstance
#9847Other Bug Fixes
--enable
with--disable=all
now produces an error, when an unknown msg code is used. Internalpylint
messages are no longer affected by--disable=all
.Closes [unknown-option-value] False negative after
--disable=all
#9403Impossible 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 Gracefully handle invalid ‘ignore-paths’ regex crash #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 pylint not finding the tox.ini config #9727
Improve file discovery for directories that are not python packages.
Closes pylint doesn't continue searching for files under a directory that is not a package #9764
Other Changes
Remove support for launching pylint with Python 3.8.
Code that supports Python 3.8 can still be linted with the
--py-version=3.8
setting.Refs Drop support for Python 3.8 #9774
Add support for Python 3.13.
Refs Support Python 3.13 #9852
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 Correct
similar
tosymilar
when talking about the standalone script #9734Remove 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 Remove old-style classes code, remove check for new-style class #9925