blob: 04005f2601b0006aeb90cbab63243bd75dfe8df2 [file] [log] [blame]
***************************
What's New in Pylint 2.17
***************************
.. toctree::
:maxdepth: 2
:Release: 2.17
:Date: 2023-03-08
Summary -- Release highlights
=============================
2.17 is a small release that is the first to support python 3.11
officially with the addition of TryStar nodes.
There's still two new default checks: ``bad-chained-comparison`` and
``implicit-flag-alias``, one of them already fixed a previously
undetected bug in sentry.
Thanks to the community effort our documentation is almost complete,
and every messages should have a proper documentation now. A big thank
you to everyone who participated !
The next release is going to be ``3.0.0``, bring breaking changes and enact long
announced deprecations. There's going to be frequent beta releases,
before the official releases, everyone is welcome to try the betas
so we find problems before the actual release.
.. towncrier release notes start
What's new in Pylint 2.17.6?
----------------------------
Release date: 2023-09-24
Other Bug Fixes
---------------
- When parsing comma-separated lists of regular expressions in the config,
ignore
commas that are inside braces since those indicate quantifiers, not
delineation
between expressions.
Closes #7229 (`#7229 <https://github.com/pylint-dev/pylint/issues/7229>`_)
- ``sys.argv`` is now always correctly considered as impossible to infer
(instead of
using the actual values given to pylint).
Closes #7710 (`#7710 <https://github.com/pylint-dev/pylint/issues/7710>`_)
- Don't show class fields more than once in Pyreverse diagrams.
Closes #8189 (`#8189 <https://github.com/pylint-dev/pylint/issues/8189>`_)
- Don't show arrows more than once in Pyreverse diagrams.
Closes #8522 (`#8522 <https://github.com/pylint-dev/pylint/issues/8522>`_)
- Don't show duplicate type annotations in Pyreverse diagrams.
Closes #8888 (`#8888 <https://github.com/pylint-dev/pylint/issues/8888>`_)
- Don't add `Optional` to `|` annotations with `None` in Pyreverse diagrams.
Closes #9014 (`#9014 <https://github.com/pylint-dev/pylint/issues/9014>`_)
What's new in Pylint 2.17.5?
----------------------------
Release date: 2023-07-26
False Positives Fixed
---------------------
- Fix a false positive for ``unused-variable`` when there is an import in a
``if TYPE_CHECKING:`` block and ``allow-global-unused-variables`` is set to
``no`` in the configuration.
Closes #8696 (`#8696 <https://github.com/pylint-dev/pylint/issues/8696>`_)
- Fix false positives generated when supplying arguments as ``**kwargs`` to IO
calls like open().
Closes #8719 (`#8719 <https://github.com/pylint-dev/pylint/issues/8719>`_)
- Fix a false positive where pylint was ignoring method calls annotated as
``NoReturn`` during the ``inconsistent-return-statements`` check.
Closes #8747 (`#8747 <https://github.com/pylint-dev/pylint/issues/8747>`_)
- Exempt parents with only type annotations from the ``invalid-enum-extension``
message.
Closes #8830 (`#8830 <https://github.com/pylint-dev/pylint/issues/8830>`_)
Other Bug Fixes
---------------
- Fixed crash when a call to ``super()`` was placed after an operator (e.g.
``not``).
Closes #8554 (`#8554 <https://github.com/pylint-dev/pylint/issues/8554>`_)
- Fix crash for ``modified-while-iterating`` checker when deleting
members of a dict returned from a call.
Closes #8598 (`#8598 <https://github.com/pylint-dev/pylint/issues/8598>`_)
- Fix crash in ``invalid-metaclass`` check when a metaclass had duplicate
bases.
Closes #8698 (`#8698 <https://github.com/pylint-dev/pylint/issues/8698>`_)
- Avoid ``consider-using-f-string`` on modulos with brackets in template.
Closes #8720. (`#8720 <https://github.com/pylint-dev/pylint/issues/8720>`_)
- Fix a crash when ``__all__`` exists but cannot be inferred.
Closes #8740 (`#8740 <https://github.com/pylint-dev/pylint/issues/8740>`_)
- Fix crash when a variable is assigned to a class attribute of identical name.
Closes #8754 (`#8754 <https://github.com/pylint-dev/pylint/issues/8754>`_)
- Fixed a crash when calling ``copy.copy()`` without arguments.
Closes #8774 (`#8774 <https://github.com/pylint-dev/pylint/issues/8774>`_)
Other Changes
-------------
- Fix a crash when a ``nonlocal`` is defined at module-level.
Closes #8735 (`#8735 <https://github.com/pylint-dev/pylint/issues/8735>`_)
What's new in Pylint 2.17.4?
----------------------------
Release date: 2023-05-06
False Positives Fixed
---------------------
- Fix a false positive for ``bad-dunder-name`` when there is a user-defined
``__index__`` method.
Closes #8613 (`#8613 <https://github.com/pylint-dev/pylint/issues/8613>`_)
Other Bug Fixes
---------------
- ``pyreverse``: added escaping of vertical bar character in annotation labels
produced by DOT printer to ensure it is not treated as field separator of
record-based nodes.
Closes #8603 (`#8603 <https://github.com/pylint-dev/pylint/issues/8603>`_)
- Fixed a crash when generating a configuration file:
``tomlkit.exceptions.TOMLKitError: Can't add a table to a dotted key``
caused by tomlkit ``v0.11.8``.
Closes #8632 (`#8632 <https://github.com/pylint-dev/pylint/issues/8632>`_)
What's new in Pylint 2.17.3?
----------------------------
Release date: 2023-04-24
False Positives Fixed
---------------------
- Fix `unused-argument` false positive when `__new__` does not use all the
arguments of `__init__`.
Closes #3670 (`#3670 <https://github.com/pylint-dev/pylint/issues/3670>`_)
- Fix ``unused-import`` false positive for usage of ``six.with_metaclass``.
Closes #7506 (`#7506 <https://github.com/pylint-dev/pylint/issues/7506>`_)
- `logging-not-lazy` is not longer emitted for explicitly concatenated string
arguments.
Closes #8410 (`#8410 <https://github.com/pylint-dev/pylint/issues/8410>`_)
- Fix false positive for isinstance-second-argument-not-valid-type when union
types contains None.
Closes #8424 (`#8424 <https://github.com/pylint-dev/pylint/issues/8424>`_)
- Fixed `unused-import` so that it observes the `dummy-variables-rgx` option.
Closes #8500 (`#8500 <https://github.com/pylint-dev/pylint/issues/8500>`_)
- `Union` typed variables without assignment are no longer treated as
`TypeAlias`.
Closes #8540 (`#8540 <https://github.com/pylint-dev/pylint/issues/8540>`_)
- Fix false positive for ``positional-only-arguments-expected`` when a function
contains both a positional-only parameter that has a default value, and
``**kwargs``.
Closes #8555 (`#8555 <https://github.com/pylint-dev/pylint/issues/8555>`_)
- Fix false positive for ``keyword-arg-before-vararg`` when a positional-only
parameter with a default value precedes ``*args``.
Closes #8570 (`#8570 <https://github.com/pylint-dev/pylint/issues/8570>`_)
Other Bug Fixes
---------------
- Improve output of ``consider-using-generator`` message for ``min()` calls
with ``default`` keyword.
Closes #8563 (`#8563 <https://github.com/pylint-dev/pylint/issues/8563>`_)
What's new in Pylint 2.17.2?
----------------------------
Release date: 2023-04-03
False Positives Fixed
---------------------
- ``invalid-name`` now allows for integers in ``typealias`` names:
- now valid: ``Good2Name``, ``GoodName2``.
- still invalid: ``_1BadName``.
Closes #8485 (`#8485 <https://github.com/pylint-dev/pylint/issues/8485>`_)
- No longer consider ``Union`` as type annotation as type alias for naming
checks.
Closes #8487 (`#8487 <https://github.com/pylint-dev/pylint/issues/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 (`#8496 <https://github.com/pylint-dev/pylint/issues/8496>`_)
Other Bug Fixes
---------------
- Fix a crash in pyreverse when "/" characters are used in the output filename
e.g pyreverse -o png -p name/ path/to/project.
Closes #8504 (`#8504 <https://github.com/pylint-dev/pylint/issues/8504>`_)
What's new in Pylint 2.17.1?
----------------------------
Release date: 2023-03-22
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 (`#8403 <https://github.com/pylint-dev/pylint/issues/8403>`_)
Other Bug Fixes
---------------
- ``--clear-cache-post-run`` now also clears LRU caches for pylint utilities
holding references to AST nodes.
Closes #8361 (`#8361 <https://github.com/pylint-dev/pylint/issues/8361>`_)
- Fix a crash when ``TYPE_CHECKING`` is used without importing it.
Closes #8434 (`#8434 <https://github.com/pylint-dev/pylint/issues/8434>`_)
- Fix a regression of ``preferred-modules`` where a partial match was used
instead of the required full match.
Closes #8453 (`#8453 <https://github.com/pylint-dev/pylint/issues/8453>`_)
Internal Changes
----------------
- 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 (`#8433 <https://github.com/pylint-dev/pylint/issues/8433>`_)
What's new in Pylint 2.17.0?
----------------------------
Release date: 2023-03-08
New Features
------------
- `pyreverse` now supports custom color palettes with the `--color-palette`
option.
Closes #6738 (`#6738 <https://github.com/pylint-dev/pylint/issues/6738>`_)
- Add ``invalid-name`` check for ``TypeAlias`` names.
Closes #7081. (`#7081 <https://github.com/pylint-dev/pylint/issues/7081>`_)
- Accept values of the form ``<class name>.<attribute name>`` for the
``exclude-protected`` list.
Closes #7343 (`#7343 <https://github.com/pylint-dev/pylint/issues/7343>`_)
- Add `--version` option to `pyreverse`.
Refs #7851 (`#7851 <https://github.com/pylint-dev/pylint/issues/7851>`_)
- Adds new functionality with preferred-modules configuration to detect
submodules.
Refs #7957 (`#7957 <https://github.com/pylint-dev/pylint/issues/7957>`_)
- Support implicit namespace packages (PEP 420).
Closes #8154 (`#8154 <https://github.com/pylint-dev/pylint/issues/8154>`_)
- Add globbing pattern support for ``--source-roots``.
Closes #8290 (`#8290 <https://github.com/pylint-dev/pylint/issues/8290>`_)
- Support globbing pattern when defining which file/directory/module to lint.
Closes #8310 (`#8310 <https://github.com/pylint-dev/pylint/issues/8310>`_)
- pylint now supports ``TryStar`` nodes from Python 3.11 and should be fully
compatible with Python 3.11.
Closes #8387 (`#8387 <https://github.com/pylint-dev/pylint/issues/8387>`_)
New Checks
----------
- Add a ``bad-chained-comparison`` check that emits a warning when
there is a chained comparison where one expression is semantically
incompatible with the other.
Closes #6559 (`#6559 <https://github.com/pylint-dev/pylint/issues/6559>`_)
- Adds an ``implicit-flag-alias`` check that emits a warning when a class
derived from ``enum.IntFlag`` assigns distinct integer values that share
common bit positions.
Refs #8102 (`#8102 <https://github.com/pylint-dev/pylint/issues/8102>`_)
False Positives Fixed
---------------------
- Fix various false positives for functions that return directly from
structural pattern matching cases.
Closes #5288 (`#5288 <https://github.com/pylint-dev/pylint/issues/5288>`_)
- Fix false positive for ``used-before-assignment`` when
``typing.TYPE_CHECKING`` is used with if/elif/else blocks.
Closes #7574 (`#7574 <https://github.com/pylint-dev/pylint/issues/7574>`_)
- Fix false positive for isinstance-second-argument-not-valid-type with union
types.
Closes #8205 (`#8205 <https://github.com/pylint-dev/pylint/issues/8205>`_)
- Fix false positive for ``used-before-assignment`` for named expressions
appearing after the first element in a list, tuple, or set.
Closes #8252 (`#8252 <https://github.com/pylint-dev/pylint/issues/8252>`_)
- Fix false positive for ``wrong-spelling-in-comment`` with class names in a
python 2 type comment.
Closes #8370 (`#8370 <https://github.com/pylint-dev/pylint/issues/8370>`_)
False Negatives Fixed
---------------------
- Fix a false negative for 'missing-parentheses-for-call-in-test' when
inference
failed for the internal of the call as we did not need that information to
raise
correctly.
Refs #8185 (`#8185 <https://github.com/pylint-dev/pylint/issues/8185>`_)
- Fix false negative for inconsistent-returns with while-loops.
Closes #8280 (`#8280 <https://github.com/pylint-dev/pylint/issues/8280>`_)
Other Bug Fixes
---------------
- Fix ``used-before-assignment`` false positive when the walrus operator
is used with a ternary operator in dictionary key/value initialization.
Closes #8125 (`#8125 <https://github.com/pylint-dev/pylint/issues/8125>`_)
- Fix ``no-name-in-module`` false positive raised when a package defines a
variable with the
same name as one of its submodules.
Closes #8148 (`#8148 <https://github.com/pylint-dev/pylint/issues/8148>`_)
- Fix a crash happening for python interpreter < 3.9 following a failed typing
update.
Closes #8161 (`#8161 <https://github.com/pylint-dev/pylint/issues/8161>`_)
- Fix ``nested-min-max`` suggestion message to indicate it's possible to splat
iterable objects.
Closes #8168 (`#8168 <https://github.com/pylint-dev/pylint/issues/8168>`_)
- Fix a crash happening when a class attribute was negated in the start
argument of an enumerate.
Closes #8207 (`#8207 <https://github.com/pylint-dev/pylint/issues/8207>`_)
- Prevent emitting ``invalid-name`` for the line on which a ``global``
statement is declared.
Closes #8307 (`#8307 <https://github.com/pylint-dev/pylint/issues/8307>`_)
Other Changes
-------------
- Update explanation for ``global-variable-not-assigned`` and add confidence.
Closes #5073 (`#5073 <https://github.com/pylint-dev/pylint/issues/5073>`_)
- The governance model and the path to become a maintainer have been documented
as
part of our effort to guarantee that the software supply chain in which
pylint is
included is secure.
Refs #8329 (`#8329 <https://github.com/pylint-dev/pylint/issues/8329>`_)