Releases: pylint-dev/pylint
v3.3.3
What's new in Pylint 3.3.3?
Release date: 2024-12-23
False Positives Fixed
-
Fix false positives for
undefined-variablefor classes using Python 3.12
generic type syntax.Closes #9335
-
Fix a false positive for
use-implicit-booleaness-not-len. No lint should be emitted for
generators (lenis not defined for generators).Refs #10100
Other Bug Fixes
-
Fix
Unable to import 'collections.abc' (import-error)on Python 3.13.1.Closes #10112
v3.3.2
False Positives Fixed
-
Fix a false positive for
potential-index-errorwhen an indexed iterable
contains a starred element that evaluates to more than one item.Closes #10076
Other Bug Fixes
-
Fixes the issue with --source-root option not working when the source files are in a subdirectory of the source root (e.g. when using a /src layout).
Closes #10026
v3.3.1
v3.3.0
Release date: 2024-09-20
Changes requiring user actions
-
We migrated
symilarto 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 1should become--ignore-comments).Refs #9731
New Features
-
Add new
declare-non-sloterror 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-argumentsto 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-versionand
using-generic-type-syntax-in-unsupported-versionfor 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-versionfor uses of:=(walrus operator)
on Python versions below 3.8 provided with--py-version.Closes #9820
-
Add
using-positional-only-args-in-unsupported-versionfor uses of positional-only args on
Python versions below 3.8 provided with--py-version.Closes #9823
-
Add
unnecessary-default-type-argsto thetypingextension to detect the use
of unnecessary default type args fortyping.Generatorandtyping.AsyncGenerator.Refs #9938
False Negatives Fixed
-
Fix computation of never-returning function:
Neveris handled in addition toNoReturn, and priority is given to the explicit--never-returning-functionsoption.Closes #7565.
-
Fix a false negative for
await-outside-asyncwhen await is inside Lambda.Refs #9653
-
Fix a false negative for
duplicate-argument-nameby includingpositional-only,*argsand**kwargsarguments in the check.Closes #9669
-
Fix false negative for
multiple-statementswhen multiple statements are present onelseandfinallylines oftry.Refs #9759
-
Fix false negatives when
isinstancedoes not have exactly two arguments.
pylint now emits atoo-many-function-argsorno-value-for-parameter
appropriately forisinstancecalls.Closes #9847
Other Bug Fixes
-
--enablewith--disable=allnow produces an error, when an unknown msg code is used. Internalpylintmessages 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.compileinstead.Closes #9680
-
Fix a bug where a
tox.inifile with pylint configuration was ignored and it exists in the current directory..cfgand.inifiles containing aPylintconfiguration 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--rcfileoption.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.8setting.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
v3.2.7
What's new in Pylint 3.2.7?
Release date: 2024-08-31
False Positives Fixed
-
Fixed a false positive
unreachableforNoReturncoroutine functions.Closes #9840
Other Bug Fixes
-
Fix crash in refactoring checker when calling a lambda bound as a method.
Closes #9865
-
Fix a crash in
undefined-loop-variablewhen providing theiterableargument toenumerate().Closes #9875
-
Fix to address indeterminacy of error message in case a module name is same as another in a separate namespace.
Refs #9883
v3.2.6
What's new in Pylint 3.2.6?
Release date: 2024-07-21
False Positives Fixed
-
Quiet false positives for
unexpected-keyword-argwhen pylint cannot
determine which of two or more dynamically defined classes is being instantiated.Closes #9672
-
Fix a false positive for
missing-param-docwhere a method which is decorated withtyping.overloadwas expected to have a docstring specifying its parameters.Closes #9739
-
Fix a regression that raised
invalid-nameon class attributes merely
overriding invalid names from an ancestor.Closes #9765
-
Treat
assert_never()the same way when imported fromtyping_extensions.Closes #9780
-
Fix a false positive for
consider-using-min-max-builtinwhen the assignment target is an attribute.Refs #9800
Other Bug Fixes
v3.2.5
v3.2.4
What's new in Pylint 3.2.4?
Release date: 2024-06-26
False Positives Fixed
-
Prevent emitting
possibly-used-before-assignmentwhen relying on names
only potentially not defined in conditional blocks guarded by functions
annotated withtyping.Neverortyping.NoReturn.Closes #9674
Other Bug Fixes
-
Fixed a crash when the lineno of a variable used as an annotation wasn't available for
undefined-variable.Closes #8866
-
Fixed a crash when the
startvalue in anenumeratewas non-constant and impossible to infer
(like inenumerate(apples, start=int(random_apple_index)) forunnecessary-list-index-lookup.Closes #9078
-
Fixed a crash in
symilarwhen the-dor-ishort option were not properly recognized.
It's still impossible to do-d=1(you must do-d 1).Closes #9343
v3.2.3
False Positives Fixed
-
Classes with only an Ellipsis (
...) in their body do not trigger 'multiple-statements'
anymore if they are inlined (in accordance with black's 2024 style).Closes #9398
-
Fix a false positive for
redefined-outer-namewhen there is a name defined in an exception-handling block which shares the same name as a local variable that has been defined in a function body.Closes #9671
-
Fix a false positive for
use-yield-fromwhen using the return value from theyieldatom.Closes #9696