Open
Conversation
1c7c177 to
936b732
Compare
936b732 to
51afd8c
Compare
51afd8c to
e1a045d
Compare
e1a045d to
cd1ecfd
Compare
cd1ecfd to
762f19a
Compare
762f19a to
51c4d82
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
This PR contains the following updates:
2.12.2β2.17.7Release Notes
pylint-dev/pylint (pylint)
v2.17.7Compare Source
2.17.7 is the last release before we only support pylint 3.0.0 or superior and python 3.8 or superior.
False Positives Fixed
Fix a regression in pylint 2.17.6 / astroid 2.15.7 causing various
messages for code involving
TypeVar.Closes #β9069
Other Bug Fixes
Fix crash in refactoring checker when unary operand used with variable in for
loop.
Closes #β9074
v2.17.6Compare Source
Other Bug Fixes
When parsing comma-separated lists of regular expressions in the config,
ignore commas that are inside braces since those indicate quantifiers, not
delineation between expressions.
Closes #β7229
sys.argvis now always correctly considered as impossible to infer(instead of using the actual values given to pylint).
Closes #β9047
Don't show class fields more than once in Pyreverse diagrams.
Closes #β8189
Don't show arrows more than once in Pyreverse diagrams.
Closes #β8522
Don't show duplicate type annotations in Pyreverse diagrams.
Closes #β8888
Don't add
Optionalto|annotations withNonein Pyreverse diagrams.Closes #β9014
v2.17.5Compare Source
What's new in Pylint 2.17.5?
Release date: 2023-07-26
False Positives Fixed
Fix a false positive for
unused-variablewhen there is an import in aif TYPE_CHECKING:block andallow-global-unused-variablesis set tonoin the configuration.Closes #β8696
Fix false positives generated when supplying arguments as
**kwargsto IOcalls like open().
Closes #β8719
Fix a false positive where pylint was ignoring method calls annotated as
NoReturnduring theinconsistent-return-statementscheck.Closes #β8747
Exempt parents with only type annotations from the
invalid-enum-extensionmessage.
Closes #β8830
Other Bug Fixes
Fixed crash when a call to
super()was placed after an operator (e.g.not).Closes #β8554
Fix crash for
modified-while-iteratingchecker when deletingmembers of a dict returned from a call.
Closes #β8598
Fix crash in
invalid-metaclasscheck when a metaclass had duplicatebases.
Closes #β8698
Avoid
consider-using-f-stringon modulos with brackets in template.Closes #β8720.
Fix a crash when
__all__exists but cannot be inferred.Closes #β8740
Fix crash when a variable is assigned to a class attribute of identical name.
Closes #β8754
Fixed a crash when calling
copy.copy()without arguments.Closes #β8774
Other Changes
Fix a crash when a
nonlocalis defined at module-level.Closes #β8735
v2.17.4Compare Source
False Positives Fixed
Fix a false positive for
bad-dunder-namewhen there is a user-defined__index__method.Closes #β8613
Other Bug Fixes
pyreverse: added escaping of vertical bar character in annotation labelsproduced by DOT printer to ensure it is not treated as field separator of
record-based nodes.
Closes #β8603
Fixed a crash when generating a configuration file:
tomlkit.exceptions.TOMLKitError: Can't add a table to a dotted keycaused by tomlkit
v0.11.8.Closes #β8632
v2.17.3Compare Source
What's new in Pylint 2.17.3?
Release date: 2023-04-24
False Positives Fixed
Fix
unused-argumentfalse positive when__new__does not use all thearguments of
__init__.Closes #β3670
Fix
unused-importfalse positive for usage ofsix.with_metaclass.Closes #β7506
logging-not-lazyis not longer emitted for explicitly concatenated stringarguments.
Closes #β8410
Fix false positive for isinstance-second-argument-not-valid-type when union
types contains None.
Closes #β8424
Fixed
unused-importso that it observes thedummy-variables-rgxoption.Closes #β8500
Uniontyped variables without assignment are no longer treated asTypeAlias.Closes #β8540
Fix false positive for
positional-only-arguments-expectedwhen a functioncontains both a positional-only parameter that has a default value, and
**kwargs.Closes #β8555
Fix false positive for
keyword-arg-before-varargwhen a positional-onlyparameter with a default value precedes
*args.Closes #β8570
Other Bug Fixes
Improve output of
consider-using-generatormessage formin()` calls withdefault`` keyword.Closes #β8563
v2.17.2Compare Source
False Positives Fixed
invalid-namenow allows for integers intypealiasnames:Good2Name,GoodName2._1BadName.Closes #β8485
No longer consider
Unionas type annotation as type alias for namingchecks.
Closes #β8487
unnecessary-lambdano longer warns on lambdas which use its parameters intheir body (other than the final arguments), e.g.
lambda foo: (bar if foo else baz)(foo).Closes #β8496
Other Bug Fixes
Fix a crash in pyreverse when "/" characters are used in the output filename
e.g pyreverse -o png -p name/ path/to/project.
Closes #β8504
v2.17.1Compare Source
False Positives Fixed
Adds
asyncSetUpto the defaultdefining-attr-methodslist to silenceattribute-defined-outside-initwarning when usingunittest.IsolatedAsyncioTestCase.Refs #β8403
Other Bug Fixes
--clear-cache-post-runnow also clears LRU caches for pylint utilitiesholding references to AST nodes.
Closes #β8361
Fix a crash when
TYPE_CHECKINGis used without importing it.Closes #β8434
Fix a regression of
preferred-moduleswhere a partial match was usedinstead of the required full match.
Closes #β8453
Internal Changes
The following utilities are deprecated in favor of the more robust
in_type_checking_blockand will be removed in pylint 3.0:
is_node_in_guarded_import_blockis_node_in_typing_guarded_import_blockis_typing_guardis_sys_guardis still available, which was part ofis_node_in_guarded_import_block.Refs #β8433
v2.17.0Compare Source
2.17 is a small release that is the first to support python 3.11 officially
with the addition of TryStar nodes.
There's still two new default checks:
bad-chained-comparisonandimplicit-flag-alias, one of them already fixed a previously undetectedbug in sentry.
Thanks to the community effort our documentation is almost complete,
and almost all messages should have a proper documentation now.
A big thank you to everyone who participated !
The next release is going to be
3.0.0, bring breaking changes andenact long announced deprecations. There's going to be frequent beta
releases, before the official releases, everyone is welcome to try the betas
so we find problems before the actual release.
What's new in Pylint 2.17.0?
Release date: 2023-03-08
New Features
pyreversenow supports custom color palettes with the--color-paletteoption.
Closes #β6738
Add
invalid-namecheck forTypeAliasnames.Closes #β7081
Accept values of the form
<class name>.<attribute name>for theexclude-protectedlist.Closes #β7343
Add
--versionoption topyreverse.Refs #β7851
Adds new functionality with preferred-modules configuration to detect
submodules.
Refs #β7957
Support implicit namespace packages (PEP 420).
Closes #β8154
Add globbing pattern support for
--source-roots.Closes #β8290
Support globbing pattern when defining which file/directory/module to lint.
Closes #β8310
pylint now supports
TryStarnodes from Python 3.11 and should be fullycompatible with Python 3.11.
Closes #β8387
New Checks
Add a
bad-chained-comparisoncheck that emits a warning whenthere is a chained comparison where one expression is semantically
incompatible with the other.
Closes #β6559
Adds an
implicit-flag-aliascheck that emits a warning when a classderived from
enum.IntFlagassigns distinct integer values that sharecommon bit positions.
Refs #β8102
False Positives Fixed
Fix various false positives for functions that return directly from
structural pattern matching cases.
Closes #β5288
Fix false positive for
used-before-assignmentwhentyping.TYPE_CHECKINGis used with if/elif/else blocks.Closes #β7574
Fix false positive for isinstance-second-argument-not-valid-type with union
types.
Closes #β8205
Fix false positive for
used-before-assignmentfor named expressionsappearing after the first element in a list, tuple, or set.
Closes #β8252
Fix false positive for
wrong-spelling-in-commentwith class names in apython 2 type comment.
Closes #β8370
False Negatives Fixed
Fix a false negative for 'missing-parentheses-for-call-in-test' when
inference
failed for the internal of the call as we did not need that information to
raise
correctly.
Refs #β8185
Fix false negative for inconsistent-returns with while-loops.
Closes #β8280
Other Bug Fixes
Fix
used-before-assignmentfalse positive when the walrus operatoris used with a ternary operator in dictionary key/value initialization.
Closes #β8125
Fix
no-name-in-modulefalse positive raised when a package defines avariable with the
same name as one of its submodules.
Closes #β8148
Fix a crash happening for python interpreter < 3.9 following a failed typing
update.
Closes #β8161
Fix
nested-min-maxsuggestion message to indicate it's possible to splatiterable objects.
Closes #β8168
Fix a crash happening when a class attribute was negated in the start
argument of an enumerate.
Closes #β8207
Prevent emitting
invalid-namefor the line on which aglobalstatement is declared.
Closes #β8307
Other Changes
Update explanation for
global-variable-not-assignedand add confidence.Closes #β5073
The governance model and the path to become a maintainer have been documented
as part of our effort to guarantee that the software supply chain in which pylint is included is secure.
Refs #β8329
v2.16.4Compare Source
False Positives Fixed
Fix false positive for isinstance-second-argument-not-valid-type with union
types.
Closes #β8205
v2.16.3Compare Source
False Positives Fixed
Fix false positive for
wrong-spelling-in-commentwith class names in apython 2 type comment.
Closes #β8370
Other Bug Fixes
Prevent emitting
invalid-namefor the line on which aglobalstatement is declared.
Closes #β8307
v2.16.2Compare Source
New Features
Add
--versionoption topyreverse.Refs #β7851
False Positives Fixed
Fix false positive for
used-before-assignmentwhentyping.TYPE_CHECKINGis used with if/elif/else blocks.Closes #β7574
Fix false positive for
used-before-assignmentfor named expressionsappearing after the first element in a list, tuple, or set.
Closes #β8252
Other Bug Fixes
Fix
used-before-assignmentfalse positive when the walrus operatoris used with a ternary operator in dictionary key/value initialization.
Closes #β8125
Fix
no-name-in-modulefalse positive raised when a package defines avariable with the same name as one of its submodules.
Closes #β8148
Fix
nested-min-maxsuggestion message to indicate it's possible to splatiterable objects.
Closes #β8168
Fix a crash happening when a class attribute was negated in the start
argument of an enumerate.
Closes #β8207
v2.16.1Compare Source
Other Bug Fixes
Fix a crash happening for python interpreter < 3.9 following a failed typing
update.
Closes #β8161
v2.16.0Compare Source
Summary -- Release highlights
In 2.16.0 we added aggregation and composition understanding in
pyreverse, and a way to clearthe cache in between run in server mode (originally for the VS Code integration). Apart from the bug
fixes there's also a lot of new checks, and new extensions that have been asked for for a long time
that were implemented.
If you want to benefit from all the new checks load the following plugins::
We still welcome any community effort to help review, integrate, and add good/bad examples to the doc for
#β5953. This should be doable without any
pylintorastroidknowledge, so this is the perfect entrypoint if you want to contribute to
pylintor open source withoutany experience with our code!
Last but not least @βclavedeluna and @βnickdrozd became triagers, welcome to the team !
What's new in Pylint 2.16.0?
Changes requiring user actions
The
accept-no-raise-docoption related tomissing-raises-docwill nowbe correctly taken into account all the time.
Pylint will no longer raise missing-raises-doc (W9006) when no exceptions are
documented and accept-no-raise-doc is true (issue #β7208).
If you were expecting missing-raises-doc errors to be raised in that case,
you
will now have to add
accept-no-raise-doc=noin your configuration to keepthe same behavior.
Closes #β7208
New Features
Added the
no-headeroutput format. If enabled with--output-format=no-header, it will not include the module name in theoutput.
Closes #β5362
Added configuration option
clear-cache-post-runto support server-likeusage.
Use this flag if you expect the linted files to be altered between runs.
Refs #β5401
Add
--allow-reexport-from-packageoption to configure theuseless-import-aliascheck not to emit a warning if a nameis reexported from a package.
Closes #β6006
Update
pyreverseto differentiate between aggregations and compositions.pyreversechecks if it's an Instance or a Call of an object via methodparameters (via type hints)
to decide if it's a composition or an aggregation.
Refs #β6543
New Checks
Adds a
pointless-exception-statementcheck that emits a warning when anException is created and not assigned, raised or returned.
Refs #β3110
Add a
shadowed-importmessage for aliased imports.Closes #β4836
Add new check called
unbalanced-dict-unpackingto check for unbalanceddict unpacking
in assignment and for loops.
Closes #β5797
Add new checker
positional-only-arguments-expectedto check for caseswhen
positional-only arguments have been passed as keyword arguments.
Closes #β6489
Added
singledispatch-methodwhich informs that@singledispatchshoulddecorate functions and not class/instance methods.
Added
singledispatchmethod-functionwhich informs that@singledispatchmethodshould decorate class/instance methods and notfunctions.
Closes #β6917
Rename
broad-excepttobroad-exception-caughtand add new checkerbroad-exception-raisedwhich will warn if general exceptions
BaseExceptionorExceptionareraised.
Closes #β7494
Added
nested-min-maxwhich flagsmin(1, min(2, 3))to simplify tomin(1, 2, 3).Closes #β7546
Extended
use-dict-literalto also warn about call todict()whenpassing keyword arguments.
Closes #β7690
Add
named-expr-without-contextcheck to emit a warning if a namedexpression is used outside a context like
if,for,while, ora comprehension.
Refs #β7760
Add
invalid-slice-stepcheck to warn about a slice step value of0for common builtin sequences.
Refs #β7762
Add
consider-refactoring-into-while-conditioncheck to recommendrefactoring when
a while loop is defined with a constant condition with an immediate
ifstatement to check for
breakcondition as a first statement.Closes #β8015
Extensions
Add new extension checker
dict-init-mutatethat flags mutating adictionary immediately
after the dictionary was created.
Closes #β2876
Added
bad-dunder-nameextension check, which flags bad or misspelleddunder methods.
You can use the
good-dunder-namesoption to allow specific dunder names.Closes #β3038
Added
consider-using-augmented-assigncheck forCodeStyleextensionwhich flags
x = x + 1to simplify tox += 1.This check is disabled by default. To use it, load the code style extension
with
load-plugins=pylint.extensions.code_styleand addconsider-using-augmented-assignin theenableoption.Closes #β3391
Add
magic-numberplugin checker for comparison with constants instead ofnamed constants or enums.
You can use it with
--load-plugins=pylint.extensions.magic_value.Closes #β7281
Add
redundant-typehint-argumentmessage fortypingplugin for duplicateassign typehints.
Enable the plugin to enable the message with:
--load-plugins=pylint.extensions.typing.Closes #β7636
False Positives Fixed
Fix false positive for
unused-variableandunused-importwhen a nameis only used in a string literal type annotation.
Closes #β3299
Document a known false positive for
useless-suppressionwhen disablingline-too-longin a module with only comments and no code.Closes #β3368
trailing-whitespacesis no longer reported within strings.Closes #β3822
Fix false positive for
global-variable-not-assignedwhen a globalvariable is re-assigned via an
ImportFromnode.Closes #β4809
Fix false positive for
use-maxsplit-argwith custom split method.Closes #β4857
Fix
logging-fstring-interpolationfalse positive raised when logging andf-string with
%sformatting.Closes #β4984
Fix false-positive for
used-before-assignmentin pattern matchingwith a guard.
Closes #β5327
Fix
use-sequence-for-iterationwhen unpacking a set with*.Closes #β5788
Fix
deprecated-methodfalse positive when alias for method is similar toname of deprecated method.
Closes #β5886
Fix false positive
assigning-non-slotwhen a class attribute isre-assigned.
Closes #β6001
Fix false positive for
too-many-function-argswhen a function call isassigned to a class attribute inside the class where the function is defined.
Closes #β6592
Fixes false positive
abstract-methodon Protocol classes.Closes #β7209
Pylint now understands the
kw_onlykeyword argument fordataclass.Closes #β7290, closes #β6550, closes #β5857
Fix false positive for
undefined-loop-variableinfor-elseloops thatuse a function
having a return type annotation of
NoReturnorNever.Closes #β7311
Fix
used-before-assignmentfor functions/classes defined in type checkingguard.
Closes #β7368
Fix false positive for
unhashable-memberwhen subclassingdictandusing the subclass as a dictionary key.
Closes #β7501
Fix the message for
unnecessary-dunder-callfor__aiter__and__aneext__. Alsoonly emit the warning when
py-version>= 3.10.Closes #β7529
Fix
used-before-assignmentfalse positive when else branch callssys.exitor similar terminating functions.Closes #β7563
Fix a false positive for
used-before-assignmentfor imports guarded bytyping.TYPE_CHECKINGlater used in variable annotations.Closes #β7609
Fix a false positive for
simplify-boolean-expressionwhen multiple valuesare inferred for a constant.
Closes #β7626
unnecessary-list-index-lookupwill not be wrongly emitted ifenumerateis called withstart.Closes #β7682
Don't warn about
stop-iteration-returnwhen usingnext()overitertools.cycle.Closes #β7765
Fixes
used-before-assignmentfalse positive when the walrus operatoris used in a ternary operator.
Closes #β7779
Fix
missing-param-docfalse positive when function parameter has anescaped underscore.
Closes #β7827
Fixes
method-cache-max-size-nonefalse positive for methods inheritingfrom
Enum.Closes #β7857
multiple-statementsno longer triggers for function stubs using inlined....Closes #β7860
Fix a false positive for
used-before-assignmentwhen a name guarded byif TYPE_CHECKING:is used as a type annotation in a function body andlater re-imported in the same scope.
Closes #β7882
Prevent
used-before-assignmentwhen imports guarded byif TYPE_CHECKINGare guarded again when used.
Closes #β7979
Fixes false positive for
try-except-raisewith multiple exceptions in oneexcept statement if exception are in different namespace.
Closes #β8051
Fix
invalid-nameerrors fortyping_extension.TypeVar.Refs #β8089
Fix
no-kwoafalse positive for context managers.Closes #β8100
Fix a false positive for
redefined-variable-typewhenasyncmethodsare present.
Closes #β8120
False Negatives Fixed
Code following a call to
quit,exit,sys.exitoros._exitwill be marked as
unreachable.Refs #β519
Emit
used-before-assignmentwhen function arguments are redefined insidean inner function and accessed there before assignment.
Closes #β2374
Fix a false negative for
unused-importwhen one module used an import ina type annotation that was also used in another module.
Closes #β4150
Flag
superfluous-parensif parentheses are used during stringconcatenation.
Closes #β4792
Emit
used-before-assignmentwhen relying on names only defined underconditions always testing false.
Closes #β4913
consider-using-joincan now be emitted for non-empty string separators.Closes #β6639
Emit
used-before-assignmentfor further imports guarded byTYPE_CHECKINGPreviously, this message was only emitted for imports guarded directly under
TYPE_CHECKING, not guarded two if-branches deep, nor whenTYPE_CHECKINGwas imported from
typingunder an alias.Closes #β7539
Fix a false negative for
unused-importwhen a constant insidetyping.Annotatedwas treated as a reference to an import.Closes #β7547
consider-using-any-or-allmessage will now be raised in cases whenboolean is initialized, reassigned during loop, and immediately returned.
Closes #β7699
Extend
invalid-slice-indexto emit an warning for invalid slice indicesused with string and byte sequences, and range objects.
Refs #β7762
Fixes
unnecessary-list-index-lookupfalse negative whenenumerateiscalled with
iterableas a kwarg.Closes #β7770
no-else-returnorno-else-raisewill be emitted ifexceptblockalways returns or raises.
Closes #β7788
Fix
dangerous-default-valuefalse negative when*is used.Closes #β7818
consider-using-withnow triggers forpathlib.Path.open.Closes #β7964
Other Bug Fixes
Fix bug in detecting
unused-variablewhen iterating on variable.Closes #β3044
Fix bug in scanning of names inside arguments to
typing.Literal.See https://peps.python.org/pep-0586/#literals-enums-and-forward-references
for details.
Refs #β3299
Update
disallowed-namecheck to flag module-level variables.Closes #β3701
Pylint will no longer deadlock if a parallel job is killed but fail
immediately instead.
Closes #β3899
Fix ignored files being linted when passed on stdin.
Closes #β4354
Fix
no-memberfalse negative when augmented assign is done manually,without
+=.Closes #β4562
Any assertion on a populated tuple will now receive a
assert-on-tuplewarning.
Closes #β4655
missing-return-doc,missing-raises-docandmissing-yields-docnowrespect
the
no-docstring-rgxoption.Closes #β4743
Update
reimportedhelp message for clarity.Closes #β4836
consider-iterating-dictionarywill no longer be raised if bitwiseoperations are used.
Closes #β5478
Using custom braces in
msg-templatewill now work properly.Closes #β5636
Pylint will now filter duplicates given to it before linting. The output
should
be the same whether a file is given/discovered multiple times or not.
Closes #β6242, #β4053
Remove
__index__dunder method call fromunnecessary-dunder-callcheck.
Closes #β6795
Fixed handling of
--as separator between positional arguments and flags.This was not actually fixed in 2.14.5.
Closes #β7003, Refs #β7096
Don't crash on
OSErrorin config file discovery.Closes #β7169
Messages sent to reporter are now copied so a reporter cannot modify the
message sent to other reporters.
Closes #β7214
Fixed a case where custom plugins specified by command line could silently
fail.
Specifically, if a plugin relies on the
init-hookoption changingsys.pathbeforeit can be imported, this will now emit a
bad-plugin-valuemessage. Beforethis
change, it would silently fail to register the plugin for use, but would load
any configuration, which could have unintended effects.
Fixes part of #β7264.
Update
modified_iteratingchecker to fix a crash withforloops onempty list.
Closes #β7380
Update wording for
arguments-differandarguments-renamedto clarifyoverriding object.
Closes #β7390
disable-nextis now correctly scoped to only the succeeding line.Closes #β7401
Fixed a crash in the
unhashable-memberchecker when using alambdaasa dict key.
Closes #β7453
Add
mailcapto deprecated modules list.Closes #β7457
Fix a crash in the
modified-iterating-dictchecker involving instanceattributes.
Closes #β7461
invalid-class-objectdoes not crash anymore when__class__isassigned alongside another variable.
Closes #β7467
--help-msgnow accepts a comma-separated list of message IDs again.Closes #β7471
Allow specifying non-builtin exceptions in the
overgeneral-exceptionoption
using an exception's qualified name.
Closes #β7495
Report
no-self-argumentrather thanno-method-argumentfor methodswith variadic arguments.
Closes #β7507
Fixed an issue where
syntax-errorcouldn't be raised on files withinvalid encodings.
Closes #β7522
Fix false positive for
redefined-outer-namewhen aliasingtypinge.g. as
tand guarding imports undert.TYPE_CHECKING.Closes #β7524
Fixed a crash of the
modified_iteratingchecker when iterating on a setdefined as a class attribute.
Closes #β7528
Use
py-versionto determine if a message should be emitted for messagesdefined with
max-versionormin-version.Closes #β7569
Improve
bad-thread-instantiationcheck to warn iftargetis notpassed in as a keyword argument
or as a second argument.
Closes #β7570
Fixes edge case of custom method named
nextraised an astroid error.Closes #β7610
Fixed a multi-processing crash that prevents using any more than 1 thread on
MacOS.
The returned module objects and errors that were cached by the linter plugin
loader
cannot be reliably pickled. This means that
dillwould throw an errorwhen
attempting to serialise the linter object for multi-processing use.
Closes #β7635.
Fix crash that happened when parsing files with unexpected encoding starting
with 'utf' like
utf13.Closes #β7661
Fix a crash when a child class with an
__init__method inherits from aparent class with an
__init__class attribute.Closes #β7742
Fix
valid-metaclass-classmethod-first-argdefault config value from "cls"to "mcs"
which would cause both a false-positive and false-negative.
Closes #β7782
Fixes a crash in the
unnecessary_list_index_lookupcheck when usingenumeratewithstartand a class attribute.Closes #β7821
Fixes a crash in
stop-iteration-returnwhen thenextbuiltin iscalled without arguments.
Closes #β7828
When pylint exit due to bad arguments being provided the exit code will now
be the expected
32.Refs #β7931
Fixes a
ModuleNotFoundexception when running pylint on a Django projectwith the
pylint_djangoplugin enabled.Closes #β7938
Fixed a crash when inferring a value and using its qname on a slice that was
being incorrectly called.
Closes #β8067
Use better regex to check for private attributes.
Refs #β8081
Fix issue with new typing Union syntax in runtime context for Python 3.10+.
Closes #β8119
Other Changes
Pylint now provides basic support for Python 3.11.
Closes #β5920
Update message for
abstract-methodto include child class name.Closes #β7124
Update Pyreverse's dot and plantuml printers to detect when class methods are
abstract and show them with italic font.
For the dot printer update the label to use html-like syntax.
Closes #β7346
The
docparamsextension now considers typing in Numpy style docstringsas "documentation" for the
missing-param-docmessage.Refs #β7398
Relevant
DeprecationWarningsare now raised withstacklevel=2, sothey have the callsite attached in the message.
Closes #β7463
Add a
minimaloption topylint-configand its toml generator.Closes #β7485
Add method name to the error messages of
no-method-argumentandno-self-argument.Closes #β7507
Prevent leaving the pip install cache in the Docker image.
Refs #β7544
Add a keyword-only
compare_constantsargument tosafe_infer.Refs #β7626
Add
default_enabledoption to optional message dict. Provides an optionto disable a checker message by default.
To use a disabled message, the user must enable it explicitly by adding the
message to the
enableoption.Refs #β7629
Sort
--generated-rcfileoutput.Refs #β7655
epylint is now deprecated and will be removed in pylint 3.0.0. All emacs and
flymake related
files were removed and their support will now happen in an external
repository :
https://github.com/emacsorphanage/pylint.
Closes #β7737
Adds test for existing preferred-modules configuration functionality.
Refs #β7957
Internal Changes
This shores up the tests that cover the loading of custom plugins as affected
by any changes made to the
sys.pathduring execution of aninit-hook.Given the existing contract of allowing plugins to be loaded by fiddling with
the path in this way, this is now the last bit of work needed to close Github
issue #β7264.
Closes #β7264
v2.15.10Compare Source
False Positives Fixed
Fix
use-sequence-for-iterationwhen unpacking a set with*.Closes #β5788
Fix false positive
assigning-non-slotwhen a class attribute isre-assigned.
Closes #β6001
Fixes
used-before-assignmentfalse positive when the walrus operatoris used in a ternary operator.
Closes #β7779
Prevent
used-before-assignmentwhen imports guarded byif TYPE_CHECKINGare guarded again when used.
Closes #β7979
Other Bug Fixes
Using custom braces in
msg-templatewill now work properly.Closes #β5636
v2.15.9Compare Source
False Positives Fixed
Fix false-positive for
used-before-assignmentin pattern matching with a guard.Closes #β5327
Other Bug Fixes
Pylint will no longer deadlock if a parallel job is killed but fail immediately instead.
Closes #β3899
When pylint exit due to bad arguments being provided the exit code will now be the expected
32.Refs #β7931
Fixes a
ModuleNotFoundexception when running pylint on a Django project with thepylint_djangoplugin enabled.Closes #β7938
v2.15.8Compare Source
False Positives Fixed
Document a known false positive for
useless-suppressionwhen disablingline-too-longin a module with only comments and no code.Closes #β3368
Fix
logging-fstring-interpolationfalse positive raised when logging and f-string with%sformatting.Closes #β4984
Fixes false positive
abstract-methodon Protocol classes.Closes #β7209
Fix
missing-param-docfalse positive when function parameter has an escaped underscore.Closes #β7827
multiple-statementsno longer triggers for function stubs using inlined....Closes #β7860
v2.15.7Compare Source
False Positives Fixed
Fix
deprecated-methodfalse positive when alias for method is similar toname of deprecated method.
Closes #β5886
Fix a false positive for
used-before-assignmentfor imports guarded bytyping.TYPE_CHECKINGlater used in variable annotations.Closes #β7609
Other Bug Fixes
Pylint will now filter duplicates given to it before linting. The output
should be the same whether a file is given/discovered multiple times or not.
Closes #β6242, #β4053
Fixes a crash in
stop-iteration-returnwhen thenextbuiltin iscalled without arguments.
Closes #β7828
v2.15.6Compare Source
False Positives Fixed
Fix false positive for
unhashable-memberwhen subclassingdictandusing the subclass as a dictionary key.
Closes #β7501
unnecessary-list-index-lookupwill not be wrongly emitted ifenumerateis called withstart.Closes #β7682
Don't warn about
stop-iteration-returnwhen usingnext()overitertools.cycle.Closes #β7765
Other Bug Fixes
Messages sent to reporter are now copied so a reporter cannot modify the
message sent to other reporters.
Closes #β7214
Fixes edge case of custom method named
nextraised an astroid error.Closes #β7610
Fix crash that happened when parsing files with unexpected encoding starting
with 'utf' like
utf13.Closes #β7661
Fix a crash when a child class with an
__init__method inherits from aparent class with an
__init__class attribute.Closes #β7742
v2.15.5Compare Source
What's new in Pylint 2.15.5?
Release date: 2022-10-21
False Positives Fixed
Fix a false positive for
simplify-boolean-expressionwhen multiple valuesare inferred for a constant.
Closes #β7626
Other Bug Fixes
Remove
__index__dunder method call fromunnecessary-dunder-callcheck.
Closes #β6795
Fixed a multi-processing crash that prevents using any more than 1 thread on
MacOS.
The returned module objects and errors that were cached by the linter plugin loader cannot be reliably pickled. This means that
dillwould throw an error when attempting to serialise the linter object for multi-processing use.Closes #β7635.
Other Changes
Add a keyword-only
compare_constantsargument tosafe_infer.Refs #β7626
Sort
--generated-rcfileoutput.Refs #β7655
v2.15.4Compare Source
False Positives Fixed
Fix the message for
unnecessary-dunder-callfor__aiter__and__anext__. Alsoonly emit the warning when
py-version>= 3.10.Closes #β7529
Other Bug Fixes
Fix bug in detecting
unused-variablewhen iterating on variable.Closes #β3044
Fixed handling of
--as separator between positional arguments and flags.This was not actually fixed in 2.14.5.
Closes #β7003, Refs #β7096
Report
no-self-argumentrather thanno-method-argumentfor methodswith variadic arguments.
Closes #β7507
Fixed an issue where
syntax-errorcouldn't be raised on files withinvalid encodings.
Closes #β7522
Fix false positive for
redefined-outer-namewhen aliasingtypinge.g. as
tand guarding imports undert.TYPE_CHECKING.Closes #β7524
Fixed a crash of the
modified_iteratingchecker when iterating on a setdefined as a class attribute.
Closes #β7528
Fix bug in scanning of names inside arguments to
typing.Literal.See https://peps.python.org/pep-0586/#literals-enums-and-forward-references
for details.
Refs #β3299
Other Changes
Add method name to the error messages of
no-method-argumentandno-self-argument.Closes #β7507
v2.15.3Compare Source
Fixed a crash in the
unhashable-memberchecker when using alambdaas a dict key.Closes #β7453
Fix a crash in the
modified-iterating-dictchecker involving instance attributes.Closes #β7461
invalid-class-objectdoes not crash anymore when__class__is assigned alongside another variable.Closes #β7467
Fix false positive for
global-variable-not-assignedwhen a global variable is re-assigned via anImportFromnode.Close
Configuration
π Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
π¦ Automerge: Disabled by config. Please merge this manually once you are satisfied.
β» Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
π Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.