Summary -- Release highlights¶
This release mostly includes fixes for bugs found after the launch of 2.0.
New checkers¶
A new check was added,
misplaced-format-function
.This message is emitted when pylint detects that a format function is called on non str object. This can occur due to wrong placement of closing bracket, e.g
print('value: {}').format(123) # bad print('value: {}'.format(123)) # good
Other Changes¶
try-except-raise
check was demoted from an error to a warning, as part of issue #2323.Correctly handle the new name of the Python implementation of the
abc
module.In Python 3.7, the
abc
module has both a C implementation as well as a Python one, but the Python implementation has a different file name that whatpylint
was expecting, resulting in some checks getting confused.Modules with
__getattr__
are exempted by default fromno-member
There's no easy way to figure out if a module has a particular member when the said module uses
__getattr__
, which is a new addition to Python 3.7. Instead we assume the safe thing to do, in the same way we do for classes, and skip those modules from checking.invalid name
is no longer triggered for function and attribute names longer than 30 characters. The upper limit was removed completely.Fix false-positive
undefined-variable
for self referential class name in lamdbasno-else-return
also specifies the type of the branch that is causing the error.Fixed inconsistent behaviour for bad-continuation on first line of file.
Fixed a bug where
pylint
was not able to disable certain messages on the last line through the global disable option.pylint
no longer emitsuseless-return
when it finds a single statement that is thereturn
itselfWe still want to be explicit when a function is supposed to return an optional value; even though
pass
could still work, it's not explicit enough and the function might look like it's missing an implementation.Fixed a bug where
pylint
was crashing when being unable to infer the value of an argument tonext()
pylint
no longer emitnot-an-iterable
when dealing with async iterators.pylint
gained the ability to specify a default docstring type for when the check cannot guess the typeFor this we added a
--default-docstring-type
command line option.