pylint-dev/pylint (pylint)
### [`v3.3.1`](https://redirect.github.com/pylint-dev/pylint/releases/tag/v3.3.1)
[Compare Source](https://redirect.github.com/pylint-dev/pylint/compare/v3.3.0...v3.3.1)
## What's new in Pylint 3.3.1?
Release date: 2024-09-24
## False Positives Fixed
- Fix regression causing some f-strings to not be inferred as strings.
Closes [#9947](https://redirect.github.com/pylint-dev/pylint/issues/9947)
### [`v3.3.0`](https://redirect.github.com/pylint-dev/pylint/releases/tag/v3.3.0)
[Compare Source](https://redirect.github.com/pylint-dev/pylint/compare/v3.2.7...v3.3.0)
Release date: 2024-09-20
## Changes requiring user actions
- We migrated `symilar` to argparse, from getopt, so the error and help output changed
(for the better). We exit with 2 instead of sometime 1, sometime 2. The error output
is not captured by the runner anymore. It's not possible to use a value for the
boolean options anymore (`--ignore-comments 1` should become `--ignore-comments`).
Refs [#9731](https://redirect.github.com/pylint-dev/pylint/issues/9731)
## New Features
- Add new `declare-non-slot` error which reports when a class has a `__slots__` member and a type hint on the class is not present in `__slots__`.
Refs [#9499](https://redirect.github.com/pylint-dev/pylint/issues/9499)
## New Checks
- Added `too-many-positional-arguments` to allow distinguishing the configuration for too many
total arguments (with keyword-only params specified after `*`) from the configuration
for too many positional-or-keyword or positional-only arguments.
As part of evaluating whether this check makes sense for your project, ensure you
adjust the value of `--max-positional-arguments`.
Closes [#9099](https://redirect.github.com/pylint-dev/pylint/issues/9099)
- Add `using-exception-groups-in-unsupported-version` and
`using-generic-type-syntax-in-unsupported-version` for uses of Python 3.11+ or
3.12+ features on lower supported versions provided with `--py-version`.
Closes [#9791](https://redirect.github.com/pylint-dev/pylint/issues/9791)
- Add `using-assignment-expression-in-unsupported-version` for uses of `:=` (walrus operator)
on Python versions below 3.8 provided with `--py-version`.
Closes [#9820](https://redirect.github.com/pylint-dev/pylint/issues/9820)
- Add `using-positional-only-args-in-unsupported-version` for uses of positional-only args on
Python versions below 3.8 provided with `--py-version`.
Closes [#9823](https://redirect.github.com/pylint-dev/pylint/issues/9823)
- Add `unnecessary-default-type-args` to the `typing` extension to detect the use
of unnecessary default type args for `typing.Generator` and `typing.AsyncGenerator`.
Refs [#9938](https://redirect.github.com/pylint-dev/pylint/issues/9938)
## False Negatives Fixed
- Fix computation of never-returning function: `Never` is handled in addition to `NoReturn`, and priority is given to the explicit `--never-returning-functions` option.
Closes [#7565](https://redirect.github.com/pylint-dev/pylint/issues/7565).
- Fix a false negative for `await-outside-async` when await is inside Lambda.
Refs [#9653](https://redirect.github.com/pylint-dev/pylint/issues/9653)
- Fix a false negative for `duplicate-argument-name` by including `positional-only`, `*args` and `**kwargs` arguments in the check.
Closes [#9669](https://redirect.github.com/pylint-dev/pylint/issues/9669)
- Fix false negative for `multiple-statements` when multiple statements are present on `else` and `finally` lines of `try`.
Refs [#9759](https://redirect.github.com/pylint-dev/pylint/issues/9759)
- Fix false negatives when `isinstance` does not have exactly two arguments.
pylint now emits a `too-many-function-args` or `no-value-for-parameter`
appropriately for `isinstance` calls.
Closes [#9847](https://redirect.github.com/pylint-dev/pylint/issues/9847)
## Other Bug Fixes
- `--enable` with `--disable=all` now produces an error, when an unknown msg code is used. Internal `pylint` messages are no longer affected by `--disable=all`.
Closes [#9403](https://redirect.github.com/pylint-dev/pylint/issues/9403)
- Impossible to compile regexes for paths in the configuration or argument given to pylint won't crash anymore but
raise an argparse error and display the error message from `re.compile` instead.
Closes [#9680](https://redirect.github.com/pylint-dev/pylint/issues/9680)
- Fix a bug where a `tox.ini` file with pylint configuration was ignored and it exists in the current directory.
`.cfg` and `.ini` files containing a `Pylint` configuration may now use a section named `[pylint]`. This enhancement impacts the scenario where these file types are used as defaults when they are present and have not been explicitly referred to, using the `--rcfile` option.
Closes [#9727](https://redirect.github.com/pylint-dev/pylint/issues/9727)
- Improve file discovery for directories that are not python packages.
Closes [#9764](https://redirect.github.com/pylint-dev/pylint/issues/9764)
## Other Changes
- Remove support for launching pylint with Python 3.8.
Code that supports Python 3.8 can still be linted with the `--py-version=3.8` setting.
Refs [#9774](https://redirect.github.com/pylint-dev/pylint/issues/9774)
- Add support for Python 3.13.
Refs [#9852](https://redirect.github.com/pylint-dev/pylint/issues/9852)
## Internal Changes
- All variables, classes, functions and file names containing the word 'similar', when it was,
in fact, referring to 'symilar' (the standalone program for the duplicate-code check) were renamed
to 'symilar'.
Closes [#9734](https://redirect.github.com/pylint-dev/pylint/issues/9734)
- Remove old-style classes (Python 2) code and remove check for new-style class since everything is new-style in Python 3. Updated doc for exception checker to remove reference to new style class.
Refs [#9925](https://redirect.github.com/pylint-dev/pylint/issues/9925)
### [`v3.2.7`](https://redirect.github.com/pylint-dev/pylint/releases/tag/v3.2.7)
[Compare Source](https://redirect.github.com/pylint-dev/pylint/compare/v3.2.6...v3.2.7)
## What's new in Pylint 3.2.7?
Release date: 2024-08-31
## False Positives Fixed
- Fixed a false positive `unreachable` for `NoReturn` coroutine functions.
Closes [#9840](https://redirect.github.com/pylint-dev/pylint/issues/9840)
## Other Bug Fixes
- Fix crash in refactoring checker when calling a lambda bound as a method.
Closes [#9865](https://redirect.github.com/pylint-dev/pylint/issues/9865)
- Fix a crash in `undefined-loop-variable` when providing the `iterable` argument to `enumerate()`.
Closes [#9875](https://redirect.github.com/pylint-dev/pylint/issues/9875)
- Fix to address indeterminacy of error message in case a module name is same as another in a separate namespace.
Refs [#9883](https://redirect.github.com/pylint-dev/pylint/issues/9883)
### [`v3.2.6`](https://redirect.github.com/pylint-dev/pylint/releases/tag/v3.2.6)
[Compare Source](https://redirect.github.com/pylint-dev/pylint/compare/v3.2.5...v3.2.6)
## What's new in Pylint 3.2.6?
Release date: 2024-07-21
## False Positives Fixed
- Quiet false positives for `unexpected-keyword-arg` when pylint cannot
determine which of two or more dynamically defined classes is being instantiated.
Closes [#9672](https://redirect.github.com/pylint-dev/pylint/issues/9672)
- Fix a false positive for `missing-param-doc` where a method which is decorated with `typing.overload` was expected to have a docstring specifying its parameters.
Closes [#9739](https://redirect.github.com/pylint-dev/pylint/issues/9739)
- Fix a regression that raised `invalid-name` on class attributes merely
overriding invalid names from an ancestor.
Closes [#9765](https://redirect.github.com/pylint-dev/pylint/issues/9765)
- Treat `assert_never()` the same way when imported from `typing_extensions`.
Closes [#9780](https://redirect.github.com/pylint-dev/pylint/issues/9780)
- Fix a false positive for `consider-using-min-max-builtin` when the assignment target is an attribute.
Refs [#9800](https://redirect.github.com/pylint-dev/pylint/issues/9800)
## Other Bug Fixes
- Fix an `AssertionError` arising from properties that return partial functions.
Closes [#9214](https://redirect.github.com/pylint-dev/pylint/issues/9214)
- Fix a crash when a subclass extends `__slots__`.
Closes [#9814](https://redirect.github.com/pylint-dev/pylint/issues/9814)
### [`v3.2.5`](https://redirect.github.com/pylint-dev/pylint/releases/tag/v3.2.5)
[Compare Source](https://redirect.github.com/pylint-dev/pylint/compare/v3.2.4...v3.2.5)
## What's new in Pylint 3.2.5 ?
Release date: 2024-06-28
## Other Bug Fixes
- Fixed a false positive `unreachable-code` when using `typing.Any` as return type in python
3.8, the `typing.NoReturn` are not taken into account anymore for python 3.8 however.
Closes [#9751](https://redirect.github.com/pylint-dev/pylint/issues/9751)
### [`v3.2.4`](https://redirect.github.com/pylint-dev/pylint/releases/tag/v3.2.4)
[Compare Source](https://redirect.github.com/pylint-dev/pylint/compare/v3.2.3...v3.2.4)
## What's new in Pylint 3.2.4?
Release date: 2024-06-26
## False Positives Fixed
- Prevent emitting `possibly-used-before-assignment` when relying on names
only potentially not defined in conditional blocks guarded by functions
annotated with `typing.Never` or `typing.NoReturn`.
Closes [#9674](https://redirect.github.com/pylint-dev/pylint/issues/9674)
## Other Bug Fixes
- Fixed a crash when the lineno of a variable used as an annotation wasn't available for `undefined-variable`.
Closes [#8866](https://redirect.github.com/pylint-dev/pylint/issues/8866)
- Fixed a crash when the `start` value in an `enumerate` was non-constant and impossible to infer
(like in`enumerate(apples, start=int(random_apple_index)`) for `unnecessary-list-index-lookup`.
Closes [#9078](https://redirect.github.com/pylint-dev/pylint/issues/9078)
- Fixed a crash in `symilar` when the `-d` or `-i` short option were not properly recognized.
It's still impossible to do `-d=1` (you must do `-d 1`).
Closes [#9343](https://redirect.github.com/pylint-dev/pylint/issues/9343)
### [`v3.2.3`](https://redirect.github.com/pylint-dev/pylint/releases/tag/v3.2.3)
[Compare Source](https://redirect.github.com/pylint-dev/pylint/compare/v3.2.2...v3.2.3)
## False Positives Fixed
- Classes with only an Ellipsis (`...`) in their body do not trigger 'multiple-statements'
anymore if they are inlined (in accordance with black's 2024 style).
Closes [#9398](https://redirect.github.com/pylint-dev/pylint/issues/9398)
- Fix a false positive for `redefined-outer-name` when there is a name defined in an exception-handling block which shares the same name as a local variable that has been defined in a function body.
Closes [#9671](https://redirect.github.com/pylint-dev/pylint/issues/9671)
- Fix a false positive for `use-yield-from` when using the return value from the `yield` atom.
Closes [#9696](https://redirect.github.com/pylint-dev/pylint/issues/9696)
### [`v3.2.2`](https://redirect.github.com/pylint-dev/pylint/releases/tag/v3.2.2)
[Compare Source](https://redirect.github.com/pylint-dev/pylint/compare/v3.2.1...v3.2.2)
## What's new in Pylint 3.2.2?
Release date: 2024-05-20
## False Positives Fixed
- Fix multiple false positives for generic class syntax added in Python 3.12 (PEP 695).
Closes [#9406](https://redirect.github.com/pylint-dev/pylint/issues/9406)
- Exclude context manager without cleanup from
`contextmanager-generator-missing-cleanup` checks.
Closes [#9625](https://redirect.github.com/pylint-dev/pylint/issues/9625)
### [`v3.2.1`](https://redirect.github.com/pylint-dev/pylint/releases/tag/v3.2.1)
[Compare Source](https://redirect.github.com/pylint-dev/pylint/compare/v3.2.0...v3.2.1)
## What's new in Pylint 3.2.1?
Release date: 2024-05-18
## False Positives Fixed
- Exclude if/else branches containing terminating functions (e.g. `sys.exit()`)
from `possibly-used-before-assignment` checks.
Closes [#9627](https://redirect.github.com/pylint-dev/pylint/issues/9627)
- Don't emit `typevar-name-incorrect-variance` warnings for PEP 695 style TypeVars.
The variance is inferred automatically by the type checker.
Adding `_co` or `_contra` suffix can help to reason about TypeVar.
Refs [#9638](https://redirect.github.com/pylint-dev/pylint/issues/9638)
- Fix a false positive for `possibly-used-before-assignment` when using
`typing.assert_never()` (3.11+) to indicate exhaustiveness.
Closes [#9643](https://redirect.github.com/pylint-dev/pylint/issues/9643)
## Other Bug Fixes
- Fix a false negative for `--ignore-patterns` when the directory to be linted is specified using a dot(`.`) and all files are ignored instead of only the files whose name begin with a dot.
Closes [#9273](https://redirect.github.com/pylint-dev/pylint/issues/9273)
- Restore "errors / warnings by module" section to report output (with `-ry`).
Closes [#9145](https://redirect.github.com/pylint-dev/pylint/issues/9145)
- `trailing-comma-tuple` should now be correctly emitted when it was disabled globally
but enabled via local message control, after removal of an over-optimisation.
Refs [#9608](https://redirect.github.com/pylint-dev/pylint/issues/9608)
- Add `--prefer-stubs=yes` option to opt-in to the astroid 3.2 feature
that prefers `.pyi` stubs over same-named `.py` files. This has the
potential to reduce `no-member` errors but at the cost of more errors
such as `not-an-iterable` from function bodies appearing as `...`.
Defaults to `no`.
Closes [#9626](https://redirect.github.com/pylint-dev/pylint/issues/9626)
Closes [#9623](https://redirect.github.com/pylint-dev/pylint/issues/9623)
## Internal Changes
- Update astroid version to 3.2.1. This solves some reports of `RecursionError`
and also makes the *prefer .pyi stubs* feature in astroid 3.2.0 *opt-in*
with the aforementioned `--prefer-stubs=y` option.
Refs [#9139](https://redirect.github.com/pylint-dev/pylint/issues/9139)
### [`v3.2.0`](https://redirect.github.com/pylint-dev/pylint/releases/tag/v3.2.0)
[Compare Source](https://redirect.github.com/pylint-dev/pylint/compare/v3.1.1...v3.2.0)
## What's new in Pylint 3.2.0?
Release date: 2024-05-14
Of note: a `github` reporter, two new checks (`possibly-used-before-assignment` and `contextmanager-generator-missing-cleanup`), performance improvements, and an `astroid` upgrade providing support for `@overload` and `.pyi` stubs.
## New Features
- Understand `six.PY2` and `six.PY3` for conditional imports.
Closes [#3501](https://redirect.github.com/pylint-dev/pylint/issues/3501)
- A new `github` reporter has been added. This reporter returns the output of `pylint` in a format that
Github can use to automatically annotate code. Use it with `pylint --output-format=github` on your Github Workflows.
Closes [#9443](https://redirect.github.com/pylint-dev/pylint/issues/9443).
## New Checks
- Add check `possibly-used-before-assignment` when relying on names after an `if/else`
switch when one branch failed to define the name, raise, or return.
Closes [#1727](https://redirect.github.com/pylint-dev/pylint/issues/1727)
- Checks for generators that use contextmanagers that don't handle cleanup properly.
Is meant to raise visibilty on the case that a generator is not fully exhausted and the contextmanager is not cleaned up properly.
A contextmanager must yield a non-constant value and not handle cleanup for GeneratorExit.
The using generator must attempt to use the yielded context value `with x() as y` and not just `with x()`.
Closes [#2832](https://redirect.github.com/pylint-dev/pylint/issues/2832)
## False Negatives Fixed
- If and Try nodes are now checked for useless return statements as well.
Closes [#9449](https://redirect.github.com/pylint-dev/pylint/issues/9449).
- Fix false negative for `property-with-parameters` in the case of parameters which are `positional-only`, `keyword-only`, `variadic positional` or `variadic keyword`.
Closes [#9584](https://redirect.github.com/pylint-dev/pylint/issues/9584)
## False Positives Fixed
- pylint now understands the `@overload` decorator return values better.
Closes [#4696](https://redirect.github.com/pylint-dev/pylint/issues/4696)
Refs [#9606](https://redirect.github.com/pylint-dev/pylint/issues/9606)
## Performance Improvements
- Ignored modules are now not checked at all, instead of being checked and then
ignored. This should speed up the analysis of large codebases which have
ignored modules.
Closes [#9442](https://redirect.github.com/pylint-dev/pylint/issues/9442)
- ImportChecker's logic has been modified to avoid context files when possible. This makes it possible
to cache module searches on astroid and reduce execution times.
Refs [#9310](https://redirect.github.com/pylint-dev/pylint/issues/9310).
- An internal check for `trailing-comma-tuple` being enabled for a file or not is now
done once per file instead of once for each token.
Refs [#9608](https://redirect.github.com/pylint-dev/pylint/issues/9608).
### [`v3.1.1`](https://redirect.github.com/pylint-dev/pylint/releases/tag/v3.1.1)
[Compare Source](https://redirect.github.com/pylint-dev/pylint/compare/v3.1.0...v3.1.1)
## What's new in Pylint 3.1.1?
Release date: 2024-05-13
## False Positives Fixed
- Treat `attrs.define` and `attrs.frozen` as dataclass decorators in
`too-few-public-methods` check.
Closes [#9345](https://redirect.github.com/pylint-dev/pylint/issues/9345)
- Fix a false positive with `singledispatchmethod-function` when a method is decorated with both `functools.singledispatchmethod` and `staticmethod`.
Closes [#9531](https://redirect.github.com/pylint-dev/pylint/issues/9531)
- Fix a false positive for `consider-using-dict-items` when iterating using `keys()` and then deleting an item using the key as a lookup.
Closes [#9554](https://redirect.github.com/pylint-dev/pylint/issues/9554)
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, check this box
This PR contains the following updates:
==3.1.0
->==3.3.1
Release Notes
pylint-dev/pylint (pylint)
### [`v3.3.1`](https://redirect.github.com/pylint-dev/pylint/releases/tag/v3.3.1) [Compare Source](https://redirect.github.com/pylint-dev/pylint/compare/v3.3.0...v3.3.1) ## What's new in Pylint 3.3.1? Release date: 2024-09-24 ## False Positives Fixed - Fix regression causing some f-strings to not be inferred as strings. Closes [#9947](https://redirect.github.com/pylint-dev/pylint/issues/9947) ### [`v3.3.0`](https://redirect.github.com/pylint-dev/pylint/releases/tag/v3.3.0) [Compare Source](https://redirect.github.com/pylint-dev/pylint/compare/v3.2.7...v3.3.0) Release date: 2024-09-20 ## Changes requiring user actions - We migrated `symilar` to argparse, from getopt, so the error and help output changed (for the better). We exit with 2 instead of sometime 1, sometime 2. The error output is not captured by the runner anymore. It's not possible to use a value for the boolean options anymore (`--ignore-comments 1` should become `--ignore-comments`). Refs [#9731](https://redirect.github.com/pylint-dev/pylint/issues/9731) ## New Features - Add new `declare-non-slot` error which reports when a class has a `__slots__` member and a type hint on the class is not present in `__slots__`. Refs [#9499](https://redirect.github.com/pylint-dev/pylint/issues/9499) ## New Checks - Added `too-many-positional-arguments` to allow distinguishing the configuration for too many total arguments (with keyword-only params specified after `*`) from the configuration for too many positional-or-keyword or positional-only arguments. As part of evaluating whether this check makes sense for your project, ensure you adjust the value of `--max-positional-arguments`. Closes [#9099](https://redirect.github.com/pylint-dev/pylint/issues/9099) - Add `using-exception-groups-in-unsupported-version` and `using-generic-type-syntax-in-unsupported-version` for uses of Python 3.11+ or 3.12+ features on lower supported versions provided with `--py-version`. Closes [#9791](https://redirect.github.com/pylint-dev/pylint/issues/9791) - Add `using-assignment-expression-in-unsupported-version` for uses of `:=` (walrus operator) on Python versions below 3.8 provided with `--py-version`. Closes [#9820](https://redirect.github.com/pylint-dev/pylint/issues/9820) - Add `using-positional-only-args-in-unsupported-version` for uses of positional-only args on Python versions below 3.8 provided with `--py-version`. Closes [#9823](https://redirect.github.com/pylint-dev/pylint/issues/9823) - Add `unnecessary-default-type-args` to the `typing` extension to detect the use of unnecessary default type args for `typing.Generator` and `typing.AsyncGenerator`. Refs [#9938](https://redirect.github.com/pylint-dev/pylint/issues/9938) ## False Negatives Fixed - Fix computation of never-returning function: `Never` is handled in addition to `NoReturn`, and priority is given to the explicit `--never-returning-functions` option. Closes [#7565](https://redirect.github.com/pylint-dev/pylint/issues/7565). - Fix a false negative for `await-outside-async` when await is inside Lambda. Refs [#9653](https://redirect.github.com/pylint-dev/pylint/issues/9653) - Fix a false negative for `duplicate-argument-name` by including `positional-only`, `*args` and `**kwargs` arguments in the check. Closes [#9669](https://redirect.github.com/pylint-dev/pylint/issues/9669) - Fix false negative for `multiple-statements` when multiple statements are present on `else` and `finally` lines of `try`. Refs [#9759](https://redirect.github.com/pylint-dev/pylint/issues/9759) - Fix false negatives when `isinstance` does not have exactly two arguments. pylint now emits a `too-many-function-args` or `no-value-for-parameter` appropriately for `isinstance` calls. Closes [#9847](https://redirect.github.com/pylint-dev/pylint/issues/9847) ## Other Bug Fixes - `--enable` with `--disable=all` now produces an error, when an unknown msg code is used. Internal `pylint` messages are no longer affected by `--disable=all`. Closes [#9403](https://redirect.github.com/pylint-dev/pylint/issues/9403) - Impossible to compile regexes for paths in the configuration or argument given to pylint won't crash anymore but raise an argparse error and display the error message from `re.compile` instead. Closes [#9680](https://redirect.github.com/pylint-dev/pylint/issues/9680) - Fix a bug where a `tox.ini` file with pylint configuration was ignored and it exists in the current directory. `.cfg` and `.ini` files containing a `Pylint` configuration may now use a section named `[pylint]`. This enhancement impacts the scenario where these file types are used as defaults when they are present and have not been explicitly referred to, using the `--rcfile` option. Closes [#9727](https://redirect.github.com/pylint-dev/pylint/issues/9727) - Improve file discovery for directories that are not python packages. Closes [#9764](https://redirect.github.com/pylint-dev/pylint/issues/9764) ## Other Changes - Remove support for launching pylint with Python 3.8. Code that supports Python 3.8 can still be linted with the `--py-version=3.8` setting. Refs [#9774](https://redirect.github.com/pylint-dev/pylint/issues/9774) - Add support for Python 3.13. Refs [#9852](https://redirect.github.com/pylint-dev/pylint/issues/9852) ## Internal Changes - All variables, classes, functions and file names containing the word 'similar', when it was, in fact, referring to 'symilar' (the standalone program for the duplicate-code check) were renamed to 'symilar'. Closes [#9734](https://redirect.github.com/pylint-dev/pylint/issues/9734) - Remove old-style classes (Python 2) code and remove check for new-style class since everything is new-style in Python 3. Updated doc for exception checker to remove reference to new style class. Refs [#9925](https://redirect.github.com/pylint-dev/pylint/issues/9925) ### [`v3.2.7`](https://redirect.github.com/pylint-dev/pylint/releases/tag/v3.2.7) [Compare Source](https://redirect.github.com/pylint-dev/pylint/compare/v3.2.6...v3.2.7) ## What's new in Pylint 3.2.7? Release date: 2024-08-31 ## False Positives Fixed - Fixed a false positive `unreachable` for `NoReturn` coroutine functions. Closes [#9840](https://redirect.github.com/pylint-dev/pylint/issues/9840) ## Other Bug Fixes - Fix crash in refactoring checker when calling a lambda bound as a method. Closes [#9865](https://redirect.github.com/pylint-dev/pylint/issues/9865) - Fix a crash in `undefined-loop-variable` when providing the `iterable` argument to `enumerate()`. Closes [#9875](https://redirect.github.com/pylint-dev/pylint/issues/9875) - Fix to address indeterminacy of error message in case a module name is same as another in a separate namespace. Refs [#9883](https://redirect.github.com/pylint-dev/pylint/issues/9883) ### [`v3.2.6`](https://redirect.github.com/pylint-dev/pylint/releases/tag/v3.2.6) [Compare Source](https://redirect.github.com/pylint-dev/pylint/compare/v3.2.5...v3.2.6) ## What's new in Pylint 3.2.6? Release date: 2024-07-21 ## False Positives Fixed - Quiet false positives for `unexpected-keyword-arg` when pylint cannot determine which of two or more dynamically defined classes is being instantiated. Closes [#9672](https://redirect.github.com/pylint-dev/pylint/issues/9672) - Fix a false positive for `missing-param-doc` where a method which is decorated with `typing.overload` was expected to have a docstring specifying its parameters. Closes [#9739](https://redirect.github.com/pylint-dev/pylint/issues/9739) - Fix a regression that raised `invalid-name` on class attributes merely overriding invalid names from an ancestor. Closes [#9765](https://redirect.github.com/pylint-dev/pylint/issues/9765) - Treat `assert_never()` the same way when imported from `typing_extensions`. Closes [#9780](https://redirect.github.com/pylint-dev/pylint/issues/9780) - Fix a false positive for `consider-using-min-max-builtin` when the assignment target is an attribute. Refs [#9800](https://redirect.github.com/pylint-dev/pylint/issues/9800) ## Other Bug Fixes - Fix an `AssertionError` arising from properties that return partial functions. Closes [#9214](https://redirect.github.com/pylint-dev/pylint/issues/9214) - Fix a crash when a subclass extends `__slots__`. Closes [#9814](https://redirect.github.com/pylint-dev/pylint/issues/9814) ### [`v3.2.5`](https://redirect.github.com/pylint-dev/pylint/releases/tag/v3.2.5) [Compare Source](https://redirect.github.com/pylint-dev/pylint/compare/v3.2.4...v3.2.5) ## What's new in Pylint 3.2.5 ? Release date: 2024-06-28 ## Other Bug Fixes - Fixed a false positive `unreachable-code` when using `typing.Any` as return type in python 3.8, the `typing.NoReturn` are not taken into account anymore for python 3.8 however. Closes [#9751](https://redirect.github.com/pylint-dev/pylint/issues/9751) ### [`v3.2.4`](https://redirect.github.com/pylint-dev/pylint/releases/tag/v3.2.4) [Compare Source](https://redirect.github.com/pylint-dev/pylint/compare/v3.2.3...v3.2.4) ## What's new in Pylint 3.2.4? Release date: 2024-06-26 ## False Positives Fixed - Prevent emitting `possibly-used-before-assignment` when relying on names only potentially not defined in conditional blocks guarded by functions annotated with `typing.Never` or `typing.NoReturn`. Closes [#9674](https://redirect.github.com/pylint-dev/pylint/issues/9674) ## Other Bug Fixes - Fixed a crash when the lineno of a variable used as an annotation wasn't available for `undefined-variable`. Closes [#8866](https://redirect.github.com/pylint-dev/pylint/issues/8866) - Fixed a crash when the `start` value in an `enumerate` was non-constant and impossible to infer (like in`enumerate(apples, start=int(random_apple_index)`) for `unnecessary-list-index-lookup`. Closes [#9078](https://redirect.github.com/pylint-dev/pylint/issues/9078) - Fixed a crash in `symilar` when the `-d` or `-i` short option were not properly recognized. It's still impossible to do `-d=1` (you must do `-d 1`). Closes [#9343](https://redirect.github.com/pylint-dev/pylint/issues/9343) ### [`v3.2.3`](https://redirect.github.com/pylint-dev/pylint/releases/tag/v3.2.3) [Compare Source](https://redirect.github.com/pylint-dev/pylint/compare/v3.2.2...v3.2.3) ## False Positives Fixed - Classes with only an Ellipsis (`...`) in their body do not trigger 'multiple-statements' anymore if they are inlined (in accordance with black's 2024 style). Closes [#9398](https://redirect.github.com/pylint-dev/pylint/issues/9398) - Fix a false positive for `redefined-outer-name` when there is a name defined in an exception-handling block which shares the same name as a local variable that has been defined in a function body. Closes [#9671](https://redirect.github.com/pylint-dev/pylint/issues/9671) - Fix a false positive for `use-yield-from` when using the return value from the `yield` atom. Closes [#9696](https://redirect.github.com/pylint-dev/pylint/issues/9696) ### [`v3.2.2`](https://redirect.github.com/pylint-dev/pylint/releases/tag/v3.2.2) [Compare Source](https://redirect.github.com/pylint-dev/pylint/compare/v3.2.1...v3.2.2) ## What's new in Pylint 3.2.2? Release date: 2024-05-20 ## False Positives Fixed - Fix multiple false positives for generic class syntax added in Python 3.12 (PEP 695). Closes [#9406](https://redirect.github.com/pylint-dev/pylint/issues/9406) - Exclude context manager without cleanup from `contextmanager-generator-missing-cleanup` checks. Closes [#9625](https://redirect.github.com/pylint-dev/pylint/issues/9625) ### [`v3.2.1`](https://redirect.github.com/pylint-dev/pylint/releases/tag/v3.2.1) [Compare Source](https://redirect.github.com/pylint-dev/pylint/compare/v3.2.0...v3.2.1) ## What's new in Pylint 3.2.1? Release date: 2024-05-18 ## False Positives Fixed - Exclude if/else branches containing terminating functions (e.g. `sys.exit()`) from `possibly-used-before-assignment` checks. Closes [#9627](https://redirect.github.com/pylint-dev/pylint/issues/9627) - Don't emit `typevar-name-incorrect-variance` warnings for PEP 695 style TypeVars. The variance is inferred automatically by the type checker. Adding `_co` or `_contra` suffix can help to reason about TypeVar. Refs [#9638](https://redirect.github.com/pylint-dev/pylint/issues/9638) - Fix a false positive for `possibly-used-before-assignment` when using `typing.assert_never()` (3.11+) to indicate exhaustiveness. Closes [#9643](https://redirect.github.com/pylint-dev/pylint/issues/9643) ## Other Bug Fixes - Fix a false negative for `--ignore-patterns` when the directory to be linted is specified using a dot(`.`) and all files are ignored instead of only the files whose name begin with a dot. Closes [#9273](https://redirect.github.com/pylint-dev/pylint/issues/9273) - Restore "errors / warnings by module" section to report output (with `-ry`). Closes [#9145](https://redirect.github.com/pylint-dev/pylint/issues/9145) - `trailing-comma-tuple` should now be correctly emitted when it was disabled globally but enabled via local message control, after removal of an over-optimisation. Refs [#9608](https://redirect.github.com/pylint-dev/pylint/issues/9608) - Add `--prefer-stubs=yes` option to opt-in to the astroid 3.2 feature that prefers `.pyi` stubs over same-named `.py` files. This has the potential to reduce `no-member` errors but at the cost of more errors such as `not-an-iterable` from function bodies appearing as `...`. Defaults to `no`. Closes [#9626](https://redirect.github.com/pylint-dev/pylint/issues/9626) Closes [#9623](https://redirect.github.com/pylint-dev/pylint/issues/9623) ## Internal Changes - Update astroid version to 3.2.1. This solves some reports of `RecursionError` and also makes the *prefer .pyi stubs* feature in astroid 3.2.0 *opt-in* with the aforementioned `--prefer-stubs=y` option. Refs [#9139](https://redirect.github.com/pylint-dev/pylint/issues/9139) ### [`v3.2.0`](https://redirect.github.com/pylint-dev/pylint/releases/tag/v3.2.0) [Compare Source](https://redirect.github.com/pylint-dev/pylint/compare/v3.1.1...v3.2.0) ## What's new in Pylint 3.2.0? Release date: 2024-05-14 Of note: a `github` reporter, two new checks (`possibly-used-before-assignment` and `contextmanager-generator-missing-cleanup`), performance improvements, and an `astroid` upgrade providing support for `@overload` and `.pyi` stubs. ## New Features - Understand `six.PY2` and `six.PY3` for conditional imports. Closes [#3501](https://redirect.github.com/pylint-dev/pylint/issues/3501) - A new `github` reporter has been added. This reporter returns the output of `pylint` in a format that Github can use to automatically annotate code. Use it with `pylint --output-format=github` on your Github Workflows. Closes [#9443](https://redirect.github.com/pylint-dev/pylint/issues/9443). ## New Checks - Add check `possibly-used-before-assignment` when relying on names after an `if/else` switch when one branch failed to define the name, raise, or return. Closes [#1727](https://redirect.github.com/pylint-dev/pylint/issues/1727) - Checks for generators that use contextmanagers that don't handle cleanup properly. Is meant to raise visibilty on the case that a generator is not fully exhausted and the contextmanager is not cleaned up properly. A contextmanager must yield a non-constant value and not handle cleanup for GeneratorExit. The using generator must attempt to use the yielded context value `with x() as y` and not just `with x()`. Closes [#2832](https://redirect.github.com/pylint-dev/pylint/issues/2832) ## False Negatives Fixed - If and Try nodes are now checked for useless return statements as well. Closes [#9449](https://redirect.github.com/pylint-dev/pylint/issues/9449). - Fix false negative for `property-with-parameters` in the case of parameters which are `positional-only`, `keyword-only`, `variadic positional` or `variadic keyword`. Closes [#9584](https://redirect.github.com/pylint-dev/pylint/issues/9584) ## False Positives Fixed - pylint now understands the `@overload` decorator return values better. Closes [#4696](https://redirect.github.com/pylint-dev/pylint/issues/4696) Refs [#9606](https://redirect.github.com/pylint-dev/pylint/issues/9606) ## Performance Improvements - Ignored modules are now not checked at all, instead of being checked and then ignored. This should speed up the analysis of large codebases which have ignored modules. Closes [#9442](https://redirect.github.com/pylint-dev/pylint/issues/9442) - ImportChecker's logic has been modified to avoid context files when possible. This makes it possible to cache module searches on astroid and reduce execution times. Refs [#9310](https://redirect.github.com/pylint-dev/pylint/issues/9310). - An internal check for `trailing-comma-tuple` being enabled for a file or not is now done once per file instead of once for each token. Refs [#9608](https://redirect.github.com/pylint-dev/pylint/issues/9608). ### [`v3.1.1`](https://redirect.github.com/pylint-dev/pylint/releases/tag/v3.1.1) [Compare Source](https://redirect.github.com/pylint-dev/pylint/compare/v3.1.0...v3.1.1) ## What's new in Pylint 3.1.1? Release date: 2024-05-13 ## False Positives Fixed - Treat `attrs.define` and `attrs.frozen` as dataclass decorators in `too-few-public-methods` check. Closes [#9345](https://redirect.github.com/pylint-dev/pylint/issues/9345) - Fix a false positive with `singledispatchmethod-function` when a method is decorated with both `functools.singledispatchmethod` and `staticmethod`. Closes [#9531](https://redirect.github.com/pylint-dev/pylint/issues/9531) - Fix a false positive for `consider-using-dict-items` when iterating using `keys()` and then deleting an item using the key as a lookup. Closes [#9554](https://redirect.github.com/pylint-dev/pylint/issues/9554)Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.