Summary -- Release highlights¶
This release improves the performance of the 2.X series after it was affected by a performance regression a couple of releases ago.
New checkers¶
We added a new check message
wrong-exception-operation
. This is emitted when an operation is done against an exception, but the operation is not valid for the exception in question. Usually emitted when having binary operations between exceptions in except handlers.Closes #2494
We added a new
no-else-raise
warning similar tono-else-return
Closes #2558
We added a new option
check-str-concat-over-line-jumps
to checkimplicit-str-concat-in-sequence
over multiple lines.
Other Changes¶
Quite a lot of bug fixes and improvements went into this release, here's a handful of them. For the full changes, check the full changelog.
We no longer emit
*-not-iterating
checks for builtins consumed byitertools
We fixed some false positives for
no-self-argument
andunsubscriptable-object
when using__class_getitem__
(new in Python 3.7)pylint
now supportsEllipsis
as a synonym forpass
statements.fixme
gets triggered only on comments.pylint
exempts starred unpacking from*-not-iterating
Python 3 checks.compare-to-zero
is now less zealous by checking against equality and identity.
``yield from`` is exempted from ``-not-iterating`` Python 3 checks.
A false positive with
not-async-context-manager
caused by not understandingcontextlib.asynccontextmanager
was fixed.We refactored
bad-reversed-sequence
to account for more objects that can define__reversed__
.no-member
is now emitted for enums when they lack a member.Plugins can now use the
load_configuration()
hook. This hook is executed after configuration is loaded to prevent overwriting plugin specific configuration via user-based configuration.There's a new command line option
list-groups
for listing all the check groupspylint
knows about. This is useful to know what groups you can disable or enable individually.