3.0.0a6 is an alpha release, other breaking changes will be added before the official 3.0.0 release. We're including the new features and false negative fixes that will be in 3.0.0, so it's the latest current version of pylint.
Breaking Changes
----------------
- `pyreverse` now uses a new default color palette that is more colorblind
friendly.
The color scheme is taken from [Paul Tol's Notes](https://personal.sron.nl/~pault/>).
If you prefer other colors, you can use the `--color-palette` option to
specify custom colors.
Closes 8251
- Everything related to the ``__implements__`` construct was removed. It was
based on PEP245
that was proposed in 2001 and rejected in 2006.
The capability from pyreverse to take ``__implements__`` into account when
generating diagrams
was also removed.
Refs 8404
- ``pyreverse``: Support for the ``.vcg`` output format (Visualaization of
Compiler Graphs) has been dropped.
Closes 8416
- The warning when the now useless old pylint cache directory (pylint.d) was
found was removed. The cache dir is documented in
[the
FAQ](https://pylint.readthedocs.io/en/latest/faq.html#where-is-the-persistent-data-stored-to-compare-between-successive-runs).
Refs 8462
Changes requiring user actions
------------------------------
- epylint was removed. It now lives at:
https://github.com/emacsorphanage/pylint.
Refs 7737
- The 'overgeneral-exceptions' option now only takes fully qualified name
into account (``builtins.Exception`` not ``Exception``). If you overrode
this option, you need to use the fully qualified name now.
There's still a warning, but it will be removed in 3.1.0.
Refs 8411
- Following a deprecation period, it's no longer possible to use ``MASTER``
or ``master`` as configuration section in ``setup.cfg`` or ``tox.ini``. It's
bad practice
to not start sections titles with the tool name. Please use ``pylint.main``
instead.
Refs 8465
New Features
------------
- Add new option (``--show-stdlib``, ``-L``) to ``pyreverse``.
This is similar to the behavior of ``--show-builtin`` in that standard
library
modules are now not included by default, and this option will include them.
Closes 8181
False Positives Fixed
---------------------
- Adds ``asyncSetUp`` to the default ``defining-attr-methods`` list to silence
``attribute-defined-outside-init`` warning when using
``unittest.IsolatedAsyncioTestCase``.
Refs 8403
- ``invalid-name`` now allows for integers in ``typealias`` names:
- now valid: ``Good2Name``, ``GoodName2``.
- still invalid: ``_1BadName``.
Closes 8485
- No longer consider ``Union`` as type annotation as type alias for naming
checks.
Closes 8487
- ``unnecessary-lambda`` no longer warns on lambdas which use its parameters in
their body (other than the final arguments), e.g.
``lambda foo: (bar if foo else baz)(foo)``.
Closes 8496
Other Bug Fixes
---------------
- ``--clear-cache-post-run`` now also clears LRU caches for pylint utilities
holding references to AST nodes.
Closes 8361
- Fix a crash when ``TYPE_CHECKING`` is used without importing it.
Closes 8434
- Fix a ``used-before-assignment`` false positive when imports
are made under the ``TYPE_CHECKING`` else if branch.
Closes 8437
- Fix a regression of ``preferred-modules`` where a partial match was used
instead of the required full match.
Closes 8453
Other Changes
-------------
- Pylint now exposes its type annotations.
Closes 5488 and 2079
- All code related to the optparse config parsing has been removed.
Refs 8405
Internal Changes
----------------
- ``get_message_definition`` was removed from the base checker API. You can
access
message definitions through the ``MessageStore``.
Refs 8401
- Everything related to the ``__implements__`` construct was removed. It was
based on PEP245
that was proposed in 2001 and rejected in 2006.
All the classes inheriting ``Interface`` in ``pylint.interfaces`` were
removed.
``Checker`` should only inherit ``BaseChecker`` or any of the other checker
types
from ``pylint.checkers``. ``Reporter`` should only inherit ``BaseReporter``.
Refs 8404
- ``modname`` and ``msg_store`` are now required to be given in ``FileState``.
``collect_block_lines`` has also been removed. ``Pylinter.current_name``
cannot be null anymore.
Refs 8407
- 'Reporter.set_output' was removed in favor of 'reporter.out = stream'.
Refs 8408
- A number of old utility functions and classes have been removed:
``MapReduceMixin``: To make a checker reduce map data simply implement
``get_map_data`` and ``reduce_map_data``.
``is_inside_lambda``: Use ``utils.get_node_first_ancestor_of_type(x,
nodes.Lambda)``
``check_messages``: Use ``utils.only_required_for_messages``
``is_class_subscriptable_pep585_with_postponed_evaluation_enabled``: Use
``is_postponed_evaluation_enabled(node)`` and
``is_node_in_type_annotation_context(node)``
``get_python_path``: assumption that there's always an __init__.py is not
true since
python 3.3 and is causing problems, particularly with PEP 420. Use
``discover_package_path``
and pass source root(s).
``fix_import_path``: Use ``augmented_sys_path`` and pass additional
``sys.path``
entries as an argument obtained from ``discover_package_path``.
``get_global_option``: Use ``checker.linter.config`` to get all global
options.
Related private objects have been removed as well.
Refs 8409
- ``colorize_ansi`` now only accept a ``MessageStyle`` object.
Refs 8412
- The following utilities are deprecated in favor of the more robust
``in_type_checking_block``
and will be removed in pylint 3.0:
- ``is_node_in_guarded_import_block``
- ``is_node_in_typing_guarded_import_block``
- ``is_typing_guard``
``is_sys_guard`` is still available, which was part of
``is_node_in_guarded_import_block``.
Refs 8433
- Following a deprecation period, ``Pylinter.check`` now only work with
sequences of strings, not strings.
Refs 8463
- Following a deprecation period, ``ColorizedTextReporter`` only accepts
``ColorMappingDict``.
Refs 8464
- Following a deprecation period, ``MessageTest``'s ``end_line`` and
``end_col_offset``
must be accurate in functional tests (for python 3.8 or above on cpython, and
for
python 3.9 or superior on pypy).
Refs 8466
- Following a deprecation period, the ``do_exit`` argument of the ``Run`` class
(and of the ``_Run``
class in testutils) were removed.
Refs 8472
- Following a deprecation period, the ``py_version`` argument of the
``MessageDefinition.may_be_emitted`` function is now required. The most
likely solution
is to use 'linter.config.py_version' if you need to keep using this
function, or to use 'MessageDefinition.is_message_enabled' instead.
Refs 8473
- Following a deprecation period, the ``OutputLine`` class now requires
the right number of argument all the time. The functional output can be
regenerated automatically to achieve that easily.
Refs 8474
- Following a deprecation period, ``is_typing_guard``,
``is_node_in_typing_guarded_import_block`` and
``is_node_in_guarded_import_block``: from ``pylint.utils`` were removed: use
a combination of
``is_sys_guard`` and ``in_type_checking_block`` instead.
Refs 8475
- Following a deprecation period, the ``location`` argument of the
``Message`` class must now be a ``MessageLocationTuple``.
Refs 8477
- Following a deprecation period, the ``check_single_file`` function of the
``Pylinter`` is replaced by ``Pylinter.check_single_file_item``.
Refs 8478