Black is now officially tested with Python 3.13 and provides Python 3.13
mypyc-compiled wheels. (#4436) (#4449)
Black will issue an error when used with Python 3.12.5, due to an upstream memory
safety issue in Python 3.12.5 that can cause Black's AST safety checks to fail. Please
use Python 3.12.6 or Python 3.12.4 instead. (#4447)
Black no longer supports running with Python 3.8 (#4452)
Stable style
Fix crashes involving comments in parenthesised return types or X | Y style unions.
(#4453)
Fix skipping Jupyter cells with unknown %% magic (#4462)
Preview style
Fix type annotation spacing between * and more complex type variable tuple (i.e. def fn(*args: *tuple[*Ts, T]) -> None: pass) (#4440)
Caching
Fix bug where the cache was shared between runs with and without --unstable (#4466)
Packaging
Upgrade version of mypyc used to 1.12 beta (#4450) (#4449)
blackd now requires a newer version of aiohttp. (#4451)
Output
Added Python target version information on parse error (#4378)
Add information about Black version to internal error messages (#4457)
This release is a milestone: it fixes Black's first CVE security vulnerability. If you
run Black on untrusted input, or if you habitually put thousands of leading tab
characters in your docstrings, you are strongly encouraged to upgrade immediately to fix CVE-2024-21503.
This release also fixes a bug in Black's AST safety check that allowed Black to make
incorrect changes to certain f-strings that are valid in Python 3.12 and higher.
Stable style
Don't move comments along with delimiters, which could cause crashes (#4248)
Strengthen AST safety check to catch more unsafe changes to strings. Previous versions
of Black would incorrectly format the contents of certain unusual f-strings containing
nested strings with the same quote type. Now, Black will crash on such strings until
support for the new f-string syntax is implemented. (#4270)
Fix a bug where line-ranges exceeding the last code line would not work as expected
(#4273)
Performance
Fix catastrophic performance on docstrings that contain large numbers of leading tab
characters. This fixes CVE-2024-21503.
(#4278)
Documentation
Note what happens when --check is used with --quiet (#4236)
The tests are pretty much the same but renamed for clarity.
Fixed: allow omitting the current version in sample-config. 6b369fe
If the current version is explicitly left empty during the sample-config questionnaire, the resulting tool.bumpversion table
now lacks a current_version key, and will fall back to PEP 621 project.version (if not dynamic). The instruction text specifically
hints at this new functionality.
New feature: retrieve and update the PEP 621 project version, if possible. 3032450
When determining the current version, and if tool.bumpversion.current_version is not set, attempt to retrieve the
version from project.version à la PEP 621. If that setting is not
set, or if the version is explicitly marked as dynamically set, then
continue with querying SCM tags.
When updating the configuration during bumping, if we previously
successfully retrieved a PEP 621 version, then update the project.version field in pyproject.toml as well. We always update,
even if the true current version was read from tool.bumpversion.current_version instead of project.version.
The docs have been updated; specifically, the "multiple replacements in
one file" howto and the reference for current_version.
The tests have been adapted: the new pep621_info property would
otherwise trip up the old test output, and the None default would trip
up the TOML serializer. Additionally, new tests assert that project.version (and correspondingly, the pep621_info property) is
correctly honored or ignored, depending on the other circumstances.
Refactor CLI config-file option to use @config_option decorator. cd06cbd
Replaced the manual --config-file option setup with the @config_option decorator for cleaner and reusable configuration management. This change simplifies the code and enhances maintainability by consolidating the configuration logic.
New
Added pytest-localserver as a test dependency. c84243d
Add ConfigOption for flexible configuration. 1625248
Introduce ConfigOption and related utilities in bumpversion.click_config to handle configuration file paths or URLs. Includes tests for processing options, resolving paths/URLs, and handling errors in resolve_conf_location and download_url.
Updated other subcommands with the new config_option. 279838a
Improve config resolution and add error handling for paths. 43f0435
Refactor process_value to handle None values and raise a BumpVersionError for non-existent files. Update related tests to ensure correct behavior for missing, existing, and URL-based config paths. These changes enhance robustness and user feedback in handling configuration inputs.
Fix type hinting incompatibility in Python 3.9. 96b29f5
Refactor to use Pathlike type alias for path representation
Unified path type handling across the codebase by introducing the Pathlike type alias (Union[str, Path]). This improves readability and consistency in path-related functions and methods, reducing redundancy. Updated corresponding type annotations, imports, and tests accordingly.
Add support for serializing SCMInfo in YAML, JSON, and output. e8611b2
Ensure SCMInfo objects can be serialized into YAML and JSON formats, improving compatibility with configuration and output displays. Updated dumper functions and tests to reflect the new changes and include SCMInfo details in the configurations.
Updates
Update dependencies and adjust package versions. b6ed073
Fixes #284. Add UTF-8 encoding to subprocess.run in run_command. 6c856b6
Explicitly set the encoding to "utf-8" in the subprocess.run call to ensure consistent handling of command output. This prevents potential encoding-related issues when processing command results.
Add handling for git path addition with new test coverage. 8ad5c82
Enhances the Git class by adding the add_path method, improving control over tracked files. Includes comprehensive test cases to validate subpath handling, handle command failures, and ensure robustness against invalid inputs. Also includes minor refactoring with updated exception handling and code comments.
Add support for 'moveable_tags' configuration option. 2a2f1e6
This update introduces a new 'moveable_tags' field in the configuration model, with appropriate defaults. Test fixture files have been updated to reflect this change. This allows better handling of tags that can be relocated during versioning operations.
Add support for 'moveable_tags' configuration option. dd1efa5
This update introduces a new 'moveable_tags' field in the configuration model, with appropriate defaults. Test fixture files have been updated to reflect this change. This allows better handling of tags that can be relocated during versioning operations.
Added additional logging verbosity configuration in setup_logging. 2b420b8
Updated the logging verbosity levels to include formatting options for different verbosity levels. Added a new level (3) with detailed output including file path and line number. Refactored setup_logging to properly handle verbosity and log format settings.
Other
Merge remote-tracking branch 'origin/moving-tags' into moving-tags. a2b7bd1
Remove legacy SCM implementation and add new SCM tests. ddbe21e
Replaced the outdated scm_old.py with a focused and updated SCM implementation. Added extensive tests for the new SCMInfo behavior, path handling, and commit/tag logic, ensuring robust functionality for Git and Mercurial. Updated fixtures and test configurations accordingly.
Rename scm.py to scm_old.py and add new utility functions. dac965d
Refactored SCM-related imports to use the renamed scm_old.py for better module organization. Introduced is_subpath utility to simplify path checks and added support for moveable tags in version control systems. These changes improve code structure and extend functionality for tagging.
Fix false positives for use-implicit-booleaness-not-comparison, use-implicit-booleaness-not-comparison-to-string
and use-implicit-booleaness-not-comparison-to-zero when chained comparisons are checked.
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).
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.
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.
Add unnecessary-default-type-args to the typing extension to detect the use
of unnecessary default type args for typing.Generator and typing.AsyncGenerator.
Fix computation of never-returning function: Never is handled in addition to NoReturn, and priority is given to the explicit --never-returning-functions option.
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.
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.
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.
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'.
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.
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.
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.
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.
Fixed a crash when the start value in an enumerate was non-constant and impossible to infer
(like inenumerate(apples, start=int(random_apple_index)) for unnecessary-list-index-lookup.
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).
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.
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.
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.
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.
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 ....
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.
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.
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.
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().
Fix false negative for property-with-parameters in the case of parameters which are positional-only, keyword-only, variadic positional or variadic keyword.
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.
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.
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [black](https://github.com/psf/black) ([changelog](https://github.com/psf/black/blob/main/CHANGES.md)) | dev | minor | `24.2.0` -> `24.10.0` |
| [bump-my-version](https://github.com/callowayproject/bump-my-version) | dev | minor | `^0.29.0` -> `^0.33.0` |
| [mypy](https://github.com/python/mypy) ([changelog](https://mypy.readthedocs.io/en/latest/changelog.html)) | dev | minor | `1.8.0` -> `1.15.0` |
| [pylint](https://github.com/pylint-dev/pylint) ([changelog](https://pylint.readthedocs.io/en/latest/whatsnew/3/)) | dev | minor | `3.1.0` -> `3.3.6` |
---
### Release Notes
<details>
<summary>psf/black (black)</summary>
### [`v24.10.0`](https://github.com/psf/black/blob/HEAD/CHANGES.md#24100)
[Compare Source](https://github.com/psf/black/compare/24.8.0...24.10.0)
##### Highlights
- Black is now officially tested with Python 3.13 and provides Python 3.13
mypyc-compiled wheels. ([#​4436](https://github.com/psf/black/issues/4436)) ([#​4449](https://github.com/psf/black/issues/4449))
- Black will issue an error when used with Python 3.12.5, due to an upstream memory
safety issue in Python 3.12.5 that can cause Black's AST safety checks to fail. Please
use Python 3.12.6 or Python 3.12.4 instead. ([#​4447](https://github.com/psf/black/issues/4447))
- Black no longer supports running with Python 3.8 ([#​4452](https://github.com/psf/black/issues/4452))
##### Stable style
- Fix crashes involving comments in parenthesised return types or `X | Y` style unions.
([#​4453](https://github.com/psf/black/issues/4453))
- Fix skipping Jupyter cells with unknown `%%` magic ([#​4462](https://github.com/psf/black/issues/4462))
##### Preview style
- Fix type annotation spacing between \* and more complex type variable tuple (i.e. `def
fn(*args: *tuple[*Ts, T]) -> None: pass`) ([#​4440](https://github.com/psf/black/issues/4440))
##### Caching
- Fix bug where the cache was shared between runs with and without `--unstable` ([#​4466](https://github.com/psf/black/issues/4466))
##### Packaging
- Upgrade version of mypyc used to 1.12 beta ([#​4450](https://github.com/psf/black/issues/4450)) ([#​4449](https://github.com/psf/black/issues/4449))
- `blackd` now requires a newer version of aiohttp. ([#​4451](https://github.com/psf/black/issues/4451))
##### Output
- Added Python target version information on parse error ([#​4378](https://github.com/psf/black/issues/4378))
- Add information about Black version to internal error messages ([#​4457](https://github.com/psf/black/issues/4457))
### [`v24.8.0`](https://github.com/psf/black/blob/HEAD/CHANGES.md#2480)
[Compare Source](https://github.com/psf/black/compare/24.4.2...24.8.0)
##### Stable style
- Fix crash when `# fmt: off` is used before a closing parenthesis or bracket. ([#​4363](https://github.com/psf/black/issues/4363))
##### Packaging
- Packaging metadata updated: docs are explictly linked, the issue tracker is now also
linked. This improves the PyPI listing for Black. ([#​4345](https://github.com/psf/black/issues/4345))
##### Parser
- Fix regression where Black failed to parse a multiline f-string containing another
multiline string ([#​4339](https://github.com/psf/black/issues/4339))
- Fix regression where Black failed to parse an escaped single quote inside an f-string
([#​4401](https://github.com/psf/black/issues/4401))
- Fix bug with Black incorrectly parsing empty lines with a backslash ([#​4343](https://github.com/psf/black/issues/4343))
- Fix bugs with Black's tokenizer not handling `\{` inside f-strings very well ([#​4422](https://github.com/psf/black/issues/4422))
- Fix incorrect line numbers in the tokenizer for certain tokens within f-strings
([#​4423](https://github.com/psf/black/issues/4423))
##### Performance
- Improve performance when a large directory is listed in `.gitignore` ([#​4415](https://github.com/psf/black/issues/4415))
##### *Blackd*
- Fix blackd (and all extras installs) for docker container ([#​4357](https://github.com/psf/black/issues/4357))
### [`v24.4.2`](https://github.com/psf/black/blob/HEAD/CHANGES.md#2442)
[Compare Source](https://github.com/psf/black/compare/24.4.1...24.4.2)
This is a bugfix release to fix two regressions in the new f-string parser introduced in
24.4.1.
##### Parser
- Fix regression where certain complex f-strings failed to parse ([#​4332](https://github.com/psf/black/issues/4332))
##### Performance
- Fix bad performance on certain complex string literals ([#​4331](https://github.com/psf/black/issues/4331))
### [`v24.4.1`](https://github.com/psf/black/blob/HEAD/CHANGES.md#2441)
[Compare Source](https://github.com/psf/black/compare/24.4.0...24.4.1)
##### Highlights
- Add support for the new Python 3.12 f-string syntax introduced by PEP 701 ([#​3822](https://github.com/psf/black/issues/3822))
##### Stable style
- Fix crash involving indented dummy functions containing newlines ([#​4318](https://github.com/psf/black/issues/4318))
##### Parser
- Add support for type parameter defaults, a new syntactic feature added to Python 3.13
by PEP 696 ([#​4327](https://github.com/psf/black/issues/4327))
##### Integrations
- Github Action now works even when `git archive` is skipped ([#​4313](https://github.com/psf/black/issues/4313))
### [`v24.4.0`](https://github.com/psf/black/blob/HEAD/CHANGES.md#2440)
[Compare Source](https://github.com/psf/black/compare/24.3.0...24.4.0)
##### Stable style
- Fix unwanted crashes caused by AST equivalency check ([#​4290](https://github.com/psf/black/issues/4290))
##### Preview style
- `if` guards in `case` blocks are now wrapped in parentheses when the line is too long.
([#​4269](https://github.com/psf/black/issues/4269))
- Stop moving multiline strings to a new line unless inside brackets ([#​4289](https://github.com/psf/black/issues/4289))
##### Integrations
- Add a new option `use_pyproject` to the GitHub Action `psf/black`. This will read the
Black version from `pyproject.toml`. ([#​4294](https://github.com/psf/black/issues/4294))
### [`v24.3.0`](https://github.com/psf/black/blob/HEAD/CHANGES.md#2430)
[Compare Source](https://github.com/psf/black/compare/24.2.0...24.3.0)
##### Highlights
This release is a milestone: it fixes Black's first CVE security vulnerability. If you
run Black on untrusted input, or if you habitually put thousands of leading tab
characters in your docstrings, you are strongly encouraged to upgrade immediately to fix
[CVE-2024-21503](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-21503).
This release also fixes a bug in Black's AST safety check that allowed Black to make
incorrect changes to certain f-strings that are valid in Python 3.12 and higher.
##### Stable style
- Don't move comments along with delimiters, which could cause crashes ([#​4248](https://github.com/psf/black/issues/4248))
- Strengthen AST safety check to catch more unsafe changes to strings. Previous versions
of Black would incorrectly format the contents of certain unusual f-strings containing
nested strings with the same quote type. Now, Black will crash on such strings until
support for the new f-string syntax is implemented. ([#​4270](https://github.com/psf/black/issues/4270))
- Fix a bug where line-ranges exceeding the last code line would not work as expected
([#​4273](https://github.com/psf/black/issues/4273))
##### Performance
- Fix catastrophic performance on docstrings that contain large numbers of leading tab
characters. This fixes
[CVE-2024-21503](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-21503).
([#​4278](https://github.com/psf/black/issues/4278))
##### Documentation
- Note what happens when `--check` is used with `--quiet` ([#​4236](https://github.com/psf/black/issues/4236))
</details>
<details>
<summary>callowayproject/bump-my-version (bump-my-version)</summary>
### [`v0.33.0`](https://github.com/callowayproject/bump-my-version/blob/HEAD/CHANGELOG.md#0330-2025-03-02)
[Compare Source](https://github.com/callowayproject/bump-my-version/compare/0.32.2...0.33.0)
[Compare the full difference.](https://github.com/callowayproject/bump-my-version/compare/0.32.2...0.33.0)
##### Fixes
- Fixed warnings in documentation. [782077d](https://github.com/callowayproject/bump-my-version/commit/782077dc438007d4b585991788efe7c5a5c8c19f)
- Refactored PEP621 tests into a class. [2a4f12a](https://github.com/callowayproject/bump-my-version/commit/2a4f12a68067bacf81ec536b884e9ec3afb16751)
The tests are pretty much the same but renamed for clarity.
- Fixed: allow omitting the current version in sample-config. [6b369fe](https://github.com/callowayproject/bump-my-version/commit/6b369fec76e9a45b919e32a85d0b894752f6374d)
If the current version is explicitly left empty during the
`sample-config` questionnaire, the resulting `tool.bumpversion` table
now lacks a `current_version` key, and will fall back to PEP 621
`project.version` (if not dynamic). The instruction text specifically
hints at this new functionality.
##### New
- Add test for moveable tags. [df787f1](https://github.com/callowayproject/bump-my-version/commit/df787f153f1dcde8268e83ef3f035d018735e7bb)
- New feature: retrieve and update the PEP 621 project version, if possible. [3032450](https://github.com/callowayproject/bump-my-version/commit/3032450098f14abeb0661c62442d1ca03b222e09)
When determining the current version, and if
`tool.bumpversion.current_version` is not set, attempt to retrieve the
version from `project.version` à la PEP 621. If that setting is not
set, or if the version is explicitly marked as dynamically set, then
continue with querying SCM tags.
When updating the configuration during bumping, if we previously
successfully retrieved a PEP 621 version, then update the
`project.version` field in `pyproject.toml` as well. We always update,
even if the true current version was read from
`tool.bumpversion.current_version` instead of `project.version`.
The docs have been updated; specifically, the "multiple replacements in
one file" howto and the reference for `current_version`.
The tests have been adapted: the new `pep621_info` property would
otherwise trip up the old test output, and the `None` default would trip
up the TOML serializer. Additionally, new tests assert that
`project.version` (and correspondingly, the `pep621_info` property) is
correctly honored or ignored, depending on the other circumstances.
##### Other
- \[pre-commit.ci] pre-commit autoupdate. [59e8634](https://github.com/callowayproject/bump-my-version/commit/59e863415d9a9f7ef082978ccee7b27c36112ea1)
**updates:** - [github.com/astral-sh/ruff-pre-commit: v0.9.6 → v0.9.7](https://github.com/astral-sh/ruff-pre-commit/compare/v0.9.6...v0.9.7)
##### Updates
- Updated documentation. [8162dd8](https://github.com/callowayproject/bump-my-version/commit/8162dd852b874e36626ad01ad72ea892499a9817)
### [`v0.32.2`](https://github.com/callowayproject/bump-my-version/blob/HEAD/CHANGELOG.md#0322-2025-02-22)
[Compare Source](https://github.com/callowayproject/bump-my-version/compare/0.32.1...0.32.2)
[Compare the full difference.](https://github.com/callowayproject/bump-my-version/compare/0.32.1...0.32.2)
##### Fixes
- Fixed coverage issue. [b0c46a3](https://github.com/callowayproject/bump-my-version/commit/b0c46a37ff265b5306abf005b5742a85c4281ea2)
- Refactor SCMInfo and Config imports. [49995c6](https://github.com/callowayproject/bump-my-version/commit/49995c6a9b2ad59c65cb6c1e27362b1254ce7fb4)
- Fixes [#​300](https://github.com/callowayproject/bump-my-version/issues/300) incompatibility with Nuitka compiling
##### Other
- \[pre-commit.ci] pre-commit autoupdate. [b786638](https://github.com/callowayproject/bump-my-version/commit/b786638f152f2044d629c11f38f56713cc5c6dc4)
**updates:** - [github.com/astral-sh/ruff-pre-commit: v0.9.4 → v0.9.6](https://github.com/astral-sh/ruff-pre-commit/compare/v0.9.4...v0.9.6)
### [`v0.32.1`](https://github.com/callowayproject/bump-my-version/blob/HEAD/CHANGELOG.md#0321-2025-02-10)
[Compare Source](https://github.com/callowayproject/bump-my-version/compare/0.32.0...0.32.1)
[Compare the full difference.](https://github.com/callowayproject/bump-my-version/compare/0.32.0...0.32.1)
##### Fixes
- Fix rich-click deprecation. [e1fb9fa](https://github.com/callowayproject/bump-my-version/commit/e1fb9fa52b466f70ebced8f192d4411a5804da60)
- Fix Python 3.8 support. [9b2d894](https://github.com/callowayproject/bump-my-version/commit/9b2d894c6ae3fc621789e52dd8b53e088d87f00f)
### [`v0.32.0`](https://github.com/callowayproject/bump-my-version/blob/HEAD/CHANGELOG.md#0320-2025-02-06)
[Compare Source](https://github.com/callowayproject/bump-my-version/compare/0.31.1...0.32.0)
[Compare the full difference.](https://github.com/callowayproject/bump-my-version/compare/0.31.1...0.32.0)
##### Fixes
- Refactor CLI config-file option to use @​config_option decorator. [cd06cbd](https://github.com/callowayproject/bump-my-version/commit/cd06cbda61e54eea05b27eda734efc956d81a28a)
Replaced the manual `--config-file` option setup with the `@config_option` decorator for cleaner and reusable configuration management. This change simplifies the code and enhances maintainability by consolidating the configuration logic.
##### New
- Added pytest-localserver as a test dependency. [c84243d](https://github.com/callowayproject/bump-my-version/commit/c84243dba710feebdb571b93ea3cfb120703fd4e)
- Add ConfigOption for flexible configuration. [1625248](https://github.com/callowayproject/bump-my-version/commit/1625248c492c8719d6591af38d3ae2799e9f168f)
Introduce `ConfigOption` and related utilities in `bumpversion.click_config` to handle configuration file paths or URLs. Includes tests for processing options, resolving paths/URLs, and handling errors in `resolve_conf_location` and `download_url`.
- Added httpx as a dependency. [450154e](https://github.com/callowayproject/bump-my-version/commit/450154ea19a321e0de44ef764e029abaafd1535a)
##### Other
- \[pre-commit.ci] pre-commit autoupdate. [17e8301](https://github.com/callowayproject/bump-my-version/commit/17e8301e5a3750b349c97cebcbcc5953f32f9af1)
**updates:** - [github.com/astral-sh/ruff-pre-commit: v0.9.3 → v0.9.4](https://github.com/astral-sh/ruff-pre-commit/compare/v0.9.3...v0.9.4)
- Bump actions/setup-python in the github-actions group. [c0771b0](https://github.com/callowayproject/bump-my-version/commit/c0771b029073feb6a2a3c5e35170f25879b97bc0)
Bumps the github-actions group with 1 update: [actions/setup-python](https://github.com/actions/setup-python).
Updates `actions/setup-python` from 5.3.0 to 5.4.0
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v5.3.0...v5.4.0)
***
**updated-dependencies:** - dependency-name: actions/setup-python
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: github-actions
**signed-off-by:** dependabot\[bot] <support@github.com>
##### Updates
- Updated other subcommands with the new config_option. [279838a](https://github.com/callowayproject/bump-my-version/commit/279838af100dbf3ffc84f500710967944af05f46)
- Improve config resolution and add error handling for paths. [43f0435](https://github.com/callowayproject/bump-my-version/commit/43f04357788bfc11bec4c087e69366f8ba38c3e6)
Refactor `process_value` to handle `None` values and raise a `BumpVersionError` for non-existent files. Update related tests to ensure correct behavior for missing, existing, and URL-based config paths. These changes enhance robustness and user feedback in handling configuration inputs.
### [`v0.31.1`](https://github.com/callowayproject/bump-my-version/blob/HEAD/CHANGELOG.md#0311-2025-02-02)
[Compare Source](https://github.com/callowayproject/bump-my-version/compare/0.31.0...0.31.1)
[Compare the full difference.](https://github.com/callowayproject/bump-my-version/compare/0.31.0...0.31.1)
##### Fixes
- Fix type hinting incompatibility in Python 3.9. [96b29f5](https://github.com/callowayproject/bump-my-version/commit/96b29f5ff561586e5dfb2da6e51172930bb717bc)
Refactor to use Pathlike type alias for path representation
Unified path type handling across the codebase by introducing the `Pathlike` type alias (`Union[str, Path]`). This improves readability and consistency in path-related functions and methods, reducing redundancy. Updated corresponding type annotations, imports, and tests accordingly.
### [`v0.31.0`](https://github.com/callowayproject/bump-my-version/blob/HEAD/CHANGELOG.md#0310-2025-02-01)
[Compare Source](https://github.com/callowayproject/bump-my-version/compare/0.30.2...0.31.0)
[Compare the full difference.](https://github.com/callowayproject/bump-my-version/compare/0.30.2...0.31.0)
##### New
- Add support for serializing SCMInfo in YAML, JSON, and output. [e8611b2](https://github.com/callowayproject/bump-my-version/commit/e8611b2f6a208b0949d0d148ad0395b3de92b68f)
Ensure SCMInfo objects can be serialized into YAML and JSON formats, improving compatibility with configuration and output displays. Updated dumper functions and tests to reflect the new changes and include SCMInfo details in the configurations.
##### Updates
- Update dependencies and adjust package versions. [b6ed073](https://github.com/callowayproject/bump-my-version/commit/b6ed07302799aab29aea142d9927e766a102e109)
### [`v0.30.2`](https://github.com/callowayproject/bump-my-version/blob/HEAD/CHANGELOG.md#0302-2025-02-01)
[Compare Source](https://github.com/callowayproject/bump-my-version/compare/0.30.1...0.30.2)
[Compare the full difference.](https://github.com/callowayproject/bump-my-version/compare/0.30.1...0.30.2)
##### Fixes
- Fix [#​388](https://github.com/callowayproject/bump-my-version/issues/388) - `python3.8` type hint compatibility. [5744f86](https://github.com/callowayproject/bump-my-version/commit/5744f86e8d5ff21e39d6e307b6bb26c70591c5e0)
This should address the following error when running `bump-my-version`
in a `python3.8` environment:
def is_subpath(parent: Path | str, path: Path | str) -> bool:
**typeerror:** unsupported operand type(s) for |: 'type' and 'type'
##### Other
- \[pre-commit.ci] pre-commit autoupdate. [ea3267a](https://github.com/callowayproject/bump-my-version/commit/ea3267a9114182f1ea9299ac468fc65a379005f1)
**updates:** - [github.com/astral-sh/ruff-pre-commit: v0.9.2 → v0.9.3](https://github.com/astral-sh/ruff-pre-commit/compare/v0.9.2...v0.9.3)
### [`v0.30.1`](https://github.com/callowayproject/bump-my-version/blob/HEAD/CHANGELOG.md#0301-2025-01-30)
[Compare Source](https://github.com/callowayproject/bump-my-version/compare/0.30.0...0.30.1)
[Compare the full difference.](https://github.com/callowayproject/bump-my-version/compare/0.30.0...0.30.1)
##### Fixes
- Fixing issues with 3.9 compatibility. [cd2b193](https://github.com/callowayproject/bump-my-version/commit/cd2b193412b87ef47c3b9129b527eaa826429270)
- Fixes [#​284](https://github.com/callowayproject/bump-my-version/issues/284). Add UTF-8 encoding to subprocess.run in run_command. [6c856b6](https://github.com/callowayproject/bump-my-version/commit/6c856b6db40300de2ba0583bbd092b25d01b0004)
Explicitly set the encoding to "utf-8" in the subprocess.run call to ensure consistent handling of command output. This prevents potential encoding-related issues when processing command results.
### [`v0.30.0`](https://github.com/callowayproject/bump-my-version/blob/HEAD/CHANGELOG.md#0300-2025-01-26)
[Compare Source](https://github.com/callowayproject/bump-my-version/compare/0.29.0...0.30.0)
[Compare the full difference.](https://github.com/callowayproject/bump-my-version/compare/0.29.0...0.30.0)
##### Fixes
- Fixed normalized paths in is_subpath. [d1c180b](https://github.com/callowayproject/bump-my-version/commit/d1c180b55cf19a5d3d8212bb102318f6b24a5cab)
- Fix formatting in docs. [5fe387c](https://github.com/callowayproject/bump-my-version/commit/5fe387ccf3ea8ce1a4e7b3b9d06f6f4446790cda)
##### New
- Add handling for git path addition with new test coverage. [8ad5c82](https://github.com/callowayproject/bump-my-version/commit/8ad5c82182ec510ecc426656a8be1a41f3ce28f5)
Enhances the `Git` class by adding the `add_path` method, improving control over tracked files. Includes comprehensive test cases to validate subpath handling, handle command failures, and ensure robustness against invalid inputs. Also includes minor refactoring with updated exception handling and code comments.
- Added tests for `utils.is_subpath`. [4e993ed](https://github.com/callowayproject/bump-my-version/commit/4e993ed423e05a8550342bd1d8b8ca82d4c17cb3)
- Add support for 'moveable_tags' configuration option. [2a2f1e6](https://github.com/callowayproject/bump-my-version/commit/2a2f1e6abe4c0d3e34440eacacc4b51bdb49f2df)
This update introduces a new 'moveable_tags' field in the configuration model, with appropriate defaults. Test fixture files have been updated to reflect this change. This allows better handling of tags that can be relocated during versioning operations.
- Add support for 'moveable_tags' configuration option. [dd1efa5](https://github.com/callowayproject/bump-my-version/commit/dd1efa5026db2843f9ec06bcbb691a38a878fdc4)
This update introduces a new 'moveable_tags' field in the configuration model, with appropriate defaults. Test fixture files have been updated to reflect this change. This allows better handling of tags that can be relocated during versioning operations.
- Added additional logging verbosity configuration in setup_logging. [2b420b8](https://github.com/callowayproject/bump-my-version/commit/2b420b82201b7b5ad129f4a6f64e99e446f0e492)
Updated the logging verbosity levels to include formatting options for different verbosity levels. Added a new level (3) with detailed output including file path and line number. Refactored setup_logging to properly handle verbosity and log format settings.
##### Other
- Merge remote-tracking branch 'origin/moving-tags' into moving-tags. [a2b7bd1](https://github.com/callowayproject/bump-my-version/commit/a2b7bd152a684234091c5e03c5dd55f50042fcd8)
- \[pre-commit.ci] pre-commit autoupdate. [d03b1da](https://github.com/callowayproject/bump-my-version/commit/d03b1da16140836ef2c4c0daad12a616fedff498)
**updates:** - [github.com/astral-sh/ruff-pre-commit: v0.8.6 → v0.9.2](https://github.com/astral-sh/ruff-pre-commit/compare/v0.8.6...v0.9.2)
- \[pre-commit.ci] pre-commit autoupdate. [584711b](https://github.com/callowayproject/bump-my-version/commit/584711b7317a03683e442fdd908a55ee70846cca)
**updates:** - [github.com/astral-sh/ruff-pre-commit: v0.8.4 → v0.8.6](https://github.com/astral-sh/ruff-pre-commit/compare/v0.8.4...v0.8.6)
- \[pre-commit.ci] pre-commit autoupdate. [c583694](https://github.com/callowayproject/bump-my-version/commit/c58369411fea04f1979b5dd590862317cdccab9f)
**updates:** - [github.com/astral-sh/ruff-pre-commit: v0.8.3 → v0.8.4](https://github.com/astral-sh/ruff-pre-commit/compare/v0.8.3...v0.8.4)
- Bump softprops/action-gh-release from 1 to 2 in the github-actions group. [787c241](https://github.com/callowayproject/bump-my-version/commit/787c241236c1f4da2512868135aca75a81558cca)
Bumps the github-actions group with 1 update: [softprops/action-gh-release](https://github.com/softprops/action-gh-release).
Updates `softprops/action-gh-release` from 1 to 2
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/action-gh-release/compare/v1...v2)
***
**updated-dependencies:** - dependency-name: softprops/action-gh-release
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: github-actions
**signed-off-by:** dependabot\[bot] <support@github.com>
##### Updates
- Updated some tests. [4013d86](https://github.com/callowayproject/bump-my-version/commit/4013d863c3762fee1802b012689af62a0184d85a)
- Remove legacy SCM implementation and add new SCM tests. [ddbe21e](https://github.com/callowayproject/bump-my-version/commit/ddbe21e4a29963caa063e554b84592d4c7a8222f)
Replaced the outdated `scm_old.py` with a focused and updated SCM implementation. Added extensive tests for the new `SCMInfo` behavior, path handling, and commit/tag logic, ensuring robust functionality for Git and Mercurial. Updated fixtures and test configurations accordingly.
- Rename `scm.py` to `scm_old.py` and add new utility functions. [dac965d](https://github.com/callowayproject/bump-my-version/commit/dac965d485802668fedc8c6e329bf10d04f7c795)
Refactored SCM-related imports to use the renamed `scm_old.py` for better module organization. Introduced `is_subpath` utility to simplify path checks and added support for moveable tags in version control systems. These changes improve code structure and extend functionality for tagging.
</details>
<details>
<summary>python/mypy (mypy)</summary>
### [`v1.15.0`](https://github.com/python/mypy/compare/v1.14.1...v1.15.0)
[Compare Source](https://github.com/python/mypy/compare/v1.14.1...v1.15.0)
### [`v1.14.1`](https://github.com/python/mypy/compare/v1.14.0...v1.14.1)
[Compare Source](https://github.com/python/mypy/compare/v1.14.0...v1.14.1)
### [`v1.14.0`](https://github.com/python/mypy/compare/v1.13.0...v1.14.0)
[Compare Source](https://github.com/python/mypy/compare/v1.13.0...v1.14.0)
### [`v1.13.0`](https://github.com/python/mypy/compare/v1.12.1...v1.13.0)
[Compare Source](https://github.com/python/mypy/compare/v1.12.1...v1.13.0)
### [`v1.12.1`](https://github.com/python/mypy/blob/HEAD/CHANGELOG.md#Mypy-1121)
[Compare Source](https://github.com/python/mypy/compare/v1.12.0...v1.12.1)
- Fix crash when showing partially analyzed type in error message (Ivan Levkivskyi, PR [17961](https://github.com/python/mypy/pull/17961))
- Fix iteration over union (when self type is involved) (Shantanu, PR [17976](https://github.com/python/mypy/pull/17976))
- Fix type object with type var default in union context (Jukka Lehtosalo, PR [17991](https://github.com/python/mypy/pull/17991))
- Revert change to `os.path` stubs affecting use of `os.PathLike[Any]` (Shantanu, PR [17995](https://github.com/python/mypy/pull/17995))
### [`v1.12.0`](https://github.com/python/mypy/compare/v1.11.2...v1.12.0)
[Compare Source](https://github.com/python/mypy/compare/v1.11.2...v1.12.0)
### [`v1.11.2`](https://github.com/python/mypy/blob/HEAD/CHANGELOG.md#Mypy-1112)
[Compare Source](https://github.com/python/mypy/compare/v1.11.1...v1.11.2)
- Alternative fix for a union-like literal string (Ivan Levkivskyi, PR [17639](https://github.com/python/mypy/pull/17639))
- Unwrap `TypedDict` item types before storing (Ivan Levkivskyi, PR [17640](https://github.com/python/mypy/pull/17640))
### [`v1.11.1`](https://github.com/python/mypy/blob/HEAD/CHANGELOG.md#Mypy-1111)
[Compare Source](https://github.com/python/mypy/compare/v1.11.0...v1.11.1)
- Fix `RawExpressionType.accept` crash with `--cache-fine-grained` (Anders Kaseorg, PR [17588](https://github.com/python/mypy/pull/17588))
- Fix PEP 604 isinstance caching (Shantanu, PR [17563](https://github.com/python/mypy/pull/17563))
- Fix `typing.TypeAliasType` being undefined on python < 3.12 (Nikita Sobolev, PR [17558](https://github.com/python/mypy/pull/17558))
- Fix `types.GenericAlias` lookup crash (Shantanu, PR [17543](https://github.com/python/mypy/pull/17543))
### [`v1.11.0`](https://github.com/python/mypy/compare/v1.10.1...v1.11.0)
[Compare Source](https://github.com/python/mypy/compare/v1.10.1...v1.11.0)
### [`v1.10.1`](https://github.com/python/mypy/blob/HEAD/CHANGELOG.md#Mypy-1101)
[Compare Source](https://github.com/python/mypy/compare/v1.10.0...v1.10.1)
- Fix error reporting on cached run after uninstallation of third party library (Shantanu, PR [17420](https://github.com/python/mypy/pull/17420))
### [`v1.10.0`](https://github.com/python/mypy/compare/1.9.0...v1.10.0)
[Compare Source](https://github.com/python/mypy/compare/1.9.0...v1.10.0)
### [`v1.9.0`](https://github.com/python/mypy/compare/v1.8.0...1.9.0)
[Compare Source](https://github.com/python/mypy/compare/v1.8.0...1.9.0)
</details>
<details>
<summary>pylint-dev/pylint (pylint)</summary>
### [`v3.3.6`](https://github.com/pylint-dev/pylint/releases/tag/v3.3.6)
[Compare Source](https://github.com/pylint-dev/pylint/compare/v3.3.5...v3.3.6)
## What's new in Pylint 3.3.6?
Release date: 2025-03-20
## False Positives Fixed
- Fix a false positive for `used-before-assignment` when an inner function's return type
annotation is a class defined at module scope.
Closes [#​9391](https://github.com/pylint-dev/pylint/issues/9391)
### [`v3.3.5`](https://github.com/pylint-dev/pylint/releases/tag/v3.3.5)
[Compare Source](https://github.com/pylint-dev/pylint/compare/v3.3.4...v3.3.5)
## What's new in Pylint 3.3.5?
Release date: 2025-03-09
## False Positives Fixed
- Fix false positives for `use-implicit-booleaness-not-comparison`, `use-implicit-booleaness-not-comparison-to-string`
and `use-implicit-booleaness-not-comparison-to-zero` when chained comparisons are checked.
Closes [#​10065](https://github.com/pylint-dev/pylint/issues/10065)
- Fix a false positive for `invalid-getnewargs-ex-returned` when the tuple or dict has been assigned to a name.
Closes [#​10208](https://github.com/pylint-dev/pylint/issues/10208)
- Remove `getopt` and `optparse` from the list of deprecated modules.
Closes [#​10211](https://github.com/pylint-dev/pylint/issues/10211)
## Other Bug Fixes
- Fixed conditional import x.y causing false positive possibly-used-before-assignment.
Closes [#​10081](https://github.com/pylint-dev/pylint/issues/10081)
- Fix a crash when something besides a class is found in an except handler.
Closes [#​10106](https://github.com/pylint-dev/pylint/issues/10106)
- Fixed raising invalid-name when using camelCase for private methods with two leading underscores.
Closes [#​10189](https://github.com/pylint-dev/pylint/issues/10189)
## Other Changes
- Upload release assets to PyPI via Trusted Publishing.
Closes [#​10256](https://github.com/pylint-dev/pylint/issues/10256)
### [`v3.3.4`](https://github.com/pylint-dev/pylint/releases/tag/v3.3.4)
[Compare Source](https://github.com/pylint-dev/pylint/compare/v3.3.3...v3.3.4)
## Other Bug Fixes
- Fixes "skipped files" count calculation; the previous method was displaying an arbitrary number.
Closes [#​10073](https://github.com/pylint-dev/pylint/issues/10073)
- Fixes a crash that occurred when pylint was run in a container on a host with cgroupsv2 and restrictions on CPU usage.
Closes [#​10103](https://github.com/pylint-dev/pylint/issues/10103)
- Relaxed the requirements for isort so pylint can benefit from isort 6.
Closes [#​10203](https://github.com/pylint-dev/pylint/issues/10203)
### [`v3.3.3`](https://github.com/pylint-dev/pylint/releases/tag/v3.3.3)
[Compare Source](https://github.com/pylint-dev/pylint/compare/v3.3.2...v3.3.3)
## What's new in Pylint 3.3.3?
Release date: 2024-12-23
## False Positives Fixed
- Fix false positives for `undefined-variable` for classes using Python 3.12
generic type syntax.
Closes [#​9335](https://github.com/pylint-dev/pylint/issues/9335)
- Fix a false positive for `use-implicit-booleaness-not-len`. No lint should be emitted for
generators (`len` is not defined for generators).
Refs [#​10100](https://github.com/pylint-dev/pylint/issues/10100)
## Other Bug Fixes
- Fix `Unable to import 'collections.abc' (import-error)` on Python 3.13.1.
Closes [#​10112](https://github.com/pylint-dev/pylint/issues/10112)
### [`v3.3.2`](https://github.com/pylint-dev/pylint/releases/tag/v3.3.2)
[Compare Source](https://github.com/pylint-dev/pylint/compare/v3.3.1...v3.3.2)
## False Positives Fixed
- Fix a false positive for `potential-index-error` when an indexed iterable
contains a starred element that evaluates to more than one item.
Closes [#​10076](https://github.com/pylint-dev/pylint/issues/10076)
## Other Bug Fixes
- Fixes the issue with --source-root option not working when the source files are in a subdirectory of the source root (e.g. when using a /src layout).
Closes [#​10026](https://github.com/pylint-dev/pylint/issues/10026)
### [`v3.3.1`](https://github.com/pylint-dev/pylint/releases/tag/v3.3.1)
[Compare Source](https://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://github.com/pylint-dev/pylint/issues/9947)
### [`v3.3.0`](https://github.com/pylint-dev/pylint/releases/tag/v3.3.0)
[Compare Source](https://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://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://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://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://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://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://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://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://github.com/pylint-dev/pylint/issues/7565).
- Fix a false negative for `await-outside-async` when await is inside Lambda.
Refs [#​9653](https://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://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://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://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://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://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://github.com/pylint-dev/pylint/issues/9727)
- Improve file discovery for directories that are not python packages.
Closes [#​9764](https://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://github.com/pylint-dev/pylint/issues/9774)
- Add support for Python 3.13.
Refs [#​9852](https://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://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://github.com/pylint-dev/pylint/issues/9925)
### [`v3.2.7`](https://github.com/pylint-dev/pylint/releases/tag/v3.2.7)
[Compare Source](https://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://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://github.com/pylint-dev/pylint/issues/9865)
- Fix a crash in `undefined-loop-variable` when providing the `iterable` argument to `enumerate()`.
Closes [#​9875](https://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://github.com/pylint-dev/pylint/issues/9883)
### [`v3.2.6`](https://github.com/pylint-dev/pylint/releases/tag/v3.2.6)
[Compare Source](https://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://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://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://github.com/pylint-dev/pylint/issues/9765)
- Treat `assert_never()` the same way when imported from `typing_extensions`.
Closes [#​9780](https://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://github.com/pylint-dev/pylint/issues/9800)
## Other Bug Fixes
- Fix an `AssertionError` arising from properties that return partial functions.
Closes [#​9214](https://github.com/pylint-dev/pylint/issues/9214)
- Fix a crash when a subclass extends `__slots__`.
Closes [#​9814](https://github.com/pylint-dev/pylint/issues/9814)
### [`v3.2.5`](https://github.com/pylint-dev/pylint/releases/tag/v3.2.5)
[Compare Source](https://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://github.com/pylint-dev/pylint/issues/9751)
### [`v3.2.4`](https://github.com/pylint-dev/pylint/releases/tag/v3.2.4)
[Compare Source](https://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://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://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://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://github.com/pylint-dev/pylint/issues/9343)
### [`v3.2.3`](https://github.com/pylint-dev/pylint/releases/tag/v3.2.3)
[Compare Source](https://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://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://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://github.com/pylint-dev/pylint/issues/9696)
### [`v3.2.2`](https://github.com/pylint-dev/pylint/releases/tag/v3.2.2)
[Compare Source](https://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://github.com/pylint-dev/pylint/issues/9406)
- Exclude context manager without cleanup from
`contextmanager-generator-missing-cleanup` checks.
Closes [#​9625](https://github.com/pylint-dev/pylint/issues/9625)
### [`v3.2.1`](https://github.com/pylint-dev/pylint/releases/tag/v3.2.1)
[Compare Source](https://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://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://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://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://github.com/pylint-dev/pylint/issues/9273)
- Restore "errors / warnings by module" section to report output (with `-ry`).
Closes [#​9145](https://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://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://github.com/pylint-dev/pylint/issues/9626)
Closes [#​9623](https://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://github.com/pylint-dev/pylint/issues/9139)
### [`v3.2.0`](https://github.com/pylint-dev/pylint/releases/tag/v3.2.0)
[Compare Source](https://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://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://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://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://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://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://github.com/pylint-dev/pylint/issues/9584)
## False Positives Fixed
- pylint now understands the `@overload` decorator return values better.
Closes [#​4696](https://github.com/pylint-dev/pylint/issues/4696)
Refs [#​9606](https://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://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://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://github.com/pylint-dev/pylint/issues/9608).
### [`v3.1.1`](https://github.com/pylint-dev/pylint/releases/tag/v3.1.1)
[Compare Source](https://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://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://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://github.com/pylint-dev/pylint/issues/9554)
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMTMuMiIsInVwZGF0ZWRJblZlciI6IjM5LjIxMy4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This PR contains the following updates:
24.2.0->24.10.0^0.29.0->^0.33.01.8.0->1.15.03.1.0->3.3.6Release Notes
psf/black (black)
v24.10.0Compare Source
Highlights
mypyc-compiled wheels. (#4436) (#4449)
safety issue in Python 3.12.5 that can cause Black's AST safety checks to fail. Please
use Python 3.12.6 or Python 3.12.4 instead. (#4447)
Stable style
X | Ystyle unions.(#4453)
%%magic (#4462)Preview style
def fn(*args: *tuple[*Ts, T]) -> None: pass) (#4440)Caching
--unstable(#4466)Packaging
blackdnow requires a newer version of aiohttp. (#4451)Output
v24.8.0Compare Source
Stable style
# fmt: offis used before a closing parenthesis or bracket. (#4363)Packaging
linked. This improves the PyPI listing for Black. (#4345)
Parser
multiline string (#4339)
(#4401)
\{inside f-strings very well (#4422)(#4423)
Performance
.gitignore(#4415)Blackd
v24.4.2Compare Source
This is a bugfix release to fix two regressions in the new f-string parser introduced in
24.4.1.
Parser
Performance
v24.4.1Compare Source
Highlights
Stable style
Parser
by PEP 696 (#4327)
Integrations
git archiveis skipped (#4313)v24.4.0Compare Source
Stable style
Preview style
ifguards incaseblocks are now wrapped in parentheses when the line is too long.(#4269)
Integrations
use_pyprojectto the GitHub Actionpsf/black. This will read theBlack version from
pyproject.toml. (#4294)v24.3.0Compare Source
Highlights
This release is a milestone: it fixes Black's first CVE security vulnerability. If you
run Black on untrusted input, or if you habitually put thousands of leading tab
characters in your docstrings, you are strongly encouraged to upgrade immediately to fix
CVE-2024-21503.
This release also fixes a bug in Black's AST safety check that allowed Black to make
incorrect changes to certain f-strings that are valid in Python 3.12 and higher.
Stable style
of Black would incorrectly format the contents of certain unusual f-strings containing
nested strings with the same quote type. Now, Black will crash on such strings until
support for the new f-string syntax is implemented. (#4270)
(#4273)
Performance
characters. This fixes
CVE-2024-21503.
(#4278)
Documentation
--checkis used with--quiet(#4236)callowayproject/bump-my-version (bump-my-version)
v0.33.0Compare Source
Compare the full difference.
Fixes
Fixed warnings in documentation. 782077d
Refactored PEP621 tests into a class. 2a4f12a
The tests are pretty much the same but renamed for clarity.
Fixed: allow omitting the current version in sample-config. 6b369fe
If the current version is explicitly left empty during the
sample-configquestionnaire, the resultingtool.bumpversiontablenow lacks a
current_versionkey, and will fall back to PEP 621project.version(if not dynamic). The instruction text specificallyhints at this new functionality.
New
Add test for moveable tags. df787f1
New feature: retrieve and update the PEP 621 project version, if possible. 3032450
When determining the current version, and if
tool.bumpversion.current_versionis not set, attempt to retrieve theversion from
project.versionà la PEP 621. If that setting is notset, or if the version is explicitly marked as dynamically set, then
continue with querying SCM tags.
When updating the configuration during bumping, if we previously
successfully retrieved a PEP 621 version, then update the
project.versionfield inpyproject.tomlas well. We always update,even if the true current version was read from
tool.bumpversion.current_versioninstead ofproject.version.The docs have been updated; specifically, the "multiple replacements in
one file" howto and the reference for
current_version.The tests have been adapted: the new
pep621_infoproperty wouldotherwise trip up the old test output, and the
Nonedefault would tripup the TOML serializer. Additionally, new tests assert that
project.version(and correspondingly, thepep621_infoproperty) iscorrectly honored or ignored, depending on the other circumstances.
Other
[pre-commit.ci] pre-commit autoupdate. 59e8634
updates: - github.com/astral-sh/ruff-pre-commit: v0.9.6 → v0.9.7
Updates
v0.32.2Compare Source
Compare the full difference.
Fixes
Fixed coverage issue. b0c46a3
Refactor SCMInfo and Config imports. 49995c6
Other
[pre-commit.ci] pre-commit autoupdate. b786638
updates: - github.com/astral-sh/ruff-pre-commit: v0.9.4 → v0.9.6
v0.32.1Compare Source
Compare the full difference.
Fixes
Fix rich-click deprecation. e1fb9fa
Fix Python 3.8 support. 9b2d894
v0.32.0Compare Source
Compare the full difference.
Fixes
Refactor CLI config-file option to use @config_option decorator. cd06cbd
Replaced the manual
--config-fileoption setup with the@config_optiondecorator for cleaner and reusable configuration management. This change simplifies the code and enhances maintainability by consolidating the configuration logic.New
Added pytest-localserver as a test dependency. c84243d
Add ConfigOption for flexible configuration. 1625248
Introduce
ConfigOptionand related utilities inbumpversion.click_configto handle configuration file paths or URLs. Includes tests for processing options, resolving paths/URLs, and handling errors inresolve_conf_locationanddownload_url.Added httpx as a dependency. 450154e
Other
[pre-commit.ci] pre-commit autoupdate. 17e8301
updates: - github.com/astral-sh/ruff-pre-commit: v0.9.3 → v0.9.4
Bump actions/setup-python in the github-actions group. c0771b0
Bumps the github-actions group with 1 update: actions/setup-python.
Updates
actions/setup-pythonfrom 5.3.0 to 5.4.0updated-dependencies: - dependency-name: actions/setup-python
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: github-actions
signed-off-by: dependabot[bot] support@github.com
Updates
Updated other subcommands with the new config_option. 279838a
Improve config resolution and add error handling for paths. 43f0435
Refactor
process_valueto handleNonevalues and raise aBumpVersionErrorfor non-existent files. Update related tests to ensure correct behavior for missing, existing, and URL-based config paths. These changes enhance robustness and user feedback in handling configuration inputs.v0.31.1Compare Source
Compare the full difference.
Fixes
Fix type hinting incompatibility in Python 3.9. 96b29f5
Refactor to use Pathlike type alias for path representation
Unified path type handling across the codebase by introducing the
Pathliketype alias (Union[str, Path]). This improves readability and consistency in path-related functions and methods, reducing redundancy. Updated corresponding type annotations, imports, and tests accordingly.v0.31.0Compare Source
Compare the full difference.
New
Add support for serializing SCMInfo in YAML, JSON, and output. e8611b2
Ensure SCMInfo objects can be serialized into YAML and JSON formats, improving compatibility with configuration and output displays. Updated dumper functions and tests to reflect the new changes and include SCMInfo details in the configurations.
Updates
v0.30.2Compare Source
Compare the full difference.
Fixes
Fix #388 -
python3.8type hint compatibility. 5744f86This should address the following error when running
bump-my-versionin a
python3.8environment:Other
[pre-commit.ci] pre-commit autoupdate. ea3267a
updates: - github.com/astral-sh/ruff-pre-commit: v0.9.2 → v0.9.3
v0.30.1Compare Source
Compare the full difference.
Fixes
Fixing issues with 3.9 compatibility. cd2b193
Fixes #284. Add UTF-8 encoding to subprocess.run in run_command. 6c856b6
Explicitly set the encoding to "utf-8" in the subprocess.run call to ensure consistent handling of command output. This prevents potential encoding-related issues when processing command results.
v0.30.0Compare Source
Compare the full difference.
Fixes
Fixed normalized paths in is_subpath. d1c180b
Fix formatting in docs. 5fe387c
New
Add handling for git path addition with new test coverage. 8ad5c82
Enhances the
Gitclass by adding theadd_pathmethod, improving control over tracked files. Includes comprehensive test cases to validate subpath handling, handle command failures, and ensure robustness against invalid inputs. Also includes minor refactoring with updated exception handling and code comments.Added tests for
utils.is_subpath. 4e993edAdd support for 'moveable_tags' configuration option. 2a2f1e6
This update introduces a new 'moveable_tags' field in the configuration model, with appropriate defaults. Test fixture files have been updated to reflect this change. This allows better handling of tags that can be relocated during versioning operations.
Add support for 'moveable_tags' configuration option. dd1efa5
This update introduces a new 'moveable_tags' field in the configuration model, with appropriate defaults. Test fixture files have been updated to reflect this change. This allows better handling of tags that can be relocated during versioning operations.
Added additional logging verbosity configuration in setup_logging. 2b420b8
Updated the logging verbosity levels to include formatting options for different verbosity levels. Added a new level (3) with detailed output including file path and line number. Refactored setup_logging to properly handle verbosity and log format settings.
Other
Merge remote-tracking branch 'origin/moving-tags' into moving-tags. a2b7bd1
[pre-commit.ci] pre-commit autoupdate. d03b1da
updates: - github.com/astral-sh/ruff-pre-commit: v0.8.6 → v0.9.2
[pre-commit.ci] pre-commit autoupdate. 584711b
updates: - github.com/astral-sh/ruff-pre-commit: v0.8.4 → v0.8.6
[pre-commit.ci] pre-commit autoupdate. c583694
updates: - github.com/astral-sh/ruff-pre-commit: v0.8.3 → v0.8.4
Bump softprops/action-gh-release from 1 to 2 in the github-actions group. 787c241
Bumps the github-actions group with 1 update: softprops/action-gh-release.
Updates
softprops/action-gh-releasefrom 1 to 2updated-dependencies: - dependency-name: softprops/action-gh-release
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: github-actions
signed-off-by: dependabot[bot] support@github.com
Updates
Updated some tests. 4013d86
Remove legacy SCM implementation and add new SCM tests. ddbe21e
Replaced the outdated
scm_old.pywith a focused and updated SCM implementation. Added extensive tests for the newSCMInfobehavior, path handling, and commit/tag logic, ensuring robust functionality for Git and Mercurial. Updated fixtures and test configurations accordingly.Rename
scm.pytoscm_old.pyand add new utility functions. dac965dRefactored SCM-related imports to use the renamed
scm_old.pyfor better module organization. Introducedis_subpathutility to simplify path checks and added support for moveable tags in version control systems. These changes improve code structure and extend functionality for tagging.python/mypy (mypy)
v1.15.0Compare Source
v1.14.1Compare Source
v1.14.0Compare Source
v1.13.0Compare Source
v1.12.1Compare Source
os.pathstubs affecting use ofos.PathLike[Any](Shantanu, PR 17995)v1.12.0Compare Source
v1.11.2Compare Source
TypedDictitem types before storing (Ivan Levkivskyi, PR 17640)v1.11.1Compare Source
RawExpressionType.acceptcrash with--cache-fine-grained(Anders Kaseorg, PR 17588)typing.TypeAliasTypebeing undefined on python < 3.12 (Nikita Sobolev, PR 17558)types.GenericAliaslookup crash (Shantanu, PR 17543)v1.11.0Compare Source
v1.10.1Compare Source
v1.10.0Compare Source
v1.9.0Compare Source
pylint-dev/pylint (pylint)
v3.3.6Compare Source
What's new in Pylint 3.3.6?
Release date: 2025-03-20
False Positives Fixed
Fix a false positive for
used-before-assignmentwhen an inner function's return typeannotation is a class defined at module scope.
Closes #9391
v3.3.5Compare Source
What's new in Pylint 3.3.5?
Release date: 2025-03-09
False Positives Fixed
Fix false positives for
use-implicit-booleaness-not-comparison,use-implicit-booleaness-not-comparison-to-stringand
use-implicit-booleaness-not-comparison-to-zerowhen chained comparisons are checked.Closes #10065
Fix a false positive for
invalid-getnewargs-ex-returnedwhen the tuple or dict has been assigned to a name.Closes #10208
Remove
getoptandoptparsefrom the list of deprecated modules.Closes #10211
Other Bug Fixes
Fixed conditional import x.y causing false positive possibly-used-before-assignment.
Closes #10081
Fix a crash when something besides a class is found in an except handler.
Closes #10106
Fixed raising invalid-name when using camelCase for private methods with two leading underscores.
Closes #10189
Other Changes
Upload release assets to PyPI via Trusted Publishing.
Closes #10256
v3.3.4Compare Source
Other Bug Fixes
Fixes "skipped files" count calculation; the previous method was displaying an arbitrary number.
Closes #10073
Fixes a crash that occurred when pylint was run in a container on a host with cgroupsv2 and restrictions on CPU usage.
Closes #10103
Relaxed the requirements for isort so pylint can benefit from isort 6.
Closes #10203
v3.3.3Compare Source
What's new in Pylint 3.3.3?
Release date: 2024-12-23
False Positives Fixed
Fix false positives for
undefined-variablefor classes using Python 3.12generic type syntax.
Closes #9335
Fix a false positive for
use-implicit-booleaness-not-len. No lint should be emitted forgenerators (
lenis not defined for generators).Refs #10100
Other Bug Fixes
Fix
Unable to import 'collections.abc' (import-error)on Python 3.13.1.Closes #10112
v3.3.2Compare Source
False Positives Fixed
Fix a false positive for
potential-index-errorwhen an indexed iterablecontains a starred element that evaluates to more than one item.
Closes #10076
Other Bug Fixes
Fixes the issue with --source-root option not working when the source files are in a subdirectory of the source root (e.g. when using a /src layout).
Closes #10026
v3.3.1Compare Source
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
v3.3.0Compare Source
Release date: 2024-09-20
Changes requiring user actions
We migrated
symilarto 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 1should become--ignore-comments).Refs #9731
New Features
Add new
declare-non-sloterror which reports when a class has a__slots__member and a type hint on the class is not present in__slots__.Refs #9499
New Checks
Added
too-many-positional-argumentsto allow distinguishing the configuration for too manytotal arguments (with keyword-only params specified after
*) from the configurationfor 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
Add
using-exception-groups-in-unsupported-versionandusing-generic-type-syntax-in-unsupported-versionfor uses of Python 3.11+ or3.12+ features on lower supported versions provided with
--py-version.Closes #9791
Add
using-assignment-expression-in-unsupported-versionfor uses of:=(walrus operator)on Python versions below 3.8 provided with
--py-version.Closes #9820
Add
using-positional-only-args-in-unsupported-versionfor uses of positional-only args onPython versions below 3.8 provided with
--py-version.Closes #9823
Add
unnecessary-default-type-argsto thetypingextension to detect the useof unnecessary default type args for
typing.Generatorandtyping.AsyncGenerator.Refs #9938
False Negatives Fixed
Fix computation of never-returning function:
Neveris handled in addition toNoReturn, and priority is given to the explicit--never-returning-functionsoption.Closes #7565.
Fix a false negative for
await-outside-asyncwhen await is inside Lambda.Refs #9653
Fix a false negative for
duplicate-argument-nameby includingpositional-only,*argsand**kwargsarguments in the check.Closes #9669
Fix false negative for
multiple-statementswhen multiple statements are present onelseandfinallylines oftry.Refs #9759
Fix false negatives when
isinstancedoes not have exactly two arguments.pylint now emits a
too-many-function-argsorno-value-for-parameterappropriately for
isinstancecalls.Closes #9847
Other Bug Fixes
--enablewith--disable=allnow produces an error, when an unknown msg code is used. Internalpylintmessages are no longer affected by--disable=all.Closes #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.compileinstead.Closes #9680
Fix a bug where a
tox.inifile with pylint configuration was ignored and it exists in the current directory..cfgand.inifiles containing aPylintconfiguration 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--rcfileoption.Closes #9727
Improve file discovery for directories that are not python packages.
Closes #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.8setting.Refs #9774
Add support for Python 3.13.
Refs #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
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
v3.2.7Compare Source
What's new in Pylint 3.2.7?
Release date: 2024-08-31
False Positives Fixed
Fixed a false positive
unreachableforNoReturncoroutine functions.Closes #9840
Other Bug Fixes
Fix crash in refactoring checker when calling a lambda bound as a method.
Closes #9865
Fix a crash in
undefined-loop-variablewhen providing theiterableargument toenumerate().Closes #9875
Fix to address indeterminacy of error message in case a module name is same as another in a separate namespace.
Refs #9883
v3.2.6Compare Source
What's new in Pylint 3.2.6?
Release date: 2024-07-21
False Positives Fixed
Quiet false positives for
unexpected-keyword-argwhen pylint cannotdetermine which of two or more dynamically defined classes is being instantiated.
Closes #9672
Fix a false positive for
missing-param-docwhere a method which is decorated withtyping.overloadwas expected to have a docstring specifying its parameters.Closes #9739
Fix a regression that raised
invalid-nameon class attributes merelyoverriding invalid names from an ancestor.
Closes #9765
Treat
assert_never()the same way when imported fromtyping_extensions.Closes #9780
Fix a false positive for
consider-using-min-max-builtinwhen the assignment target is an attribute.Refs #9800
Other Bug Fixes
Fix an
AssertionErrorarising from properties that return partial functions.Closes #9214
Fix a crash when a subclass extends
__slots__.Closes #9814
v3.2.5Compare Source
What's new in Pylint 3.2.5 ?
Release date: 2024-06-28
Other Bug Fixes
Fixed a false positive
unreachable-codewhen usingtyping.Anyas return type in python3.8, the
typing.NoReturnare not taken into account anymore for python 3.8 however.Closes #9751
v3.2.4Compare Source
What's new in Pylint 3.2.4?
Release date: 2024-06-26
False Positives Fixed
Prevent emitting
possibly-used-before-assignmentwhen relying on namesonly potentially not defined in conditional blocks guarded by functions
annotated with
typing.Neverortyping.NoReturn.Closes #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
Fixed a crash when the
startvalue in anenumeratewas non-constant and impossible to infer(like in
enumerate(apples, start=int(random_apple_index)) forunnecessary-list-index-lookup.Closes #9078
Fixed a crash in
symilarwhen the-dor-ishort option were not properly recognized.It's still impossible to do
-d=1(you must do-d 1).Closes #9343
v3.2.3Compare Source
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
Fix a false positive for
redefined-outer-namewhen 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
Fix a false positive for
use-yield-fromwhen using the return value from theyieldatom.Closes #9696
v3.2.2Compare Source
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
Exclude context manager without cleanup from
contextmanager-generator-missing-cleanupchecks.Closes #9625
v3.2.1Compare Source
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-assignmentchecks.Closes #9627
Don't emit
typevar-name-incorrect-variancewarnings for PEP 695 style TypeVars.The variance is inferred automatically by the type checker.
Adding
_coor_contrasuffix can help to reason about TypeVar.Refs #9638
Fix a false positive for
possibly-used-before-assignmentwhen usingtyping.assert_never()(3.11+) to indicate exhaustiveness.Closes #9643
Other Bug Fixes
Fix a false negative for
--ignore-patternswhen 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
Restore "errors / warnings by module" section to report output (with
-ry).Closes #9145
trailing-comma-tupleshould now be correctly emitted when it was disabled globallybut enabled via local message control, after removal of an over-optimisation.
Refs #9608
Add
--prefer-stubs=yesoption to opt-in to the astroid 3.2 featurethat prefers
.pyistubs over same-named.pyfiles. This has thepotential to reduce
no-membererrors but at the cost of more errorssuch as
not-an-iterablefrom function bodies appearing as....Defaults to
no.Closes #9626
Closes #9623
Internal Changes
Update astroid version to 3.2.1. This solves some reports of
RecursionErrorand also makes the prefer .pyi stubs feature in astroid 3.2.0 opt-in
with the aforementioned
--prefer-stubs=yoption.Refs #9139
v3.2.0Compare Source
What's new in Pylint 3.2.0?
Release date: 2024-05-14
Of note: a
githubreporter, two new checks (possibly-used-before-assignmentandcontextmanager-generator-missing-cleanup), performance improvements, and anastroidupgrade providing support for@overloadand.pyistubs.New Features
Understand
six.PY2andsix.PY3for conditional imports.Closes #3501
A new
githubreporter has been added. This reporter returns the output ofpylintin a format thatGithub can use to automatically annotate code. Use it with
pylint --output-format=githubon your Github Workflows.Closes #9443.
New Checks
Add check
possibly-used-before-assignmentwhen relying on names after anif/elseswitch when one branch failed to define the name, raise, or return.
Closes #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 yand not justwith x().Closes #2832
False Negatives Fixed
If and Try nodes are now checked for useless return statements as well.
Closes #9449.
Fix false negative for
property-with-parametersin the case of parameters which arepositional-only,keyword-only,variadic positionalorvariadic keyword.Closes #9584
False Positives Fixed
pylint now understands the
@overloaddecorator return values better.Closes #4696
Refs #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
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.
An internal check for
trailing-comma-tuplebeing enabled for a file or not is nowdone once per file instead of once for each token.
Refs #9608.
v3.1.1Compare Source
What's new in Pylint 3.1.1?
Release date: 2024-05-13
False Positives Fixed
Treat
attrs.defineandattrs.frozenas dataclass decorators intoo-few-public-methodscheck.Closes #9345
Fix a false positive with
singledispatchmethod-functionwhen a method is decorated with bothfunctools.singledispatchmethodandstaticmethod.Closes #9531
Fix a false positive for
consider-using-dict-itemswhen iterating usingkeys()and then deleting an item using the key as a lookup.Closes #9554
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR has been generated by Renovate Bot.