What's New in Pylint 2.7
************************

Release:
   2.7

Date:
   2021-02-21


Summary -- Release highlights
=============================

* Python 3.6+ is now required.

* No more duplicate messages when using multiple jobs.

* Handling of the new typing provided by mypy 0.8

* Reduced the number of false positives in general

* Reduced the occurrence of genuinely large recursion that went above
  system limit (See #3836, for a fix for pandas)


New checkers
============

* Add "nan-comparison" check for comparison of NaN values

* Add support to "ignored-argument-names" in DocstringParameterChecker
  and adds "useless-param-doc" and "useless-type-doc" messages.

* Add "empty-comment" check for empty comments.

* Add "simplifiable-condition" check for extraneous constants in
  conditionals using and/or.

* Add "condition-evals-to-constant" check for conditionals using
  and/or that evaluate to a constant.

* Add "consider-using-generator" check for the use of list
  comprehension inside "any" or "all" function.


Other Changes
=============

* Fix false positive for "builtin-not-iterating" when "zip" or "map"
  receives iterable

* Fix linter multiprocessing pool shutdown which triggered warnings
  when runned in parallels with other pytest plugins.

* Enums are now required to be named in UPPER_CASE by "invalid-name".

* Fix bug that lead to duplicate messages when using "--jobs 2" or
  more.

* Adds option "check-protected-access-in-special-methods" in the
  ClassChecker to activate/deactivate "protected-access" message
  emission for single underscore prefixed attribute in special
  methods.

* "inconsistent-return-statements" message is now emitted if one of
  "try/except" statement is not returning explicitly while the other
  do.

* Fix false positive message "useless-super-delegation" when default
  keyword argument is a dictionary.

* Fix vulnerable regular expressions in "pyreverse". The ambiguities
  of vulnerable regular expressions are removed, making the repaired
  regular expressions safer and faster matching.

* "len-as-conditions" is now triggered only for classes that are
  inheriting directly from list, dict, or set and not implementing the
  "__bool__" function, or from generators like range or list/dict/set
  comprehension. This should reduce the false positive for other
  classes, like pandas's DataFrame or numpy's Array.

* Fixes duplicate code detection for --jobs=2+

* New option "allowed-redefined-builtins" defines variable names
  allowed to shadow builtins.

* Improved protected access checks to allow access inside class
  methods
