Full changelog¶
What's New in Pylint 2.3.0?¶
Release date: 2019-02-27
Protect against
NonDeducibleTypeHierarchy
when calling semi-privateis_subtype
astroid.helpers.is_subtype
raisesNonDeducibleTypeHierarchy
when it cannot infer the base classes of the given types, but that makes sense in its context given that the method is mostly used to inform the inference process about the hierarchy of classes. Doesn't make that much sense forpylint
itself, which is why we're handling the exception here, rather than inastroid
Closes pylint-dev/astroid#644
Added a new command line option
list-groups
for listing all the check groupspylint
knows about.Allow
BaseException
for emittingbroad-except
, just likeException
.Closes #2741
Fixed a crash that occurred for
bad-str-strip-call
whenstrip()
receivedNone
Closes #2743
Don't emit
*-not-iterating
checks for builtins consumed byitertools
Closes #2731
Fix a crash caused by iterating over
Uninferable
in a string formatting check.Closes #2727
Fixed false positives for
no-self-argument
andunsubscriptable-object
when using__class_getitem__
(new in Python 3.7)Closes #2416
Support
Ellipsis
as a synonym forpass
statements.Closes #2718
fixme
gets triggered only on comments.Closes #2321
Fixed a false positive for
unused-variable
andnonlocal
assignmentsCloses #2671
Added
load_configuration()
hook for pluginsNew optional hook for plugins is added:
load_configuration()
. This hook is executed after configuration is loaded to prevent overwriting plugin specific configuration via user-based configuration.Closes #2635
Fix missing-raises-doc false positive (W9006)
Closes #1502
Exempt starred unpacking from
*-not-iterating
Python 3 checksCloses #2651
Make
compare-to-zero
less zealous by checking against equality and identityCloses #2645
Add
no-else-raise
warning (R1720)Closes #2558
Exempt
yield from
from*-not-iterating
Python 3 checks.Closes #2643
Fix incorrect generation of
no-else-return
warnings (R1705)Fixed issue where
if
statements with nestedif
statements were incorrectly being flagged asno-else-return
in some cases and not being flagged asno-else-return
in other cases. Added tests for verification and updated pylint source files to eliminate newly exposed warnings.Fix false positive with
not-async-context-manager
caused by not understandingcontextlib.asynccontextmanager
Closes #2440
Refactor
bad-reversed-sequence
to account for more objects that can define__reversed__
One such object would be an enum class, for which
__reversed__
yields each individual enum. As such, the check forbad-reversed-sequence
needs to not differentiate between classes and instances when it comes for checking of__reversed__
presence.Closes #2598
Added
wrong-exception-operation
Used 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
no-member
is emitted for enums when they lack a memberPreviously we weren't doing this because we detected a
__getattr__
implementation on theEnum
class (and this check is skipped for classes with__getattr__
), but that is fine for Enums, given that they are inferred in a customised way in astroid.Closes #2565
Generalize
chained-comparison
Previous version incorrectly detects a < b < c and b < d and fails to detect a < b < c and c < d.
Avoid popping __main__ when using multiple jobs
Closes #2689
Add a new option 'check-str-concat-over-line-jumps' to check 'implicit-str-concat-in-sequence'
Fixes for the new style logging format linter.
The number of arguments was not handled properly, leading to an always successful check.
Fix false positive
not-callable
for uninferable properties.Fix false positive
useless-else-on-loop
if the break is deep in the else of an inner loop.Minor improvements to the help text for a few options.