2.14.0-b1
Pre-releaseProvisional changelog for 2.14.0:
-
We have improved our recognition of inline disable and enable comments. It is
now possible to disablebad-option-value
inline (as long as you disable it before
the bad option value is raised, i.e.disable=bad-option-value,bad-message
notdisable=bad-message,bad-option-value
) as well as certain other previously unsupported messages.Closes #3312
-
Added new checker
comparison-of-constants
.Closes #6076
-
Started ignoring underscore as a local variable for
too-many-locals
.Closes #6488
-
Improved wording of the message of
deprecated-module
Closes #6169
-
Pylint
now requires Python 3.7.2 or newer to run.Closes #4301
-
BaseChecker
classes now require thelinter
argument to be passed. -
Fix a failure to respect inline disables for
fixme
occurring on the last line
of a module when pylint is launched with--enable=fixme
. -
Update
invalid-slots-object
message to show bad object rather than its inferred value.Closes #6101
-
The main checker name is now
main
instead ofmaster
. The configuration does not need to be updated as sections' name are optional.Closes #5467
-
Added new checker
typevar-name-mismatch
: TypeVar must be assigned to a variable with the same name as its name argument.Closes #5224
-
Pylint can now be installed with an extra-require called
spelling
(pip install pylint[spelling]
).
This will addpyenchant
to pylint's dependencies. You will still need to install the
requirements forpyenchant
(theenchant
library and any dictionaries) yourself. You will also
need to set thespelling-dict
option.Refs #6462
-
Removed the
assign-to-new-keyword
message as there are no new keywords in the supported Python
versions any longer.Closes #4683
-
Fixed a crash in the
not-an-iterable
checker involving multiple starred expressions
inside a call.Closes #6372
-
Fixed failure to enable
deprecated-module
after adisable=all
by makingImportsChecker
solely responsible for emittingdeprecated-module
instead
of sharing responsibility withStdlibChecker
. (This could have led to double messages.) -
The
no-init
(W0232) warning has been removed. It's ok to not have an__init__
in a class.Closes #2409
-
The
config
attribute ofBaseChecker
has been deprecated. You can usechecker.linter.config
to access the global configuration object instead of a checker-specific object.Ref #5392
-
The
level
attribute ofBaseChecker
has been deprecated: everything is now
displayed in--help
, all the time.Ref #5392
-
The
options_providers
attribute ofArgumentsManager
has been deprecated.Ref #5392
-
The
option_groups
attribute ofPyLinter
has been deprecated.Ref #5392
-
All
Interface
classes inpylint.interfaces
have been deprecated. You can subclass
the respective normal classes to get the same behaviour. The__implements__
functionality
was based on a rejected PEP from 2001:
https://peps.python.org/pep-0245/Closes #2287
-
The
set_option
method ofBaseChecker
has been deprecated. You can usechecker.linter.set_option
to set an option on the global configuration object instead of a checker-specific object.Ref #5392
-
implicit-str-concat
will now be raised on calls likeopen("myfile.txt" "a+b")
too.Closes #6441
-
The
config
attribute ofPyLinter
is now of theargparse.Namespace
type instead of
optparse.Values
.Ref #5392
-
MapReduceMixin
has been deprecated.BaseChecker
now implementsget_map_data
and
reduce_map_data
. If a checker actually needs to reduce data it should defineget_map_data
as returning something different thanNone
and let itsreduce_map_data
handle a list
of the types returned byget_map_data
.
An example can be seen by looking atpylint/checkers/similar.py
. -
UnsupportedAction
has been deprecated.Ref #5392
-
OptionsManagerMixIn
has been deprecated.Ref #5392
-
OptionParser
has been deprecated.Ref #5392
-
Option
has been deprecated.Ref #5392
-
OptionsProviderMixIn
has been deprecated.Ref #5392
-
ConfigurationMixIn
has been deprecated.Ref #5392
-
get_global_config
has been deprecated. You can now access all global options from
checker.linter.config
.Ref #5392
-
OptionsManagerMixIn
has been replaced withArgumentsManager
.ArgumentsManager
is considered
private API and most methods that were public onOptionsManagerMixIn
have now been deprecated and will
be removed in a future release.Ref #5392
-
OptionsProviderMixIn
has been replaced withArgumentsProvider
.ArgumentsProvider
is considered
private API and most methods that were public onOptionsProviderMixIn
have now been deprecated and will
be removed in a future release.Ref #5392
-
interfaces.implements
has been deprecated and will be removed in 3.0. Please use standard inheritance
patterns instead of__implements__
.Ref #2287
-
invalid-enum-extension
: Used when a class tries to extend an inherited Enum class.Closes #5501
-
Added the
unrecognized-option
message. Raised if we encounter any unrecognized options.Closes #5259
-
Added new checker
typevar-double-variance
: The "covariant" and "contravariant" keyword arguments
cannot both be set to "True" in a TypeVar.Closes #5895
-
Re-enable checker
bad-docstring-quotes
for Python <= 3.7.Closes #6087
-
Removed the broken
generate-man
option. -
Fix false negative for
bad-string-format-type
if the value to be formatted is passed in
as a variable holding a constant. -
Add new check
unnecessary-dunder-call
for unnecessary dunder method calls. -
The
cache-max-size-none
checker has been renamed tomethod-cache-max-size-none
.Closes #5670
-
The
method-cache-max-size-none
checker will now also checkfunctools.cache
.Closes #5670
-
unnecessary-lambda-assignment
: Lambda expression assigned to a variable.
Define a function using the "def" keyword instead.
unnecessary-direct-lambda-call
: Lambda expression called directly.
Execute the expression inline instead.Closes #5976
-
potential-index-error
: Emitted when the index of a list or tuple exceeds its length.
This checker is currently quite conservative to avoid false positives. We welcome
suggestions for improvements.Closes #578
-
Added optional extension
redefined-loop-name
to emit messages when a loop variable
is redefined in the loop body.Closes #5072
-
Changed message type from
redefined-outer-name
toredefined-loop-name
(optional extension) for redefinitions of outer loop variables by inner loops.Closes #5608
-
The
ignore-mixin-members
option has been deprecated. You should now use the new
ignored-checks-for-mixins
option.Closes #5205
-
bad-option-value
will be emitted whenever a configuration value or command line invocation
includes an unknown message.Closes #4324
-
Avoid reporting
superfluous-parens
on expressions using theis not
operator.Closes #5930
-
Added the
super-without-brackets
checker, raised when a super call is missing its brackets.Closes #4008
-
Added the
generate-toml-config
option.Ref #5462
-
Added new checker
unnecessary-list-index-lookup
for indexing into a list while
iterating overenumerate()
.Closes #4525
-
Fix falsely issuing
useless-suppression
on thewrong-import-position
checker.Closes #5219
-
Fixed false positive
no-member
for Enums with self-defined members.Closes #5138
-
Fix false negative for
no-member
when attempting to assign an instance
attribute to itself without any prior assignment.Closes #1555
-
The concept of checker priority has been removed.
-
Add a new command line option
--minimal-messages-config
forpytest
, which disables all
irrelevant messages when running the functional tests. -
duplicate-argument-name
now only raises once for each set of duplicated arguments. -
Fix bug where specifically enabling just
await-outside-async
was not possible. -
The
set_config_directly
decorator has been removed. -
Added new message called
duplicate-value
which identifies duplicate values inside sets.Closes #5880
-
Pylint now expands the user path (i.e.
~
tohome/yusef/
) and expands environment variables (i.e.home/$USER/$project
tohome/yusef/pylint
forUSER=yusef
andproject=pylint
) for pyreverse'soutput-directory
,
import-graph
,ext-import-graph
,int-import-graph
options, and the spell checker'sspelling-private-dict-file
option.Relates to #6493
-
Created
NoSelfUseChecker
extension and moved theno-self-use
check.
You now need to explicitly enable this check using
load-plugins=pylint.extensions.no_self_use
.Closes #5502
-
Fix saving of persistent data files in environments where the user's cache
directory and the linted file are on a different drive.Closes #6394
-
Don't emit
unsubscriptable-object
for string annotations.
Pylint doesn't check if class is only generic in type stubs only. -
is_class_subscriptable_pep585_with_postponed_evaluation_enabled
has been deprecated.
Usesubscriptable_with_postponed_evaluation_enabled
instead.Ref #6536