Release: | 2.12 |
---|---|
Date: | TBA |
Added
missing-any-param-doc
triggered when a function has neither parameter nor parameter type documentation. Undocumented parameters are now being properly identified. A warning might start to appear unexpectedly ifmissing-param-doc
andmissing-type-doc
were disabled, as a new messagemissing-any-param-doc
will be emitted instead.Closes #3799
Checkers for
typing.final
- Added
overridden-final-method
: Emitted when a method which is annotated withtyping.final
is overridden - Added
subclassed-final-class
: Emitted when a class which is annotated withtyping.final
is subclassed
Closes #3197
- Added
Created new
UnsupportedVersionChecker
checker class that includes checks for features not supported by all versions indicated by apy-version
.- Added
using-f-string-in-unsupported-version
checker. Issued whenpy-version
is set to a version that does not support f-strings (< 3.6)
- Added
Fix
useless-super-delegation
false positive when default keyword argument is a variable.Added new checker
use-implicit-booleanness
: Emitted when using collection literals for boolean comparisonsAdded new checker
use-implicit-booleaness-not-comparison
: Emitted when collection literal comparison is being used to check for emptiness.Closes #4774
Added
using-final-decorator-in-unsupported-version
checker. Issued whenpy-version
is set to a version that does not support typing.final (< 3.8)Added configuration option
exclude-too-few-public-methods
to allow excluding classes from themin-public-methods
checker.Closes #3370
Added new checker
useless-with-lock
to find incorrect usage of with statement and threading module locks. Emitted whenwith threading.Lock():
is used instead ofwith lock_instance:
.Closes #5208
A new
bad-configuration-section
checker was added that will emit for misplaced option in pylint's top level namespace for toml configuration. Top-level dictionaries or option defined in the wrong section will still silently not be taken into account, which is tracked in a follow-up issue.Follow-up in #5259
MessageTest
of the unittesttestutil
now requires theconfidence
attribute to match the expected value. If none is provided it is set toUNDEFINED
.add_message
of the unittesttestutil
now actually handles thecol_offset
parameter and allows it to be checked against actual output in a test.
Added an optional extension
consider-using-any-or-all
: Emitted when afor
loop only produces a boolean and could be replaced byany
orall
using a generator. Also suggests a suitable any/all statement if it is concise.Closes #5008
Moved
misplaced-comparison-constant
to its own extensioncomparison_placement
. This checker was opinionated and now no longer a default. It can be reactived by addingpylint.extensions.comparison_placement
toload-plugins
in your config.Closes #1064
Fix
install graphiz
message which isn't needed for puml output format.pylint
no longer crashes when checking assignment expressions within if-statementsCloses #5178
Fix
accept-no-yields-doc
andaccept-no-return-doc
not allowing missingyield
orreturn
documentation when a docstring is partially correctCloses #5223
Fix
simplify-boolean-expression
when condition can be inferred as False.Closes #5200
Fix exception when pyreverse parses
property function
of a class.Improve and flatten
unused-wildcard-import
messageCloses #3859
In length checker,
len-as-condition
has been renamed asuse-implicit-booleaness-not-len
in order to be consistent withuse-implicit-booleaness-not-comparison
.Fixed
protected-access
for accessing of attributes and methods of inner classesCloses #3066
Update
literal-comparison`
checker to ignore tuple literalsCloses #3031
The functional
testutils
now acceptend_lineno
andend_column
. Expected output files without these will trigger aDeprecationWarning
. Expected output files can be easily updated with thepython tests/test_functional.py --update-functional-output
command.The functional
testutils
now correctly check the distinction betweeenHIGH
andUNDEFINED
confidence. Expected output files without defiendconfidence
levels will now trigger aDeprecationWarning
. Expected output files can be easily updated with thepython tests/test_functional.py --update-functional-output
command.undefined-variable
now correctly flags variables which only receive a type annotations and never get assigned a valueCloses #5140
undefined-variable
now correctly considers the line numbering and order of classes used in metaclass declarationsCloses #4031
used-before-assignment
now correctly considers references to classes as type annotation or default values in first-level methodsCloses #3771
undefined-variable
andunused-variable
now correctly trigger for assignment expressions in functions defaultsFixes part of #3688
self-cls-assignment
now also considers tuple assignmentundefined-variable
now correctly triggers for assignment expressions in if ... else statements This includes a basic form of control flow inference for if ... else statements using constant boolean valuesCloses #3688
Fix crash for
unused-private-member
when checking private members on__class__
Closes #5261
Fix double emitting of
not-callable
on inferrableproperties
Closes #4426
Support configuring mixin class pattern via
mixin-class-rgx
Normalize the input to the
ignore-paths
option to allow both Posix and Windows pathsCloses #5194
mising-param-doc
now correctly parses asterisks for variable length and keyword parametersCloses #3733
mising-param-doc
now correctly handles Numpy parameter documentation without explicit typingCloses #5222
The
--jobs
parameter now falls back to 1 if the host operating system does not have functioning shared semaphore implementation.Closes #5216
Crashes when a list is encountered in a toml configuration do not happen anymore.
Closes #4580
Fix crash for
protected-access
on (outer) class traversalMake yn validator case insensitive, to allow for
True
andFalse
in config files.The last version compatible with python '3.6.0' and '3.6.1' is pylint '2.9.3'. We did not realize that when adding incompatible typing at the time, and all versions since are broken for this interpreter. 2.12.0 meta-information will permit to download pylint on those interpreters but the installation will fail and tell you to install '2.9.3' instead. pylint 2.12.1 will require python >= 3.6.2.
Closes #5171 Follow-up in #5065
Added the
--enable-all-extensions
command line option. It will load all available extensions which can be listed by running--list-extensions
It is now recommended to do
pylint
development onPython
3.8 or higher. This allows using the latestast
parser.All standard jobs in the
pylint
CI now run onPython
3.8 by default. We still support python 3.6 and 3.7 and run tests for those interpreters.Fix crash on
open()
calls when themode
argument is not a simple string.Partially closes #5321
Add ability to add
end_line
andend_column
to the--msg-template
option. With the standardTextReporter
this will add the line and column number of the end of a node to the output of Pylint. If these numbers are unknown, they are represented by an empty string.Introduced primer tests and a configuration tests framework. The helper classes available in
pylint/testutil/
are still unstable and might be modified in the near future.Closes #4412 #5287