Full changelog
==============

What's New in Pylint 2.10.2?
----------------------------
Release date: 2021-08-21

* We now use platformdirs instead of appdirs since the latter is not maintained.

  Closes #4886

* Fix a crash in the checker raising ``shallow-copy-environ`` when failing to infer
  on ``copy.copy``

  Closes #4891



What's New in Pylint 2.10.1?
----------------------------
Release date: 2021-08-20

* pylint does not crash when PYLINT_HOME does not exist.

  Closes #4883


What's New in Pylint 2.10.0?
----------------------------
Release date: 2021-08-20

* pyreverse: add option to produce colored output.

  Closes #4488

* pyreverse: add output in PlantUML format.

  Closes #4498

* ``consider-using-with`` is no longer triggered if a context manager is returned from a function.

  Closes #4748

* pylint does not crash with a traceback anymore when a file is problematic. It
  creates a template text file for opening an issue on the bug tracker instead.
  The linting can go on for other non problematic files instead of being impossible.

* pyreverse: Show class has-a relationships inferred from the type-hint

  Closes #4744

* Fixed a crash when importing beyond the top level package during ``import-error``
  message creation

  Closes #4775

* Added ``ignored-parents`` option to the design checker to ignore specific
  classes from the ``too-many-ancestors`` check (R0901).

  Fixes part of #3057

* Added ``unspecified-encoding``: Emitted when open() is called without specifying an encoding

  Closes #3826

* Improved the Similarity checker performance. Fix issue with ``--min-similarity-lines`` used with ``--jobs``.

  Closes #4120
  Closes #4118

* Don't emit ``no-member`` error if guarded behind if statement.

  Refs #1162
  Closes #1990
  Closes #4168

* The default for ``PYLINTHOME`` is now the standard ``XDG_CACHE_HOME``, and pylint now uses ``appdirs``.

  Closes #3878

* Added ``use-list-literal``: Emitted when ``list()`` is called with no arguments instead of using ``[]``

  Closes #4365

* Added ``use-dict-literal``: Emitted when ``dict()`` is called with no arguments instead of using ``{}``

  Closes #4365

* Added optional extension ``consider-ternary-expression``: Emitted whenever a variable is assigned in both branches of an if/else block.

  Closes # 4366

* Added optional extension ``while-used``: Emitted whenever a ``while`` loop is used.

  Closes # 4367

* Added ``forgotten-debug-statement``: Emitted when ``breakpoint``, ``pdb.set_trace`` or ``sys.breakpointhook`` calls are found

  Closes #3692

* Fix false-positive of ``unused-private-member`` when using nested functions in a class

  Closes #4673

* Fix crash for ``unused-private-member`` that occurred with nested attributes.

  Closes #4755

* Fix a false positive for ``unused-private-member`` with class names

  Closes #4681

* Fix false positives for ``superfluous-parens`` with walrus operator, ternary operator and inside list comprehension.

  Closes #2818
  Closes #3249
  Closes #3608
  Closes #4346

* Added ``format-string-without-interpolation`` checker: Emitted when formatting is applied to a string without any variables to be replaced

  Closes #4042

* Refactor of ``--list-msgs`` & ``--list-msgs-enabled``: both options now show whether messages are emittable with the current interpreter.

  Closes #4778

* Fix false negative for ``used-before-assignment`` when the variable is assigned
  in an exception handler, but used outside of the handler.

  Closes #626

* Added ``disable-next`` option: allows using `# pylint: disable-next=msgid` to disable a message for the following line

  Closes #1682

* Added ``redundant-u-string-prefix`` checker: Emitted when the u prefix is added to a string

  Closes #4102

* Fixed ``cell-var-from-loop`` checker: handle cell variables in comprehensions within functions,
  and function default argument expressions. Also handle basic variable shadowing.

  Closes #2846
  Closes #3107

* Fixed bug with ``cell-var-from-loop`` checker: it no longer has false negatives when
  both ``unused-variable`` and ``used-before-assignment`` are disabled.

* Fix false positive for ``invalid-all-format`` if the list or tuple builtin functions are used

  Closes #4711

* Config files can now contain environment variables

  Closes #3839

* Fix false-positive ``used-before-assignment`` with an assignment expression in a ``Return`` node

  Closes #4828

* Added ``use-sequence-for-iteration``: Emitted when iterating over an in-place defined ``set``.

* ``CodeStyleChecker``

  * Limit ``consider-using-tuple`` to be emitted only for in-place defined ``lists``.

  * Emit ``consider-using-tuple`` even if list contains a ``starred`` expression.

* Ignore decorators lines by similarities checker when ignore signatures flag enabled

  Closes #4839

* Allow ``true`` and ``false`` values in ``pylintrc`` for better compatibility with ``toml`` config.

* Class methods' signatures are ignored the same way as functions' with similarities "ignore-signatures" option enabled

  Closes #4653

* Improve performance when inferring ``Call`` nodes, by utilizing caching.

* Improve error message for :ref:`invalid-metaclass` when the node is an Instance.
