v3.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
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
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
-
Add
using-exception-groups-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
-
Add
using-assignment-expression-in-unsupported-version
for uses of:=
(walrus operator)
on Python versions below 3.8 provided with--py-version
.Closes #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
-
Add
unnecessary-default-type-args
to thetyping
extension to detect the use
of unnecessary default type args fortyping.Generator
andtyping.AsyncGenerator
.Refs #9938
False 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 #7565.
-
Fix a false negative for
await-outside-async
when await is inside Lambda.Refs #9653
-
Fix a false negative for
duplicate-argument-name
by includingpositional-only
,*args
and**kwargs
arguments in the check.Closes #9669
-
Fix false negative for
multiple-statements
when multiple statements are present onelse
andfinally
lines oftry
.Refs #9759
-
Fix false negatives when
isinstance
does not have exactly two arguments.
pylint now emits atoo-many-function-args
orno-value-for-parameter
appropriately forisinstance
calls.Closes #9847
Other 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 #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 fromre.compile
instead.Closes #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
-
Improve file discovery for directories that are not python packages.
Closes #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 #9774
-
Add support for Python 3.13.
Refs #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 #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