Releases: pylint-dev/pylint
v2.13.7
v2.13.6
-
Fix a crash in the
unsupported-membership-testchecker 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-docand are parsed correctly. -
Fixed a false positive for
unused-variablewhen a builtin specified in
--additional-builtinsis given a type annotation.Closes #6388
-
Fixed an
AstroidErrorin 2.13.0 raised by theduplicate-codechecker with
ignore-importsorignore-signaturesenabled.Closes #6301
v2.13.5
-
Fix false positive regression in 2.13.0 for
used-before-assignmentfor
homonyms between variable assignments in try/except blocks and variables in
subscripts in comprehensions. -
lru-cache-decorating-methodhas been renamed tocache-max-size-noneand
will only be emitted whenmaxsizeisNone.Closes #6180
-
Fix false positive for
unused-importwhen disabling bothused-before-assignmentandundefined-variable.Closes #6089
-
Narrow the scope of the
unnecessary-ellipsischecker to:- functions & classes which contain both a docstring and an ellipsis.
- A body which contains an ellipsis
nodes.Exprnode & at least one other statement.
-
Fix false positive for
used-before-assignmentfor assignments taking place via
nonlocal declarations after an earlier type annotation.Closes #5394
-
Fix crash for
redefined-slots-in-subclasswhen the type of the slot is not a const or a string.Closes #6100
-
Only raise
not-callablewhen all the inferred values of a property are not callable.Closes #5931
-
Fix a false negative for
subclassed-final-classwhen a set of other messages were disabled.
v2.13.4
-
Fix false positive regression in 2.13.0 for
used-before-assignmentfor
homonyms between variable assignments in try/except blocks and variables in
a comprehension's filter.Closes #6035
-
Include
testing_pylintrcin source and wheel distributions.Closes #6028
-
Fix crash in
super-init-not-calledchecker when usingctypes.Union.Closes #6027
-
Fix crash for
unneccessary-ellipsischecker 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-parensfor patterns like
"return (a or b) in iterable".Closes #5803
-
Fix a false negative regression in 2.13.0 where
protected-accesswas 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-assignmentwas emitted for
the usage of a nonlocal in a try block.Fixes #5965
-
Avoid emitting
raising-bad-typewhen 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.HVACModeTorIPAddressT.Closes #5981
-
Fixed false positive for
unused-argumentwhen anonlocalname 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/dictwhen the list/dict/set
being iterated through is a function call.Closes #5969
-
Don't emit
broken-noreturnandbroken-collections-callableerrors
insideif TYPE_CHECKINGblocks.
2.13.0
-
Add missing dunder methods to
unexpected-special-method-signaturecheck. -
No longer emit
no-memberin for loops that referenceselfif the binary operation that
started the for loop uses aselfthat 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
--notesoptions 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 thedeforclass+ the name of the class/function
are covered.Closes #5466
-
using-f-string-in-unsupported-versionandusing-final-decorator-in-unsupported-versionmsgids
were renamed fromW1601andW1602toW2601andW2602. Disabling using these msgids will break.
This is done in order to restore consistency with the already existing msgids forapply-builtinand
basestring-builtinfrom 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
--recursiveoption to allow recursive discovery of all modules and packages in subtree. Running pylint with
--recursive=yoption will check all discovered.pyfiles and packages found inside subtree of directory provided
as parameter to pylint.Closes #352
-
Add
modified-iterating-list,modified-iterating-dictandmodified-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-nonechecker 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-differandarguments-renamedwhen methods were
defined outside the top level of a class.Closes #5648
-
Removed the deprecated
check_docsextension. You can use thedocparamschecker
to get the checks previously included incheck_docs.Closes #5322
-
Added a
testutilextra require to the packaging, asgitpythonshould 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_hashoptional
extension.Closes #5025
-
Fixed an issue where
ungrouped-importscould 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-encodingchecks 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-codecchecks that they aren't used, to allow for backwards
compatibility. -
bidirectional-unicodechecks 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-spaceandinvalid-character-nul
to check for possibly harmful unescaped characters.
Closes #5281
-
-
Use the
tomlipackage instead oftomlto parse.tomlfiles.
Closes #5885
- Fix false positive - Allow unpacking of
selfin a subclass oftyping.NamedTuple.
Closes #5312
- Fixed false negative
unpacking-non-sequencewhen 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-comprehensionwhen 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-undefinedwhenglobalis used with a class nameCloses #3088
-
Fixed false positive for
unused-variablewhen anonlocalname is assigned as part of a multi-name assignment.Closes #3781
-
Fixed a crash in
unspecified-encodingchecker when providingNone
to themodeargument of anopen()call.Closes #5731
-
Fixed a crash involving a
NewTypenamed with an f-string.Closes #5770
Ref pylint-dev/astroid#1400 -
Improved
bad-open-modemessage when providingNoneto themode
argument of anopen()call.Closes #5733
-
Added
lru-cache-decorating-methodchecker 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-argumentwhen 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
pylintnow pickles the data passed to subprocesses with
thedillpackage. Thedillpackage 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-memberchecker when analyzing code using
type(self)in bound methods.Closes #5569
-
Optimize parsing of long lines when
missing-final-newlineis enabled.Closes #5724
-
Fix false positives for
used-before-assignmentfrom using named
expressions in a ternary operator test and using that expression as
a call argument. -
Fix false positive for
undefined-variablewhennamedtupleclass
attributes are used as return annotations.Closes #5568
-
Fix false negative for
undefined-variableand 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-assignmentinstead ofundefined-variablewhen attempting
to access unused type annotations.Closes #5713
-
Added confidence level
CONTROL_FLOWfor warnings relying on assumptions
about control flow. -
used-before-assignmentnow 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-assignmentwhen a conditional
or context manager intervened before the try statement that suggested
it might fail.Closes #4045
-
Fixed false negative for
used-before-assignmentin 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-slotwhen the slotted class
defined__setattr__.Closes #3793
-
Fixed a false positive for
invalid-class-objectwhen the object
being assigned to the__class__attribute is uninferable. -
Fixed false positive for
used-before-assignmentwith 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-assignedwhen thedelstatement 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-importwhere everything was not analyzed properly inside typing guards. -
Fixed a false-positive regression for
used-before-assignmentfor
typed variables in the body of class methods that reference the same classCloses #5342
-
Specified that the
ignore-pathsoption considers "" to represent a
windows directory delimiter instead of a regular expression escape
character. -
Fixed a crash with the
ignore-pathsoption 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
endLineandendColumnkeys 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-dictionaryduring membership checks encapsulated in iterables
ornot inchecksCloses #5323
-
unused-importnow check all ancestors for typing guardsCloses #5316