Full changelog¶
What's New in Pylint 2.3.0?¶
Release date: 2019-02-27
Protect against
NonDeducibleTypeHierarchywhen calling semi-privateis_subtypeastroid.helpers.is_subtyperaisesNonDeducibleTypeHierarchywhen 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 forpylintitself, which is why we're handling the exception here, rather than inastroidCloses PyCQA/astroid#644
Added a new command line option
list-groupsfor listing all the check groupspylintknows about.Allow
BaseExceptionfor emittingbroad-except, just likeException.Closes #2741
Fixed a crash that occurred for
bad-str-strip-callwhenstrip()receivedNoneCloses #2743
Don't emit
*-not-iteratingchecks for builtins consumed byitertoolsCloses #2731
Fix a crash caused by iterating over
Uninferablein a string formatting check.Closes #2727
Fixed false positives for
no-self-argumentandunsubscriptable-objectwhen using__class_getitem__(new in Python 3.7)Closes #2416
Support
Ellipsisas a synonym forpassstatements.Closes #2718
fixmegets triggered only on comments.Closes #2321
Fixed a false positive for
unused-variableandnonlocalassignmentsCloses #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-iteratingPython 3 checksCloses #2651
Make
compare-to-zeroless zealous by checking against equality and identityCloses #2645
Add
no-else-raisewarning (R1720)Closes #2558
Exempt
yield fromfrom*-not-iteratingPython 3 checks.Closes #2643
Fix incorrect generation of
no-else-returnwarnings (R1705)Fixed issue where
ifstatements with nestedifstatements were incorrectly being flagged asno-else-returnin some cases and not being flagged asno-else-returnin other cases. Added tests for verification and updated pylint source files to eliminate newly exposed warnings.Fix false positive with
not-async-context-managercaused by not understandingcontextlib.asynccontextmanagerCloses #2440
Refactor
bad-reversed-sequenceto 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-sequenceneeds to not differentiate between classes and instances when it comes for checking of__reversed__presence.Closes #2598
Added
wrong-exception-operationUsed 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-memberis emitted for enums when they lack a memberPreviously we weren't doing this because we detected a
__getattr__implementation on theEnumclass (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-comparisonPrevious 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-callablefor uninferable properties.Fix false positive
useless-else-on-loopif the break is deep in the else of an inner loop.Minor improvements to the help text for a few options.