🔧 This Pull Request updates lock files to use the latest dependency versions.
Release Notes
nedbat/coveragepy (coverage)
### [`v7.6.8`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-768--2024-11-23)
[Compare Source](https://redirect.github.com/nedbat/coveragepy/compare/7.6.7...7.6.8)
- Fix: the LCOV report code assumed that a branch line that took no branches
meant that the entire line was unexecuted. This isn't true in a few cases:
the line might always raise an exception, or might have been optimized away.
Fixes `issue 1896`\_.
- Fix: similarly, the HTML report will now explain that a line that jumps to
none of its expected destinations must have always raised an exception.
Previously, it would say something nonsensical like, "line 4 didn't jump to
line 5 because line 4 was never true, and it didn't jump to line 7 because
line 4 was always true." This was also shown in `issue 1896`\_.
.. \_issue 1896:[https://github.com/nedbat/coveragepy/issues/1896](https://redirect.github.com/nedbat/coveragepy/issues/1896)6
.. \_changes\_7-6-7:
### [`v7.6.7`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-767--2024-11-15)
[Compare Source](https://redirect.github.com/nedbat/coveragepy/compare/7.6.6...7.6.7)
- fix: ugh, the other assert from 7.6.5 can also be encountered in the wild,
so it's been restored to a conditional. Sorry for the churn.
.. \_changes\_7-6-6:
### [`v7.6.6`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-766--2024-11-15)
[Compare Source](https://redirect.github.com/nedbat/coveragepy/compare/7.6.5...7.6.6)
- One of the new asserts from 7.6.5 caused problems in real projects, as
reported in `issue 1891`\_. The assert has been removed.
.. \_issue 1891:[https://github.com/nedbat/coveragepy/issues/1891](https://redirect.github.com/nedbat/coveragepy/issues/1891)1
.. \_changes\_7-6-5:
### [`v7.6.5`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-765--2024-11-14)
[Compare Source](https://redirect.github.com/nedbat/coveragepy/compare/7.6.4...7.6.5)
- fix: fine-tuned the exact Python version (3.12.6) when exiting from `with`
statements changed how they traced. This affected whether people saw the
fix for `issue 1880`\_.
- fix: isolate our code more from mocking in the os module that in rare cases
can cause `bizarre behavior `\_.
- refactor: some code unreachable code paths in parser.py were changed to
asserts. If you encounter any of these, please let me know!
.. \_pytest-cov-666:[https://github.com/pytest-dev/pytest-cov/issues/666](https://redirect.github.com/pytest-dev/pytest-cov/issues/666)6
.. \_changes\_7-6-4:
### [`v7.6.4`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-764--2024-10-20)
[Compare Source](https://redirect.github.com/nedbat/coveragepy/compare/7.6.3...7.6.4)
- fix: multi-line `with` statements could cause contained branches to be
incorrectly marked as missing (`issue 1880`\_). This is now fixed.
.. \_issue 1880:[https://github.com/nedbat/coveragepy/issues/1880](https://redirect.github.com/nedbat/coveragepy/issues/1880)0
.. \_changes\_7-6-3:
### [`v7.6.3`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-763--2024-10-13)
[Compare Source](https://redirect.github.com/nedbat/coveragepy/compare/7.6.2...7.6.3)
- Fix: nested context managers could incorrectly be analyzed to flag a missing
branch on the last context manager, as described in `issue 1876`\_. This is
now fixed.
- Fix: the missing branch message about not exiting a module had an extra
"didn't," as described in `issue 1873`\_. This is now fixed.
.. \_issue 1873:[https://github.com/nedbat/coveragepy/issues/1873](https://redirect.github.com/nedbat/coveragepy/issues/1873)3
.. \_issue 1876[https://github.com/nedbat/coveragepy/issues/1876](https://redirect.github.com/nedbat/coveragepy/issues/1876)76
.. \_changes\_7-6-2:
### [`v7.6.2`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-762--2024-10-09)
[Compare Source](https://redirect.github.com/nedbat/coveragepy/compare/7.6.1...7.6.2)
- Dropped support for Python 3.8 and PyPy 3.8.
- Fix: a final wildcard match/case clause assigning to a name (`case _ as
value`) was incorrectly marked as a missing branch. This is now fixed,
closing `issue 1860`\_.
- Fewer things are considered branches now. Lambdas, comprehensions, and
generator expressions are no longer marked as missing branches if they don't
complete execution. Closes `issue 1852`\_.
- Fix: the HTML report didn't properly show multi-line f-strings that end with
a backslash continuation. This is now fixed, closing `issue 1836`*, thanks
to `LiuYinCarl and Marco Ricci `*.
- Fix: the LCOV report now has correct line numbers (fixing `issue 1846`*) and
better branch descriptions for BRDA records (fixing `issue 1850`*). There
are other changes to lcov also, including a new configuration option
:ref:`line_checksums ` to control whether line
checksums are included in the lcov report. The default is false. To keep
checksums set it to true. All this work is thanks to Zack Weinberg
(`pull 1849`\_ and `pull 1851`\_).
- Fixed the docs for multi-line regex exclusions, closing `issue 1863`\_.
- Fixed a potential crash in the C tracer, closing `issue 1835`*, thanks to
`Jan Kühle `*.
.. \_issue 1835:[https://github.com/nedbat/coveragepy/issues/1835](https://redirect.github.com/nedbat/coveragepy/issues/1835)5
.. \_issue 1836[https://github.com/nedbat/coveragepy/issues/1836](https://redirect.github.com/nedbat/coveragepy/issues/1836)36
.. \_pull 183[https://github.com/nedbat/coveragepy/pull/1838](https://redirect.github.com/nedbat/coveragepy/pull/1838)838
.. \_pull 18[https://github.com/nedbat/coveragepy/pull/1843](https://redirect.github.com/nedbat/coveragepy/pull/1843)1843
.. \_issue 1[https://github.com/nedbat/coveragepy/issues/1846](https://redirect.github.com/nedbat/coveragepy/issues/1846)/1846
.. \_pull [https://github.com/nedbat/coveragepy/pull/1849](https://redirect.github.com/nedbat/coveragepy/pull/1849)l/1849
.. \_issue[https://github.com/nedbat/coveragepy/issues/1850](https://redirect.github.com/nedbat/coveragepy/issues/1850)es/1850
.. \_pul[https://github.com/nedbat/coveragepy/pull/1851](https://redirect.github.com/nedbat/coveragepy/pull/1851)ull/1851
.. \_iss[https://github.com/nedbat/coveragepy/issues/1852](https://redirect.github.com/nedbat/coveragepy/issues/1852)sues/1852
.. \_is[https://github.com/nedbat/coveragepy/issues/1860](https://redirect.github.com/nedbat/coveragepy/issues/1860)ssues/1860
.. \_i[https://github.com/nedbat/coveragepy/issues/1863](https://redirect.github.com/nedbat/coveragepy/issues/1863)issues/1863
.. \_changes\_7-6-1:
gtsystem/lightkube (lightkube)
### [`v0.15.5`](https://redirect.github.com/gtsystem/lightkube/compare/v0.15.4...v0.15.5)
[Compare Source](https://redirect.github.com/gtsystem/lightkube/compare/v0.15.4...v0.15.5)
### [`v0.15.4`](https://redirect.github.com/gtsystem/lightkube/releases/tag/v0.15.4)
##### What's Changed
- Fix client config typing by [@DanielArndt](https://redirect.github.com/DanielArndt) in [https://github.com/gtsystem/lightkube/pull/60](https://redirect.github.com/gtsystem/lightkube/pull/60)
- Document support for Kubernetes 1.30 by [@gtsystem](https://redirect.github.com/gtsystem) in [https://github.com/gtsystem/lightkube/pull/61](https://redirect.github.com/gtsystem/lightkube/pull/61)
- Fix issue [#63](https://redirect.github.com/gtsystem/lightkube/issues/63), where pyright cannot recognize the correct type for some client methods by [@gtsystem](https://redirect.github.com/gtsystem) in [https://github.com/gtsystem/lightkube/pull/64](https://redirect.github.com/gtsystem/lightkube/pull/64)
- Update 'config' type hint for lightkube.core.async_client.AsyncClient by [@benfiola](https://redirect.github.com/benfiola) in [https://github.com/gtsystem/lightkube/pull/67](https://redirect.github.com/gtsystem/lightkube/pull/67)
- Ensure apiVersion and kind are set for 'list' requests by [@benfiola](https://redirect.github.com/benfiola) in [https://github.com/gtsystem/lightkube/pull/68](https://redirect.github.com/gtsystem/lightkube/pull/68)
- Set `__all__` in `__init__.py` by [@max-muoto](https://redirect.github.com/max-muoto) in [https://github.com/gtsystem/lightkube/pull/70](https://redirect.github.com/gtsystem/lightkube/pull/70)
- Add support for dry-run by [@michaeldmitry](https://redirect.github.com/michaeldmitry) in [https://github.com/gtsystem/lightkube/pull/74](https://redirect.github.com/gtsystem/lightkube/pull/74)
##### New Contributors
- [@DanielArndt](https://redirect.github.com/DanielArndt) made their first contribution in [https://github.com/gtsystem/lightkube/pull/60](https://redirect.github.com/gtsystem/lightkube/pull/60)
- [@benfiola](https://redirect.github.com/benfiola) made their first contribution in [https://github.com/gtsystem/lightkube/pull/67](https://redirect.github.com/gtsystem/lightkube/pull/67)
- [@max-muoto](https://redirect.github.com/max-muoto) made their first contribution in [https://github.com/gtsystem/lightkube/pull/70](https://redirect.github.com/gtsystem/lightkube/pull/70)
- [@michaeldmitry](https://redirect.github.com/michaeldmitry) made their first contribution in [https://github.com/gtsystem/lightkube/pull/74](https://redirect.github.com/gtsystem/lightkube/pull/74)
**Full Changelog**: https://github.com/gtsystem/lightkube/compare/v0.15.2...v0.15.4
canonical/operator (ops)
### [`v2.17.0`](https://redirect.github.com/canonical/operator/blob/HEAD/CHANGES.md#2170---26-Sep-2024)
[Compare Source](https://redirect.github.com/canonical/operator/compare/2.16.1...2.17.0)
#### Features
- Optionally install Scenario with `ops[testing]` and expose the names in ops.testing ([#1381](https://redirect.github.com/canonical/operator/issues/1381))
- Change ops.main() so that you don't need to `type: ignore` it ([#1345](https://redirect.github.com/canonical/operator/issues/1345))
- Expand the secret ID out to the full URI when only given the ID ([#1358](https://redirect.github.com/canonical/operator/issues/1358))
- Add a JujuVersion property for Pebble log forwarding to Loki ([#1370](https://redirect.github.com/canonical/operator/issues/1370))
- Pre-emptively raise `InvalidStatusError` instead of waiting for Juju:
- Make it an error to call `CollectStatusEvent.add_status` with error or unknown ([#1386](https://redirect.github.com/canonical/operator/issues/1386))
- Document and validate settable status values in `_ModelBackend.set_status` ([#1354](https://redirect.github.com/canonical/operator/issues/1354))
#### Fixes
- Fix type of `StatusBase` subclasses by calling `StatusBase.register` in `__init_subclass__` ([#1383](https://redirect.github.com/canonical/operator/issues/1383))
- `Secret.set_info` and `Secret.set_content` can be called in the same hook ([#1373](https://redirect.github.com/canonical/operator/issues/1373))
#### Documentation
- Add top-level intro and module-level intros ([#1320](https://redirect.github.com/canonical/operator/issues/1320))
- Update the links to the Pebble docs ([#1362](https://redirect.github.com/canonical/operator/issues/1362))
- Note about repeatedly setting secret value in Juju 3.6 ([#1366](https://redirect.github.com/canonical/operator/issues/1366))
- `config-changed` is triggered by Juju trust ([#1357](https://redirect.github.com/canonical/operator/issues/1357))
- Typo on `CharmBase` inheritance example by [@theofpa](https://redirect.github.com/theofpa) ([#1349](https://redirect.github.com/canonical/operator/issues/1349))
- Docs: move Pebble to a separate page ([#1392](https://redirect.github.com/canonical/operator/issues/1392))
#### Continuous Integration
- Periodically run the unit tests of all GitHub-hosted published charms ([#1365](https://redirect.github.com/canonical/operator/issues/1365))
- Update the TIOBE reporting for the changes in coverage calculation ([#1367](https://redirect.github.com/canonical/operator/issues/1367))
- Spell-check the code as part of linting ([#1388](https://redirect.github.com/canonical/operator/issues/1388))
- Run the smoke tests on a schedule ([#1387](https://redirect.github.com/canonical/operator/issues/1387))
#### Testing
- Fix tests that leaked environment variables ([#1385](https://redirect.github.com/canonical/operator/issues/1385))
#### Refactoring
- Move the content of `ops.testing` to `ops._private.harness` ([#1369](https://redirect.github.com/canonical/operator/issues/1369))
- Keep the `unittest.mock` names in the 'mock' namespace ([#1379](https://redirect.github.com/canonical/operator/issues/1379))
- Deprecate `StatusBase.register` decorator ([#1384](https://redirect.github.com/canonical/operator/issues/1384))
#### Chores
- Note Juju version on legacy workaround ([#1355](https://redirect.github.com/canonical/operator/issues/1355))
- Re-enable test now that Pebble directory permissions are fixed ([#1363](https://redirect.github.com/canonical/operator/issues/1363))
- Generate warnings for events that will be removed in Juju 4.0 ([#1374](https://redirect.github.com/canonical/operator/issues/1374))
### [`v2.16.1`](https://redirect.github.com/canonical/operator/blob/HEAD/CHANGES.md#2161---5-Sep-2024)
[Compare Source](https://redirect.github.com/canonical/operator/compare/2.16.0...2.16.1)
#### Fix
- Don't alter os.environ when creating a Harness ([#1359](https://redirect.github.com/canonical/operator/issues/1359))
### [`v2.16.0`](https://redirect.github.com/canonical/operator/blob/HEAD/CHANGES.md#2160---29-Aug-2024)
[Compare Source](https://redirect.github.com/canonical/operator/compare/2.15.0...2.16.0)
#### Features
- Add the description field to SecretInfo in ([#1338](https://redirect.github.com/canonical/operator/issues/1338))
#### Refactor
- Parse JUJU_\* environment variables in one place in ([#1313](https://redirect.github.com/canonical/operator/issues/1313))
#### Fixes
- Fix reading Juju secret expiry dates in ([#1317](https://redirect.github.com/canonical/operator/issues/1317))
- Correct the signature of .events() in ([#1342](https://redirect.github.com/canonical/operator/issues/1342))
#### Documentation
- Security policy change to only support each active major release in ([#1297](https://redirect.github.com/canonical/operator/issues/1297))
- Add Juju version markers in ([#1311](https://redirect.github.com/canonical/operator/issues/1311))
- Use Sphinx 8 in ([#1303](https://redirect.github.com/canonical/operator/issues/1303))
- Live reload documentation with sphinx-autobuild in ([#1323](https://redirect.github.com/canonical/operator/issues/1323))
#### Tests
- Update the smoke test series/bases in ([#1318](https://redirect.github.com/canonical/operator/issues/1318))
- Run pytest in parallel with pytest xdist in ([#1319](https://redirect.github.com/canonical/operator/issues/1319))
- Bump Pyright to 1.1.377 in ([#1332](https://redirect.github.com/canonical/operator/issues/1332))
- Run tests on Python 3.12 and the install test on Python 3.13 in ([#1315](https://redirect.github.com/canonical/operator/issues/1315))
#### CI
- Add a workflow that runs the TIOBE quality checks in ([#1301](https://redirect.github.com/canonical/operator/issues/1301))
- Allow executing the TIOBE workflow manually in ([#1321](https://redirect.github.com/canonical/operator/issues/1321))
- Make Pyright report unnecessary type ignore comments in ([#1333](https://redirect.github.com/canonical/operator/issues/1333))
- Enable linting of docs/custom_conf.py in ([#1330](https://redirect.github.com/canonical/operator/issues/1330))
pydantic/pydantic (pydantic)
### [`v1.10.19`](https://redirect.github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v11019-2024-11-06)
[Compare Source](https://redirect.github.com/pydantic/pydantic/compare/v1.10.18...v1.10.19)
- Add warning when v2 model is nested in v1 model by [@sydney-runkle](https://redirect.github.com/sydney-runkle) in [https://github.com/pydantic/pydantic/pull/10432](https://redirect.github.com/pydantic/pydantic/pull/10432)
- Fix deprecation warning in V1 `isinstance` check by [@alicederyn](https://redirect.github.com/alicederyn) in [https://github.com/pydantic/pydantic/pull/10645](https://redirect.github.com/pydantic/pydantic/pull/10645)
### [`v1.10.18`](https://redirect.github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v11018-2024-08-22)
[Compare Source](https://redirect.github.com/pydantic/pydantic/compare/v1.10.17...v1.10.18)
- Eval type fix in V1 by [@sydney-runkle](https://redirect.github.com/sydney-runkle) in [https://github.com/pydantic/pydantic/pull/9751](https://redirect.github.com/pydantic/pydantic/pull/9751)
- Add `to_lower_camel` to `__all__` in `utils.py` by [@sydney-runkle](https://redirect.github.com/sydney-runkle) (direct commit)
- Fix `mypy` v1 plugin for mypy 1.11 release by [@flaeppe](https://redirect.github.com/flaeppe) in [https://github.com/pydantic/pydantic/pull/10139](https://redirect.github.com/pydantic/pydantic/pull/10139)
- Fix discriminator key used when discriminator has alias and `.schema(by_alias=False)` by [@exs-dwoodward](https://redirect.github.com/exs-dwoodward) in [https://github.com/pydantic/pydantic/pull/10146](https://redirect.github.com/pydantic/pydantic/pull/10146)
pytest-dev/pytest (pytest)
### [`v8.3.3`](https://redirect.github.com/pytest-dev/pytest/releases/tag/8.3.3)
[Compare Source](https://redirect.github.com/pytest-dev/pytest/compare/8.3.2...8.3.3)
# pytest 8.3.3 (2024-09-09)
## Bug fixes
- [#12446](https://redirect.github.com/pytest-dev/pytest/issues/12446): Avoid calling `@property` (and other instance descriptors) during fixture discovery -- by `asottile`{.interpreted-text role="user"}
- [#12659](https://redirect.github.com/pytest-dev/pytest/issues/12659): Fixed the issue of not displaying assertion failure differences when using the parameter `--import-mode=importlib` in pytest>=8.1.
- [#12667](https://redirect.github.com/pytest-dev/pytest/issues/12667): Fixed a regression where type change in \[ExceptionInfo.errisinstance]{.title-ref} caused \[mypy]{.title-ref} to fail.
- [#12744](https://redirect.github.com/pytest-dev/pytest/issues/12744): Fixed typing compatibility with Python 3.9 or less -- replaced \[typing.Self]{.title-ref} with \[typing_extensions.Self]{.title-ref} -- by `Avasam`{.interpreted-text role="user"}
- [#12745](https://redirect.github.com/pytest-dev/pytest/issues/12745): Fixed an issue with backslashes being incorrectly converted in nodeid paths on Windows, ensuring consistent path handling across environments.
- [#6682](https://redirect.github.com/pytest-dev/pytest/issues/6682): Fixed bug where the verbosity levels where not being respected when printing the "msg" part of failed assertion (as in `assert condition, msg`).
- [#9422](https://redirect.github.com/pytest-dev/pytest/issues/9422): Fix bug where disabling the terminal plugin via `-p no:terminal` would cause crashes related to missing the `verbose` option.
\-- by `GTowers1`{.interpreted-text role="user"}
## Improved documentation
- [#12663](https://redirect.github.com/pytest-dev/pytest/issues/12663): Clarify that the \[pytest_deselected]{.title-ref} hook should be called from \[pytest_collection_modifyitems]{.title-ref} hook implementations when items are deselected.
- [#12678](https://redirect.github.com/pytest-dev/pytest/issues/12678): Remove erroneous quotes from \[tmp_path_retention_policy]{.title-ref} example in docs.
## Miscellaneous internal changes
- [#12769](https://redirect.github.com/pytest-dev/pytest/issues/12769): Fix typos discovered by codespell and add codespell to pre-commit hooks.
charmed-kubernetes/pytest-operator (pytest-operator)
### [`v0.37.0`](https://redirect.github.com/charmed-kubernetes/pytest-operator/releases/tag/v0.37.0): 0.37.0
[Compare Source](https://redirect.github.com/charmed-kubernetes/pytest-operator/compare/v0.36.0...v0.37.0)
crate-py/rpds (rpds-py)
### [`v0.21.0`](https://redirect.github.com/crate-py/rpds/releases/tag/v0.21.0)
[Compare Source](https://redirect.github.com/crate-py/rpds/compare/v0.20.1...v0.21.0)
#### What's Changed
- bump pyO3 to 0.22.6 by [@minrk](https://redirect.github.com/minrk) in [https://github.com/crate-py/rpds/pull/97](https://redirect.github.com/crate-py/rpds/pull/97)
#### New Contributors
- [@minrk](https://redirect.github.com/minrk) made their first contribution in [https://github.com/crate-py/rpds/pull/97](https://redirect.github.com/crate-py/rpds/pull/97)
**Full Changelog**: https://github.com/crate-py/rpds/compare/v0.20.1...v0.21.0
### [`v0.20.1`](https://redirect.github.com/crate-py/rpds/releases/tag/v0.20.1)
[Compare Source](https://redirect.github.com/crate-py/rpds/compare/v0.20.0...v0.20.1)
#### What's Changed
- Fix hashing overflow issues ([#86](https://redirect.github.com/crate-py/rpds/issues/86)) by [@FlickerSoul](https://redirect.github.com/FlickerSoul) in [https://github.com/crate-py/rpds/pull/87](https://redirect.github.com/crate-py/rpds/pull/87)
**Full Changelog**: https://github.com/crate-py/rpds/compare/v0.20.0...v0.20.1
### [`v0.20.0`](https://redirect.github.com/crate-py/rpds/releases/tag/v0.20.0)
[Compare Source](https://redirect.github.com/crate-py/rpds/compare/v0.19.1...v0.20.0)
#### What's Changed
- Implements `__hash__` for collections by [@FlickerSoul](https://redirect.github.com/FlickerSoul) in [https://github.com/crate-py/rpds/pull/81](https://redirect.github.com/crate-py/rpds/pull/81)
**Full Changelog**: https://github.com/crate-py/rpds/compare/v0.19.1...v0.20.0
### [`v0.19.1`](https://redirect.github.com/crate-py/rpds/releases/tag/v0.19.1)
[Compare Source](https://redirect.github.com/crate-py/rpds/compare/v0.19.0...v0.19.1)
#### What's Changed
- Make Python versions in GitHub Actions consistent by [@rominf](https://redirect.github.com/rominf) in [https://github.com/crate-py/rpds/pull/80](https://redirect.github.com/crate-py/rpds/pull/80)
#### New Contributors
- [@rominf](https://redirect.github.com/rominf) made their first contribution in [https://github.com/crate-py/rpds/pull/80](https://redirect.github.com/crate-py/rpds/pull/80)
**Full Changelog**: https://github.com/crate-py/rpds/compare/v0.19.0...v0.19.1
### [`v0.19.0`](https://redirect.github.com/crate-py/rpds/releases/tag/v0.19.0)
[Compare Source](https://redirect.github.com/crate-py/rpds/compare/v0.18.1...v0.19.0)
#### What's Changed
- deps: bump libc from 0.2.147 to 0.2.155 by [@wxpppp](https://redirect.github.com/wxpppp) in [https://github.com/crate-py/rpds/pull/74](https://redirect.github.com/crate-py/rpds/pull/74)
- Make Python 3.13 Compatible by [@FlickerSoul](https://redirect.github.com/FlickerSoul) in [https://github.com/crate-py/rpds/pull/79](https://redirect.github.com/crate-py/rpds/pull/79)
#### New Contributors
- [@wxpppp](https://redirect.github.com/wxpppp) made their first contribution in [https://github.com/crate-py/rpds/pull/74](https://redirect.github.com/crate-py/rpds/pull/74)
- [@FlickerSoul](https://redirect.github.com/FlickerSoul) made their first contribution in [https://github.com/crate-py/rpds/pull/79](https://redirect.github.com/crate-py/rpds/pull/79)
**Full Changelog**: https://github.com/crate-py/rpds/compare/v0.18.1...v0.19.0
astral-sh/ruff (ruff)
### [`v0.8.0`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#080)
[Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.7.4...0.8.0)
Check out the [blog post](https://astral.sh/blog/ruff-v0.8.0) for a migration guide and overview of the changes!
##### Breaking changes
See also, the "Remapped rules" section which may result in disabled rules.
- **Default to Python 3.9**
Ruff now defaults to Python 3.9 instead of 3.8 if no explicit Python version is configured using [`ruff.target-version`](https://docs.astral.sh/ruff/settings/#target-version) or [`project.requires-python`](https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#python-requires) ([#13896](https://redirect.github.com/astral-sh/ruff/pull/13896))
- **Changed location of `pydoclint` diagnostics**
[`pydoclint`](https://docs.astral.sh/ruff/rules/#pydoclint-doc) diagnostics now point to the first-line of the problematic docstring. Previously, this was not the case.
If you've opted into these preview rules but have them suppressed using
[`noqa`](https://docs.astral.sh/ruff/linter/#error-suppression) comments in
some places, this change may mean that you need to move the `noqa` suppression
comments. Most users should be unaffected by this change.
- **Use XDG (i.e. `~/.local/bin`) instead of the Cargo home directory in the standalone installer**
Previously, Ruff's installer used `$CARGO_HOME` or `~/.cargo/bin` for its target install directory. Now, Ruff will be installed into `$XDG_BIN_HOME`, `$XDG_DATA_HOME/../bin`, or `~/.local/bin` (in that order).
This change is only relevant to users of the standalone Ruff installer (using the shell or PowerShell script). If you installed Ruff using uv or pip, you should be unaffected.
- **Changes to the line width calculation**
Ruff now uses a new version of the [unicode-width](https://redirect.github.com/unicode-rs/unicode-width) Rust crate to calculate the line width. In very rare cases, this may lead to lines containing Unicode characters being reformatted, or being considered too long when they were not before ([`E501`](https://docs.astral.sh/ruff/rules/line-too-long/)).
##### Removed Rules
The following deprecated rules have been removed:
- [`missing-type-self`](https://docs.astral.sh/ruff/rules/missing-type-self/) (`ANN101`)
- [`missing-type-cls`](https://docs.astral.sh/ruff/rules/missing-type-cls/) (`ANN102`)
- [`syntax-error`](https://docs.astral.sh/ruff/rules/syntax-error/) (`E999`)
- [`pytest-missing-fixture-name-underscore`](https://docs.astral.sh/ruff/rules/pytest-missing-fixture-name-underscore/) (`PT004`)
- [`pytest-incorrect-fixture-name-underscore`](https://docs.astral.sh/ruff/rules/pytest-incorrect-fixture-name-underscore/) (`PT005`)
- [`unpacked-list-comprehension`](https://docs.astral.sh/ruff/rules/unpacked-list-comprehension/) (`UP027`)
##### Remapped rules
The following rules have been remapped to new rule codes:
- [`flake8-type-checking`](https://docs.astral.sh/ruff/rules/#flake8-type-checking-tc): `TCH` to `TC`
##### Stabilization
The following rules have been stabilized and are no longer in preview:
- [`builtin-import-shadowing`](https://docs.astral.sh/ruff/rules/builtin-import-shadowing/) (`A004`)
- [`mutable-contextvar-default`](https://docs.astral.sh/ruff/rules/mutable-contextvar-default/) (`B039`)
- [`fast-api-redundant-response-model`](https://docs.astral.sh/ruff/rules/fast-api-redundant-response-model/) (`FAST001`)
- [`fast-api-non-annotated-dependency`](https://docs.astral.sh/ruff/rules/fast-api-non-annotated-dependency/) (`FAST002`)
- [`dict-index-missing-items`](https://docs.astral.sh/ruff/rules/dict-index-missing-items/) (`PLC0206`)
- [`pep484-style-positional-only-argument`](https://docs.astral.sh/ruff/rules/pep484-style-positional-only-argument/) (`PYI063`)
- [`redundant-final-literal`](https://docs.astral.sh/ruff/rules/redundant-final-literal/) (`PYI064`)
- [`bad-version-info-order`](https://docs.astral.sh/ruff/rules/bad-version-info-order/) (`PYI066`)
- [`parenthesize-chained-operators`](https://docs.astral.sh/ruff/rules/parenthesize-chained-operators/) (`RUF021`)
- [`unsorted-dunder-all`](https://docs.astral.sh/ruff/rules/unsorted-dunder-all/) (`RUF022`)
- [`unsorted-dunder-slots`](https://docs.astral.sh/ruff/rules/unsorted-dunder-slots/) (`RUF023`)
- [`assert-with-print-message`](https://docs.astral.sh/ruff/rules/assert-with-print-message/) (`RUF030`)
- [`unnecessary-default-type-args`](https://docs.astral.sh/ruff/rules/unnecessary-default-type-args/) (`UP043`)
The following behaviors have been stabilized:
- [`ambiguous-variable-name`](https://docs.astral.sh/ruff/rules/ambiguous-variable-name/) (`E741`): Violations in stub files are now ignored. Stub authors typically don't control variable names.
- [`printf-string-formatting`](https://docs.astral.sh/ruff/rules/printf-string-formatting/) (`UP031`): Report all `printf`-like usages even if no autofix is available
The following fixes have been stabilized:
- [`zip-instead-of-pairwise`](https://docs.astral.sh/ruff/rules/zip-instead-of-pairwise/) (`RUF007`)
##### Preview features
- \[`flake8-datetimez`] Exempt `min.time()` and `max.time()` (`DTZ901`) ([#14394](https://redirect.github.com/astral-sh/ruff/pull/14394))
- \[`flake8-pie`] Mark fix as unsafe if the following statement is a string literal (`PIE790`) ([#14393](https://redirect.github.com/astral-sh/ruff/pull/14393))
- \[`flake8-pyi`] New rule `redundant-none-literal` (`PYI061`) ([#14316](https://redirect.github.com/astral-sh/ruff/pull/14316))
- \[`flake8-pyi`] Add autofix for `redundant-numeric-union` (`PYI041`) ([#14273](https://redirect.github.com/astral-sh/ruff/pull/14273))
- \[`ruff`] New rule `map-int-version-parsing` (`RUF048`) ([#14373](https://redirect.github.com/astral-sh/ruff/pull/14373))
- \[`ruff`] New rule `redundant-bool-literal` (`RUF038`) ([#14319](https://redirect.github.com/astral-sh/ruff/pull/14319))
- \[`ruff`] New rule `unraw-re-pattern` (`RUF039`) ([#14446](https://redirect.github.com/astral-sh/ruff/pull/14446))
- \[`pycodestyle`] Exempt `pytest.importorskip()` calls (`E402`) ([#14474](https://redirect.github.com/astral-sh/ruff/pull/14474))
- \[`pylint`] Autofix suggests using sets when possible (`PLR1714`) ([#14372](https://redirect.github.com/astral-sh/ruff/pull/14372))
##### Rule changes
- [`invalid-pyproject-toml`](https://docs.astral.sh/ruff/rules/invalid-pyproject-toml/) (`RUF200`): Updated to reflect the provisionally accepted [PEP 639](https://peps.python.org/pep-0639/).
- \[`flake8-pyi`] Avoid panic in unfixable case (`PYI041`) ([#14402](https://redirect.github.com/astral-sh/ruff/pull/14402))
- \[`flake8-type-checking`] Correctly handle quotes in subscript expression when generating an autofix ([#14371](https://redirect.github.com/astral-sh/ruff/pull/14371))
- \[`pylint`] Suggest correct autofix for `__contains__` (`PLC2801`) ([#14424](https://redirect.github.com/astral-sh/ruff/pull/14424))
##### Configuration
- Ruff now emits a warning instead of an error when a configuration [`ignore`](https://docs.astral.sh/ruff/settings/#lint_ignore)s a rule that has been removed ([#14435](https://redirect.github.com/astral-sh/ruff/pull/14435))
- Ruff now validates that `lint.flake8-import-conventions.aliases` only uses valid module names and aliases ([#14477](https://redirect.github.com/astral-sh/ruff/pull/14477))
### [`v0.7.4`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#074)
[Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.7.3...0.7.4)
##### Preview features
- \[`flake8-datetimez`] Detect usages of `datetime.max`/`datetime.min` (`DTZ901`) ([#14288](https://redirect.github.com/astral-sh/ruff/pull/14288))
- \[`flake8-logging`] Implement `root-logger-calls` (`LOG015`) ([#14302](https://redirect.github.com/astral-sh/ruff/pull/14302))
- \[`flake8-no-pep420`] Detect empty implicit namespace packages (`INP001`) ([#14236](https://redirect.github.com/astral-sh/ruff/pull/14236))
- \[`flake8-pyi`] Add "replace with `Self`" fix (`PYI019`) ([#14238](https://redirect.github.com/astral-sh/ruff/pull/14238))
- \[`perflint`] Implement quick-fix for `manual-list-comprehension` (`PERF401`) ([#13919](https://redirect.github.com/astral-sh/ruff/pull/13919))
- \[`pylint`] Implement `shallow-copy-environ` (`W1507`) ([#14241](https://redirect.github.com/astral-sh/ruff/pull/14241))
- \[`ruff`] Implement `none-not-at-end-of-union` (`RUF036`) ([#14314](https://redirect.github.com/astral-sh/ruff/pull/14314))
- \[`ruff`] Implementation `unsafe-markup-call` from `flake8-markupsafe` plugin (`RUF035`) ([#14224](https://redirect.github.com/astral-sh/ruff/pull/14224))
- \[`ruff`] Report problems for `attrs` dataclasses (`RUF008`, `RUF009`) ([#14327](https://redirect.github.com/astral-sh/ruff/pull/14327))
##### Rule changes
- \[`flake8-boolean-trap`] Exclude dunder methods that define operators (`FBT001`) ([#14203](https://redirect.github.com/astral-sh/ruff/pull/14203))
- \[`flake8-pyi`] Add "replace with `Self`" fix (`PYI034`) ([#14217](https://redirect.github.com/astral-sh/ruff/pull/14217))
- \[`flake8-pyi`] Always autofix `duplicate-union-members` (`PYI016`) ([#14270](https://redirect.github.com/astral-sh/ruff/pull/14270))
- \[`flake8-pyi`] Improve autofix for nested and mixed type unions for `unnecessary-type-union` (`PYI055`) ([#14272](https://redirect.github.com/astral-sh/ruff/pull/14272))
- \[`flake8-pyi`] Mark fix as unsafe when type annotation contains comments for `duplicate-literal-member` (`PYI062`) ([#14268](https://redirect.github.com/astral-sh/ruff/pull/14268))
##### Server
- Use the current working directory to resolve settings from `ruff.configuration` ([#14352](https://redirect.github.com/astral-sh/ruff/pull/14352))
##### Bug fixes
- Avoid conflicts between `PLC014` (`useless-import-alias`) and `I002` (`missing-required-import`) by considering `lint.isort.required-imports` for `PLC014` ([#14287](https://redirect.github.com/astral-sh/ruff/pull/14287))
- \[`flake8-type-checking`] Skip quoting annotation if it becomes invalid syntax (`TCH001`)
- \[`flake8-pyi`] Avoid using `typing.Self` in stub files pre-Python 3.11 (`PYI034`) ([#14230](https://redirect.github.com/astral-sh/ruff/pull/14230))
- \[`flake8-pytest-style`] Flag `pytest.raises` call with keyword argument `expected_exception` (`PT011`) ([#14298](https://redirect.github.com/astral-sh/ruff/pull/14298))
- \[`flake8-simplify`] Infer "unknown" truthiness for literal iterables whose items are all unpacks (`SIM222`) ([#14263](https://redirect.github.com/astral-sh/ruff/pull/14263))
- \[`flake8-type-checking`] Fix false positives for `typing.Annotated` (`TCH001`) ([#14311](https://redirect.github.com/astral-sh/ruff/pull/14311))
- \[`pylint`] Allow `await` at the top-level scope of a notebook (`PLE1142`) ([#14225](https://redirect.github.com/astral-sh/ruff/pull/14225))
- \[`pylint`] Fix miscellaneous issues in `await-outside-async` detection (`PLE1142`) ([#14218](https://redirect.github.com/astral-sh/ruff/pull/14218))
- \[`pyupgrade`] Avoid applying PEP 646 rewrites in invalid contexts (`UP044`) ([#14234](https://redirect.github.com/astral-sh/ruff/pull/14234))
- \[`pyupgrade`] Detect permutations in redundant open modes (`UP015`) ([#14255](https://redirect.github.com/astral-sh/ruff/pull/14255))
- \[`refurb`] Avoid triggering `hardcoded-string-charset` for reordered sets (`FURB156`) ([#14233](https://redirect.github.com/astral-sh/ruff/pull/14233))
- \[`refurb`] Further special cases added to `verbose-decimal-constructor` (`FURB157`) ([#14216](https://redirect.github.com/astral-sh/ruff/pull/14216))
- \[`refurb`] Use `UserString` instead of non-existent `UserStr` (`FURB189`) ([#14209](https://redirect.github.com/astral-sh/ruff/pull/14209))
- \[`ruff`] Avoid treating lowercase letters as `# noqa` codes (`RUF100`) ([#14229](https://redirect.github.com/astral-sh/ruff/pull/14229))
- \[`ruff`] Do not report when `Optional` has no type arguments (`RUF013`) ([#14181](https://redirect.github.com/astral-sh/ruff/pull/14181))
##### Documentation
- Add "Notebook behavior" section for `F704`, `PLE1142` ([#14266](https://redirect.github.com/astral-sh/ruff/pull/14266))
- Document comment policy around fix safety ([#14300](https://redirect.github.com/astral-sh/ruff/pull/14300))
### [`v0.7.3`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#073)
[Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.7.2...0.7.3)
##### Preview features
- Formatter: Disallow single-line implicit concatenated strings ([#13928](https://redirect.github.com/astral-sh/ruff/pull/13928))
- \[`flake8-pyi`] Include all Python file types for `PYI006` and `PYI066` ([#14059](https://redirect.github.com/astral-sh/ruff/pull/14059))
- \[`flake8-simplify`] Implement `split-of-static-string` (`SIM905`) ([#14008](https://redirect.github.com/astral-sh/ruff/pull/14008))
- \[`refurb`] Implement `subclass-builtin` (`FURB189`) ([#14105](https://redirect.github.com/astral-sh/ruff/pull/14105))
- \[`ruff`] Improve diagnostic messages and docs (`RUF031`, `RUF032`, `RUF034`) ([#14068](https://redirect.github.com/astral-sh/ruff/pull/14068))
##### Rule changes
- Detect items that hash to same value in duplicate sets (`B033`, `PLC0208`) ([#14064](https://redirect.github.com/astral-sh/ruff/pull/14064))
- \[`eradicate`] Better detection of IntelliJ language injection comments (`ERA001`) ([#14094](https://redirect.github.com/astral-sh/ruff/pull/14094))
- \[`flake8-pyi`] Add autofix for `docstring-in-stub` (`PYI021`) ([#14150](https://redirect.github.com/astral-sh/ruff/pull/14150))
- \[`flake8-pyi`] Update `duplicate-literal-member` (`PYI062`) to alawys provide an autofix ([#14188](https://redirect.github.com/astral-sh/ruff/pull/14188))
- \[`pyflakes`] Detect items that hash to same value in duplicate dictionaries (`F601`) ([#14065](https://redirect.github.com/astral-sh/ruff/pull/14065))
- \[`ruff`] Fix false positive for decorators (`RUF028`) ([#14061](https://redirect.github.com/astral-sh/ruff/pull/14061))
##### Bug fixes
- Avoid parsing joint rule codes as distinct codes in `# noqa` ([#12809](https://redirect.github.com/astral-sh/ruff/pull/12809))
- \[`eradicate`] ignore `# language=` in commented-out-code rule (ERA001) ([#14069](https://redirect.github.com/astral-sh/ruff/pull/14069))
- \[`flake8-bugbear`] - do not run `mutable-argument-default` on stubs (`B006`) ([#14058](https://redirect.github.com/astral-sh/ruff/pull/14058))
- \[`flake8-builtins`] Skip lambda expressions in `builtin-argument-shadowing (A002)` ([#14144](https://redirect.github.com/astral-sh/ruff/pull/14144))
- \[`flake8-comprehension`] Also remove trailing comma while fixing `C409` and `C419` ([#14097](https://redirect.github.com/astral-sh/ruff/pull/14097))
- \[`flake8-simplify`] Allow `open` without context manager in `return` statement (`SIM115`) ([#14066](https://redirect.github.com/astral-sh/ruff/pull/14066))
- \[`pylint`] Respect hash-equivalent literals in `iteration-over-set` (`PLC0208`) ([#14063](https://redirect.github.com/astral-sh/ruff/pull/14063))
- \[`pylint`] Update known dunder methods for Python 3.13 (`PLW3201`) ([#14146](https://redirect.github.com/astral-sh/ruff/pull/14146))
- \[`pyupgrade`] - ignore kwarg unpacking for `UP044` ([#14053](https://redirect.github.com/astral-sh/ruff/pull/14053))
- \[`refurb`] Parse more exotic decimal strings in `verbose-decimal-constructor` (`FURB157`) ([#14098](https://redirect.github.com/astral-sh/ruff/pull/14098))
##### Documentation
- Add links to missing related options within rule documentations ([#13971](https://redirect.github.com/astral-sh/ruff/pull/13971))
- Add rule short code to mkdocs tags to allow searching via rule codes ([#14040](https://redirect.github.com/astral-sh/ruff/pull/14040))
### [`v0.7.2`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#072)
[Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.7.1...0.7.2)
##### Preview features
- Fix formatting of single with-item with trailing comment ([#14005](https://redirect.github.com/astral-sh/ruff/pull/14005))
- \[`pyupgrade`] Add PEP 646 `Unpack` conversion to `*` with fix (`UP044`) ([#13988](https://redirect.github.com/astral-sh/ruff/pull/13988))
##### Rule changes
- Regenerate `known_stdlibs.rs` with stdlibs 2024.10.25 ([#13963](https://redirect.github.com/astral-sh/ruff/pull/13963))
- \[`flake8-no-pep420`] Skip namespace package enforcement for PEP 723 scripts (`INP001`) ([#13974](https://redirect.github.com/astral-sh/ruff/pull/13974))
##### Server
- Fix server panic when undoing an edit ([#14010](https://redirect.github.com/astral-sh/ruff/pull/14010))
##### Bug fixes
- Fix issues in discovering ruff in pip build environments ([#13881](https://redirect.github.com/astral-sh/ruff/pull/13881))
- \[`flake8-type-checking`] Fix false positive for `singledispatchmethod` (`TCH003`) ([#13941](https://redirect.github.com/astral-sh/ruff/pull/13941))
- \[`flake8-type-checking`] Treat return type of `singledispatch` as runtime-required (`TCH003`) ([#13957](https://redirect.github.com/astral-sh/ruff/pull/13957))
##### Documentation
- \[`flake8-simplify`] Include caveats of enabling `if-else-block-instead-of-if-exp` (`SIM108`) ([#14019](https://redirect.github.com/astral-sh/ruff/pull/14019))
### [`v0.7.1`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#071)
[Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.7.0...0.7.1)
##### Preview features
- Fix `E221` and `E222` to flag missing or extra whitespace around `==` operator ([#13890](https://redirect.github.com/astral-sh/ruff/pull/13890))
- Formatter: Alternate quotes for strings inside f-strings in preview ([#13860](https://redirect.github.com/astral-sh/ruff/pull/13860))
- Formatter: Join implicit concatenated strings when they fit on a line ([#13663](https://redirect.github.com/astral-sh/ruff/pull/13663))
- \[`pylint`] Restrict `iteration-over-set` to only work on sets of literals (`PLC0208`) ([#13731](https://redirect.github.com/astral-sh/ruff/pull/13731))
##### Rule changes
- \[`flake8-type-checking`] Support auto-quoting when annotations contain quotes ([#11811](https://redirect.github.com/astral-sh/ruff/pull/11811))
##### Server
- Avoid indexing the workspace for single-file mode ([#13770](https://redirect.github.com/astral-sh/ruff/pull/13770))
##### Bug fixes
- Make `ARG002` compatible with `EM101` when raising `NotImplementedError` ([#13714](https://redirect.github.com/astral-sh/ruff/pull/13714))
##### Other changes
- Introduce more Docker tags for Ruff (similar to uv) ([#13274](https://redirect.github.com/astral-sh/ruff/pull/13274))
### [`v0.7.0`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#070)
[Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.6.9...0.7.0)
Check out the [blog post](https://astral.sh/blog/ruff-v0.7.0) for a migration guide and overview of the changes!
##### Breaking changes
- The pytest rules `PT001` and `PT023` now default to omitting the decorator parentheses when there are no arguments
([#12838](https://redirect.github.com/astral-sh/ruff/pull/12838), [#13292](https://redirect.github.com/astral-sh/ruff/pull/13292)).
This was a change that we attempted to make in Ruff v0.6.0, but only partially made due to an error on our part.
See the [blog post](https://astral.sh/blog/ruff-v0.7.0) for more details.
- The `useless-try-except` rule (in our `tryceratops` category) has been recoded from `TRY302` to
`TRY203` ([#13502](https://redirect.github.com/astral-sh/ruff/pull/13502)). This ensures Ruff's code is consistent with
the same rule in the [`tryceratops`](https://redirect.github.com/guilatrova/tryceratops) linter.
- The `lint.allow-unused-imports` setting has been removed ([#13677](https://redirect.github.com/astral-sh/ruff/pull/13677)). Use
[`lint.pyflakes.allow-unused-imports`](https://docs.astral.sh/ruff/settings/#lint_pyflakes_allowed-unused-imports)
instead.
##### Formatter preview style
- Normalize implicit concatenated f-string quotes per part ([#13539](https://redirect.github.com/astral-sh/ruff/pull/13539))
##### Preview linter features
- \[`refurb`] implement `hardcoded-string-charset` (FURB156) ([#13530](https://redirect.github.com/astral-sh/ruff/pull/13530))
- \[`refurb`] Count codepoints not bytes for `slice-to-remove-prefix-or-suffix (FURB188)` ([#13631](https://redirect.github.com/astral-sh/ruff/pull/13631))
##### Rule changes
- \[`pylint`] Mark `PLE1141` fix as unsafe ([#13629](https://redirect.github.com/astral-sh/ruff/pull/13629))
- \[`flake8-async`] Consider async generators to be "checkpoints" for `cancel-scope-no-checkpoint` (`ASYNC100`) ([#13639](https://redirect.github.com/astral-sh/ruff/pull/13639))
- \[`flake8-bugbear`] Do not suggest setting parameter `strict=` to `False` in `B905` diagnostic message ([#13656](https://redirect.github.com/astral-sh/ruff/pull/13656))
- \[`flake8-todos`] Only flag the word "TODO", not words starting with "todo" (`TD006`) ([#13640](https://redirect.github.c
Configuration
📅 Schedule: Branch creation - "after 1am and before 3am every weekday" in timezone Etc/UTC, 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.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
[ ] If you want to rebase/retry this PR, check this box
This PR contains the following updates:
^2.2.6
->^2.3.0
^7.5.0
->^7.6.8
^0.1.2
->^0.1.4
^3.1.3
->^3.1.4
^0.15.3
->^0.15.5
^2.15.0
->^2.17.0
1.10.17
->1.10.19
^8.1.1
->^8.3.3
^8.1.1
->^8.3.3
^0.34.0
->^0.38.0
^6.0.1
->^6.0.2
<0.19
-><0.22
^0.4.5
->^0.8.0
^0.4.5
->^0.8.0
^8.2.3
->^8.5.0
^8.2.3
->^8.5.0
🔧 This Pull Request updates lock files to use the latest dependency versions.
Release Notes
nedbat/coveragepy (coverage)
### [`v7.6.8`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-768--2024-11-23) [Compare Source](https://redirect.github.com/nedbat/coveragepy/compare/7.6.7...7.6.8) - Fix: the LCOV report code assumed that a branch line that took no branches meant that the entire line was unexecuted. This isn't true in a few cases: the line might always raise an exception, or might have been optimized away. Fixes `issue 1896`\_. - Fix: similarly, the HTML report will now explain that a line that jumps to none of its expected destinations must have always raised an exception. Previously, it would say something nonsensical like, "line 4 didn't jump to line 5 because line 4 was never true, and it didn't jump to line 7 because line 4 was always true." This was also shown in `issue 1896`\_. .. \_issue 1896:[https://github.com/nedbat/coveragepy/issues/1896](https://redirect.github.com/nedbat/coveragepy/issues/1896)6 .. \_changes\_7-6-7: ### [`v7.6.7`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-767--2024-11-15) [Compare Source](https://redirect.github.com/nedbat/coveragepy/compare/7.6.6...7.6.7) - fix: ugh, the other assert from 7.6.5 can also be encountered in the wild, so it's been restored to a conditional. Sorry for the churn. .. \_changes\_7-6-6: ### [`v7.6.6`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-766--2024-11-15) [Compare Source](https://redirect.github.com/nedbat/coveragepy/compare/7.6.5...7.6.6) - One of the new asserts from 7.6.5 caused problems in real projects, as reported in `issue 1891`\_. The assert has been removed. .. \_issue 1891:[https://github.com/nedbat/coveragepy/issues/1891](https://redirect.github.com/nedbat/coveragepy/issues/1891)1 .. \_changes\_7-6-5: ### [`v7.6.5`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-765--2024-11-14) [Compare Source](https://redirect.github.com/nedbat/coveragepy/compare/7.6.4...7.6.5) - fix: fine-tuned the exact Python version (3.12.6) when exiting from `with` statements changed how they traced. This affected whether people saw the fix for `issue 1880`\_. - fix: isolate our code more from mocking in the os module that in rare cases can cause `bizarre behaviorgtsystem/lightkube (lightkube)
### [`v0.15.5`](https://redirect.github.com/gtsystem/lightkube/compare/v0.15.4...v0.15.5) [Compare Source](https://redirect.github.com/gtsystem/lightkube/compare/v0.15.4...v0.15.5) ### [`v0.15.4`](https://redirect.github.com/gtsystem/lightkube/releases/tag/v0.15.4) ##### What's Changed - Fix client config typing by [@DanielArndt](https://redirect.github.com/DanielArndt) in [https://github.com/gtsystem/lightkube/pull/60](https://redirect.github.com/gtsystem/lightkube/pull/60) - Document support for Kubernetes 1.30 by [@gtsystem](https://redirect.github.com/gtsystem) in [https://github.com/gtsystem/lightkube/pull/61](https://redirect.github.com/gtsystem/lightkube/pull/61) - Fix issue [#63](https://redirect.github.com/gtsystem/lightkube/issues/63), where pyright cannot recognize the correct type for some client methods by [@gtsystem](https://redirect.github.com/gtsystem) in [https://github.com/gtsystem/lightkube/pull/64](https://redirect.github.com/gtsystem/lightkube/pull/64) - Update 'config' type hint for lightkube.core.async_client.AsyncClient by [@benfiola](https://redirect.github.com/benfiola) in [https://github.com/gtsystem/lightkube/pull/67](https://redirect.github.com/gtsystem/lightkube/pull/67) - Ensure apiVersion and kind are set for 'list' requests by [@benfiola](https://redirect.github.com/benfiola) in [https://github.com/gtsystem/lightkube/pull/68](https://redirect.github.com/gtsystem/lightkube/pull/68) - Set `__all__` in `__init__.py` by [@max-muoto](https://redirect.github.com/max-muoto) in [https://github.com/gtsystem/lightkube/pull/70](https://redirect.github.com/gtsystem/lightkube/pull/70) - Add support for dry-run by [@michaeldmitry](https://redirect.github.com/michaeldmitry) in [https://github.com/gtsystem/lightkube/pull/74](https://redirect.github.com/gtsystem/lightkube/pull/74) ##### New Contributors - [@DanielArndt](https://redirect.github.com/DanielArndt) made their first contribution in [https://github.com/gtsystem/lightkube/pull/60](https://redirect.github.com/gtsystem/lightkube/pull/60) - [@benfiola](https://redirect.github.com/benfiola) made their first contribution in [https://github.com/gtsystem/lightkube/pull/67](https://redirect.github.com/gtsystem/lightkube/pull/67) - [@max-muoto](https://redirect.github.com/max-muoto) made their first contribution in [https://github.com/gtsystem/lightkube/pull/70](https://redirect.github.com/gtsystem/lightkube/pull/70) - [@michaeldmitry](https://redirect.github.com/michaeldmitry) made their first contribution in [https://github.com/gtsystem/lightkube/pull/74](https://redirect.github.com/gtsystem/lightkube/pull/74) **Full Changelog**: https://github.com/gtsystem/lightkube/compare/v0.15.2...v0.15.4canonical/operator (ops)
### [`v2.17.0`](https://redirect.github.com/canonical/operator/blob/HEAD/CHANGES.md#2170---26-Sep-2024) [Compare Source](https://redirect.github.com/canonical/operator/compare/2.16.1...2.17.0) #### Features - Optionally install Scenario with `ops[testing]` and expose the names in ops.testing ([#1381](https://redirect.github.com/canonical/operator/issues/1381)) - Change ops.main() so that you don't need to `type: ignore` it ([#1345](https://redirect.github.com/canonical/operator/issues/1345)) - Expand the secret ID out to the full URI when only given the ID ([#1358](https://redirect.github.com/canonical/operator/issues/1358)) - Add a JujuVersion property for Pebble log forwarding to Loki ([#1370](https://redirect.github.com/canonical/operator/issues/1370)) - Pre-emptively raise `InvalidStatusError` instead of waiting for Juju: - Make it an error to call `CollectStatusEvent.add_status` with error or unknown ([#1386](https://redirect.github.com/canonical/operator/issues/1386)) - Document and validate settable status values in `_ModelBackend.set_status` ([#1354](https://redirect.github.com/canonical/operator/issues/1354)) #### Fixes - Fix type of `StatusBase` subclasses by calling `StatusBase.register` in `__init_subclass__` ([#1383](https://redirect.github.com/canonical/operator/issues/1383)) - `Secret.set_info` and `Secret.set_content` can be called in the same hook ([#1373](https://redirect.github.com/canonical/operator/issues/1373)) #### Documentation - Add top-level intro and module-level intros ([#1320](https://redirect.github.com/canonical/operator/issues/1320)) - Update the links to the Pebble docs ([#1362](https://redirect.github.com/canonical/operator/issues/1362)) - Note about repeatedly setting secret value in Juju 3.6 ([#1366](https://redirect.github.com/canonical/operator/issues/1366)) - `config-changed` is triggered by Juju trust ([#1357](https://redirect.github.com/canonical/operator/issues/1357)) - Typo on `CharmBase` inheritance example by [@theofpa](https://redirect.github.com/theofpa) ([#1349](https://redirect.github.com/canonical/operator/issues/1349)) - Docs: move Pebble to a separate page ([#1392](https://redirect.github.com/canonical/operator/issues/1392)) #### Continuous Integration - Periodically run the unit tests of all GitHub-hosted published charms ([#1365](https://redirect.github.com/canonical/operator/issues/1365)) - Update the TIOBE reporting for the changes in coverage calculation ([#1367](https://redirect.github.com/canonical/operator/issues/1367)) - Spell-check the code as part of linting ([#1388](https://redirect.github.com/canonical/operator/issues/1388)) - Run the smoke tests on a schedule ([#1387](https://redirect.github.com/canonical/operator/issues/1387)) #### Testing - Fix tests that leaked environment variables ([#1385](https://redirect.github.com/canonical/operator/issues/1385)) #### Refactoring - Move the content of `ops.testing` to `ops._private.harness` ([#1369](https://redirect.github.com/canonical/operator/issues/1369)) - Keep the `unittest.mock` names in the 'mock' namespace ([#1379](https://redirect.github.com/canonical/operator/issues/1379)) - Deprecate `StatusBase.register` decorator ([#1384](https://redirect.github.com/canonical/operator/issues/1384)) #### Chores - Note Juju version on legacy workaround ([#1355](https://redirect.github.com/canonical/operator/issues/1355)) - Re-enable test now that Pebble directory permissions are fixed ([#1363](https://redirect.github.com/canonical/operator/issues/1363)) - Generate warnings for events that will be removed in Juju 4.0 ([#1374](https://redirect.github.com/canonical/operator/issues/1374)) ### [`v2.16.1`](https://redirect.github.com/canonical/operator/blob/HEAD/CHANGES.md#2161---5-Sep-2024) [Compare Source](https://redirect.github.com/canonical/operator/compare/2.16.0...2.16.1) #### Fix - Don't alter os.environ when creating a Harness ([#1359](https://redirect.github.com/canonical/operator/issues/1359)) ### [`v2.16.0`](https://redirect.github.com/canonical/operator/blob/HEAD/CHANGES.md#2160---29-Aug-2024) [Compare Source](https://redirect.github.com/canonical/operator/compare/2.15.0...2.16.0) #### Features - Add the description field to SecretInfo in ([#1338](https://redirect.github.com/canonical/operator/issues/1338)) #### Refactor - Parse JUJU_\* environment variables in one place in ([#1313](https://redirect.github.com/canonical/operator/issues/1313)) #### Fixes - Fix reading Juju secret expiry dates in ([#1317](https://redirect.github.com/canonical/operator/issues/1317)) - Correct the signature of .events() in ([#1342](https://redirect.github.com/canonical/operator/issues/1342)) #### Documentation - Security policy change to only support each active major release in ([#1297](https://redirect.github.com/canonical/operator/issues/1297)) - Add Juju version markers in ([#1311](https://redirect.github.com/canonical/operator/issues/1311)) - Use Sphinx 8 in ([#1303](https://redirect.github.com/canonical/operator/issues/1303)) - Live reload documentation with sphinx-autobuild in ([#1323](https://redirect.github.com/canonical/operator/issues/1323)) #### Tests - Update the smoke test series/bases in ([#1318](https://redirect.github.com/canonical/operator/issues/1318)) - Run pytest in parallel with pytest xdist in ([#1319](https://redirect.github.com/canonical/operator/issues/1319)) - Bump Pyright to 1.1.377 in ([#1332](https://redirect.github.com/canonical/operator/issues/1332)) - Run tests on Python 3.12 and the install test on Python 3.13 in ([#1315](https://redirect.github.com/canonical/operator/issues/1315)) #### CI - Add a workflow that runs the TIOBE quality checks in ([#1301](https://redirect.github.com/canonical/operator/issues/1301)) - Allow executing the TIOBE workflow manually in ([#1321](https://redirect.github.com/canonical/operator/issues/1321)) - Make Pyright report unnecessary type ignore comments in ([#1333](https://redirect.github.com/canonical/operator/issues/1333)) - Enable linting of docs/custom_conf.py in ([#1330](https://redirect.github.com/canonical/operator/issues/1330))pydantic/pydantic (pydantic)
### [`v1.10.19`](https://redirect.github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v11019-2024-11-06) [Compare Source](https://redirect.github.com/pydantic/pydantic/compare/v1.10.18...v1.10.19) - Add warning when v2 model is nested in v1 model by [@sydney-runkle](https://redirect.github.com/sydney-runkle) in [https://github.com/pydantic/pydantic/pull/10432](https://redirect.github.com/pydantic/pydantic/pull/10432) - Fix deprecation warning in V1 `isinstance` check by [@alicederyn](https://redirect.github.com/alicederyn) in [https://github.com/pydantic/pydantic/pull/10645](https://redirect.github.com/pydantic/pydantic/pull/10645) ### [`v1.10.18`](https://redirect.github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v11018-2024-08-22) [Compare Source](https://redirect.github.com/pydantic/pydantic/compare/v1.10.17...v1.10.18) - Eval type fix in V1 by [@sydney-runkle](https://redirect.github.com/sydney-runkle) in [https://github.com/pydantic/pydantic/pull/9751](https://redirect.github.com/pydantic/pydantic/pull/9751) - Add `to_lower_camel` to `__all__` in `utils.py` by [@sydney-runkle](https://redirect.github.com/sydney-runkle) (direct commit) - Fix `mypy` v1 plugin for mypy 1.11 release by [@flaeppe](https://redirect.github.com/flaeppe) in [https://github.com/pydantic/pydantic/pull/10139](https://redirect.github.com/pydantic/pydantic/pull/10139) - Fix discriminator key used when discriminator has alias and `.schema(by_alias=False)` by [@exs-dwoodward](https://redirect.github.com/exs-dwoodward) in [https://github.com/pydantic/pydantic/pull/10146](https://redirect.github.com/pydantic/pydantic/pull/10146)pytest-dev/pytest (pytest)
### [`v8.3.3`](https://redirect.github.com/pytest-dev/pytest/releases/tag/8.3.3) [Compare Source](https://redirect.github.com/pytest-dev/pytest/compare/8.3.2...8.3.3) # pytest 8.3.3 (2024-09-09) ## Bug fixes - [#12446](https://redirect.github.com/pytest-dev/pytest/issues/12446): Avoid calling `@property` (and other instance descriptors) during fixture discovery -- by `asottile`{.interpreted-text role="user"} - [#12659](https://redirect.github.com/pytest-dev/pytest/issues/12659): Fixed the issue of not displaying assertion failure differences when using the parameter `--import-mode=importlib` in pytest>=8.1. - [#12667](https://redirect.github.com/pytest-dev/pytest/issues/12667): Fixed a regression where type change in \[ExceptionInfo.errisinstance]{.title-ref} caused \[mypy]{.title-ref} to fail. - [#12744](https://redirect.github.com/pytest-dev/pytest/issues/12744): Fixed typing compatibility with Python 3.9 or less -- replaced \[typing.Self]{.title-ref} with \[typing_extensions.Self]{.title-ref} -- by `Avasam`{.interpreted-text role="user"} - [#12745](https://redirect.github.com/pytest-dev/pytest/issues/12745): Fixed an issue with backslashes being incorrectly converted in nodeid paths on Windows, ensuring consistent path handling across environments. - [#6682](https://redirect.github.com/pytest-dev/pytest/issues/6682): Fixed bug where the verbosity levels where not being respected when printing the "msg" part of failed assertion (as in `assert condition, msg`). - [#9422](https://redirect.github.com/pytest-dev/pytest/issues/9422): Fix bug where disabling the terminal plugin via `-p no:terminal` would cause crashes related to missing the `verbose` option. \-- by `GTowers1`{.interpreted-text role="user"} ## Improved documentation - [#12663](https://redirect.github.com/pytest-dev/pytest/issues/12663): Clarify that the \[pytest_deselected]{.title-ref} hook should be called from \[pytest_collection_modifyitems]{.title-ref} hook implementations when items are deselected. - [#12678](https://redirect.github.com/pytest-dev/pytest/issues/12678): Remove erroneous quotes from \[tmp_path_retention_policy]{.title-ref} example in docs. ## Miscellaneous internal changes - [#12769](https://redirect.github.com/pytest-dev/pytest/issues/12769): Fix typos discovered by codespell and add codespell to pre-commit hooks.charmed-kubernetes/pytest-operator (pytest-operator)
### [`v0.37.0`](https://redirect.github.com/charmed-kubernetes/pytest-operator/releases/tag/v0.37.0): 0.37.0 [Compare Source](https://redirect.github.com/charmed-kubernetes/pytest-operator/compare/v0.36.0...v0.37.0)crate-py/rpds (rpds-py)
### [`v0.21.0`](https://redirect.github.com/crate-py/rpds/releases/tag/v0.21.0) [Compare Source](https://redirect.github.com/crate-py/rpds/compare/v0.20.1...v0.21.0) #### What's Changed - bump pyO3 to 0.22.6 by [@minrk](https://redirect.github.com/minrk) in [https://github.com/crate-py/rpds/pull/97](https://redirect.github.com/crate-py/rpds/pull/97) #### New Contributors - [@minrk](https://redirect.github.com/minrk) made their first contribution in [https://github.com/crate-py/rpds/pull/97](https://redirect.github.com/crate-py/rpds/pull/97) **Full Changelog**: https://github.com/crate-py/rpds/compare/v0.20.1...v0.21.0 ### [`v0.20.1`](https://redirect.github.com/crate-py/rpds/releases/tag/v0.20.1) [Compare Source](https://redirect.github.com/crate-py/rpds/compare/v0.20.0...v0.20.1) #### What's Changed - Fix hashing overflow issues ([#86](https://redirect.github.com/crate-py/rpds/issues/86)) by [@FlickerSoul](https://redirect.github.com/FlickerSoul) in [https://github.com/crate-py/rpds/pull/87](https://redirect.github.com/crate-py/rpds/pull/87) **Full Changelog**: https://github.com/crate-py/rpds/compare/v0.20.0...v0.20.1 ### [`v0.20.0`](https://redirect.github.com/crate-py/rpds/releases/tag/v0.20.0) [Compare Source](https://redirect.github.com/crate-py/rpds/compare/v0.19.1...v0.20.0) #### What's Changed - Implements `__hash__` for collections by [@FlickerSoul](https://redirect.github.com/FlickerSoul) in [https://github.com/crate-py/rpds/pull/81](https://redirect.github.com/crate-py/rpds/pull/81) **Full Changelog**: https://github.com/crate-py/rpds/compare/v0.19.1...v0.20.0 ### [`v0.19.1`](https://redirect.github.com/crate-py/rpds/releases/tag/v0.19.1) [Compare Source](https://redirect.github.com/crate-py/rpds/compare/v0.19.0...v0.19.1) #### What's Changed - Make Python versions in GitHub Actions consistent by [@rominf](https://redirect.github.com/rominf) in [https://github.com/crate-py/rpds/pull/80](https://redirect.github.com/crate-py/rpds/pull/80) #### New Contributors - [@rominf](https://redirect.github.com/rominf) made their first contribution in [https://github.com/crate-py/rpds/pull/80](https://redirect.github.com/crate-py/rpds/pull/80) **Full Changelog**: https://github.com/crate-py/rpds/compare/v0.19.0...v0.19.1 ### [`v0.19.0`](https://redirect.github.com/crate-py/rpds/releases/tag/v0.19.0) [Compare Source](https://redirect.github.com/crate-py/rpds/compare/v0.18.1...v0.19.0) #### What's Changed - deps: bump libc from 0.2.147 to 0.2.155 by [@wxpppp](https://redirect.github.com/wxpppp) in [https://github.com/crate-py/rpds/pull/74](https://redirect.github.com/crate-py/rpds/pull/74) - Make Python 3.13 Compatible by [@FlickerSoul](https://redirect.github.com/FlickerSoul) in [https://github.com/crate-py/rpds/pull/79](https://redirect.github.com/crate-py/rpds/pull/79) #### New Contributors - [@wxpppp](https://redirect.github.com/wxpppp) made their first contribution in [https://github.com/crate-py/rpds/pull/74](https://redirect.github.com/crate-py/rpds/pull/74) - [@FlickerSoul](https://redirect.github.com/FlickerSoul) made their first contribution in [https://github.com/crate-py/rpds/pull/79](https://redirect.github.com/crate-py/rpds/pull/79) **Full Changelog**: https://github.com/crate-py/rpds/compare/v0.18.1...v0.19.0astral-sh/ruff (ruff)
### [`v0.8.0`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#080) [Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.7.4...0.8.0) Check out the [blog post](https://astral.sh/blog/ruff-v0.8.0) for a migration guide and overview of the changes! ##### Breaking changes See also, the "Remapped rules" section which may result in disabled rules. - **Default to Python 3.9** Ruff now defaults to Python 3.9 instead of 3.8 if no explicit Python version is configured using [`ruff.target-version`](https://docs.astral.sh/ruff/settings/#target-version) or [`project.requires-python`](https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#python-requires) ([#13896](https://redirect.github.com/astral-sh/ruff/pull/13896)) - **Changed location of `pydoclint` diagnostics** [`pydoclint`](https://docs.astral.sh/ruff/rules/#pydoclint-doc) diagnostics now point to the first-line of the problematic docstring. Previously, this was not the case. If you've opted into these preview rules but have them suppressed using [`noqa`](https://docs.astral.sh/ruff/linter/#error-suppression) comments in some places, this change may mean that you need to move the `noqa` suppression comments. Most users should be unaffected by this change. - **Use XDG (i.e. `~/.local/bin`) instead of the Cargo home directory in the standalone installer** Previously, Ruff's installer used `$CARGO_HOME` or `~/.cargo/bin` for its target install directory. Now, Ruff will be installed into `$XDG_BIN_HOME`, `$XDG_DATA_HOME/../bin`, or `~/.local/bin` (in that order). This change is only relevant to users of the standalone Ruff installer (using the shell or PowerShell script). If you installed Ruff using uv or pip, you should be unaffected. - **Changes to the line width calculation** Ruff now uses a new version of the [unicode-width](https://redirect.github.com/unicode-rs/unicode-width) Rust crate to calculate the line width. In very rare cases, this may lead to lines containing Unicode characters being reformatted, or being considered too long when they were not before ([`E501`](https://docs.astral.sh/ruff/rules/line-too-long/)). ##### Removed Rules The following deprecated rules have been removed: - [`missing-type-self`](https://docs.astral.sh/ruff/rules/missing-type-self/) (`ANN101`) - [`missing-type-cls`](https://docs.astral.sh/ruff/rules/missing-type-cls/) (`ANN102`) - [`syntax-error`](https://docs.astral.sh/ruff/rules/syntax-error/) (`E999`) - [`pytest-missing-fixture-name-underscore`](https://docs.astral.sh/ruff/rules/pytest-missing-fixture-name-underscore/) (`PT004`) - [`pytest-incorrect-fixture-name-underscore`](https://docs.astral.sh/ruff/rules/pytest-incorrect-fixture-name-underscore/) (`PT005`) - [`unpacked-list-comprehension`](https://docs.astral.sh/ruff/rules/unpacked-list-comprehension/) (`UP027`) ##### Remapped rules The following rules have been remapped to new rule codes: - [`flake8-type-checking`](https://docs.astral.sh/ruff/rules/#flake8-type-checking-tc): `TCH` to `TC` ##### Stabilization The following rules have been stabilized and are no longer in preview: - [`builtin-import-shadowing`](https://docs.astral.sh/ruff/rules/builtin-import-shadowing/) (`A004`) - [`mutable-contextvar-default`](https://docs.astral.sh/ruff/rules/mutable-contextvar-default/) (`B039`) - [`fast-api-redundant-response-model`](https://docs.astral.sh/ruff/rules/fast-api-redundant-response-model/) (`FAST001`) - [`fast-api-non-annotated-dependency`](https://docs.astral.sh/ruff/rules/fast-api-non-annotated-dependency/) (`FAST002`) - [`dict-index-missing-items`](https://docs.astral.sh/ruff/rules/dict-index-missing-items/) (`PLC0206`) - [`pep484-style-positional-only-argument`](https://docs.astral.sh/ruff/rules/pep484-style-positional-only-argument/) (`PYI063`) - [`redundant-final-literal`](https://docs.astral.sh/ruff/rules/redundant-final-literal/) (`PYI064`) - [`bad-version-info-order`](https://docs.astral.sh/ruff/rules/bad-version-info-order/) (`PYI066`) - [`parenthesize-chained-operators`](https://docs.astral.sh/ruff/rules/parenthesize-chained-operators/) (`RUF021`) - [`unsorted-dunder-all`](https://docs.astral.sh/ruff/rules/unsorted-dunder-all/) (`RUF022`) - [`unsorted-dunder-slots`](https://docs.astral.sh/ruff/rules/unsorted-dunder-slots/) (`RUF023`) - [`assert-with-print-message`](https://docs.astral.sh/ruff/rules/assert-with-print-message/) (`RUF030`) - [`unnecessary-default-type-args`](https://docs.astral.sh/ruff/rules/unnecessary-default-type-args/) (`UP043`) The following behaviors have been stabilized: - [`ambiguous-variable-name`](https://docs.astral.sh/ruff/rules/ambiguous-variable-name/) (`E741`): Violations in stub files are now ignored. Stub authors typically don't control variable names. - [`printf-string-formatting`](https://docs.astral.sh/ruff/rules/printf-string-formatting/) (`UP031`): Report all `printf`-like usages even if no autofix is available The following fixes have been stabilized: - [`zip-instead-of-pairwise`](https://docs.astral.sh/ruff/rules/zip-instead-of-pairwise/) (`RUF007`) ##### Preview features - \[`flake8-datetimez`] Exempt `min.time()` and `max.time()` (`DTZ901`) ([#14394](https://redirect.github.com/astral-sh/ruff/pull/14394)) - \[`flake8-pie`] Mark fix as unsafe if the following statement is a string literal (`PIE790`) ([#14393](https://redirect.github.com/astral-sh/ruff/pull/14393)) - \[`flake8-pyi`] New rule `redundant-none-literal` (`PYI061`) ([#14316](https://redirect.github.com/astral-sh/ruff/pull/14316)) - \[`flake8-pyi`] Add autofix for `redundant-numeric-union` (`PYI041`) ([#14273](https://redirect.github.com/astral-sh/ruff/pull/14273)) - \[`ruff`] New rule `map-int-version-parsing` (`RUF048`) ([#14373](https://redirect.github.com/astral-sh/ruff/pull/14373)) - \[`ruff`] New rule `redundant-bool-literal` (`RUF038`) ([#14319](https://redirect.github.com/astral-sh/ruff/pull/14319)) - \[`ruff`] New rule `unraw-re-pattern` (`RUF039`) ([#14446](https://redirect.github.com/astral-sh/ruff/pull/14446)) - \[`pycodestyle`] Exempt `pytest.importorskip()` calls (`E402`) ([#14474](https://redirect.github.com/astral-sh/ruff/pull/14474)) - \[`pylint`] Autofix suggests using sets when possible (`PLR1714`) ([#14372](https://redirect.github.com/astral-sh/ruff/pull/14372)) ##### Rule changes - [`invalid-pyproject-toml`](https://docs.astral.sh/ruff/rules/invalid-pyproject-toml/) (`RUF200`): Updated to reflect the provisionally accepted [PEP 639](https://peps.python.org/pep-0639/). - \[`flake8-pyi`] Avoid panic in unfixable case (`PYI041`) ([#14402](https://redirect.github.com/astral-sh/ruff/pull/14402)) - \[`flake8-type-checking`] Correctly handle quotes in subscript expression when generating an autofix ([#14371](https://redirect.github.com/astral-sh/ruff/pull/14371)) - \[`pylint`] Suggest correct autofix for `__contains__` (`PLC2801`) ([#14424](https://redirect.github.com/astral-sh/ruff/pull/14424)) ##### Configuration - Ruff now emits a warning instead of an error when a configuration [`ignore`](https://docs.astral.sh/ruff/settings/#lint_ignore)s a rule that has been removed ([#14435](https://redirect.github.com/astral-sh/ruff/pull/14435)) - Ruff now validates that `lint.flake8-import-conventions.aliases` only uses valid module names and aliases ([#14477](https://redirect.github.com/astral-sh/ruff/pull/14477)) ### [`v0.7.4`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#074) [Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.7.3...0.7.4) ##### Preview features - \[`flake8-datetimez`] Detect usages of `datetime.max`/`datetime.min` (`DTZ901`) ([#14288](https://redirect.github.com/astral-sh/ruff/pull/14288)) - \[`flake8-logging`] Implement `root-logger-calls` (`LOG015`) ([#14302](https://redirect.github.com/astral-sh/ruff/pull/14302)) - \[`flake8-no-pep420`] Detect empty implicit namespace packages (`INP001`) ([#14236](https://redirect.github.com/astral-sh/ruff/pull/14236)) - \[`flake8-pyi`] Add "replace with `Self`" fix (`PYI019`) ([#14238](https://redirect.github.com/astral-sh/ruff/pull/14238)) - \[`perflint`] Implement quick-fix for `manual-list-comprehension` (`PERF401`) ([#13919](https://redirect.github.com/astral-sh/ruff/pull/13919)) - \[`pylint`] Implement `shallow-copy-environ` (`W1507`) ([#14241](https://redirect.github.com/astral-sh/ruff/pull/14241)) - \[`ruff`] Implement `none-not-at-end-of-union` (`RUF036`) ([#14314](https://redirect.github.com/astral-sh/ruff/pull/14314)) - \[`ruff`] Implementation `unsafe-markup-call` from `flake8-markupsafe` plugin (`RUF035`) ([#14224](https://redirect.github.com/astral-sh/ruff/pull/14224)) - \[`ruff`] Report problems for `attrs` dataclasses (`RUF008`, `RUF009`) ([#14327](https://redirect.github.com/astral-sh/ruff/pull/14327)) ##### Rule changes - \[`flake8-boolean-trap`] Exclude dunder methods that define operators (`FBT001`) ([#14203](https://redirect.github.com/astral-sh/ruff/pull/14203)) - \[`flake8-pyi`] Add "replace with `Self`" fix (`PYI034`) ([#14217](https://redirect.github.com/astral-sh/ruff/pull/14217)) - \[`flake8-pyi`] Always autofix `duplicate-union-members` (`PYI016`) ([#14270](https://redirect.github.com/astral-sh/ruff/pull/14270)) - \[`flake8-pyi`] Improve autofix for nested and mixed type unions for `unnecessary-type-union` (`PYI055`) ([#14272](https://redirect.github.com/astral-sh/ruff/pull/14272)) - \[`flake8-pyi`] Mark fix as unsafe when type annotation contains comments for `duplicate-literal-member` (`PYI062`) ([#14268](https://redirect.github.com/astral-sh/ruff/pull/14268)) ##### Server - Use the current working directory to resolve settings from `ruff.configuration` ([#14352](https://redirect.github.com/astral-sh/ruff/pull/14352)) ##### Bug fixes - Avoid conflicts between `PLC014` (`useless-import-alias`) and `I002` (`missing-required-import`) by considering `lint.isort.required-imports` for `PLC014` ([#14287](https://redirect.github.com/astral-sh/ruff/pull/14287)) - \[`flake8-type-checking`] Skip quoting annotation if it becomes invalid syntax (`TCH001`) - \[`flake8-pyi`] Avoid using `typing.Self` in stub files pre-Python 3.11 (`PYI034`) ([#14230](https://redirect.github.com/astral-sh/ruff/pull/14230)) - \[`flake8-pytest-style`] Flag `pytest.raises` call with keyword argument `expected_exception` (`PT011`) ([#14298](https://redirect.github.com/astral-sh/ruff/pull/14298)) - \[`flake8-simplify`] Infer "unknown" truthiness for literal iterables whose items are all unpacks (`SIM222`) ([#14263](https://redirect.github.com/astral-sh/ruff/pull/14263)) - \[`flake8-type-checking`] Fix false positives for `typing.Annotated` (`TCH001`) ([#14311](https://redirect.github.com/astral-sh/ruff/pull/14311)) - \[`pylint`] Allow `await` at the top-level scope of a notebook (`PLE1142`) ([#14225](https://redirect.github.com/astral-sh/ruff/pull/14225)) - \[`pylint`] Fix miscellaneous issues in `await-outside-async` detection (`PLE1142`) ([#14218](https://redirect.github.com/astral-sh/ruff/pull/14218)) - \[`pyupgrade`] Avoid applying PEP 646 rewrites in invalid contexts (`UP044`) ([#14234](https://redirect.github.com/astral-sh/ruff/pull/14234)) - \[`pyupgrade`] Detect permutations in redundant open modes (`UP015`) ([#14255](https://redirect.github.com/astral-sh/ruff/pull/14255)) - \[`refurb`] Avoid triggering `hardcoded-string-charset` for reordered sets (`FURB156`) ([#14233](https://redirect.github.com/astral-sh/ruff/pull/14233)) - \[`refurb`] Further special cases added to `verbose-decimal-constructor` (`FURB157`) ([#14216](https://redirect.github.com/astral-sh/ruff/pull/14216)) - \[`refurb`] Use `UserString` instead of non-existent `UserStr` (`FURB189`) ([#14209](https://redirect.github.com/astral-sh/ruff/pull/14209)) - \[`ruff`] Avoid treating lowercase letters as `# noqa` codes (`RUF100`) ([#14229](https://redirect.github.com/astral-sh/ruff/pull/14229)) - \[`ruff`] Do not report when `Optional` has no type arguments (`RUF013`) ([#14181](https://redirect.github.com/astral-sh/ruff/pull/14181)) ##### Documentation - Add "Notebook behavior" section for `F704`, `PLE1142` ([#14266](https://redirect.github.com/astral-sh/ruff/pull/14266)) - Document comment policy around fix safety ([#14300](https://redirect.github.com/astral-sh/ruff/pull/14300)) ### [`v0.7.3`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#073) [Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.7.2...0.7.3) ##### Preview features - Formatter: Disallow single-line implicit concatenated strings ([#13928](https://redirect.github.com/astral-sh/ruff/pull/13928)) - \[`flake8-pyi`] Include all Python file types for `PYI006` and `PYI066` ([#14059](https://redirect.github.com/astral-sh/ruff/pull/14059)) - \[`flake8-simplify`] Implement `split-of-static-string` (`SIM905`) ([#14008](https://redirect.github.com/astral-sh/ruff/pull/14008)) - \[`refurb`] Implement `subclass-builtin` (`FURB189`) ([#14105](https://redirect.github.com/astral-sh/ruff/pull/14105)) - \[`ruff`] Improve diagnostic messages and docs (`RUF031`, `RUF032`, `RUF034`) ([#14068](https://redirect.github.com/astral-sh/ruff/pull/14068)) ##### Rule changes - Detect items that hash to same value in duplicate sets (`B033`, `PLC0208`) ([#14064](https://redirect.github.com/astral-sh/ruff/pull/14064)) - \[`eradicate`] Better detection of IntelliJ language injection comments (`ERA001`) ([#14094](https://redirect.github.com/astral-sh/ruff/pull/14094)) - \[`flake8-pyi`] Add autofix for `docstring-in-stub` (`PYI021`) ([#14150](https://redirect.github.com/astral-sh/ruff/pull/14150)) - \[`flake8-pyi`] Update `duplicate-literal-member` (`PYI062`) to alawys provide an autofix ([#14188](https://redirect.github.com/astral-sh/ruff/pull/14188)) - \[`pyflakes`] Detect items that hash to same value in duplicate dictionaries (`F601`) ([#14065](https://redirect.github.com/astral-sh/ruff/pull/14065)) - \[`ruff`] Fix false positive for decorators (`RUF028`) ([#14061](https://redirect.github.com/astral-sh/ruff/pull/14061)) ##### Bug fixes - Avoid parsing joint rule codes as distinct codes in `# noqa` ([#12809](https://redirect.github.com/astral-sh/ruff/pull/12809)) - \[`eradicate`] ignore `# language=` in commented-out-code rule (ERA001) ([#14069](https://redirect.github.com/astral-sh/ruff/pull/14069)) - \[`flake8-bugbear`] - do not run `mutable-argument-default` on stubs (`B006`) ([#14058](https://redirect.github.com/astral-sh/ruff/pull/14058)) - \[`flake8-builtins`] Skip lambda expressions in `builtin-argument-shadowing (A002)` ([#14144](https://redirect.github.com/astral-sh/ruff/pull/14144)) - \[`flake8-comprehension`] Also remove trailing comma while fixing `C409` and `C419` ([#14097](https://redirect.github.com/astral-sh/ruff/pull/14097)) - \[`flake8-simplify`] Allow `open` without context manager in `return` statement (`SIM115`) ([#14066](https://redirect.github.com/astral-sh/ruff/pull/14066)) - \[`pylint`] Respect hash-equivalent literals in `iteration-over-set` (`PLC0208`) ([#14063](https://redirect.github.com/astral-sh/ruff/pull/14063)) - \[`pylint`] Update known dunder methods for Python 3.13 (`PLW3201`) ([#14146](https://redirect.github.com/astral-sh/ruff/pull/14146)) - \[`pyupgrade`] - ignore kwarg unpacking for `UP044` ([#14053](https://redirect.github.com/astral-sh/ruff/pull/14053)) - \[`refurb`] Parse more exotic decimal strings in `verbose-decimal-constructor` (`FURB157`) ([#14098](https://redirect.github.com/astral-sh/ruff/pull/14098)) ##### Documentation - Add links to missing related options within rule documentations ([#13971](https://redirect.github.com/astral-sh/ruff/pull/13971)) - Add rule short code to mkdocs tags to allow searching via rule codes ([#14040](https://redirect.github.com/astral-sh/ruff/pull/14040)) ### [`v0.7.2`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#072) [Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.7.1...0.7.2) ##### Preview features - Fix formatting of single with-item with trailing comment ([#14005](https://redirect.github.com/astral-sh/ruff/pull/14005)) - \[`pyupgrade`] Add PEP 646 `Unpack` conversion to `*` with fix (`UP044`) ([#13988](https://redirect.github.com/astral-sh/ruff/pull/13988)) ##### Rule changes - Regenerate `known_stdlibs.rs` with stdlibs 2024.10.25 ([#13963](https://redirect.github.com/astral-sh/ruff/pull/13963)) - \[`flake8-no-pep420`] Skip namespace package enforcement for PEP 723 scripts (`INP001`) ([#13974](https://redirect.github.com/astral-sh/ruff/pull/13974)) ##### Server - Fix server panic when undoing an edit ([#14010](https://redirect.github.com/astral-sh/ruff/pull/14010)) ##### Bug fixes - Fix issues in discovering ruff in pip build environments ([#13881](https://redirect.github.com/astral-sh/ruff/pull/13881)) - \[`flake8-type-checking`] Fix false positive for `singledispatchmethod` (`TCH003`) ([#13941](https://redirect.github.com/astral-sh/ruff/pull/13941)) - \[`flake8-type-checking`] Treat return type of `singledispatch` as runtime-required (`TCH003`) ([#13957](https://redirect.github.com/astral-sh/ruff/pull/13957)) ##### Documentation - \[`flake8-simplify`] Include caveats of enabling `if-else-block-instead-of-if-exp` (`SIM108`) ([#14019](https://redirect.github.com/astral-sh/ruff/pull/14019)) ### [`v0.7.1`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#071) [Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.7.0...0.7.1) ##### Preview features - Fix `E221` and `E222` to flag missing or extra whitespace around `==` operator ([#13890](https://redirect.github.com/astral-sh/ruff/pull/13890)) - Formatter: Alternate quotes for strings inside f-strings in preview ([#13860](https://redirect.github.com/astral-sh/ruff/pull/13860)) - Formatter: Join implicit concatenated strings when they fit on a line ([#13663](https://redirect.github.com/astral-sh/ruff/pull/13663)) - \[`pylint`] Restrict `iteration-over-set` to only work on sets of literals (`PLC0208`) ([#13731](https://redirect.github.com/astral-sh/ruff/pull/13731)) ##### Rule changes - \[`flake8-type-checking`] Support auto-quoting when annotations contain quotes ([#11811](https://redirect.github.com/astral-sh/ruff/pull/11811)) ##### Server - Avoid indexing the workspace for single-file mode ([#13770](https://redirect.github.com/astral-sh/ruff/pull/13770)) ##### Bug fixes - Make `ARG002` compatible with `EM101` when raising `NotImplementedError` ([#13714](https://redirect.github.com/astral-sh/ruff/pull/13714)) ##### Other changes - Introduce more Docker tags for Ruff (similar to uv) ([#13274](https://redirect.github.com/astral-sh/ruff/pull/13274)) ### [`v0.7.0`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#070) [Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.6.9...0.7.0) Check out the [blog post](https://astral.sh/blog/ruff-v0.7.0) for a migration guide and overview of the changes! ##### Breaking changes - The pytest rules `PT001` and `PT023` now default to omitting the decorator parentheses when there are no arguments ([#12838](https://redirect.github.com/astral-sh/ruff/pull/12838), [#13292](https://redirect.github.com/astral-sh/ruff/pull/13292)). This was a change that we attempted to make in Ruff v0.6.0, but only partially made due to an error on our part. See the [blog post](https://astral.sh/blog/ruff-v0.7.0) for more details. - The `useless-try-except` rule (in our `tryceratops` category) has been recoded from `TRY302` to `TRY203` ([#13502](https://redirect.github.com/astral-sh/ruff/pull/13502)). This ensures Ruff's code is consistent with the same rule in the [`tryceratops`](https://redirect.github.com/guilatrova/tryceratops) linter. - The `lint.allow-unused-imports` setting has been removed ([#13677](https://redirect.github.com/astral-sh/ruff/pull/13677)). Use [`lint.pyflakes.allow-unused-imports`](https://docs.astral.sh/ruff/settings/#lint_pyflakes_allowed-unused-imports) instead. ##### Formatter preview style - Normalize implicit concatenated f-string quotes per part ([#13539](https://redirect.github.com/astral-sh/ruff/pull/13539)) ##### Preview linter features - \[`refurb`] implement `hardcoded-string-charset` (FURB156) ([#13530](https://redirect.github.com/astral-sh/ruff/pull/13530)) - \[`refurb`] Count codepoints not bytes for `slice-to-remove-prefix-or-suffix (FURB188)` ([#13631](https://redirect.github.com/astral-sh/ruff/pull/13631)) ##### Rule changes - \[`pylint`] Mark `PLE1141` fix as unsafe ([#13629](https://redirect.github.com/astral-sh/ruff/pull/13629)) - \[`flake8-async`] Consider async generators to be "checkpoints" for `cancel-scope-no-checkpoint` (`ASYNC100`) ([#13639](https://redirect.github.com/astral-sh/ruff/pull/13639)) - \[`flake8-bugbear`] Do not suggest setting parameter `strict=` to `False` in `B905` diagnostic message ([#13656](https://redirect.github.com/astral-sh/ruff/pull/13656)) - \[`flake8-todos`] Only flag the word "TODO", not words starting with "todo" (`TD006`) ([#13640](https://redirect.github.cConfiguration
📅 Schedule: Branch creation - "after 1am and before 3am every weekday" in timezone Etc/UTC, 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.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR was generated by Mend Renovate. View the repository job log.