What's New in Pylint 2.1
************************

Release:
   2.1

Date:
   2018-08-01


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 what "pylint" was expecting, resulting in some checks
  getting confused.

* Modules with "__getattr__" are exempted by default from "no-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 lamdbas

* "no-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 emits "useless-return" when it finds a single
  statement that is the "return" itself

  We 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 to "next()"

* "pylint" no longer emit "not-an-iterable" when dealing with async
  iterators.

* "pylint" gained the ability to specify a default docstring type for
  when the check cannot guess the type

  For this we added a "--default-docstring-type" command line option.
