| *************************** |
| 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>`_) |