Releases: pylint-dev/pylint
v2.13.8
-
Fix a false positive for
undefined-loop-variable
for a variable used in a lambda
inside the first of multiple loops.Closes #6419
-
Fix a crash when linting a file that passes an integer
mode=
toopen
Closes #6414
-
Avoid reporting
superfluous-parens
on expressions using theis not
operator.Closes #5930
-
Fix a false positive for
undefined-loop-variable
when theelse
of afor
loop raises or returns.Closes #5971
-
Fix false positive for
unused-variable
for classes inside functions
and where a metaclass is provided via a call.Closes #4020
-
Fix false positive for
unsubscriptable-object
in Python 3.8 and below for
statements guarded byif TYPE_CHECKING
.Closes #3979
v2.13.7
v2.13.6
-
Fix a crash in the
unsupported-membership-test
checker when assigning
multiple constants to class attributes including__iter__
via unpacking.Closes #6366
-
Asterisks are no longer required in Sphinx and Google style parameter documentation
formissing-param-doc
and are parsed correctly. -
Fixed a false positive for
unused-variable
when a builtin specified in
--additional-builtins
is given a type annotation.Closes #6388
-
Fixed an
AstroidError
in 2.13.0 raised by theduplicate-code
checker with
ignore-imports
orignore-signatures
enabled.Closes #6301
v2.13.5
-
Fix false positive regression in 2.13.0 for
used-before-assignment
for
homonyms between variable assignments in try/except blocks and variables in
subscripts in comprehensions. -
lru-cache-decorating-method
has been renamed tocache-max-size-none
and
will only be emitted whenmaxsize
isNone
.Closes #6180
-
Fix false positive for
unused-import
when disabling bothused-before-assignment
andundefined-variable
.Closes #6089
-
Narrow the scope of the
unnecessary-ellipsis
checker to:- functions & classes which contain both a docstring and an ellipsis.
- A body which contains an ellipsis
nodes.Expr
node & at least one other statement.
-
Fix false positive for
used-before-assignment
for assignments taking place via
nonlocal declarations after an earlier type annotation.Closes #5394
-
Fix crash for
redefined-slots-in-subclass
when the type of the slot is not a const or a string.Closes #6100
-
Only raise
not-callable
when all the inferred values of a property are not callable.Closes #5931
-
Fix a false negative for
subclassed-final-class
when a set of other messages were disabled.
v2.13.4
-
Fix false positive regression in 2.13.0 for
used-before-assignment
for
homonyms between variable assignments in try/except blocks and variables in
a comprehension's filter.Closes #6035
-
Include
testing_pylintrc
in source and wheel distributions.Closes #6028
-
Fix crash in
super-init-not-called
checker when usingctypes.Union
.Closes #6027
-
Fix crash for
unneccessary-ellipsis
checker when an ellipsis is used inside of a container or a lambda expression.
v2.13.3
v2.13.2
-
Fix crash when subclassing a
namedtuple
.Closes #5982
-
Fix false positive for
superfluous-parens
for patterns like
"return (a or b) in iterable".Closes #5803
-
Fix a false negative regression in 2.13.0 where
protected-access
was not
raised on functions.Fixes #5989
-
Better error messages in case of crash if pylint can't write the issue template.
Refer to #5987
v2.13.1
-
Fix a regression in 2.13.0 where
used-before-assignment
was emitted for
the usage of a nonlocal in a try block.Fixes #5965
-
Avoid emitting
raising-bad-type
when there is inference ambiguity on
the variable being raised.Closes #2793
-
Loosen TypeVar default name pattern a bit to allow names with multiple uppercase
characters. E.g.HVACModeT
orIPAddressT
.Closes #5981
-
Fixed false positive for
unused-argument
when anonlocal
name is used
in a nested function that is returned without being called by its parent.Closes #5187
-
Fix program crash for
modified_iterating-list/set/dict
when the list/dict/set
being iterated through is a function call.Closes #5969
-
Don't emit
broken-noreturn
andbroken-collections-callable
errors
insideif TYPE_CHECKING
blocks.
2.13.0
-
Add missing dunder methods to
unexpected-special-method-signature
check. -
No longer emit
no-member
in for loops that referenceself
if the binary operation that
started the for loop uses aself
that is encapsulated in tuples or lists.Ref pylint-dev/astroid#1360
Closes #4826 -
Output better error message if unsupported file formats are used with
pyreverse
.Closes #5950
-
Fix pyreverse diagrams type hinting for classmethods and staticmethods.
-
Fix pyreverse diagrams type hinting for methods returning None.
-
Fix matching
--notes
options that end in a non-word character.Closes #5840
-
Updated the position of messages for class and function defintions to no longer cover
the complete definition. Only thedef
orclass
+ the name of the class/function
are covered.Closes #5466
-
using-f-string-in-unsupported-version
andusing-final-decorator-in-unsupported-version
msgids
were renamed fromW1601
andW1602
toW2601
andW2602
. Disabling using these msgids will break.
This is done in order to restore consistency with the already existing msgids forapply-builtin
and
basestring-builtin
from the now deleted python 3K+ checker. There is now a check that we're not using
existing msgids or symbols from deleted checkers.Closes #5729
-
The line numbering for messages related to function arguments is now more accurate. This can
require some message disables to be relocated to updated positions. -
Add
--recursive
option to allow recursive discovery of all modules and packages in subtree. Running pylint with
--recursive=y
option will check all discovered.py
files and packages found inside subtree of directory provided
as parameter to pylint.Closes #352
-
Add
modified-iterating-list
,modified-iterating-dict
andmodified-iterating-set
,
emitted when items are added to or removed from respectively a list, dictionary or
set being iterated through.Closes #5348
-
Fix false-negative for
assignment-from-none
checker using list.sort() method.closes #5722
-
New extension
import-private-name
: indicate imports of external private packages
and objects (prefixed with_
). It can be loaded usingload-plugins=pylint.extensions.private_import
.Closes #5463
-
Fixed crash from
arguments-differ
andarguments-renamed
when methods were
defined outside the top level of a class.Closes #5648
-
Removed the deprecated
check_docs
extension. You can use thedocparams
checker
to get the checks previously included incheck_docs
.Closes #5322
-
Added a
testutil
extra require to the packaging, asgitpython
should not be a dependency
all the time but is still required to use the primer helper code inpylint.testutil
. You can
install it withpip install pylint[testutil]
.Closes #5486
-
Reinstated checks from the python3 checker that are still useful for python 3
(eq-without-hash
). This is now in thepylint.extensions.eq_without_hash
optional
extension.Closes #5025
-
Fixed an issue where
ungrouped-imports
could not be disabled without raising
useless-suppression
.Ref #2366
-
Added several checkers to deal with unicode security issues
(seeTrojan Sources <https://trojansource.codes/>
_ and
PEP 672 <https://www.python.org/dev/peps/pep-0672/>
_ for details) that also
concern the readability of the code. In detail the following checks were added:-
bad-file-encoding
checks that the file is encoded in UTF-8 as suggested by
PEP8 <https://www.python.org/dev/peps/pep-0008/#id20>
.
UTF-16 and UTF-32 arenot supported by Python <https://bugs.python.org/issue1503789>
at the moment. If this ever changes
invalid-unicode-codec
checks that they aren't used, to allow for backwards
compatibility. -
bidirectional-unicode
checks for bidirectional unicode characters that
could make code execution different than what the user expects. -
invalid-character-backspace
,invalid-character-carriage-return
,
invalid-character-sub
,invalid-character-esc
,
invalid-character-zero-width-space
andinvalid-character-nul
to check for possibly harmful unescaped characters.
Closes #5281
-
-
Use the
tomli
package instead oftoml
to parse.toml
files.
Closes #5885
- Fix false positive - Allow unpacking of
self
in a subclass oftyping.NamedTuple
.
Closes #5312
- Fixed false negative
unpacking-non-sequence
when value is an empty list.
Closes #5707
-
Better warning messages for useless else or elif when a function returns early.
Closes #5614
-
Fixed false positive
consider-using-dict-comprehension
when creating a dict
using a list of tuples where key AND value vary depending on the same condition.Closes #5588
-
Fixed false positive for
global-variable-undefined
whenglobal
is used with a class nameCloses #3088
-
Fixed false positive for
unused-variable
when anonlocal
name is assigned as part of a multi-name assignment.Closes #3781
-
Fixed a crash in
unspecified-encoding
checker when providingNone
to themode
argument of anopen()
call.Closes #5731
-
Fixed a crash involving a
NewType
named with an f-string.Closes #5770
Ref pylint-dev/astroid#1400 -
Improved
bad-open-mode
message when providingNone
to themode
argument of anopen()
call.Closes #5733
-
Added
lru-cache-decorating-method
checker with checks for the use offunctools.lru_cache
on class methods. This is unrecommended as it creates memory leaks by never letting the instance
getting garbage collected.Closes #5670
-
Fixed crash with recursion error for inference of class attributes that referenced
the class itself.Closes #5408
Ref pylint-dev/astroid#1392 -
Fixed false positive for
unused-argument
when a method overridden in a subclass
does nothing with the value of a keyword-only argument.Closes #5771
Ref pylint-dev/astroid#1382 -
The issue template for crashes is now created for crashes which were previously not covered
by this mechanism.Closes #5668
-
Rewrote checker for
non-ascii-name
.
It now ensures all Python names are ASCII and also properly
checks the names of imports (non-ascii-module-import
) as
well as file names (non-ascii-file-name
) and emits their respective new warnings.Non ASCII characters could be homoglyphs (look alike characters) and hard to
enter on a non specialized keyboard.
SeeConfusable Characters in PEP 672 <https://www.python.org/dev/peps/pep-0672/#confusable-characters-in-identifiers>
_ -
When run in parallel mode
pylint
now pickles the data passed to subprocesses with
thedill
package. Thedill
package has therefore been added as a dependency. -
An astroid issue where symlinks were not being taken into account
was fixedCloses #1470
Closes #3499
Closes #4302
Closes #4798
Closes #5081 -
Fix a crash in
unused-private-member
checker when analyzing code using
type(self)
in bound methods.Closes #5569
-
Optimize parsing of long lines when
missing-final-newline
is enabled.Closes #5724
-
Fix false positives for
used-before-assignment
from using named
expressions in a ternary operator test and using that expression as
a call argument. -
Fix false positive for
undefined-variable
whennamedtuple
class
attributes are used as return annotations.Closes #5568
-
Fix false negative for
undefined-variable
and related variable messages
when the same undefined variable is used as a type annotation and is
accessed multiple times, or is used as a default argument to a function.Closes #5399
-
Pyreverse - add output in mermaidjs format
-
Emit
used-before-assignment
instead ofundefined-variable
when attempting
to access unused type annotations.Closes #5713
-
Added confidence level
CONTROL_FLOW
for warnings relying on assumptions
about control flow. -
used-before-assignment
now considers that assignments in a try block
may not have occurred when the except or finally blocks are executed. -
Fixed false negative for
used-before-assignment
when a conditional
or context manager intervened before the try statement that suggested
it might fail.Closes #4045
-
Fixed false negative for
used-before-assignment
in finally blocks
if an except handler did not define the assignment that might have failed
in the try block. -
Fixed extremely long processing of long lines with comma's.
Closes #5483
-
Fixed crash on properties and inherited class methods when comparing them for
equality against an empty dict.Closes #5646
-
Fixed a false positive for
assigning-non-slot
when the slotted class
defined__setattr__
.Closes #3793
-
Fixed a false positive for
invalid-class-object
when the object
being assigned to the__class__
attribute is uninferable. -
Fixed false positive for
used-before-assignment
with self-referential type
annotation in conditional statements within class methods.Closes #5499
-
Add checker
redefined-slots-in-subclass
: Emitted when a slot is redefined in a subclass.Closes #5617
-
Fixed false positive for
global-variable-not-assigned
when thedel
statement is usedCloses #5333
-
By default, pylint does no longer take files starting with
.#
into account. Those are
consideredemacs file locks
. See
https://www.gnu.org/software/emacs/manual/html_node/elisp/File-Lock...
v2.12.2
-
Fixed a false positive for
unused-import
where everything was not analyzed properly inside typing guards. -
Fixed a false-positive regression for
used-before-assignment
for
typed variables in the body of class methods that reference the same classCloses #5342
-
Specified that the
ignore-paths
option considers "" to represent a
windows directory delimiter instead of a regular expression escape
character. -
Fixed a crash with the
ignore-paths
option when invoking the option
via the command line.Closes #5437
-
Fixed handling of Sphinx-style parameter docstrings with asterisks. These
should be escaped with by prepending a "".Closes #5406
-
Add
endLine
andendColumn
keys to output ofJSONReporter
.Closes #5380
-
Fixed handling of Google-style parameter specifications where descriptions
are on the line following the parameter name. These were generating
false positives formissing-param-doc
.Closes #5452
-
Fix false negative for
consider-iterating-dictionary
during membership checks encapsulated in iterables
ornot in
checksCloses #5323
-
unused-import
now check all ancestors for typing guardsCloses #5316