Pylint

Latest version: v3.1.0

Safety actively analyzes 627119 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 19

3.0.0b0

3.0.0b0`` is a beta release using the new astroid ``3.0.0``. Expect no more breaking changes before the official 3.0.0 release, and almost no changes from ``3.0.0a7``. We're aiming for a release for when python 3.12 is officially out (in 2 days, 2023-10-02).

3.0.0a7

3.0.0a7 is an alpha release, other breaking changes will be added before the official 3.0.0 release. Compared to 3.0.0a6, this alpha brings mainly python 3.12 compatibility but also the changes you would usually expect with a minor of regular size. It will requires some changes to the configuration that should be automated when 3.0.0 is out, but aren't yet. Those changes *can* make the configuration incompatible or at least not equivalent if used with pylint 2.x.

3.0.0a6

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

3.0.0a5

This is 2.14.0 with breaking changes for 3.0 included. Released only so that the old alpha 4 release based on pylint 2.9.0 is not proposed by tools instead of 2.14.0. 2.14.0 is the stable version you should use that.

3.0.0a4

* This is 2.9.0 with the breaking changes of the future version 3.0.

* Fix the score option not being honored when exporting to JSON

The default setting was to have a score, but it did not work. Now it will give a score at the end of the json:

Close 3504

2.17.7

2.17.7 is the last release before we only support pylint 3.0.0 or superior and python 3.8 or superior.

False Positives Fixed
---------------------

- Fix a regression in pylint 2.17.6 / astroid 2.15.7 causing various
messages for code involving ``TypeVar``.

Closes 9069



Other Bug Fixes
---------------

- Fix crash in refactoring checker when unary operand used with variable in for
loop.

Closes 9074

Page 2 of 19

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.