Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a context manager for creating Spark Session [Integration Pulse Spark <> Kubeflow] #122

Closed
wants to merge 45 commits into from

Conversation

theoctober19th
Copy link
Member

No description provided.

renovate bot and others added 30 commits March 4, 2024 10:06
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [anyio](https://togithub.com/agronholm/anyio)
([changelog](https://anyio.readthedocs.io/en/stable/versionhistory.html))
| `==3.7.1` -> `==4.3.0` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/anyio/4.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/anyio/4.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/anyio/3.7.1/4.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/anyio/3.7.1/4.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [certifi](https://togithub.com/certifi/python-certifi) |
`==2023.11.17` -> `==2024.2.2` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/certifi/2024.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/certifi/2024.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/certifi/2023.11.17/2024.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/certifi/2023.11.17/2024.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [flake8](https://togithub.com/pycqa/flake8)
([changelog](https://flake8.pycqa.org/en/latest/release-notes/index.html))
| `5.0.4` -> `7.0.0` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/flake8/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/flake8/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/flake8/5.0.4/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/flake8/5.0.4/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [httpcore](https://togithub.com/encode/httpcore) | `==0.18.0` ->
`==1.0.4` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/httpcore/1.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/httpcore/1.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/httpcore/0.18.0/1.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/httpcore/0.18.0/1.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [pyOpenSSL](https://pyopenssl.org/)
([source](https://togithub.com/pyca/pyopenssl)) | `23.3.0` -> `24.1.0` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/pyOpenSSL/24.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/pyOpenSSL/24.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/pyOpenSSL/23.3.0/24.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pyOpenSSL/23.3.0/24.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [pytest](https://togithub.com/pytest-dev/pytest)
([changelog](https://docs.pytest.org/en/stable/changelog.html)) |
`7.4.4` -> `8.1.1` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/pytest/8.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/pytest/8.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/pytest/7.4.4/8.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pytest/7.4.4/8.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [pytest-cov](https://togithub.com/pytest-dev/pytest-cov)
([changelog](https://pytest-cov.readthedocs.io/en/latest/changelog.html))
| `4.1.0` -> `5.0.0` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/pytest-cov/5.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/pytest-cov/5.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/pytest-cov/4.1.0/5.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pytest-cov/4.1.0/5.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>agronholm/anyio (anyio)</summary>

### [`v4.3.0`](https://togithub.com/agronholm/anyio/releases/tag/4.3.0)

[Compare
Source](https://togithub.com/agronholm/anyio/compare/4.2.0...4.3.0)

- Added support for the Python 3.12 `walk_up` keyword argument in
`anyio.Path.relative_to()` (PR by Colin Taylor)

- Fixed passing `total_tokens` to `anyio.CapacityLimiter()` as a keyword
argument not working on the `trio` backend
([#&#8203;515](https://togithub.com/agronholm/anyio/issues/515))

- Fixed `Process.aclose()` not performing the minimum level of necessary
cleanup when cancelled. Previously:

    -   Cancellation of `Process.aclose()` could leak an orphan process
- Cancellation of `run_process()` could very briefly leak an orphan
process.
- Cancellation of `Process.aclose()` or `run_process()` on Trio could
leave standard streams unclosed

    (PR by Ganden Schaffner)

- Fixed `Process.stdin.aclose()`, `Process.stdout.aclose()`, and
`Process.stderr.aclose()` not including a checkpoint on asyncio (PR by
Ganden Schaffner)

-   Fixed documentation on how to provide your own typed attributes

### [`v4.2.0`](https://togithub.com/agronholm/anyio/releases/tag/4.2.0)

[Compare
Source](https://togithub.com/agronholm/anyio/compare/4.1.0...4.2.0)

- Add support for `byte`-based paths in `connect_unix`,
`create_unix_listeners`, `create_unix_datagram_socket`, and
`create_connected_unix_datagram_socket`. (PR by Lura Skye)

- Enabled the `Event` and `CapacityLimiter` classes to be instantiated
outside an event loop thread

- Broadly improved/fixed the type annotations. Among other things, many
functions and methods that take variadic positional arguments now make
use of PEP 646 `TypeVarTuple` to allow the positional arguments to be
validated by static type checkers. These changes affected numerous
methods and functions, including:

    -   `anyio.run()`
    -   `TaskGroup.start_soon()`
    -   `anyio.from_thread.run()`
    -   `anyio.from_thread.run_sync()`
    -   `anyio.to_thread.run_sync()`
    -   `anyio.to_process.run_sync()`
    -   `BlockingPortal.call()`
    -   `BlockingPortal.start_task_soon()`
    -   `BlockingPortal.start_task()`

(also resolves
[#&#8203;560](https://togithub.com/agronholm/anyio/issues/560))

-   Fixed various type annotations of `anyio.Path` to match Typeshed:

    -   `anyio.Path.__lt__()`
    -   `anyio.Path.__le__()`
    -   `anyio.Path.__gt__()`
    -   `anyio.Path.__ge__()`
    -   `anyio.Path.__truediv__()`
    -   `anyio.Path.__rtruediv__()`
    -   `anyio.Path.hardlink_to()`
    -   `anyio.Path.samefile()`
    -   `anyio.Path.symlink_to()`
    -   `anyio.Path.with_segments()`

    (PR by Ganden Schaffner)

- Fixed adjusting the total number of tokens in a `CapacityLimiter` on
asyncio failing to wake up tasks waiting to acquire the limiter in
certain edge cases (fixed with help from Egor Blagov)

- Fixed `loop_factory` and `use_uvloop` options not being used on the
asyncio backend
([#&#8203;643](https://togithub.com/agronholm/anyio/issues/643))

- Fixed cancellation propagating on asyncio from a task group to child
tasks if the task hosting the task group is in a shielded cancel scope
([#&#8203;642](https://togithub.com/agronholm/anyio/issues/642))

### [`v4.1.0`](https://togithub.com/agronholm/anyio/releases/tag/4.1.0)

[Compare
Source](https://togithub.com/agronholm/anyio/compare/4.0.0...4.1.0)

-   Adapted to API changes made in Trio v0.23:
- Call `trio.to_thread.run_sync()` using the `abandon_on_cancel` keyword
argument instead of `cancellable`
    -   Removed a checkpoint when exiting a task group
- Renamed the `cancellable` argument in `anyio.to_thread.run_sync()` to
`abandon_on_cancel` (and deprecated the old parameter name)
    -   Bumped minimum version of Trio to v0.23
- Added support for voluntary thread cancellation via
`anyio.from_thread.check_cancelled()`
-   Bumped minimum version of trio to v0.23
- Exposed the `ResourceGuard` class in the public API
([#&#8203;627](https://togithub.com/agronholm/anyio/issues/627))
- Fixed `RuntimeError: Runner is closed` when running higher-scoped
async generator fixtures in some cases
([#&#8203;619](https://togithub.com/agronholm/anyio/issues/619))
- Fixed discrepancy between `asyncio` and `trio` where reraising a
cancellation exception in an `except*` block would incorrectly bubble
out of its cancel scope
([#&#8203;634](https://togithub.com/agronholm/anyio/issues/634))

### [`v4.0.0`](https://togithub.com/agronholm/anyio/releases/tag/4.0.0)

[Compare
Source](https://togithub.com/agronholm/anyio/compare/3.7.1...4.0.0)

- **BACKWARDS INCOMPATIBLE** Replaced AnyIO's own `ExceptionGroup` class
with the PEP 654 `BaseExceptionGroup` and `ExceptionGroup`
-   **BACKWARDS INCOMPATIBLE** Changes to cancellation semantics:
- Any exceptions raising out of a task groups are now nested inside an
`ExceptionGroup` (or `BaseExceptionGroup` if one or more `BaseException`
were included)
- Fixed task group not raising a cancellation exception on asyncio at
exit if no child tasks were spawned and an outer cancellation scope had
been cancelled before
- Ensured that exiting a `TaskGroup` always hits a yield point,
regardless of whether there are running child tasks to be waited on
- On asyncio, cancel scopes will defer cancelling tasks that are
scheduled to resume with a finished future
- On asyncio and Python 3.9/3.10, cancel scopes now only suppress
cancellation exceptions if the cancel message matches the scope
- Task groups on all backends now raise a single cancellation exception
when an outer cancel scope is cancelled, and no exceptions other than
cancellation exceptions are raised in the group
- **BACKWARDS INCOMPATIBLE** Changes the pytest plugin to run all tests
and fixtures in the same task, allowing fixtures to set context
variables for tests and other fixtures
- **BACKWARDS INCOMPATIBLE** Changed `anyio.Path.relative_to()` and
`anyio.Path.is_relative_to()` to only accept one argument, as passing
multiple arguments is deprecated as of Python 3.12
- **BACKWARDS INCOMPATIBLE** Dropped support for spawning tasks from
old-style coroutine functions (`@asyncio.coroutine`)
- **BACKWARDS INCOMPATIBLE** The `policy` option on the `asyncio`
backend was changed to `loop_factory` to accommodate `asyncio.Runner`
- Changed `anyio.run()` to use `asyncio.Runner` (or a back-ported
version of it on Pythons older than 3.11) on the `asyncio` backend
-   Dropped support for Python 3.7
-   Added support for Python 3.12
-   Bumped minimum version of trio to v0.22
-   Added the `anyio.Path.is_junction()` and `anyio.Path.walk()` methods
- Added `create_unix_datagram_socket` and
`create_connected_unix_datagram_socket` to create UNIX datagram sockets
(PR by Jean Hominal)
- Fixed `from_thread.run` and `from_thread.run_sync` not setting sniffio
on asyncio. As a result:
- Fixed `from_thread.run_sync` failing when used to call
sniffio-dependent functions on asyncio
- Fixed `from_thread.run` failing when used to call sniffio-dependent
functions on asyncio from a thread running trio or curio
- Fixed deadlock when using
`from_thread.start_blocking_portal(backend="asyncio")` in a thread
running trio or curio (PR by Ganden Schaffner)
-   Improved type annotations:
- The `item_type` argument of `create_memory_object_stream` was
deprecated. To indicate the item type handled by the stream, use
`create_memory_object_stream[T_Item]()` instead. Type checking should no
longer fail when annotating memory object streams with uninstantiable
item types (PR by Ganden Schaffner)
- Added the `CancelScope.cancelled_caught` property which tells users if
the cancel scope suppressed a cancellation exception
- Fixed `fail_after()` raising an unwarranted `TimeoutError` when the
cancel scope was cancelled before reaching its deadline
- Fixed `MemoryObjectReceiveStream.receive()` causing the receiving task
on asyncio to remain in a cancelled state if the operation was cancelled
after an item was queued to be received by the task (but before the task
could actually receive the item)
- Fixed `TaskGroup.start()` on asyncio not responding to cancellation
from the outside
- Fixed tasks started from `BlockingPortal` not notifying synchronous
listeners (`concurrent.futures.wait()`) when they're cancelled
- Removed unnecessary extra waiting cycle in `Event.wait()` on asyncio
in the case where the event was not yet set
- Fixed processes spawned by `anyio.to_process()` being "lost" as
unusable to the process pool when processes that have idled over 5
minutes are pruned at part of the `to_process.run_sync()` call, leading
to increased memory consumption (PR by Anael Gorfinkel)

Changes since 4.0.0rc1:

- Fixed the type annotation of `TaskGroup.start_soon()` to accept any
awaitables (already in v3.7.0 but was missing from 4.0.0rc1)
- Changed `CancelScope` to also consider the cancellation count (in
addition to the cancel message) on asyncio to determine if a
cancellation exception should be swallowed on scope exit, to combat
issues where third party libraries catch the `CancelledError` and raise
another, thus erasing the original cancel message
- Worked around a [CPython
bug](https://togithub.com/python/cpython/issues/108668) that caused
`TLSListener.handle_handshake_error()` on asyncio to log `"NoneType:
None"` instead of the error (PR by Ganden Schaffner)
- Re-added the `item_type` argument to `create_memory_object_stream()`
(but using it raises a deprecation warning and does nothing with regards
to the static types of the returned streams)
- Fixed processes spawned by `anyio.to_process()` being "lost" as
unusable to the process pool when processes that have idled over 5
minutes are pruned at part of the `to_process.run_sync()` call, leading
to increased memory consumption (PR by Anael Gorfinkel)

</details>

<details>
<summary>certifi/python-certifi (certifi)</summary>

###
[`v2024.2.2`](https://togithub.com/certifi/python-certifi/compare/2023.11.17...2024.02.02)

[Compare
Source](https://togithub.com/certifi/python-certifi/compare/2023.11.17...2024.02.02)

</details>

<details>
<summary>pycqa/flake8 (flake8)</summary>

### [`v7.0.0`](https://togithub.com/pycqa/flake8/compare/6.1.0...7.0.0)

[Compare
Source](https://togithub.com/pycqa/flake8/compare/6.1.0...7.0.0)

### [`v6.1.0`](https://togithub.com/pycqa/flake8/compare/6.0.0...6.1.0)

[Compare
Source](https://togithub.com/pycqa/flake8/compare/6.0.0...6.1.0)

### [`v6.0.0`](https://togithub.com/pycqa/flake8/compare/5.0.4...6.0.0)

[Compare
Source](https://togithub.com/pycqa/flake8/compare/5.0.4...6.0.0)

</details>

<details>
<summary>encode/httpcore (httpcore)</summary>

###
[`v1.0.4`](https://togithub.com/encode/httpcore/blob/HEAD/CHANGELOG.md#104-February-21st-2024)

[Compare
Source](https://togithub.com/encode/httpcore/compare/1.0.3...1.0.4)

- Add `target` request extension.
([#&#8203;888](https://togithub.com/encode/httpcore/issues/888))
- Fix support for connection `Upgrade` and `CONNECT` when some data in
the stream has been read.
([#&#8203;882](https://togithub.com/encode/httpcore/issues/882))

###
[`v1.0.3`](https://togithub.com/encode/httpcore/blob/HEAD/CHANGELOG.md#103-February-13th-2024)

[Compare
Source](https://togithub.com/encode/httpcore/compare/1.0.2...1.0.3)

- Fix support for async cancellations.
([#&#8203;880](https://togithub.com/encode/httpcore/issues/880))
- Fix trace extension when used with socks proxy.
([#&#8203;849](https://togithub.com/encode/httpcore/issues/849))
- Fix SSL context for connections using the "wss" scheme
([#&#8203;869](https://togithub.com/encode/httpcore/issues/869))

###
[`v1.0.2`](https://togithub.com/encode/httpcore/blob/HEAD/CHANGELOG.md#102-November-10th-2023)

[Compare
Source](https://togithub.com/encode/httpcore/compare/1.0.1...1.0.2)

- Fix `float("inf")` timeouts in `Event.wait` function.
([#&#8203;846](https://togithub.com/encode/httpcore/issues/846))

###
[`v1.0.1`](https://togithub.com/encode/httpcore/blob/HEAD/CHANGELOG.md#101-November-3rd-2023)

[Compare
Source](https://togithub.com/encode/httpcore/compare/1.0.0...1.0.1)

- Fix pool timeout to account for the total time spent retrying.
([#&#8203;823](https://togithub.com/encode/httpcore/issues/823))
- Raise a neater RuntimeError when the correct async deps are not
installed.
([#&#8203;826](https://togithub.com/encode/httpcore/issues/826))
- Add support for synchronous TLS-in-TLS streams.
([#&#8203;840](https://togithub.com/encode/httpcore/issues/840))

###
[`v1.0.0`](https://togithub.com/encode/httpcore/blob/HEAD/CHANGELOG.md#100-October-6th-2023)

[Compare
Source](https://togithub.com/encode/httpcore/compare/0.18.0...1.0.0)

From version 1.0 our async support is now optional, as the package has
minimal dependencies by default.

For async support use either `pip install 'httpcore[asyncio]'` or `pip
install 'httpcore[trio]'`.

The project versioning policy is now explicitly governed by SEMVER. See
https://semver.org/.

- Async support becomes fully optional.
([#&#8203;809](https://togithub.com/encode/httpcore/issues/809))
- Add support for Python 3.12.
([#&#8203;807](https://togithub.com/encode/httpcore/issues/807))

</details>

<details>
<summary>pyca/pyopenssl (pyOpenSSL)</summary>

###
[`v24.1.0`](https://togithub.com/pyca/pyopenssl/blob/HEAD/CHANGELOG.rst#2410-2024-03-09)

[Compare
Source](https://togithub.com/pyca/pyopenssl/compare/24.0.0...24.1.0)

Backward-incompatible changes:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

-   Removed the deprecated `OpenSSL.crypto.PKCS12` and
`OpenSSL.crypto.NetscapeSPKI`. `OpenSSL.crypto.PKCS12` may be replaced
by the [PKCS#12](https://togithub.com/PKCS/pyopenssl/issues/12) APIs in
the `cryptography` package.

Deprecations:
^^^^^^^^^^^^^

Changes:
^^^^^^^^

###
[`v24.0.0`](https://togithub.com/pyca/pyopenssl/blob/HEAD/CHANGELOG.rst#2400-2024-01-22)

[Compare
Source](https://togithub.com/pyca/pyopenssl/compare/23.3.0...24.0.0)

Backward-incompatible changes:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Deprecations:
^^^^^^^^^^^^^

Changes:
^^^^^^^^

- Added `OpenSSL.SSL.Connection.get_selected_srtp_profile` to determine
which SRTP profile was negotiated.
    `#&#8203;1279 <https://github.com/pyca/pyopenssl/pull/1279>`\_.

</details>

<details>
<summary>pytest-dev/pytest (pytest)</summary>

###
[`v8.1.1`](https://togithub.com/pytest-dev/pytest/releases/tag/8.1.1)

[Compare
Source](https://togithub.com/pytest-dev/pytest/compare/8.1.0...8.1.1)

# pytest 8.1.1 (2024-03-08)

::: {.note}
::: {.title}
Note
:::

This release is not a usual bug fix release -- it contains features and
improvements, being a follow up
to `8.1.0`, which has been yanked from PyPI.
:::

## Features

- [#&#8203;11475](https://togithub.com/pytest-dev/pytest/issues/11475):
Added the new `consider_namespace_packages`{.interpreted-text
role="confval"} configuration option, defaulting to `False`.

If set to `True`, pytest will attempt to identify modules that are part
of [namespace
packages](https://packaging.python.org/en/latest/guides/packaging-namespace-packages)
when importing modules.

- [#&#8203;11653](https://togithub.com/pytest-dev/pytest/issues/11653):
Added the new `verbosity_test_cases`{.interpreted-text role="confval"}
configuration option for fine-grained control of test execution
verbosity.
See `Fine-grained verbosity
<pytest.fine_grained_verbosity>`{.interpreted-text role="ref"} for more
details.

## Improvements

- [#&#8203;10865](https://togithub.com/pytest-dev/pytest/issues/10865):
`pytest.warns`{.interpreted-text role="func"} now validates that
`warnings.warn`{.interpreted-text role="func"} was called with a
\[str]{.title-ref} or a \[Warning]{.title-ref}.
Currently in Python it is possible to use other types, however this
causes an exception when `warnings.filterwarnings`{.interpreted-text
role="func"} is used to filter those warnings (see [CPython
#&#8203;103577](https://togithub.com/python/cpython/issues/103577) for a
discussion).
While this can be considered a bug in CPython, we decided to put guards
in pytest as the error message produced without this check in place is
confusing.

- [#&#8203;11311](https://togithub.com/pytest-dev/pytest/issues/11311):
When using `--override-ini` for paths in invocations without a
configuration file defined, the current working directory is used
    as the relative directory.

Previoulsy this would raise an `AssertionError`{.interpreted-text
role="class"}.

- [#&#8203;11475](https://togithub.com/pytest-dev/pytest/issues/11475):
`--import-mode=importlib <import-mode-importlib>`{.interpreted-text
role="ref"} now tries to import modules using the standard import
mechanism (but still without changing :py`sys.path`{.interpreted-text
role="data"}), falling back to importing modules directly only if that
fails.

This means that installed packages will be imported under their
canonical name if possible first, for example `app.core.models`, instead
of having the module name always be derived from their path (for example
`.env310.lib.site_packages.app.core.models`).

- [#&#8203;11801](https://togithub.com/pytest-dev/pytest/issues/11801):
Added the `iter_parents()
<_pytest.nodes.Node.iter_parents>`{.interpreted-text role="func"} helper
method on nodes.
It is similar to `listchain
<_pytest.nodes.Node.listchain>`{.interpreted-text role="func"}, but goes
from bottom to top, and returns an iterator, not a list.

- [#&#8203;11850](https://togithub.com/pytest-dev/pytest/issues/11850):
Added support for `sys.last_exc`{.interpreted-text role="data"} for
post-mortem debugging on Python>=3.12.

- [#&#8203;11962](https://togithub.com/pytest-dev/pytest/issues/11962):
In case no other suitable candidates for configuration file are found, a
`pyproject.toml` (even without a `[tool.pytest.ini_options]` table) will
be considered as the configuration file and define the `rootdir`.

- [#&#8203;11978](https://togithub.com/pytest-dev/pytest/issues/11978):
Add `--log-file-mode` option to the logging plugin, enabling appending
to log-files. This option accepts either `"w"` or `"a"` and defaults to
`"w"`.

Previously, the mode was hard-coded to be `"w"` which truncates the file
before logging.

- [#&#8203;12047](https://togithub.com/pytest-dev/pytest/issues/12047):
When multiple finalizers of a fixture raise an exception, now all
exceptions are reported as an exception group.
    Previously, only the first exception was reported.

## Bug Fixes

- [#&#8203;11475](https://togithub.com/pytest-dev/pytest/issues/11475):
Fixed regression where `--importmode=importlib` would import non-test
modules more than once.

- [#&#8203;11904](https://togithub.com/pytest-dev/pytest/issues/11904):
Fixed a regression in pytest 8.0.0 that would cause test collection to
fail due to permission errors when using `--pyargs`.

This change improves the collection tree for tests specified using
`--pyargs`, see `12043`{.interpreted-text role="pull"} for a comparison
with pytest 8.0 and <8.

- [#&#8203;12011](https://togithub.com/pytest-dev/pytest/issues/12011):
Fixed a regression in 8.0.1 whereby `setup_module` xunit-style fixtures
are not executed when `--doctest-modules` is passed.

- [#&#8203;12014](https://togithub.com/pytest-dev/pytest/issues/12014):
Fix the `stacklevel` used when warning about marks used on fixtures.

- [#&#8203;12039](https://togithub.com/pytest-dev/pytest/issues/12039):
Fixed a regression in `8.0.2` where tests created using
`tmp_path`{.interpreted-text role="fixture"} have been collected
multiple times in CI under Windows.

## Improved Documentation

- [#&#8203;11790](https://togithub.com/pytest-dev/pytest/issues/11790):
Documented the retention of temporary directories created using the
`tmp_path` fixture in more detail.

## Trivial/Internal Changes

- [#&#8203;11785](https://togithub.com/pytest-dev/pytest/issues/11785):
Some changes were made to private functions which may affect plugins
which access them:

- `FixtureManager._getautousenames()` now takes a `Node` itself instead
of the nodeid.
- `FixtureManager.getfixturedefs()` now takes the `Node` itself instead
of the nodeid.
- The `_pytest.nodes.iterparentnodeids()` function is removed without
replacement.
        Prefer to traverse the node hierarchy itself instead.
If you really need to, copy the function from the previous pytest
release.

- [#&#8203;12069](https://togithub.com/pytest-dev/pytest/issues/12069):
Delayed the deprecation of the following features to `9.0.0`:

    -   `node-ctor-fspath-deprecation`{.interpreted-text role="ref"}.
    -   `legacy-path-hooks-deprecated`{.interpreted-text role="ref"}.

It was discovered after `8.1.0` was released that the warnings about the
impeding removal were not being displayed, so the team decided to revert
the removal.

    This is the reason for `8.1.0` being yanked.

# pytest 8.1.0 (YANKED)

::: {.note}
::: {.title}
Note
:::

This release has been **yanked**: it broke some plugins without the
proper warning period, due to
some warnings not showing up as expected.

See
[#&#8203;12069](https://togithub.com/pytest-dev/pytest/issues/12069).
:::

###
[`v8.1.0`](https://togithub.com/pytest-dev/pytest/releases/tag/8.1.0)

[Compare
Source](https://togithub.com/pytest-dev/pytest/compare/8.0.2...8.1.0)

# pytest 8.1.0 (YANKED)

> \[!IMPORTANT]\
> This release has been **yanked**: it broke some plugins without the
proper warning period, due to some warnings not showing up as expected.
See
[#&#8203;12069](https://togithub.com/pytest-dev/pytest/issues/12069).

## Features

- [#&#8203;11475](https://togithub.com/pytest-dev/pytest/issues/11475):
Added the new `consider_namespace_packages`{.interpreted-text
role="confval"} configuration option, defaulting to `False`.

If set to `True`, pytest will attempt to identify modules that are part
of [namespace
packages](https://packaging.python.org/en/latest/guides/packaging-namespace-packages)
when importing modules.

- [#&#8203;11653](https://togithub.com/pytest-dev/pytest/issues/11653):
Added the new `verbosity_test_cases`{.interpreted-text role="confval"}
configuration option for fine-grained control of test execution
verbosity.
See `Fine-grained verbosity
<pytest.fine_grained_verbosity>`{.interpreted-text role="ref"} for more
details.

## Improvements

- [#&#8203;10865](https://togithub.com/pytest-dev/pytest/issues/10865):
`pytest.warns`{.interpreted-text role="func"} now validates that
`warnings.warn`{.interpreted-text role="func"} was called with a
\[str]{.title-ref} or a \[Warning]{.title-ref}.
Currently in Python it is possible to use other types, however this
causes an exception when `warnings.filterwarnings`{.interpreted-text
role="func"} is used to filter those warnings (see [CPython
#&#8203;103577](https://togithub.com/python/cpython/issues/103577) for a
discussion).
While this can be considered a bug in CPython, we decided to put guards
in pytest as the error message produced without this check in place is
confusing.

- [#&#8203;11311](https://togithub.com/pytest-dev/pytest/issues/11311):
When using `--override-ini` for paths in invocations without a
configuration file defined, the current working directory is used
    as the relative directory.

Previoulsy this would raise an `AssertionError`{.interpreted-text
role="class"}.

- [#&#8203;11475](https://togithub.com/pytest-dev/pytest/issues/11475):
`--import-mode=importlib <import-mode-importlib>`{.interpreted-text
role="ref"} now tries to import modules using the standard import
mechanism (but still without changing :py`sys.path`{.interpreted-text
role="data"}), falling back to importing modules directly only if that
fails.

This means that installed packages will be imported under their
canonical name if possible first, for example `app.core.models`, instead
of having the module name always be derived from their path (for example
`.env310.lib.site_packages.app.core.models`).

- [#&#8203;11801](https://togithub.com/pytest-dev/pytest/issues/11801):
Added the `iter_parents()
<_pytest.nodes.Node.iter_parents>`{.interpreted-text role="func"} helper
method on nodes.
It is similar to `listchain
<_pytest.nodes.Node.listchain>`{.interpreted-text role="func"}, but goes
from bottom to top, and returns an iterator, not a list.

- [#&#8203;11850](https://togithub.com/pytest-dev/pytest/issues/11850):
Added support for `sys.last_exc`{.interpreted-text role="data"} for
post-mortem debugging on Python>=3.12.

- [#&#8203;11962](https://togithub.com/pytest-dev/pytest/issues/11962):
In case no other suitable candidates for configuration file are found, a
`pyproject.toml` (even without a `[tool.pytest.ini_options]` table) will
be considered as the configuration file and define the `rootdir`.

- [#&#8203;11978](https://togithub.com/pytest-dev/pytest/issues/11978):
Add `--log-file-mode` option to the logging plugin, enabling appending
to log-files. This option accepts either `"w"` or `"a"` and defaults to
`"w"`.

Previously, the mode was hard-coded to be `"w"` which truncates the file
before logging.

- [#&#8203;12047](https://togithub.com/pytest-dev/pytest/issues/12047):
When multiple finalizers of a fixture raise an exception, now all
exceptions are reported as an exception group.
    Previously, only the first exception was reported.

## Bug Fixes

- [#&#8203;11904](https://togithub.com/pytest-dev/pytest/issues/11904):
Fixed a regression in pytest 8.0.0 that would cause test collection to
fail due to permission errors when using `--pyargs`.

This change improves the collection tree for tests specified using
`--pyargs`, see `12043`{.interpreted-text role="pull"} for a comparison
with pytest 8.0 and <8.

- [#&#8203;12011](https://togithub.com/pytest-dev/pytest/issues/12011):
Fixed a regression in 8.0.1 whereby `setup_module` xunit-style fixtures
are not executed when `--doctest-modules` is passed.

- [#&#8203;12014](https://togithub.com/pytest-dev/pytest/issues/12014):
Fix the `stacklevel` used when warning about marks used on fixtures.

- [#&#8203;12039](https://togithub.com/pytest-dev/pytest/issues/12039):
Fixed a regression in `8.0.2` where tests created using
`tmp_path`{.interpreted-text role="fixture"} have been collected
multiple times in CI under Windows.

## Improved Documentation

- [#&#8203;11790](https://togithub.com/pytest-dev/pytest/issues/11790):
Documented the retention of temporary directories created using the
`tmp_path` fixture in more detail.

## Trivial/Internal Changes

- [#&#8203;11785](https://togithub.com/pytest-dev/pytest/issues/11785):
Some changes were made to private functions which may affect plugins
which access them:
- `FixtureManager._getautousenames()` now takes a `Node` itself instead
of the nodeid.
- `FixtureManager.getfixturedefs()` now takes the `Node` itself instead
of the nodeid.
- The `_pytest.nodes.iterparentnodeids()` function is removed without
replacement.
        Prefer to traverse the node hierarchy itself instead.
If you really need to, copy the function from the previous pytest
release.

###
[`v8.0.2`](https://togithub.com/pytest-dev/pytest/releases/tag/8.0.2)

[Compare
Source](https://togithub.com/pytest-dev/pytest/compare/8.0.1...8.0.2)

# pytest 8.0.2 (2024-02-24)

## Bug Fixes

- [#&#8203;11895](https://togithub.com/pytest-dev/pytest/issues/11895):
Fix collection on Windows where initial paths contain the short version
of a path (for example `c:\PROGRA~1\tests`).
- [#&#8203;11953](https://togithub.com/pytest-dev/pytest/issues/11953):
Fix an `IndexError` crash raising from `getstatementrange_ast`.
- [#&#8203;12021](https://togithub.com/pytest-dev/pytest/issues/12021):
Reverted a fix to \[--maxfail]{.title-ref} handling in pytest 8.0.0
because it caused a regression in pytest-xdist whereby session fixture
teardowns may get executed multiple times when the max-fails is reached.

###
[`v8.0.1`](https://togithub.com/pytest-dev/pytest/releases/tag/8.0.1)

[Compare
Source](https://togithub.com/pytest-dev/pytest/compare/8.0.0...8.0.1)

# pytest 8.0.1 (2024-02-16)

## Bug Fixes

- [#&#8203;11875](https://togithub.com/pytest-dev/pytest/issues/11875):
Correctly handle errors from `getpass.getuser`{.interpreted-text
role="func"} in Python 3.13.
- [#&#8203;11879](https://togithub.com/pytest-dev/pytest/issues/11879):
Fix an edge case where `ExceptionInfo._stringify_exception` could crash
`pytest.raises`{.interpreted-text role="func"}.
- [#&#8203;11906](https://togithub.com/pytest-dev/pytest/issues/11906):
Fix regression with `pytest.warns`{.interpreted-text role="func"} using
custom warning subclasses which have more than one parameter in their
\[\__init\_\_]{.title-ref}.
- [#&#8203;11907](https://togithub.com/pytest-dev/pytest/issues/11907):
Fix a regression in pytest 8.0.0 whereby calling
`pytest.skip`{.interpreted-text role="func"} and similar control-flow
exceptions within a `pytest.warns()`{.interpreted-text role="func"}
block would get suppressed instead of propagating.
- [#&#8203;11929](https://togithub.com/pytest-dev/pytest/issues/11929):
Fix a regression in pytest 8.0.0 whereby autouse fixtures defined in a
module get ignored by the doctests in the module.
- [#&#8203;11937](https://togithub.com/pytest-dev/pytest/issues/11937):
Fix a regression in pytest 8.0.0 whereby items would be collected in
reverse order in some circumstances.

###
[`v8.0.0`](https://togithub.com/pytest-dev/pytest/releases/tag/8.0.0):
pytest 8.0.0 (2024-01-27)

[Compare
Source](https://togithub.com/pytest-dev/pytest/compare/7.4.4...8.0.0)

See
[8.0.0rc1](https://togithub.com/pytest-dev/pytest/releases/tag/8.0.0rc1)
and
[8.0.0rc2](https://togithub.com/pytest-dev/pytest/releases/tag/8.0.0rc2)
for the full changes since pytest 7.4!

#### Bug Fixes

- [#&#8203;11842](https://togithub.com/pytest-dev/pytest/issues/11842):
Properly escape the `reason` of a `skip <pytest.mark.skip
ref>`{.interpreted-text role="ref"} mark when writing JUnit XML files.
- [#&#8203;11861](https://togithub.com/pytest-dev/pytest/issues/11861):
Avoid microsecond exceeds `1_000_000` when using `log-date-format` with
`%f` specifier, which might cause the test suite to crash.

</details>

<details>
<summary>pytest-dev/pytest-cov (pytest-cov)</summary>

###
[`v5.0.0`](https://togithub.com/pytest-dev/pytest-cov/blob/HEAD/CHANGELOG.rst#500-2024-03-24)

[Compare
Source](https://togithub.com/pytest-dev/pytest-cov/compare/v4.1.0...v5.0.0)

-   Removed support for xdist rsync (now deprecated).
Contributed by Matthias Reichenbach in `#&#8203;623
<https://github.com/pytest-dev/pytest-cov/pull/623>`\_.
-   Switched docs theme to Furo.
-   Various legacy Python cleanup and CI improvements.
    Contributed by Christian Clauss and Hugo van Kemenade in
    `#&#8203;630 <https://github.com/pytest-dev/pytest-cov/pull/630>`*,
    `#&#8203;631 <https://github.com/pytest-dev/pytest-cov/pull/631>`*,
`#&#8203;632 <https://github.com/pytest-dev/pytest-cov/pull/632>`\_ and
    `#&#8203;633 <https://github.com/pytest-dev/pytest-cov/pull/633>`\_.
-   Added a `pyproject.toml` example in the docs.
Contributed by Dawn James in `#&#8203;626
<https://github.com/pytest-dev/pytest-cov/pull/626>`\_.
- Modernized project's pre-commit hooks to use ruff. Initial POC
contributed by
Christian Clauss in `#&#8203;584
<https://github.com/pytest-dev/pytest-cov/pull/584>`\_.

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 1am and before 2am on saturday"
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](https://togithub.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 [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/canonical/spark-k8s-toolkit-py).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xNzMuMCIsInVwZGF0ZWRJblZlciI6IjM3LjI2OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [actions/setup-python](https://togithub.com/actions/setup-python) |
action | minor | `v5.0.0` -> `v5.1.0` |

---

### Release Notes

<details>
<summary>actions/setup-python (actions/setup-python)</summary>

###
[`v5.1.0`](https://togithub.com/actions/setup-python/releases/tag/v5.1.0)

[Compare
Source](https://togithub.com/actions/setup-python/compare/v5.0.0...v5.1.0)

#### What's Changed

- Leveraging the raw API to retrieve the version-manifest, as it does
not impose a rate limit and hence facilitates unrestricted consumption
without the need for a token for Github Enterprise Servers by
[@&#8203;Shegox](https://togithub.com/Shegox) in
[https://github.com/actions/setup-python/pull/766](https://togithub.com/actions/setup-python/pull/766).
- Dependency updates by
[@&#8203;dependabot](https://togithub.com/dependabot) and
[@&#8203;HarithaVattikuti](https://togithub.com/HarithaVattikuti) in
[https://github.com/actions/setup-python/pull/817](https://togithub.com/actions/setup-python/pull/817)
- Documentation changes for version in README by
[@&#8203;basnijholt](https://togithub.com/basnijholt) in
[https://github.com/actions/setup-python/pull/776](https://togithub.com/actions/setup-python/pull/776)
- Documentation changes for link in README by
[@&#8203;ukd1](https://togithub.com/ukd1) in
[https://github.com/actions/setup-python/pull/793](https://togithub.com/actions/setup-python/pull/793)
- Documentation changes for link in Advanced Usage by
[@&#8203;Jamim](https://togithub.com/Jamim) in
[https://github.com/actions/setup-python/pull/782](https://togithub.com/actions/setup-python/pull/782)
- Documentation changes for avoiding rate limit issues on GHES by
[@&#8203;priya-kinthali](https://togithub.com/priya-kinthali) in
[https://github.com/actions/setup-python/pull/835](https://togithub.com/actions/setup-python/pull/835)

#### New Contributors

- [@&#8203;basnijholt](https://togithub.com/basnijholt) made their first
contribution in
[https://github.com/actions/setup-python/pull/776](https://togithub.com/actions/setup-python/pull/776)
- [@&#8203;ukd1](https://togithub.com/ukd1) made their first
contribution in
[https://github.com/actions/setup-python/pull/793](https://togithub.com/actions/setup-python/pull/793)
- [@&#8203;Jamim](https://togithub.com/Jamim) made their first
contribution in
[https://github.com/actions/setup-python/pull/782](https://togithub.com/actions/setup-python/pull/782)
- [@&#8203;Shegox](https://togithub.com/Shegox) made their first
contribution in
[https://github.com/actions/setup-python/pull/766](https://togithub.com/actions/setup-python/pull/766)
- [@&#8203;priya-kinthali](https://togithub.com/priya-kinthali) made
their first contribution in
[https://github.com/actions/setup-python/pull/835](https://togithub.com/actions/setup-python/pull/835)

**Full Changelog**:
actions/setup-python@v5.0.0...v5.1.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 1am and before 2am on saturday"
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.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/canonical/spark-k8s-toolkit-py).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yNjkuMiIsInVwZGF0ZWRJblZlciI6IjM3LjI2OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [mypy](https://www.mypy-lang.org/)
([source](https://togithub.com/python/mypy),
[changelog](https://mypy-lang.blogspot.com/)) | `1.8.0` -> `1.9.0` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/mypy/1.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/mypy/1.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/mypy/1.8.0/1.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/mypy/1.8.0/1.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [pytest-mock](https://togithub.com/pytest-dev/pytest-mock)
([changelog](https://pytest-mock.readthedocs.io/en/latest/changelog.html))
| `3.12.0` -> `3.14.0` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/pytest-mock/3.14.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/pytest-mock/3.14.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/pytest-mock/3.12.0/3.14.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pytest-mock/3.12.0/3.14.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [tox](https://togithub.com/tox-dev/tox)
([changelog](https://tox.wiki/en/latest/changelog.html)) | `4.13.0` ->
`4.14.2` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/tox/4.14.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/tox/4.14.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/tox/4.13.0/4.14.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/tox/4.13.0/4.14.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>python/mypy (mypy)</summary>

### [`v1.9.0`](https://togithub.com/python/mypy/compare/v1.8.0...1.9.0)

[Compare
Source](https://togithub.com/python/mypy/compare/v1.8.0...1.9.0)

</details>

<details>
<summary>pytest-dev/pytest-mock (pytest-mock)</summary>

###
[`v3.14.0`](https://togithub.com/pytest-dev/pytest-mock/blob/HEAD/CHANGELOG.rst#3140-2024-03-21)

[Compare
Source](https://togithub.com/pytest-dev/pytest-mock/compare/v3.13.0...v3.14.0)

- `#&#8203;415 <https://github.com/pytest-dev/pytest-mock/pull/415>`\_:
`MockType` and `AsyncMockType` can be imported from `pytest_mock` for
type annotation purposes.

- `#&#8203;420
<https://github.com/pytest-dev/pytest-mock/issues/420>`\_: Fixed a
regression which would cause `mocker.patch.object` to not being properly
cleared between tests.

###
[`v3.13.0`](https://togithub.com/pytest-dev/pytest-mock/blob/HEAD/CHANGELOG.rst#3130-2024-03-21)

[Compare
Source](https://togithub.com/pytest-dev/pytest-mock/compare/v3.12.0...v3.13.0)

- `#&#8203;417 <https://github.com/pytest-dev/pytest-mock/pull/417>`\_:
`spy` now has `spy_return_list`, which is a list containing all the
values returned by the spied function.
-   `pytest-mock` now requires `pytest>=6.2.5`.
- `#&#8203;410 <https://github.com/pytest-dev/pytest-mock/pull/410>`*:
pytest-mock's `setup.py` file is removed.
If you relied on this file, e.g. to install pytest using `setup.py
install`,
please see `Why you shouldn't invoke setup.py directly
<https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html#summary>`*
for alternatives.

</details>

<details>
<summary>tox-dev/tox (tox)</summary>

### [`v4.14.2`](https://togithub.com/tox-dev/tox/releases/tag/4.14.2)

[Compare
Source](https://togithub.com/tox-dev/tox/compare/4.14.1...4.14.2)

<!-- Release notes generated using configuration in .github/release.yml
at 4.14.2 -->

#### What's Changed

- Removed unneeded line by
[@&#8203;reinout](https://togithub.com/reinout) in
[https://github.com/tox-dev/tox/pull/3241](https://togithub.com/tox-dev/tox/pull/3241)
- Add missing space by
[@&#8203;droctothorpe](https://togithub.com/droctothorpe) in
[https://github.com/tox-dev/tox/pull/3243](https://togithub.com/tox-dev/tox/pull/3243)
- Add Provision Arguments to ToxParser by
[@&#8203;seyidaniels](https://togithub.com/seyidaniels) in
[https://github.com/tox-dev/tox/pull/3246](https://togithub.com/tox-dev/tox/pull/3246)

#### New Contributors

- [@&#8203;reinout](https://togithub.com/reinout) made their first
contribution in
[https://github.com/tox-dev/tox/pull/3241](https://togithub.com/tox-dev/tox/pull/3241)
- [@&#8203;droctothorpe](https://togithub.com/droctothorpe) made their
first contribution in
[https://github.com/tox-dev/tox/pull/3243](https://togithub.com/tox-dev/tox/pull/3243)
- [@&#8203;seyidaniels](https://togithub.com/seyidaniels) made their
first contribution in
[https://github.com/tox-dev/tox/pull/3246](https://togithub.com/tox-dev/tox/pull/3246)

**Full Changelog**:
tox-dev/tox@4.14.1...4.14.2

### [`v4.14.1`](https://togithub.com/tox-dev/tox/releases/tag/4.14.1)

[Compare
Source](https://togithub.com/tox-dev/tox/compare/4.14.0...4.14.1)

<!-- Release notes generated using configuration in .github/release.yml
at 4.14.1 -->

#### What's Changed

- Fix fresh subprocesses and allow duplicate register config calls for
the core set only by
[@&#8203;gaborbernat](https://togithub.com/gaborbernat) in
[https://github.com/tox-dev/tox/pull/3237](https://togithub.com/tox-dev/tox/pull/3237)

**Full Changelog**:
tox-dev/tox@4.14.0...4.14.1

### [`v4.14.0`](https://togithub.com/tox-dev/tox/releases/tag/4.14.0)

[Compare
Source](https://togithub.com/tox-dev/tox/compare/4.13.0...4.14.0)

<!-- Release notes generated using configuration in .github/release.yml
at 4.14.0 -->

#### What's Changed

- Fix issue/PR number in 4.13.0 changelog by
[@&#8203;hroncok](https://togithub.com/hroncok) in
[https://github.com/tox-dev/tox/pull/3223](https://togithub.com/tox-dev/tox/pull/3223)
- Fix linkcheck failing by
[@&#8203;gaborbernat](https://togithub.com/gaborbernat) in
[https://github.com/tox-dev/tox/pull/3229](https://togithub.com/tox-dev/tox/pull/3229)
- Support fresh subprocess for build backends by
[@&#8203;gaborbernat](https://togithub.com/gaborbernat) in
[https://github.com/tox-dev/tox/pull/3233](https://togithub.com/tox-dev/tox/pull/3233)
- Allow plugins to attach data to --version by
[@&#8203;gaborbernat](https://togithub.com/gaborbernat) in
[https://github.com/tox-dev/tox/pull/3234](https://togithub.com/tox-dev/tox/pull/3234)

**Full Changelog**:
tox-dev/tox@4.13.0...4.14.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 1am and before 2am on saturday"
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](https://togithub.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 [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/canonical/spark-k8s-toolkit-py).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yNjkuMiIsInVwZGF0ZWRJblZlciI6IjM3LjI2OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [idna](https://togithub.com/kjd/idna)
([changelog](https://togithub.com/kjd/idna/blob/master/HISTORY.rst)) |
`==3.4` -> `==3.7` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/idna/3.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/idna/3.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/idna/3.4/3.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/idna/3.4/3.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

### GitHub Vulnerability Alerts

####
[CVE-2024-3651](https://togithub.com/kjd/idna/security/advisories/GHSA-jjg7-2v4v-x38h)

### Impact
A specially crafted argument to the `idna.encode()` function could
consume significant resources. This may lead to a denial-of-service.

### Patches
The function has been refined to reject such strings without the
associated resource consumption in version 3.7.

### Workarounds
Domain names cannot exceed 253 characters in length, if this length
limit is enforced prior to passing the domain to the `idna.encode()`
function it should no longer consume significant resources. This is
triggered by arbitrarily large inputs that would not occur in normal
usage, but may be passed to the library assuming there is no preliminary
input validation by the higher-level application.

### References
* https://huntr.com/bounties/93d78d07-d791-4b39-a845-cbfabc44aadb

---

### Release Notes

<details>
<summary>kjd/idna (idna)</summary>

### [`v3.7`](https://togithub.com/kjd/idna/compare/v3.6...v3.7)

[Compare Source](https://togithub.com/kjd/idna/compare/v3.6...v3.7)

### [`v3.6`](https://togithub.com/kjd/idna/compare/v3.5...v3.6)

[Compare Source](https://togithub.com/kjd/idna/compare/v3.5...v3.6)

### [`v3.5`](https://togithub.com/kjd/idna/compare/v3.4...v3.5)

[Compare Source](https://togithub.com/kjd/idna/compare/v3.4...v3.5)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "" 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.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/canonical/spark-k8s-toolkit-py).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yNjkuMiIsInVwZGF0ZWRJblZlciI6IjM3LjI2OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [black](https://togithub.com/psf/black)
([changelog](https://togithub.com/psf/black/blob/main/CHANGES.md)) |
`23.12.1` -> `24.3.0` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/black/24.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/black/24.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/black/23.12.1/24.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/black/23.12.1/24.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

### GitHub Vulnerability Alerts

#### [CVE-2024-21503](https://nvd.nist.gov/vuln/detail/CVE-2024-21503)

Versions of the package black before 24.3.0 are vulnerable to Regular
Expression Denial of Service (ReDoS) via the
lines_with_leading_tabs_expanded function in the strings.py file. An
attacker could exploit this vulnerability by crafting a malicious input
that causes a denial of service.

Exploiting this vulnerability is possible when running Black on
untrusted input, or if you habitually put thousands of leading tab
characters in your docstrings.

---

### Release Notes

<details>
<summary>psf/black (black)</summary>

###
[`v24.3.0`](https://togithub.com/psf/black/blob/HEAD/CHANGES.md#2430)

[Compare Source](https://togithub.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
([#&#8203;4248](https://togithub.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.
([#&#8203;4270](https://togithub.com/psf/black/issues/4270))
- Fix a bug where line-ranges exceeding the last code line would not
work as expected
    ([#&#8203;4273](https://togithub.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).
    ([#&#8203;4278](https://togithub.com/psf/black/issues/4278))

##### Documentation

- Note what happens when `--check` is used with `--quiet`
([#&#8203;4236](https://togithub.com/psf/black/issues/4236))

###
[`v24.2.0`](https://togithub.com/psf/black/blob/HEAD/CHANGES.md#2420)

[Compare Source](https://togithub.com/psf/black/compare/24.1.1...24.2.0)

##### Stable style

- Fixed a bug where comments where mistakenly removed along with
redundant parentheses
    ([#&#8203;4218](https://togithub.com/psf/black/issues/4218))

##### Preview style

- Move the `hug_parens_with_braces_and_square_brackets` feature to the
unstable style
due to an outstanding crash and proposed formatting tweaks
([#&#8203;4198](https://togithub.com/psf/black/issues/4198))
- Fixed a bug where base expressions caused inconsistent formatting of
\*\* in tenary
expression ([#&#8203;4154](https://togithub.com/psf/black/issues/4154))
- Checking for newline before adding one on docstring that is almost at
the line limit
    ([#&#8203;4185](https://togithub.com/psf/black/issues/4185))
- Remove redundant parentheses in `case` statement `if` guards
([#&#8203;4214](https://togithub.com/psf/black/issues/4214)).

##### Configuration

- Fix issue where *Black* would ignore input files in the presence of
symlinks ([#&#8203;4222](https://togithub.com/psf/black/issues/4222))
- *Black* now ignores `pyproject.toml` that is missing a `tool.black`
section when
discovering project root and configuration. Since *Black* continues to
use version
control as an indicator of project root, this is expected to primarily
change behavior
for users in a monorepo setup (desirably). If you wish to preserve
previous behavior,
simply add an empty `[tool.black]` to the previously discovered
`pyproject.toml`
    ([#&#8203;4204](https://togithub.com/psf/black/issues/4204))

##### Output

- Black will swallow any `SyntaxWarning`s or `DeprecationWarning`s
produced by the `ast`
module when performing equivalence checks
([#&#8203;4189](https://togithub.com/psf/black/issues/4189))

##### Integrations

- Add a JSONSchema and provide a validate-pyproject entry-point
([#&#8203;4181](https://togithub.com/psf/black/issues/4181))

###
[`v24.1.1`](https://togithub.com/psf/black/blob/HEAD/CHANGES.md#2411)

[Compare Source](https://togithub.com/psf/black/compare/24.1.0...24.1.1)

Bugfix release to fix a bug that made Black unusable on certain file
systems with strict
limits on path length.

##### Preview style

- Consistently add trailing comma on typed parameters
([#&#8203;4164](https://togithub.com/psf/black/issues/4164))

##### Configuration

- Shorten the length of the name of the cache file to fix crashes on
file systems that
do not support long paths
([#&#8203;4176](https://togithub.com/psf/black/issues/4176))

###
[`v24.1.0`](https://togithub.com/psf/black/blob/HEAD/CHANGES.md#2410)

[Compare
Source](https://togithub.com/psf/black/compare/23.12.1...24.1.0)

##### Highlights

This release introduces the new 2024 stable style
([#&#8203;4106](https://togithub.com/psf/black/issues/4106)),
stabilizing the following
changes:

- Add parentheses around `if`-`else` expressions
([#&#8203;2278](https://togithub.com/psf/black/issues/2278))
- Dummy class and function implementations consisting only of `...` are
formatted more
compactly ([#&#8203;3796](https://togithub.com/psf/black/issues/3796))
- If an assignment statement is too long, we now prefer splitting on the
right-hand side
    ([#&#8203;3368](https://togithub.com/psf/black/issues/3368))
- Hex codes in Unicode escape sequences are now standardized to
lowercase ([#&#8203;2916](https://togithub.com/psf/black/issues/2916))
- Allow empty first lines at the beginning of most blocks
([#&#8203;3967](https://togithub.com/psf/black/issues/3967),
[#&#8203;4061](https://togithub.com/psf/black/issues/4061))
- Add parentheses around long type annotations
([#&#8203;3899](https://togithub.com/psf/black/issues/3899))
- Enforce newline after module docstrings
([#&#8203;3932](https://togithub.com/psf/black/issues/3932),
[#&#8203;4028](https://togithub.com/psf/black/issues/4028))
- Fix incorrect magic trailing comma handling in return types
([#&#8203;3916](https://togithub.com/psf/black/issues/3916))
- Remove blank lines before class docstrings
([#&#8203;3692](https://togithub.com/psf/black/issues/3692))
- Wrap multiple context managers in parentheses if combined in a single
`with` statement
    ([#&#8203;3489](https://togithub.com/psf/black/issues/3489))
- Fix bug in line length calculations for power operations
([#&#8203;3942](https://togithub.com/psf/black/issues/3942))
- Add trailing commas to collection literals even if there's a comment
after the last
    entry ([#&#8203;3393](https://togithub.com/psf/black/issues/3393))
- When using `--skip-magic-trailing-comma` or `-C`, trailing commas are
stripped from
subscript expressions with more than 1 element
([#&#8203;3209](https://togithub.com/psf/black/issues/3209))
- Add extra blank lines in stubs in a few cases
([#&#8203;3564](https://togithub.com/psf/black/issues/3564),
[#&#8203;3862](https://togithub.com/psf/black/issues/3862))
- Accept raw strings as docstrings
([#&#8203;3947](https://togithub.com/psf/black/issues/3947))
- Split long lines in case blocks
([#&#8203;4024](https://togithub.com/psf/black/issues/4024))
- Stop removing spaces from walrus operators within subscripts
([#&#8203;3823](https://togithub.com/psf/black/issues/3823))
- Fix incorrect formatting of certain async statements
([#&#8203;3609](https://togithub.com/psf/black/issues/3609))
- Allow combining `# fmt: skip` with other comments
([#&#8203;3959](https://togithub.com/psf/black/issues/3959))

There are already a few improvements in the `--preview` style, which are
slated for the
2025 stable style. Try them out and
[share your feedback](https://togithub.com/psf/black/issues). In the
past, the preview
style has included some features that we were not able to stabilize.
This year, we're
adding a separate `--unstable` style for features with known problems.
Now, the
`--preview` style only includes features that we actually expect to make
it into next
year's stable style.

##### Stable style

Several bug fixes were made in features that are moved to the stable
style in this
release:

- Fix comment handling when parenthesising conditional expressions
([#&#8203;4134](https://togithub.com/psf/black/issues/4134))
- Fix bug where spaces were not added around parenthesized walruses in
subscripts,
unlike other binary operators
([#&#8203;4109](https://togithub.com/psf/black/issues/4109))
- Remove empty lines before docstrings in async functions
([#&#8203;4132](https://togithub.com/psf/black/issues/4132))
- Address a missing case in the change to allow empty lines at the
beginning of all
blocks, except immediately before a docstring
([#&#8203;4130](https://togithub.com/psf/black/issues/4130))
- For stubs, fix logic to enforce empty line after nested classes with
bodies ([#&#8203;4141](https://togithub.com/psf/black/issues/4141))

##### Preview style

- Add `--unstable` style, covering preview features that have known
problems that would
block them from going into the stable style. Also add the
`--enable-unstable-feature`
    flag; for example, use
`--enable-unstable-feature hug_parens_with_braces_and_square_brackets`
to apply this
preview feature throughout 2024, even if a later Black release
downgrades the feature
to unstable ([#&#8203;4096](https://togithub.com/psf/black/issues/4096))
- Format module docstrings the same as class and function docstrings
([#&#8203;4095](https://togithub.com/psf/black/issues/4095))
- Fix crash when using a walrus in a dictionary
([#&#8203;4155](https://togithub.com/psf/black/issues/4155))
- Fix unnecessary parentheses when wrapping long dicts
([#&#8203;4135](https://togithub.com/psf/black/issues/4135))
- Stop normalizing spaces before `# fmt: skip` comments
([#&#8203;4146](https://togithub.com/psf/black/issues/4146))

##### Configuration

- Print warning when configuration in `pyproject.toml` contains an
invalid key ([#&#8203;4165](https://togithub.com/psf/black/issues/4165))
- Fix symlink handling, properly ignoring symlinks that point outside of
root ([#&#8203;4161](https://togithub.com/psf/black/issues/4161))
- Fix cache mtime logic that resulted in false positive cache hits
([#&#8203;4128](https://togithub.com/psf/black/issues/4128))
- Remove the long-deprecated `--experimental-string-processing` flag.
This feature can
currently be enabled with `--preview --enable-unstable-feature
string_processing`.
    ([#&#8203;4096](https://togithub.com/psf/black/issues/4096))

##### Integrations

- Revert the change to run Black's pre-commit integration only on
specific git hooks
([#&#8203;3940](https://togithub.com/psf/black/issues/3940)) for better
compatibility with older versions of pre-commit
([#&#8203;4137](https://togithub.com/psf/black/issues/4137))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "" 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.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/canonical/spark-k8s-toolkit-py).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yNjEuMCIsInVwZGF0ZWRJblZlciI6IjM3LjI2MS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Enrico Deusebio <enrico.deusebio@canonical.com>
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [anyio](https://togithub.com/agronholm/anyio)
([changelog](https://anyio.readthedocs.io/en/stable/versionhistory.html))
| `==3.7.0` -> `==4.3.0` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/anyio/4.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/anyio/4.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/anyio/3.7.0/4.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/anyio/3.7.0/4.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [certifi](https://togithub.com/certifi/python-certifi) | `==2023.7.22`
-> `==2024.2.2` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/certifi/2024.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/certifi/2024.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/certifi/2023.7.22/2024.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/certifi/2023.7.22/2024.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [flake8](https://togithub.com/pycqa/flake8)
([changelog](https://flake8.pycqa.org/en/latest/release-notes/index.html))
| `5.0.4` -> `7.0.0` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/flake8/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/flake8/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/flake8/5.0.4/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/flake8/5.0.4/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [httpcore](https://togithub.com/encode/httpcore) | `==0.17.2` ->
`==1.0.5` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/httpcore/1.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/httpcore/1.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/httpcore/0.17.2/1.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/httpcore/0.17.2/1.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>agronholm/anyio (anyio)</summary>

### [`v4.3.0`](https://togithub.com/agronholm/anyio/releases/tag/4.3.0)

[Compare
Source](https://togithub.com/agronholm/anyio/compare/4.2.0...4.3.0)

- Added support for the Python 3.12 `walk_up` keyword argument in
`anyio.Path.relative_to()` (PR by Colin Taylor)

- Fixed passing `total_tokens` to `anyio.CapacityLimiter()` as a keyword
argument not working on the `trio` backend
([#&#8203;515](https://togithub.com/agronholm/anyio/issues/515))

- Fixed `Process.aclose()` not performing the minimum level of necessary
cleanup when cancelled. Previously:

    -   Cancellation of `Process.aclose()` could leak an orphan process
- Cancellation of `run_process()` could very briefly leak an orphan
process.
- Cancellation of `Process.aclose()` or `run_process()` on Trio could
leave standard streams unclosed

    (PR by Ganden Schaffner)

- Fixed `Process.stdin.aclose()`, `Process.stdout.aclose()`, and
`Process.stderr.aclose()` not including a checkpoint on asyncio (PR by
Ganden Schaffner)

-   Fixed documentation on how to provide your own typed attributes

### [`v4.2.0`](https://togithub.com/agronholm/anyio/releases/tag/4.2.0)

[Compare
Source](https://togithub.com/agronholm/anyio/compare/4.1.0...4.2.0)

- Add support for `byte`-based paths in `connect_unix`,
`create_unix_listeners`, `create_unix_datagram_socket`, and
`create_connected_unix_datagram_socket`. (PR by Lura Skye)

- Enabled the `Event` and `CapacityLimiter` classes to be instantiated
outside an event loop thread

- Broadly improved/fixed the type annotations. Among other things, many
functions and methods that take variadic positional arguments now make
use of PEP 646 `TypeVarTuple` to allow the positional arguments to be
validated by static type checkers. These changes affected numerous
methods and functions, including:

    -   `anyio.run()`
    -   `TaskGroup.start_soon()`
    -   `anyio.from_thread.run()`
    -   `anyio.from_thread.run_sync()`
    -   `anyio.to_thread.run_sync()`
    -   `anyio.to_process.run_sync()`
    -   `BlockingPortal.call()`
    -   `BlockingPortal.start_task_soon()`
    -   `BlockingPortal.start_task()`

(also resolves
[#&#8203;560](https://togithub.com/agronholm/anyio/issues/560))

-   Fixed various type annotations of `anyio.Path` to match Typeshed:

    -   `anyio.Path.__lt__()`
    -   `anyio.Path.__le__()`
    -   `anyio.Path.__gt__()`
    -   `anyio.Path.__ge__()`
    -   `anyio.Path.__truediv__()`
    -   `anyio.Path.__rtruediv__()`
    -   `anyio.Path.hardlink_to()`
    -   `anyio.Path.samefile()`
    -   `anyio.Path.symlink_to()`
    -   `anyio.Path.with_segments()`

    (PR by Ganden Schaffner)

- Fixed adjusting the total number of tokens in a `CapacityLimiter` on
asyncio failing to wake up tasks waiting to acquire the limiter in
certain edge cases (fixed with help from Egor Blagov)

- Fixed `loop_factory` and `use_uvloop` options not being used on the
asyncio backend
([#&#8203;643](https://togithub.com/agronholm/anyio/issues/643))

- Fixed cancellation propagating on asyncio from a task group to child
tasks if the task hosting the task group is in a shielded cancel scope
([#&#8203;642](https://togithub.com/agronholm/anyio/issues/642))

### [`v4.1.0`](https://togithub.com/agronholm/anyio/releases/tag/4.1.0)

[Compare
Source](https://togithub.com/agronholm/anyio/compare/4.0.0...4.1.0)

-   Adapted to API changes made in Trio v0.23:
- Call `trio.to_thread.run_sync()` using the `abandon_on_cancel` keyword
argument instead of `cancellable`
    -   Removed a checkpoint when exiting a task group
- Renamed the `cancellable` argument in `anyio.to_thread.run_sync()` to
`abandon_on_cancel` (and deprecated the old parameter name)
    -   Bumped minimum version of Trio to v0.23
- Added support for voluntary thread cancellation via
`anyio.from_thread.check_cancelled()`
-   Bumped minimum version of trio to v0.23
- Exposed the `ResourceGuard` class in the public API
([#&#8203;627](https://togithub.com/agronholm/anyio/issues/627))
- Fixed `RuntimeError: Runner is closed` when running higher-scoped
async generator fixtures in some cases
([#&#8203;619](https://togithub.com/agronholm/anyio/issues/619))
- Fixed discrepancy between `asyncio` and `trio` where reraising a
cancellation exception in an `except*` block would incorrectly bubble
out of its cancel scope
([#&#8203;634](https://togithub.com/agronholm/anyio/issues/634))

### [`v4.0.0`](https://togithub.com/agronholm/anyio/releases/tag/4.0.0)

[Compare
Source](https://togithub.com/agronholm/anyio/compare/3.7.1...4.0.0)

- **BACKWARDS INCOMPATIBLE** Replaced AnyIO's own `ExceptionGroup` class
with the PEP 654 `BaseExceptionGroup` and `ExceptionGroup`
-   **BACKWARDS INCOMPATIBLE** Changes to cancellation semantics:
- Any exceptions raising out of a task groups are now nested inside an
`ExceptionGroup` (or `BaseExceptionGroup` if one or more `BaseException`
were included)
- Fixed task group not raising a cancellation exception on asyncio at
exit if no child tasks were spawned and an outer cancellation scope had
been cancelled before
- Ensured that exiting a `TaskGroup` always hits a yield point,
regardless of whether there are running child tasks to be waited on
- On asyncio, cancel scopes will defer cancelling tasks that are
scheduled to resume with a finished future
- On asyncio and Python 3.9/3.10, cancel scopes now only suppress
cancellation exceptions if the cancel message matches the scope
- Task groups on all backends now raise a single cancellation exception
when an outer cancel scope is cancelled, and no exceptions other than
cancellation exceptions are raised in the group
- **BACKWARDS INCOMPATIBLE** Changes the pytest plugin to run all tests
and fixtures in the same task, allowing fixtures to set context
variables for tests and other fixtures
- **BACKWARDS INCOMPATIBLE** Changed `anyio.Path.relative_to()` and
`anyio.Path.is_relative_to()` to only accept one argument, as passing
multiple arguments is deprecated as of Python 3.12
- **BACKWARDS INCOMPATIBLE** Dropped support for spawning tasks from
old-style coroutine functions (`@asyncio.coroutine`)
- **BACKWARDS INCOMPATIBLE** The `policy` option on the `asyncio`
backend was changed to `loop_factory` to accommodate `asyncio.Runner`
- Changed `anyio.run()` to use `asyncio.Runner` (or a back-ported
version of it on Pythons older than 3.11) on the `asyncio` backend
-   Dropped support for Python 3.7
-   Added support for Python 3.12
-   Bumped minimum version of trio to v0.22
-   Added the `anyio.Path.is_junction()` and `anyio.Path.walk()` methods
- Added `create_unix_datagram_socket` and
`create_connected_unix_datagram_socket` to create UNIX datagram sockets
(PR by Jean Hominal)
- Fixed `from_thread.run` and `from_thread.run_sync` not setting sniffio
on asyncio. As a result:
- Fixed `from_thread.run_sync` failing when used to call
sniffio-dependent functions on asyncio
- Fixed `from_thread.run` failing when used to call sniffio-dependent
functions on asyncio from a thread running trio or curio
- Fixed deadlock when using
`from_thread.start_blocking_portal(backend="asyncio")` in a thread
running trio or curio (PR by Ganden Schaffner)
-   Improved type annotations:
- The `item_type` argument of `create_memory_object_stream` was
deprecated. To indicate the item type handled by the stream, use
`create_memory_object_stream[T_Item]()` instead. Type checking should no
longer fail when annotating memory object streams with uninstantiable
item types (PR by Ganden Schaffner)
- Added the `CancelScope.cancelled_caught` property which tells users if
the cancel scope suppressed a cancellation exception
- Fixed `fail_after()` raising an unwarranted `TimeoutError` when the
cancel scope was cancelled before reaching its deadline
- Fixed `MemoryObjectReceiveStream.receive()` causing the receiving task
on asyncio to remain in a cancelled state if the operation was cancelled
after an item was queued to be received by the task (but before the task
could actually receive the item)
- Fixed `TaskGroup.start()` on asyncio not responding to cancellation
from the outside
- Fixed tasks started from `BlockingPortal` not notifying synchronous
listeners (`concurrent.futures.wait()`) when they're cancelled
- Removed unnecessary extra waiting cycle in `Event.wait()` on asyncio
in the case where the event was not yet set
- Fixed processes spawned by `anyio.to_process()` being "lost" as
unusable to the process pool when processes that have idled over 5
minutes are pruned at part of the `to_process.run_sync()` call, leading
to increased memory consumption (PR by Anael Gorfinkel)

Changes since 4.0.0rc1:

- Fixed the type annotation of `TaskGroup.start_soon()` to accept any
awaitables (already in v3.7.0 but was missing from 4.0.0rc1)
- Changed `CancelScope` to also consider the cancellation count (in
addition to the cancel message) on asyncio to determine if a
cancellation exception should be swallowed on scope exit, to combat
issues where third party libraries catch the `CancelledError` and raise
another, thus erasing the original cancel message
- Worked around a [CPython
bug](https://togithub.com/python/cpython/issues/108668) that caused
`TLSListener.handle_handshake_error()` on asyncio to log `"NoneType:
None"` instead of the error (PR by Ganden Schaffner)
- Re-added the `item_type` argument to `create_memory_object_stream()`
(but using it raises a deprecation warning and does nothing with regards
to the static types of the returned streams)
- Fixed processes spawned by `anyio.to_process()` being "lost" as
unusable to the process pool when processes that have idled over 5
minutes are pruned at part of the `to_process.run_sync()` call, leading
to increased memory consumption (PR by Anael Gorfinkel)

###
[`v3.7.1`](https://togithub.com/agronholm/anyio/compare/3.7.0...3.7.1)

[Compare
Source](https://togithub.com/agronholm/anyio/compare/3.7.0...3.7.1)

</details>

<details>
<summary>certifi/python-certifi (certifi)</summary>

###
[`v2024.2.2`](https://togithub.com/certifi/python-certifi/compare/2023.11.17...2024.02.02)

[Compare
Source](https://togithub.com/certifi/python-certifi/compare/2023.11.17...2024.02.02)

###
[`v2023.11.17`](https://togithub.com/certifi/python-certifi/compare/2023.07.22...2023.11.17)

[Compare
Source](https://togithub.com/certifi/python-certifi/compare/2023.07.22...2023.11.17)

</details>

<details>
<summary>pycqa/flake8 (flake8)</summary>

### [`v7.0.0`](https://togithub.com/pycqa/flake8/compare/6.1.0...7.0.0)

[Compare
Source](https://togithub.com/pycqa/flake8/compare/6.1.0...7.0.0)

### [`v6.1.0`](https://togithub.com/pycqa/flake8/compare/6.0.0...6.1.0)

[Compare
Source](https://togithub.com/pycqa/flake8/compare/6.0.0...6.1.0)

### [`v6.0.0`](https://togithub.com/pycqa/flake8/compare/5.0.4...6.0.0)

[Compare
Source](https://togithub.com/pycqa/flake8/compare/5.0.4...6.0.0)

</details>

<details>
<summary>encode/httpcore (httpcore)</summary>

###
[`v1.0.5`](https://togithub.com/encode/httpcore/blob/HEAD/CHANGELOG.md#105-March-27th-2024)

[Compare
Source](https://togithub.com/encode/httpcore/compare/1.0.4...1.0.5)

- Handle `EndOfStream` exception for anyio backend.
([#&#8203;899](https://togithub.com/encode/httpcore/issues/899))
- Allow trio `0.25.*` series in package dependancies.
([#&#8203;903](https://togithub.com/encode/httpcore/issues/903))

###
[`v1.0.4`](https://togithub.com/encode/httpcore/blob/HEAD/CHANGELOG.md#104-February-21st-2024)

[Compare
Source](https://togithub.com/encode/httpcore/compare/1.0.3...1.0.4)

- Add `target` request extension.
([#&#8203;888](https://togithub.com/encode/httpcore/issues/888))
- Fix support for connection `Upgrade` and `CONNECT` when some data in
the stream has been read.
([#&#8203;882](https://togithub.com/encode/httpcore/issues/882))

###
[`v1.0.3`](https://togithub.com/encode/httpcore/blob/HEAD/CHANGELOG.md#103-February-13th-2024)

[Compare
Source](https://togithub.com/encode/httpcore/compare/1.0.2...1.0.3)

- Fix support for async cancellations.
([#&#8203;880](https://togithub.com/encode/httpcore/issues/880))
- Fix trace extension when used with socks proxy.
([#&#8203;849](https://togithub.com/encode/httpcore/issues/849))
- Fix SSL context for connections using the "wss" scheme
([#&#8203;869](https://togithub.com/encode/httpcore/issues/869))

###
[`v1.0.2`](https://togithub.com/encode/httpcore/blob/HEAD/CHANGELOG.md#102-November-10th-2023)

[Compare
Source](https://togithub.com/encode/httpcore/compare/1.0.1...1.0.2)

- Fix `float("inf")` timeouts in `Event.wait` function.
([#&#8203;846](https://togithub.com/encode/httpcore/issues/846))

###
[`v1.0.1`](https://togithub.com/encode/httpcore/blob/HEAD/CHANGELOG.md#101-November-3rd-2023)

[Compare
Source](https://togithub.com/encode/httpcore/compare/1.0.0...1.0.1)

- Fix pool timeout to account for the total time spent retrying.
([#&#8203;823](https://togithub.com/encode/httpcore/issues/823))
- Raise a neater RuntimeError when the correct async deps are not
installed.
([#&#8203;826](https://togithub.com/encode/httpcore/issues/826))
- Add support for synchronous TLS-in-TLS streams.
([#&#8203;840](https://togithub.com/encode/httpcore/issues/840))

###
[`v1.0.0`](https://togithub.com/encode/httpcore/blob/HEAD/CHANGELOG.md#100-October-6th-2023)

[Compare
Source](https://togithub.com/encode/httpcore/compare/0.18.0...1.0.0)

From version 1.0 our async support is now optional, as the package has
minimal dependencies by default.

For async support use either `pip install 'httpcore[asyncio]'` or `pip
install 'httpcore[trio]'`.

The project versioning policy is now explicitly governed by SEMVER. See
https://semver.org/.

- Async support becomes fully optional.
([#&#8203;809](https://togithub.com/encode/httpcore/issues/809))
- Add support for Python 3.12.
([#&#8203;807](https://togithub.com/encode/httpcore/issues/807))

###
[`v0.18.0`](https://togithub.com/encode/httpcore/blob/HEAD/CHANGELOG.md#0180-September-8th-2023)

[Compare
Source](https://togithub.com/encode/httpcore/compare/0.17.3...0.18.0)

- Add support for HTTPS proxies.
([#&#8203;745](https://togithub.com/encode/httpcore/issues/745),
[#&#8203;786](https://togithub.com/encode/httpcore/issues/786))
- Drop Python 3.7 support.
([#&#8203;727](https://togithub.com/encode/httpcore/issues/727))
- Handle `sni_hostname` extension with SOCKS proxy.
([#&#8203;774](https://togithub.com/encode/httpcore/issues/774))
- Handle HTTP/1.1 half-closed connections gracefully.
([#&#8203;641](https://togithub.com/encode/httpcore/issues/641))
- Change the type of `Extensions` from `Mapping[Str, Any]` to
`MutableMapping[Str, Any]`.
([#&#8203;762](https://togithub.com/encode/httpcore/issues/762))

###
[`v0.17.3`](https://togithub.com/encode/httpcore/blob/HEAD/CHANGELOG.md#0173-July-5th-2023)

[Compare
Source](https://togithub.com/encode/httpcore/compare/0.17.2...0.17.3)

- Support async cancellations, ensuring that the connection pool is left
in a clean state when cancellations occur.
([#&#8203;726](https://togithub.com/encode/httpcore/issues/726))
- The networking backend interface has [been added to the public
API](https://www.encode.io/httpcore/network-backends). Some classes
which were previously private implementation detail are now part of the
top-level public API.
([#&#8203;699](https://togithub.com/encode/httpcore/issues/699))
- Graceful handling of HTTP/2 GoAway frames, with requests being
transparently retried on a new connection.
([#&#8203;730](https://togithub.com/encode/httpcore/issues/730))
- Add exceptions when a synchronous `trace callback` is passed to an
asynchronous request or an asynchronous `trace callback` is passed to a
synchronous request.
([#&#8203;717](https://togithub.com/encode/httpcore/issues/717))
- Drop Python 3.7 support.
([#&#8203;727](https://togithub.com/encode/httpcore/issues/727))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 1am and before 2am on saturday"
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](https://togithub.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 [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/canonical/spark-k8s-toolkit-py).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yNjkuMiIsInVwZGF0ZWRJblZlciI6IjM3LjI2OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [idna](https://togithub.com/kjd/idna)
([changelog](https://togithub.com/kjd/idna/blob/master/HISTORY.rst)) |
`==3.4` -> `==3.7` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/idna/3.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/idna/3.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/idna/3.4/3.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/idna/3.4/3.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

### GitHub Vulnerability Alerts

####
[CVE-2024-3651](https://togithub.com/kjd/idna/security/advisories/GHSA-jjg7-2v4v-x38h)

### Impact
A specially crafted argument to the `idna.encode()` function could
consume significant resources. This may lead to a denial-of-service.

### Patches
The function has been refined to reject such strings without the
associated resource consumption in version 3.7.

### Workarounds
Domain names cannot exceed 253 characters in length, if this length
limit is enforced prior to passing the domain to the `idna.encode()`
function it should no longer consume significant resources. This is
triggered by arbitrarily large inputs that would not occur in normal
usage, but may be passed to the library assuming there is no preliminary
input validation by the higher-level application.

### References
* https://huntr.com/bounties/93d78d07-d791-4b39-a845-cbfabc44aadb

---

### Release Notes

<details>
<summary>kjd/idna (idna)</summary>

### [`v3.7`](https://togithub.com/kjd/idna/compare/v3.6...v3.7)

[Compare Source](https://togithub.com/kjd/idna/compare/v3.6...v3.7)

### [`v3.6`](https://togithub.com/kjd/idna/compare/v3.5...v3.6)

[Compare Source](https://togithub.com/kjd/idna/compare/v3.5...v3.6)

### [`v3.5`](https://togithub.com/kjd/idna/compare/v3.4...v3.5)

[Compare Source](https://togithub.com/kjd/idna/compare/v3.4...v3.5)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "" 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.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/canonical/spark-k8s-toolkit-py).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yOTMuMCIsInVwZGF0ZWRJblZlciI6IjM3LjI5My4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [certifi](https://togithub.com/certifi/python-certifi) | `==2023.5.7`
-> `==2023.7.22` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/certifi/2023.7.22?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/certifi/2023.7.22?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/certifi/2023.5.7/2023.7.22?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/certifi/2023.5.7/2023.7.22?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

### GitHub Vulnerability Alerts

####
[CVE-2023-37920](https://togithub.com/certifi/python-certifi/security/advisories/GHSA-xqr8-7jwr-rhp7)

Certifi 2023.07.22 removes root certificates from "e-Tugra" from the
root store. These are in the process of being removed from Mozilla's
trust store.

e-Tugra's root certificates are being removed pursuant to an
investigation prompted by reporting of security issues in their systems.
Conclusions of Mozilla's investigation can be found
[here](https://groups.google.com/a/mozilla.org/g/dev-security-policy/c/C-HrP1SEq1A).

---

### Release Notes

<details>
<summary>certifi/python-certifi (certifi)</summary>

###
[`v2023.7.22`](https://togithub.com/certifi/python-certifi/compare/2023.05.07...2023.07.22)

[Compare
Source](https://togithub.com/certifi/python-certifi/compare/2023.05.07...2023.07.22)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "" 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.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/canonical/spark-k8s-toolkit-py).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yOTMuMCIsInVwZGF0ZWRJblZlciI6IjM3LjI5My4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [certifi](https://togithub.com/certifi/python-certifi) | `==2023.5.7`
-> `==2023.7.22` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/certifi/2023.7.22?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/certifi/2023.7.22?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/certifi/2023.5.7/2023.7.22?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/certifi/2023.5.7/2023.7.22?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

### GitHub Vulnerability Alerts

####
[CVE-2023-37920](https://togithub.com/certifi/python-certifi/security/advisories/GHSA-xqr8-7jwr-rhp7)

Certifi 2023.07.22 removes root certificates from "e-Tugra" from the
root store. These are in the process of being removed from Mozilla's
trust store.

e-Tugra's root certificates are being removed pursuant to an
investigation prompted by reporting of security issues in their systems.
Conclusions of Mozilla's investigation can be found
[here](https://groups.google.com/a/mozilla.org/g/dev-security-policy/c/C-HrP1SEq1A).

---

### Release Notes

<details>
<summary>certifi/python-certifi (certifi)</summary>

###
[`v2023.7.22`](https://togithub.com/certifi/python-certifi/compare/2023.05.07...2023.07.22)

[Compare
Source](https://togithub.com/certifi/python-certifi/compare/2023.05.07...2023.07.22)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "" 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.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/canonical/spark-k8s-toolkit-py).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMTMuMSIsInVwZGF0ZWRJblZlciI6IjM3LjMxMy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [idna](https://togithub.com/kjd/idna)
([changelog](https://togithub.com/kjd/idna/blob/master/HISTORY.rst)) |
`==3.4` -> `==3.7` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/idna/3.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/idna/3.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/idna/3.4/3.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/idna/3.4/3.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

### GitHub Vulnerability Alerts

####
[CVE-2024-3651](https://togithub.com/kjd/idna/security/advisories/GHSA-jjg7-2v4v-x38h)

### Impact
A specially crafted argument to the `idna.encode()` function could
consume significant resources. This may lead to a denial-of-service.

### Patches
The function has been refined to reject such strings without the
associated resource consumption in version 3.7.

### Workarounds
Domain names cannot exceed 253 characters in length, if this length
limit is enforced prior to passing the domain to the `idna.encode()`
function it should no longer consume significant resources. This is
triggered by arbitrarily large inputs that would not occur in normal
usage, but may be passed to the library assuming there is no preliminary
input validation by the higher-level application.

### References
* https://huntr.com/bounties/93d78d07-d791-4b39-a845-cbfabc44aadb

---

### Release Notes

<details>
<summary>kjd/idna (idna)</summary>

### [`v3.7`](https://togithub.com/kjd/idna/compare/v3.6...v3.7)

[Compare Source](https://togithub.com/kjd/idna/compare/v3.6...v3.7)

### [`v3.6`](https://togithub.com/kjd/idna/compare/v3.5...v3.6)

[Compare Source](https://togithub.com/kjd/idna/compare/v3.5...v3.6)

### [`v3.5`](https://togithub.com/kjd/idna/compare/v3.4...v3.5)

[Compare Source](https://togithub.com/kjd/idna/compare/v3.4...v3.5)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "" 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.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/canonical/spark-k8s-toolkit-py).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMTMuMSIsInVwZGF0ZWRJblZlciI6IjM3LjMxMy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[canonical/data-platform-workflows](https://togithub.com/canonical/data-platform-workflows)
| action | major | `v13` -> `v16` |

---

### Release Notes

<details>
<summary>canonical/data-platform-workflows
(canonical/data-platform-workflows)</summary>

###
[`v16`](https://togithub.com/canonical/data-platform-workflows/compare/v15...v16)

[Compare
Source](https://togithub.com/canonical/data-platform-workflows/compare/v15...v16)

###
[`v15`](https://togithub.com/canonical/data-platform-workflows/compare/v14...v15)

[Compare
Source](https://togithub.com/canonical/data-platform-workflows/compare/v14...v15)

###
[`v14`](https://togithub.com/canonical/data-platform-workflows/compare/v13...v14)

[Compare
Source](https://togithub.com/canonical/data-platform-workflows/compare/v13...v14)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 1am and before 2am on saturday"
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.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/canonical/spark-k8s-toolkit-py).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40MjAuMSIsInVwZGF0ZWRJblZlciI6IjM3LjQyMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [anyio](https://togithub.com/agronholm/anyio)
([changelog](https://anyio.readthedocs.io/en/stable/versionhistory.html))
| `==3.7.0` -> `==4.4.0` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/anyio/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/anyio/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/anyio/3.7.0/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/anyio/3.7.0/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [certifi](https://togithub.com/certifi/python-certifi) | `==2023.7.22`
-> `==2024.6.2` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/certifi/2024.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/certifi/2024.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/certifi/2023.7.22/2024.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/certifi/2023.7.22/2024.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [flake8](https://togithub.com/pycqa/flake8)
([changelog](https://flake8.pycqa.org/en/latest/release-notes/index.html))
| `5.0.4` -> `7.1.0` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/flake8/7.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/flake8/7.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/flake8/5.0.4/7.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/flake8/5.0.4/7.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [httpcore](https://togithub.com/encode/httpcore) | `==0.17.2` ->
`==1.0.5` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/httpcore/1.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/httpcore/1.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/httpcore/0.17.2/1.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/httpcore/0.17.2/1.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>agronholm/anyio (anyio)</summary>

### [`v4.4.0`](https://togithub.com/agronholm/anyio/releases/tag/4.4.0)

[Compare
Source](https://togithub.com/agronholm/anyio/compare/4.3.0...4.4.0)

- Added the `BlockingPortalProvider` class to aid with constructing
synchronous counterparts to asynchronous interfaces that would otherwise
require multiple blocking portals
- Added `__slots__` to `AsyncResource` so that child classes can use
`__slots__`
([#&#8203;733](https://togithub.com/agronholm/anyio/pull/733); PR by
Justin Su)
-   Added the `TaskInfo.has_pending_cancellation()` method
- Fixed erroneous `RuntimeError: called 'started' twice on the same task
status` when cancelling a task in a TaskGroup created with the `start()`
method before the first checkpoint is reached after calling
`task_status.started()`
([#&#8203;706](https://togithub.com/agronholm/anyio/issues/706); PR by
Dominik Schwabe)
-   Fixed two bugs with `TaskGroup.start()` on asyncio:
- Fixed erroneous `RuntimeError: called 'started' twice on the same task
status` when cancelling a task in a TaskGroup created with the `start()`
method before the first checkpoint is reached after calling
`task_status.started()`
([#&#8203;706](https://togithub.com/agronholm/anyio/issues/706); PR by
Dominik Schwabe)
- Fixed the entire task group being cancelled if a `TaskGroup.start()`
call gets cancelled
([#&#8203;685](https://togithub.com/agronholm/anyio/issues/685),
[#&#8203;710](https://togithub.com/agronholm/anyio/issues/710))
- Fixed a race condition that caused crashes when multiple event loops
of the same backend were running in separate threads and simultaneously
attempted to use AnyIO for their first time
([#&#8203;425](https://togithub.com/agronholm/anyio/issues/425); PR by
David Jiricek and Ganden Schaffner)
- Fixed cancellation delivery on asyncio incrementing the wrong cancel
scope's cancellation counter when cascading a cancel operation to a
child scope, thus failing to uncancel the host task
([#&#8203;716](https://togithub.com/agronholm/anyio/issues/716))
- Fixed erroneous `TypedAttributeLookupError` if a typed attribute
getter raises `KeyError`
- Fixed the asyncio backend not respecting the `PYTHONASYNCIODEBUG`
environment variable when setting the `debug` flag in `anyio.run()`
- Fixed `SocketStream.receive()` not detecting EOF on asyncio if there
is also data in the read buffer
([#&#8203;701](https://togithub.com/agronholm/anyio/issues/701))
- Fixed `MemoryObjectStream` dropping an item if the item is delivered
to a recipient that is waiting to receive an item but has a cancellation
pending ([#&#8203;728](https://togithub.com/agronholm/anyio/issues/728))
- Emit a `ResourceWarning` for `MemoryObjectReceiveStream` and
`MemoryObjectSendStream` that were garbage collected without being
closed (PR by Andrey Kazantcev)
- Fixed `MemoryObjectSendStream.send()` not raising
`BrokenResourceError` when the last corresponding
`MemoryObjectReceiveStream` is closed while waiting to send a falsey
item ([#&#8203;731](https://togithub.com/agronholm/anyio/issues/731); PR
by Ganden Schaffner)

### [`v4.3.0`](https://togithub.com/agronholm/anyio/releases/tag/4.3.0)

[Compare
Source](https://togithub.com/agronholm/anyio/compare/4.2.0...4.3.0)

- Added support for the Python 3.12 `walk_up` keyword argument in
`anyio.Path.relative_to()` (PR by Colin Taylor)

- Fixed passing `total_tokens` to `anyio.CapacityLimiter()` as a keyword
argument not working on the `trio` backend
([#&#8203;515](https://togithub.com/agronholm/anyio/issues/515))

- Fixed `Process.aclose()` not performing the minimum level of necessary
cleanup when cancelled. Previously:

    -   Cancellation of `Process.aclose()` could leak an orphan process
- Cancellation of `run_process()` could very briefly leak an orphan
process.
- Cancellation of `Process.aclose()` or `run_process()` on Trio could
leave standard streams unclosed

    (PR by Ganden Schaffner)

- Fixed `Process.stdin.aclose()`, `Process.stdout.aclose()`, and
`Process.stderr.aclose()` not including a checkpoint on asyncio (PR by
Ganden Schaffner)

-   Fixed documentation on how to provide your own typed attributes

### [`v4.2.0`](https://togithub.com/agronholm/anyio/releases/tag/4.2.0)

[Compare
Source](https://togithub.com/agronholm/anyio/compare/4.1.0...4.2.0)

- Add support for `byte`-based paths in `connect_unix`,
`create_unix_listeners`, `create_unix_datagram_socket`, and
`create_connected_unix_datagram_socket`. (PR by Lura Skye)

- Enabled the `Event` and `CapacityLimiter` classes to be instantiated
outside an event loop thread

- Broadly improved/fixed the type annotations. Among other things, many
functions and methods that take variadic positional arguments now make
use of PEP 646 `TypeVarTuple` to allow the positional arguments to be
validated by static type checkers. These changes affected numerous
methods and functions, including:

    -   `anyio.run()`
    -   `TaskGroup.start_soon()`
    -   `anyio.from_thread.run()`
    -   `anyio.from_thread.run_sync()`
    -   `anyio.to_thread.run_sync()`
    -   `anyio.to_process.run_sync()`
    -   `BlockingPortal.call()`
    -   `BlockingPortal.start_task_soon()`
    -   `BlockingPortal.start_task()`

(also resolves
[#&#8203;560](https://togithub.com/agronholm/anyio/issues/560))

-   Fixed various type annotations of `anyio.Path` to match Typeshed:

    -   `anyio.Path.__lt__()`
    -   `anyio.Path.__le__()`
    -   `anyio.Path.__gt__()`
    -   `anyio.Path.__ge__()`
    -   `anyio.Path.__truediv__()`
    -   `anyio.Path.__rtruediv__()`
    -   `anyio.Path.hardlink_to()`
    -   `anyio.Path.samefile()`
    -   `anyio.Path.symlink_to()`
    -   `anyio.Path.with_segments()`

    (PR by Ganden Schaffner)

- Fixed adjusting the total number of tokens in a `CapacityLimiter` on
asyncio failing to wake up tasks waiting to acquire the limiter in
certain edge cases (fixed with help from Egor Blagov)

- Fixed `loop_factory` and `use_uvloop` options not being used on the
asyncio backend
([#&#8203;643](https://togithub.com/agronholm/anyio/issues/643))

- Fixed cancellation propagating on asyncio from a task group to child
tasks if the task hosting the task group is in a shielded cancel scope
([#&#8203;642](https://togithub.com/agronholm/anyio/issues/642))

### [`v4.1.0`](https://togithub.com/agronholm/anyio/releases/tag/4.1.0)

[Compare
Source](https://togithub.com/agronholm/anyio/compare/4.0.0...4.1.0)

-   Adapted to API changes made in Trio v0.23:
- Call `trio.to_thread.run_sync()` using the `abandon_on_cancel` keyword
argument instead of `cancellable`
    -   Removed a checkpoint when exiting a task group
- Renamed the `cancellable` argument in `anyio.to_thread.run_sync()` to
`abandon_on_cancel` (and deprecated the old parameter name)
    -   Bumped minimum version of Trio to v0.23
- Added support for voluntary thread cancellation via
`anyio.from_thread.check_cancelled()`
-   Bumped minimum version of trio to v0.23
- Exposed the `ResourceGuard` class in the public API
([#&#8203;627](https://togithub.com/agronholm/anyio/issues/627))
- Fixed `RuntimeError: Runner is closed` when running higher-scoped
async generator fixtures in some cases
([#&#8203;619](https://togithub.com/agronholm/anyio/issues/619))
- Fixed discrepancy between `asyncio` and `trio` where reraising a
cancellation exception in an `except*` block would incorrectly bubble
out of its cancel scope
([#&#8203;634](https://togithub.com/agronholm/anyio/issues/634))

### [`v4.0.0`](https://togithub.com/agronholm/anyio/releases/tag/4.0.0)

[Compare
Source](https://togithub.com/agronholm/anyio/compare/3.7.1...4.0.0)

- **BACKWARDS INCOMPATIBLE** Replaced AnyIO's own `ExceptionGroup` class
with the PEP 654 `BaseExceptionGroup` and `ExceptionGroup`
-   **BACKWARDS INCOMPATIBLE** Changes to cancellation semantics:
- Any exceptions raising out of a task groups are now nested inside an
`ExceptionGroup` (or `BaseExceptionGroup` if one or more `BaseException`
were included)
- Fixed task group not raising a cancellation exception on asyncio at
exit if no child tasks were spawned and an outer cancellation scope had
been cancelled before
- Ensured that exiting a `TaskGroup` always hits a yield point,
regardless of whether there are running child tasks to be waited on
- On asyncio, cancel scopes will defer cancelling tasks that are
scheduled to resume with a finished future
- On asyncio and Python 3.9/3.10, cancel scopes now only suppress
cancellation exceptions if the cancel message matches the scope
- Task groups on all backends now raise a single cancellation exception
when an outer cancel scope is cancelled, and no exceptions other than
cancellation exceptions are raised in the group
- **BACKWARDS INCOMPATIBLE** Changes the pytest plugin to run all tests
and fixtures in the same task, allowing fixtures to set context
variables for tests and other fixtures
- **BACKWARDS INCOMPATIBLE** Changed `anyio.Path.relative_to()` and
`anyio.Path.is_relative_to()` to only accept one argument, as passing
multiple arguments is deprecated as of Python 3.12
- **BACKWARDS INCOMPATIBLE** Dropped support for spawning tasks from
old-style coroutine functions (`@asyncio.coroutine`)
- **BACKWARDS INCOMPATIBLE** The `policy` option on the `asyncio`
backend was changed to `loop_factory` to accommodate `asyncio.Runner`
- Changed `anyio.run()` to use `asyncio.Runner` (or a back-ported
version of it on Pythons older than 3.11) on the `asyncio` backend
-   Dropped support for Python 3.7
-   Added support for Python 3.12
-   Bumped minimum version of trio to v0.22
-   Added the `anyio.Path.is_junction()` and `anyio.Path.walk()` methods
- Added `create_unix_datagram_socket` and
`create_connected_unix_datagram_socket` to create UNIX datagram sockets
(PR by Jean Hominal)
- Fixed `from_thread.run` and `from_thread.run_sync` not setting sniffio
on asyncio. As a result:
- Fixed `from_thread.run_sync` failing when used to call
sniffio-dependent functions on asyncio
- Fixed `from_thread.run` failing when used to call sniffio-dependent
functions on asyncio from a thread running trio or curio
- Fixed deadlock when using
`from_thread.start_blocking_portal(backend="asyncio")` in a thread
running trio or curio (PR by Ganden Schaffner)
-   Improved type annotations:
- The `item_type` argument of `create_memory_object_stream` was
deprecated. To indicate the item type handled by the stream, use
`create_memory_object_stream[T_Item]()` instead. Type checking should no
longer fail when annotating memory object streams with uninstantiable
item types (PR by Ganden Schaffner)
- Added the `CancelScope.cancelled_caught` property which tells users if
the cancel scope suppressed a cancellation exception
- Fixed `fail_after()` raising an unwarranted `TimeoutError` when the
cancel scope was cancelled before reaching its deadline
- Fixed `MemoryObjectReceiveStream.receive()` causing the receiving task
on asyncio to remain in a cancelled state if the operation was cancelled
after an item was queued to be received by the task (but before the task
could actually receive the item)
- Fixed `TaskGroup.start()` on asyncio not responding to cancellation
from the outside
- Fixed tasks started from `BlockingPortal` not notifying synchronous
listeners (`concurrent.futures.wait()`) when they're cancelled
- Removed unnecessary extra waiting cycle in `Event.wait()` on asyncio
in the case where the event was not yet set
- Fixed processes spawned by `anyio.to_process()` being "lost" as
unusable to the process pool when processes that have idled over 5
minutes are pruned at part of the `to_process.run_sync()` call, leading
to increased memory consumption (PR by Anael Gorfinkel)

Changes since 4.0.0rc1:

- Fixed the type annotation of `TaskGroup.start_soon()` to accept any
awaitables (already in v3.7.0 but was missing from 4.0.0rc1)
- Changed `CancelScope` to also consider the cancellation count (in
addition to the cancel message) on asyncio to determine if a
cancellation exception should be swallowed on scope exit, to combat
issues where third party libraries catch the `CancelledError` and raise
another, thus erasing the original cancel message
- Worked around a [CPython
bug](https://togithub.com/python/cpython/issues/108668) that caused
`TLSListener.handle_handshake_error()` on asyncio to log `"NoneType:
None"` instead of the error (PR by Ganden Schaffner)
- Re-added the `item_type` argument to `create_memory_object_stream()`
(but using it raises a deprecation warning and does nothing with regards
to the static types of the returned streams)
- Fixed processes spawned by `anyio.to_process()` being "lost" as
unusable to the process pool when processes that have idled over 5
minutes are pruned at part of the `to_process.run_sync()` call, leading
to increased memory consumption (PR by Anael Gorfinkel)

###
[`v3.7.1`](https://togithub.com/agronholm/anyio/compare/3.7.0...3.7.1)

[Compare
Source](https://togithub.com/agronholm/anyio/compare/3.7.0...3.7.1)

</details>

<details>
<summary>certifi/python-certifi (certifi)</summary>

###
[`v2024.6.2`](https://togithub.com/certifi/python-certifi/compare/2024.02.02...2024.06.02)

[Compare
Source](https://togithub.com/certifi/python-certifi/compare/2024.02.02...2024.06.02)

###
[`v2024.2.2`](https://togithub.com/certifi/python-certifi/compare/2023.11.17...2024.02.02)

[Compare
Source](https://togithub.com/certifi/python-certifi/compare/2023.11.17...2024.02.02)

###
[`v2023.11.17`](https://togithub.com/certifi/python-certifi/compare/2023.07.22...2023.11.17)

[Compare
Source](https://togithub.com/certifi/python-certifi/compare/2023.07.22...2023.11.17)

</details>

<details>
<summary>pycqa/flake8 (flake8)</summary>

### [`v7.1.0`](https://togithub.com/pycqa/flake8/compare/7.0.0...7.1.0)

[Compare
Source](https://togithub.com/pycqa/flake8/compare/7.0.0...7.1.0)

### [`v7.0.0`](https://togithub.com/pycqa/flake8/compare/6.1.0...7.0.0)

[Compare
Source](https://togithub.com/pycqa/flake8/compare/6.1.0...7.0.0)

### [`v6.1.0`](https://togithub.com/pycqa/flake8/compare/6.0.0...6.1.0)

[Compare
Source](https://togithub.com/pycqa/flake8/compare/6.0.0...6.1.0)

### [`v6.0.0`](https://togithub.com/pycqa/flake8/compare/5.0.4...6.0.0)

[Compare
Source](https://togithub.com/pycqa/flake8/compare/5.0.4...6.0.0)

</details>

<details>
<summary>encode/httpcore (httpcore)</summary>

###
[`v1.0.5`](https://togithub.com/encode/httpcore/blob/HEAD/CHANGELOG.md#105-March-27th-2024)

[Compare
Source](https://togithub.com/encode/httpcore/compare/1.0.4...1.0.5)

- Handle `EndOfStream` exception for anyio backend.
([#&#8203;899](https://togithub.com/encode/httpcore/issues/899))
- Allow trio `0.25.*` series in package dependancies.
([#&#8203;903](https://togithub.com/encode/httpcore/issues/903))

###
[`v1.0.4`](https://togithub.com/encode/httpcore/blob/HEAD/CHANGELOG.md#104-February-21st-2024)

[Compare
Source](https://togithub.com/encode/httpcore/compare/1.0.3...1.0.4)

- Add `target` request extension.
([#&#8203;888](https://togithub.com/encode/httpcore/issues/888))
- Fix support for connection `Upgrade` and `CONNECT` when some data in
the stream has been read.
([#&#8203;882](https://togithub.com/encode/httpcore/issues/882))

###
[`v1.0.3`](https://togithub.com/encode/httpcore/blob/HEAD/CHANGELOG.md#103-February-13th-2024)

[Compare
Source](https://togithub.com/encode/httpcore/compare/1.0.2...1.0.3)

- Fix support for async cancellations.
([#&#8203;880](https://togithub.com/encode/httpcore/issues/880))
- Fix trace extension when used with socks proxy.
([#&#8203;849](https://togithub.com/encode/httpcore/issues/849))
- Fix SSL context for connections using the "wss" scheme
([#&#8203;869](https://togithub.com/encode/httpcore/issues/869))

###
[`v1.0.2`](https://togithub.com/encode/httpcore/blob/HEAD/CHANGELOG.md#102-November-10th-2023)

[Compare
Source](https://togithub.com/encode/httpcore/compare/1.0.1...1.0.2)

- Fix `float("inf")` timeouts in `Event.wait` function.
([#&#8203;846](https://togithub.com/encode/httpcore/issues/846))

###
[`v1.0.1`](https://togithub.com/encode/httpcore/blob/HEAD/CHANGELOG.md#101-November-3rd-2023)

[Compare
Source](https://togithub.com/encode/httpcore/compare/1.0.0...1.0.1)

- Fix pool timeout to account for the total time spent retrying.
([#&#8203;823](https://togithub.com/encode/httpcore/issues/823))
- Raise a neater RuntimeError when the correct async deps are not
installed.
([#&#8203;826](https://togithub.com/encode/httpcore/issues/826))
- Add support for synchronous TLS-in-TLS streams.
([#&#8203;840](https://togithub.com/encode/httpcore/issues/840))

###
[`v1.0.0`](https://togithub.com/encode/httpcore/blob/HEAD/CHANGELOG.md#100-October-6th-2023)

[Compare
Source](https://togithub.com/encode/httpcore/compare/0.18.0...1.0.0)

From version 1.0 our async support is now optional, as the package has
minimal dependencies by default.

For async support use either `pip install 'httpcore[asyncio]'` or `pip
install 'httpcore[trio]'`.

The project versioning policy is now explicitly governed by SEMVER. See
https://semver.org/.

- Async support becomes fully optional.
([#&#8203;809](https://togithub.com/encode/httpcore/issues/809))
- Add support for Python 3.12.
([#&#8203;807](https://togithub.com/encode/httpcore/issues/807))

###
[`v0.18.0`](https://togithub.com/encode/httpcore/blob/HEAD/CHANGELOG.md#0180-September-8th-2023)

[Compare
Source](https://togithub.com/encode/httpcore/compare/0.17.3...0.18.0)

- Add support for HTTPS proxies.
([#&#8203;745](https://togithub.com/encode/httpcore/issues/745),
[#&#8203;786](https://togithub.com/encode/httpcore/issues/786))
- Drop Python 3.7 support.
([#&#8203;727](https://togithub.com/encode/httpcore/issues/727))
- Handle `sni_hostname` extension with SOCKS proxy.
([#&#8203;774](https://togithub.com/encode/httpcore/issues/774))
- Handle HTTP/1.1 half-closed connections gracefully.
([#&#8203;641](https://togithub.com/encode/httpcore/issues/641))
- Change the type of `Extensions` from `Mapping[Str, Any]` to
`MutableMapping[Str, Any]`.
([#&#8203;762](https://togithub.com/encode/httpcore/issues/762))

###
[`v0.17.3`](https://togithub.com/encode/httpcore/blob/HEAD/CHANGELOG.md#0173-July-5th-2023)

[Compare
Source](https://togithub.com/encode/httpcore/compare/0.17.2...0.17.3)

- Support async cancellations, ensuring that the connection pool is left
in a clean state when cancellations occur.
([#&#8203;726](https://togithub.com/encode/httpcore/issues/726))
- The networking backend interface has [been added to the public
API](https://www.encode.io/httpcore/network-backends). Some classes
which were previously private implementation detail are now part of the
top-level public API.
([#&#8203;699](https://togithub.com/encode/httpcore/issues/699))
- Graceful handling of HTTP/2 GoAway frames, with requests being
transparently retried on a new connection.
([#&#8203;730](https://togithub.com/encode/httpcore/issues/730))
- Add exceptions when a synchronous `trace callback` is passed to an
asynchronous request or an asynchronous `trace callback` is passed to a
synchronous request.
([#&#8203;717](https://togithub.com/encode/httpcore/issues/717))
- Drop Python 3.7 support.
([#&#8203;727](https://togithub.com/encode/httpcore/issues/727))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 1am and before 2am on saturday"
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](https://togithub.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 [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/canonical/spark-k8s-toolkit-py).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40MjAuMSIsInVwZGF0ZWRJblZlciI6IjM3LjQyMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [black](https://togithub.com/psf/black)
([changelog](https://togithub.com/psf/black/blob/main/CHANGES.md)) |
`24.4.0` -> `24.4.2` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/black/24.4.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/black/24.4.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/black/24.4.0/24.4.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/black/24.4.0/24.4.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [certifi](https://togithub.com/certifi/python-certifi) | `==2024.6.2`
-> `==2024.7.4` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/certifi/2024.7.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/certifi/2024.7.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/certifi/2024.6.2/2024.7.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/certifi/2024.6.2/2024.7.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [codespell](https://togithub.com/codespell-project/codespell) |
`2.2.6` -> `2.3.0` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/codespell/2.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/codespell/2.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/codespell/2.2.6/2.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/codespell/2.2.6/2.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [exceptiongroup](https://togithub.com/agronholm/exceptiongroup)
([changelog](https://togithub.com/agronholm/exceptiongroup/blob/main/CHANGES.rst))
| `==1.1.1` -> `==1.2.1` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/exceptiongroup/1.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/exceptiongroup/1.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/exceptiongroup/1.1.1/1.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/exceptiongroup/1.1.1/1.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [httpx](https://togithub.com/encode/httpx)
([changelog](https://togithub.com/encode/httpx/blob/master/CHANGELOG.md))
| `==0.24.1` -> `==0.27.0` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/httpx/0.27.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/httpx/0.27.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/httpx/0.24.1/0.27.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/httpx/0.24.1/0.27.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [lightkube](https://togithub.com/gtsystem/lightkube) | `0.15.2` ->
`0.15.3` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/lightkube/0.15.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/lightkube/0.15.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/lightkube/0.15.2/0.15.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/lightkube/0.15.2/0.15.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [lightkube](https://togithub.com/gtsystem/lightkube) | `==0.15.2` ->
`==0.15.3` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/lightkube/0.15.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/lightkube/0.15.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/lightkube/0.15.2/0.15.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/lightkube/0.15.2/0.15.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [lightkube-models](https://togithub.com/gtsystem/lightkube-models) |
`==1.27.1.4` -> `==1.30.0.8` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/lightkube-models/1.30.0.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/lightkube-models/1.30.0.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/lightkube-models/1.27.1.4/1.30.0.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/lightkube-models/1.27.1.4/1.30.0.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [markupsafe](https://palletsprojects.com/p/markupsafe/)
([changelog](https://markupsafe.palletsprojects.com/changes/)) |
`==2.1.3` -> `==2.1.5` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/markupsafe/2.1.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/markupsafe/2.1.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/markupsafe/2.1.3/2.1.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/markupsafe/2.1.3/2.1.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [mypy](https://www.mypy-lang.org/)
([source](https://togithub.com/python/mypy),
[changelog](https://mypy-lang.blogspot.com/)) | `1.9.0` -> `1.10.1` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/mypy/1.10.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/mypy/1.10.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/mypy/1.9.0/1.10.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/mypy/1.9.0/1.10.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [pytest](https://togithub.com/pytest-dev/pytest)
([changelog](https://docs.pytest.org/en/stable/changelog.html)) |
`8.1.1` -> `8.2.2` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/pytest/8.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/pytest/8.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/pytest/8.1.1/8.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pytest/8.1.1/8.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [pyyaml](https://pyyaml.org/)
([source](https://togithub.com/yaml/pyyaml)) | `==6.0` -> `==6.0.1` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/pyyaml/6.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/pyyaml/6.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/pyyaml/6.0/6.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pyyaml/6.0/6.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [sniffio](https://togithub.com/python-trio/sniffio)
([changelog](https://sniffio.readthedocs.io/en/latest/history.html)) |
`==1.3.0` -> `==1.3.1` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/sniffio/1.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/sniffio/1.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/sniffio/1.3.0/1.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/sniffio/1.3.0/1.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [tox](https://togithub.com/tox-dev/tox)
([changelog](https://tox.wiki/en/latest/changelog.html)) | `4.14.2` ->
`4.16.0` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/tox/4.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/tox/4.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/tox/4.14.2/4.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/tox/4.14.2/4.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>psf/black (black)</summary>

###
[`v24.4.2`](https://togithub.com/psf/black/blob/HEAD/CHANGES.md#2442)

[Compare Source](https://togithub.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
([#&#8203;4332](https://togithub.com/psf/black/issues/4332))

##### Performance

- Fix bad performance on certain complex string literals
([#&#8203;4331](https://togithub.com/psf/black/issues/4331))

###
[`v24.4.1`](https://togithub.com/psf/black/blob/HEAD/CHANGES.md#2441)

[Compare Source](https://togithub.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 ([#&#8203;3822](https://togithub.com/psf/black/issues/3822))

##### Stable style

- Fix crash involving indented dummy functions containing newlines
([#&#8203;4318](https://togithub.com/psf/black/issues/4318))

##### Parser

- Add support for type parameter defaults, a new syntactic feature added
to Python 3.13
by PEP 696 ([#&#8203;4327](https://togithub.com/psf/black/issues/4327))

##### Integrations

- Github Action now works even when `git archive` is skipped
([#&#8203;4313](https://togithub.com/psf/black/issues/4313))

</details>

<details>
<summary>certifi/python-certifi (certifi)</summary>

###
[`v2024.7.4`](https://togithub.com/certifi/python-certifi/compare/2024.06.02...2024.07.04)

[Compare
Source](https://togithub.com/certifi/python-certifi/compare/2024.06.02...2024.07.04)

</details>

<details>
<summary>codespell-project/codespell (codespell)</summary>

###
[`v2.3.0`](https://togithub.com/codespell-project/codespell/releases/tag/v2.3.0)

[Compare
Source](https://togithub.com/codespell-project/codespell/compare/v2.2.6...v2.3.0)

#### What's Changed

- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://togithub.com/pre-commit-ci) in
[https://github.com/codespell-project/codespell/pull/3115](https://togithub.com/codespell-project/codespell/pull/3115)
- Add schematrion->schematron by
[@&#8203;AirQuick](https://togithub.com/AirQuick) in
[https://github.com/codespell-project/codespell/pull/3116](https://togithub.com/codespell-project/codespell/pull/3116)
- Add explicit Python 3.12 support by
[@&#8203;korverdev](https://togithub.com/korverdev) in
[https://github.com/codespell-project/codespell/pull/3121](https://togithub.com/codespell-project/codespell/pull/3121)
- Add miscellaneous typos by
[@&#8203;korverdev](https://togithub.com/korverdev) in
[https://github.com/codespell-project/codespell/pull/3117](https://togithub.com/codespell-project/codespell/pull/3117)
- fix: aesthetic(s) should be kept as is by
[@&#8203;SimonVerhoeven](https://togithub.com/SimonVerhoeven) in
[https://github.com/codespell-project/codespell/pull/3126](https://togithub.com/codespell-project/codespell/pull/3126)
- Add more labour\* variants by
[@&#8203;SimonVerhoeven](https://togithub.com/SimonVerhoeven) in
[https://github.com/codespell-project/codespell/pull/3128](https://togithub.com/codespell-project/codespell/pull/3128)
- Add additional spelling corrections for prior and variant. by
[@&#8203;cfi-gb](https://togithub.com/cfi-gb) in
[https://github.com/codespell-project/codespell/pull/3135](https://togithub.com/codespell-project/codespell/pull/3135)
- Fix `no-commit-to-branch` Pre-Commit check by
[@&#8203;korverdev](https://togithub.com/korverdev) in
[https://github.com/codespell-project/codespell/pull/3130](https://togithub.com/codespell-project/codespell/pull/3130)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://togithub.com/pre-commit-ci) in
[https://github.com/codespell-project/codespell/pull/3131](https://togithub.com/codespell-project/codespell/pull/3131)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://togithub.com/pre-commit-ci) in
[https://github.com/codespell-project/codespell/pull/3155](https://togithub.com/codespell-project/codespell/pull/3155)
- Return exit status in **main**.py by
[@&#8203;szepeviktor](https://togithub.com/szepeviktor) in
[https://github.com/codespell-project/codespell/pull/3157](https://togithub.com/codespell-project/codespell/pull/3157)
- Fix ruff alerts (currently) not caught by pre-commit by
[@&#8203;DimitriPapadopoulos](https://togithub.com/DimitriPapadopoulos)
in
[https://github.com/codespell-project/codespell/pull/3158](https://togithub.com/codespell-project/codespell/pull/3158)
- Added new word by
[@&#8203;muhahahmad68](https://togithub.com/muhahahmad68) in
[https://github.com/codespell-project/codespell/pull/3146](https://togithub.com/codespell-project/codespell/pull/3146)
- `dictionary.txt` additions by
[@&#8203;janosh](https://togithub.com/janosh) in
[https://github.com/codespell-project/codespell/pull/3149](https://togithub.com/codespell-project/codespell/pull/3149)
- Add Gelma's typos that start with "a" by
[@&#8203;int-y1](https://togithub.com/int-y1) in
[https://github.com/codespell-project/codespell/pull/3150](https://togithub.com/codespell-project/codespell/pull/3150)
- Add Gelma's typos from "b" to "cl" by
[@&#8203;int-y1](https://togithub.com/int-y1) in
[https://github.com/codespell-project/codespell/pull/3163](https://togithub.com/codespell-project/codespell/pull/3163)
- Add some academies typos by
[@&#8203;peternewman](https://togithub.com/peternewman) in
[https://github.com/codespell-project/codespell/pull/3173](https://togithub.com/codespell-project/codespell/pull/3173)
- Add Gelma's typos from "co" to "cy" by
[@&#8203;int-y1](https://togithub.com/int-y1) in
[https://github.com/codespell-project/codespell/pull/3167](https://togithub.com/codespell-project/codespell/pull/3167)
- Add Gelma's typos that start with "d" by
[@&#8203;int-y1](https://togithub.com/int-y1) in
[https://github.com/codespell-project/codespell/pull/3168](https://togithub.com/codespell-project/codespell/pull/3168)
- Refactor code using `encodings` by
[@&#8203;DimitriPapadopoulos](https://togithub.com/DimitriPapadopoulos)
in
[https://github.com/codespell-project/codespell/pull/3172](https://togithub.com/codespell-project/codespell/pull/3172)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://togithub.com/pre-commit-ci) in
[https://github.com/codespell-project/codespell/pull/3176](https://togithub.com/codespell-project/codespell/pull/3176)
- Add Gelma's typos that start with "e" by
[@&#8203;int-y1](https://togithub.com/int-y1) in
[https://github.com/codespell-project/codespell/pull/3174](https://togithub.com/codespell-project/codespell/pull/3174)
- Add Gelma's typos from "f" to "h" by
[@&#8203;int-y1](https://togithub.com/int-y1) in
[https://github.com/codespell-project/codespell/pull/3175](https://togithub.com/codespell-project/codespell/pull/3175)
- Add alwats->always correction. by
[@&#8203;cfi-gb](https://togithub.com/cfi-gb) in
[https://github.com/codespell-project/codespell/pull/3178](https://togithub.com/codespell-project/codespell/pull/3178)
- Add obsloete->obsolete and friend by
[@&#8203;peternewman](https://togithub.com/peternewman) in
[https://github.com/codespell-project/codespell/pull/3019](https://togithub.com/codespell-project/codespell/pull/3019)
- Add entries to rare dictionary by
[@&#8203;DimitriPapadopoulos](https://togithub.com/DimitriPapadopoulos)
in
[https://github.com/codespell-project/codespell/pull/3179](https://togithub.com/codespell-project/codespell/pull/3179)
- Add Gelma's typos that start with "i" by
[@&#8203;int-y1](https://togithub.com/int-y1) in
[https://github.com/codespell-project/codespell/pull/3177](https://togithub.com/codespell-project/codespell/pull/3177)
- diagional -> diagonal by
[@&#8203;tkoyama010](https://togithub.com/tkoyama010) in
[https://github.com/codespell-project/codespell/pull/3183](https://togithub.com/codespell-project/codespell/pull/3183)
- Add Gelma's typos from "j" to "m" by
[@&#8203;int-y1](https://togithub.com/int-y1) in
[https://github.com/codespell-project/codespell/pull/3180](https://togithub.com/codespell-project/codespell/pull/3180)
- Add Gelma's typos from "n" to "o" by
[@&#8203;int-y1](https://togithub.com/int-y1) in
[https://github.com/codespell-project/codespell/pull/3182](https://togithub.com/codespell-project/codespell/pull/3182)
- Add corrections for vulnerbailit(y|ies)->vulnerabilit(y|ies). by
[@&#8203;cfi-gb](https://togithub.com/cfi-gb) in
[https://github.com/codespell-project/codespell/pull/3185](https://togithub.com/codespell-project/codespell/pull/3185)
- Add Gelma's typos that start with "p" by
[@&#8203;int-y1](https://togithub.com/int-y1) in
[https://github.com/codespell-project/codespell/pull/3184](https://togithub.com/codespell-project/codespell/pull/3184)
- Add Gelma's typos from "q" to "r" by
[@&#8203;int-y1](https://togithub.com/int-y1) in
[https://github.com/codespell-project/codespell/pull/3186](https://togithub.com/codespell-project/codespell/pull/3186)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://togithub.com/pre-commit-ci) in
[https://github.com/codespell-project/codespell/pull/3193](https://togithub.com/codespell-project/codespell/pull/3193)
- openign->opening by [@&#8203;claydugo](https://togithub.com/claydugo)
in
[https://github.com/codespell-project/codespell/pull/3194](https://togithub.com/codespell-project/codespell/pull/3194)
- Add Gelma's typos that start with "s" by
[@&#8203;int-y1](https://togithub.com/int-y1) in
[https://github.com/codespell-project/codespell/pull/3187](https://togithub.com/codespell-project/codespell/pull/3187)
- Add spelling corrections for evaluate by
[@&#8203;adrien-berchet](https://togithub.com/adrien-berchet) in
[https://github.com/codespell-project/codespell/pull/3195](https://togithub.com/codespell-project/codespell/pull/3195)
- Add Gelma's typos from "t" to "z" by
[@&#8203;int-y1](https://togithub.com/int-y1) in
[https://github.com/codespell-project/codespell/pull/3188](https://togithub.com/codespell-project/codespell/pull/3188)
- Dict update by [@&#8203;macpijan](https://togithub.com/macpijan) in
[https://github.com/codespell-project/codespell/pull/3197](https://togithub.com/codespell-project/codespell/pull/3197)
- Improve existing suggestions by
[@&#8203;int-y1](https://togithub.com/int-y1) in
[https://github.com/codespell-project/codespell/pull/3200](https://togithub.com/codespell-project/codespell/pull/3200)
- Add a timeout to jobs that may benefit from it by
[@&#8203;DimitriPapadopoulos](https://togithub.com/DimitriPapadopoulos)
in
[https://github.com/codespell-project/codespell/pull/3199](https://togithub.com/codespell-project/codespell/pull/3199)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://togithub.com/pre-commit-ci) in
[https://github.com/codespell-project/codespell/pull/3201](https://togithub.com/codespell-project/codespell/pull/3201)
- Unify multiple identities of luzpuz and Dimitri by
[@&#8203;yarikoptic](https://togithub.com/yarikoptic) in
[https://github.com/codespell-project/codespell/pull/3205](https://togithub.com/codespell-project/codespell/pull/3205)
- Ignore personal names Damon and Manuel by
[@&#8203;hugovk](https://togithub.com/hugovk) in
[https://github.com/codespell-project/codespell/pull/3204](https://togithub.com/codespell-project/codespell/pull/3204)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://togithub.com/pre-commit-ci) in
[https://github.com/codespell-project/codespell/pull/3214](https://togithub.com/codespell-project/codespell/pull/3214)
- Ignore ill-formed INI files instead of crashing by
[@&#8203;DimitriPapadopoulos](https://togithub.com/DimitriPapadopoulos)
in
[https://github.com/codespell-project/codespell/pull/3213](https://togithub.com/codespell-project/codespell/pull/3213)
- don't show stacktrace from KeyboardInterrupt
[#&#8203;3217](https://togithub.com/codespell-project/codespell/issues/3217)
by [@&#8203;jcubic](https://togithub.com/jcubic) in
[https://github.com/codespell-project/codespell/pull/3218](https://togithub.com/codespell-project/codespell/pull/3218)
- Adding 'hareware' to spelling corrections. by
[@&#8203;barndawgie](https://togithub.com/barndawgie) in
[https://github.com/codespell-project/codespell/pull/3215](https://togithub.com/codespell-project/codespell/pull/3215)
- Add typos for knownledge->knowledge, analyzis->analysis and
compialtion->compilation by
[@&#8203;fishilico](https://togithub.com/fishilico) in
[https://github.com/codespell-project/codespell/pull/3222](https://togithub.com/codespell-project/codespell/pull/3222)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://togithub.com/pre-commit-ci) in
[https://github.com/codespell-project/codespell/pull/3228](https://togithub.com/codespell-project/codespell/pull/3228)
- Add --stdin-single-line option by
[@&#8203;Jendker](https://togithub.com/Jendker) in
[https://github.com/codespell-project/codespell/pull/3224](https://togithub.com/codespell-project/codespell/pull/3224)
- Add spelling corrections for parameters by
[@&#8203;adrien-berchet](https://togithub.com/adrien-berchet) in
[https://github.com/codespell-project/codespell/pull/3230](https://togithub.com/codespell-project/codespell/pull/3230)
- Ignore line endings in exclude-file by
[@&#8203;Jackenmen](https://togithub.com/Jackenmen) in
[https://github.com/codespell-project/codespell/pull/1889](https://togithub.com/codespell-project/codespell/pull/1889)
- Add typo offsers by
[@&#8203;yarikoptic](https://togithub.com/yarikoptic) in
[https://github.com/codespell-project/codespell/pull/3232](https://togithub.com/codespell-project/codespell/pull/3232)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://togithub.com/pre-commit-ci) in
[https://github.com/codespell-project/codespell/pull/3235](https://togithub.com/codespell-project/codespell/pull/3235)
- Process files in sorted rather than arbitrary order by
[@&#8203;hugovk](https://togithub.com/hugovk) in
[https://github.com/codespell-project/codespell/pull/3234](https://togithub.com/codespell-project/codespell/pull/3234)
- Add refinement to 'remore' typo by
[@&#8203;luzpaz](https://togithub.com/luzpaz) in
[https://github.com/codespell-project/codespell/pull/3236](https://togithub.com/codespell-project/codespell/pull/3236)
- chore(license): update to use spdx id by
[@&#8203;chenrui333](https://togithub.com/chenrui333) in
[https://github.com/codespell-project/codespell/pull/3231](https://togithub.com/codespell-project/codespell/pull/3231)
- Materials science related corrections by
[@&#8203;janosh](https://togithub.com/janosh) in
[https://github.com/codespell-project/codespell/pull/3237](https://togithub.com/codespell-project/codespell/pull/3237)
- Add spelling corrections for vulnerability and variant. by
[@&#8203;cfi-gb](https://togithub.com/cfi-gb) in
[https://github.com/codespell-project/codespell/pull/3239](https://togithub.com/codespell-project/codespell/pull/3239)
- Bump actions/setup-python from 4 to 5 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/codespell-project/codespell/pull/3240](https://togithub.com/codespell-project/codespell/pull/3240)
- add velcoity -> velocity by
[@&#8203;zingale](https://togithub.com/zingale) in
[https://github.com/codespell-project/codespell/pull/3241](https://togithub.com/codespell-project/codespell/pull/3241)
- black → ruff format by
[@&#8203;DimitriPapadopoulos](https://togithub.com/DimitriPapadopoulos)
in
[https://github.com/codespell-project/codespell/pull/3242](https://togithub.com/codespell-project/codespell/pull/3242)
- ot is a typo also for it, which i is close to o by
[@&#8203;yarikoptic](https://togithub.com/yarikoptic) in
[https://github.com/codespell-project/codespell/pull/3247](https://togithub.com/codespell-project/codespell/pull/3247)
- Apply a selection of refurb rules by
[@&#8203;DimitriPapadopoulos](https://togithub.com/DimitriPapadopoulos)
in
[https://github.com/codespell-project/codespell/pull/3244](https://togithub.com/codespell-project/codespell/pull/3244)
- Get rid of autoflake by
[@&#8203;DimitriPapadopoulos](https://togithub.com/DimitriPapadopoulos)
in
[https://github.com/codespell-project/codespell/pull/3250](https://togithub.com/codespell-project/codespell/pull/3250)
- Bump actions/upload-artifact from 3 to 4 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/codespell-project/codespell/pull/3253](https://togithub.com/codespell-project/codespell/pull/3253)
- Bump actions/download-artifact from 3 to 4 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/codespell-project/codespell/pull/3254](https://togithub.com/codespell-project/codespell/pull/3254)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://togithub.com/pre-commit-ci) in
[https://github.com/codespell-project/codespell/pull/3257](https://togithub.com/codespell-project/codespell/pull/3257)
- Add spelling correction for miltiple and variant. by
[@&#8203;cfi-gb](https://togithub.com/cfi-gb) in
[https://github.com/codespell-project/codespell/pull/3255](https://togithub.com/codespell-project/codespell/pull/3255)
- Collection of typos by
[@&#8203;korverdev](https://togithub.com/korverdev) in
[https://github.com/codespell-project/codespell/pull/3251](https://togithub.com/codespell-project/codespell/pull/3251)
- test: remove warning when aspell is not installed by
[@&#8203;perillo](https://togithub.com/perillo) in
[https://github.com/codespell-project/codespell/pull/3262](https://togithub.com/codespell-project/codespell/pull/3262)
- Add carrets->carets by [@&#8203;ydah](https://togithub.com/ydah) in
[https://github.com/codespell-project/codespell/pull/3263](https://togithub.com/codespell-project/codespell/pull/3263)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://togithub.com/pre-commit-ci) in
[https://github.com/codespell-project/codespell/pull/3264](https://togithub.com/codespell-project/codespell/pull/3264)
- Add support for ANSI colors on Windows by
[@&#8203;perillo](https://togithub.com/perillo) in
[https://github.com/codespell-project/codespell/pull/3259](https://togithub.com/codespell-project/codespell/pull/3259)
- Add prettier to pre-commit by
[@&#8203;DimitriPapadopoulos](https://togithub.com/DimitriPapadopoulos)
in
[https://github.com/codespell-project/codespell/pull/3268](https://togithub.com/codespell-project/codespell/pull/3268)
- Apply Repo-Review suggestions by
[@&#8203;DimitriPapadopoulos](https://togithub.com/DimitriPapadopoulos)
in
[https://github.com/codespell-project/codespell/pull/3265](https://togithub.com/codespell-project/codespell/pull/3265)
- dictionary: pathes can be patches by
[@&#8203;mdeweerd](https://togithub.com/mdeweerd) in
[https://github.com/codespell-project/codespell/pull/3273](https://togithub.com/codespell-project/codespell/pull/3273)
- fix: typos in comments by
[@&#8203;vEnhance](https://togithub.com/vEnhance) in
[https://github.com/codespell-project/codespell/pull/3274](https://togithub.com/codespell-project/codespell/pull/3274)
- doc: Specify .codespellrc is INI formatted by
[@&#8203;vEnhance](https://togithub.com/vEnhance) in
[https://github.com/codespell-project/codespell/pull/3271](https://togithub.com/codespell-project/codespell/pull/3271)
- Add sanetize->sanitize by
[@&#8203;sshane](https://togithub.com/sshane) in
[https://github.com/codespell-project/codespell/pull/3275](https://togithub.com/codespell-project/codespell/pull/3275)
- Case ignore by [@&#8203;vEnhance](https://togithub.com/vEnhance) in
[https://github.com/codespell-project/codespell/pull/3272](https://togithub.com/codespell-project/codespell/pull/3272)
- Fixed
[#&#8203;3278](https://togithub.com/codespell-project/codespell/issues/3278)
by [@&#8203;matlupi](https://togithub.com/matlupi) in
[https://github.com/codespell-project/codespell/pull/3279](https://togithub.com/codespell-project/codespell/pull/3279)
- dictionnary: persan can be persian. by
[@&#8203;mdeweerd](https://togithub.com/mdeweerd) in
[https://github.com/codespell-project/codespell/pull/3282](https://togithub.com/codespell-project/codespell/pull/3282)
- Add validaiton->validation, valuation by
[@&#8203;ydah](https://togithub.com/ydah) in
[https://github.com/codespell-project/codespell/pull/3281](https://togithub.com/codespell-project/codespell/pull/3281)
- Consistent title case capitalisation by
[@&#8203;DimitriPapadopoulos](https://togithub.com/DimitriPapadopoulos)
in
[https://github.com/codespell-project/codespell/pull/3286](https://togithub.com/codespell-project/codespell/pull/3286)
- Updated dictionary for
[#&#8203;2411](https://togithub.com/codespell-project/codespell/issues/2411)
by [@&#8203;matlupi](https://togithub.com/matlupi) in
[https://github.com/codespell-project/codespell/pull/3280](https://togithub.com/codespell-project/codespell/pull/3280)
- dict: falt can be fault or flat by
[@&#8203;mdeweerd](https://togithub.com/mdeweerd) in
[https://github.com/codespell-project/codespell/pull/3289](https://togithub.com/codespell-project/codespell/pull/3289)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://togithub.com/pre-commit-ci) in
[https://github.com/codespell-project/codespell/pull/3291](https://togithub.com/codespell-project/codespell/pull/3291)
- Add acquistion->acquisition by
[@&#8203;hannah-morilak](https://togithub.com/hannah-morilak) in
[https://github.com/codespell-project/codespell/pull/3287](https://togithub.com/codespell-project/codespell/pull/3287)
- Adding fixes for recommond and recommonded by
[@&#8203;barndawgie](https://togithub.com/barndawgie) in
[https://github.com/codespell-project/codespell/pull/3292](https://togithub.com/codespell-project/codespell/pull/3292)
- Add tox.ini file by [@&#8203;perillo](https://togithub.com/perillo) in
[https://github.com/codespell-project/codespell/pull/3269](https://togithub.com/codespell-project/codespell/pull/3269)
- Fixed
[#&#8203;3297](https://togithub.com/codespell-project/codespell/issues/3297)
by [@&#8203;matlupi](https://togithub.com/matlupi) in
[https://github.com/codespell-project/codespell/pull/3298](https://togithub.com/codespell-project/codespell/pull/3298)
- Enable lists in TOML config file by
[@&#8203;DimitriPapadopoulos](https://togithub.com/DimitriPapadopoulos)
in
[https://github.com/codespell-project/codespell/pull/3294](https://togithub.com/codespell-project/codespell/pull/3294)
- Fix ruff alerts (currently) not caught by pre-commit by
[@&#8203;DimitriPapadopoulos](https://togithub.com/DimitriPapadopoulos)
in
[https://github.com/codespell-project/codespell/pull/3162](https://togithub.com/codespell-project/codespell/pull/3162)
- Fixed
[#&#8203;3301](https://togithub.com/codespell-project/codespell/issues/3301)
by [@&#8203;matlupi](https://togithub.com/matlupi) in
[https://github.com/codespell-project/codespell/pull/3302](https://togithub.com/codespell-project/codespell/pull/3302)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://togithub.com/pre-commit-ci) in
[https://github.com/codespell-project/codespell/pull/3303](https://togithub.com/codespell-project/codespell/pull/3303)
- Materials science related corrections 2 by
[@&#8203;janosh](https://togithub.com/janosh) in
[https://github.com/codespell-project/codespell/pull/3295](https://togithub.com/codespell-project/codespell/pull/3295)
- Add spelling corrections for sphere by
[@&#8203;adrien-berchet](https://togithub.com/adrien-berchet) in
[https://github.com/codespell-project/codespell/pull/3304](https://togithub.com/codespell-project/codespell/pull/3304)
- Makes config for "count" more clear as a boolean by
[@&#8203;amarvin](https://togithub.com/amarvin) in
[https://github.com/codespell-project/codespell/pull/3307](https://togithub.com/codespell-project/codespell/pull/3307)
- quanitization -> quantization by
[@&#8203;claydugo](https://togithub.com/claydugo) in
[https://github.com/codespell-project/codespell/pull/3308](https://togithub.com/codespell-project/codespell/pull/3308)
- instroment->instrument by
[@&#8203;matlupi](https://togithub.com/matlupi) in
[https://github.com/codespell-project/codespell/pull/3309](https://togithub.com/codespell-project/codespell/pull/3309)
- Add updadated->updated and uneared->unearned by
[@&#8203;jdufresne](https://togithub.com/jdufresne) in
[https://github.com/codespell-project/codespell/pull/3310](https://togithub.com/codespell-project/codespell/pull/3310)
- initiase -> initialise by
[@&#8203;matlupi](https://togithub.com/matlupi) in
[https://github.com/codespell-project/codespell/pull/3343](https://togithub.com/codespell-project/codespell/pull/3343)
- Adding correction for furance->furnace by
[@&#8203;barndawgie](https://togithub.com/barndawgie) in
[https://github.com/codespell-project/codespell/pull/3347](https://togithub.com/codespell-project/codespell/pull/3347)
- Bump codecov/codecov-action from 3 to 4 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/codespell-project/codespell/pull/3348](https://togithub.com/codespell-project/codespell/pull/3348)
- dict: disagreement by
[@&#8203;mdeweerd](https://togithub.com/mdeweerd) in
[https://github.com/codespell-project/codespell/pull/3351](https://togithub.com/codespell-project/codespell/pull/3351)
- dict: False/true typos by
[@&#8203;mdeweerd](https://togithub.com/mdeweerd) in
[https://github.com/codespell-project/codespell/pull/3350](https://togithub.com/codespell-project/codespell/pull/3350)
- sampe->sample by [@&#8203;matlupi](https://togithub.com/matlupi) in
[https://github.com/codespell-project/codespell/pull/3354](https://togithub.com/codespell-project/codespell/pull/3354)
- Multiple spelling suggestions by
[@&#8203;mdeweerd](https://togithub.com/mdeweerd) in
[https://github.com/codespell-project/codespell/pull/3349](https://togithub.com/codespell-project/codespell/pull/3349)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://togithub.com/pre-commit-ci) in
[https://github.com/codespell-project/codespell/pull/3352](https://togithub.com/codespell-project/codespell/pull/3352)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://togithub.com/pre-commit-ci) in
[https://github.com/codespell-project/codespell/pull/3357](https://togithub.com/codespell-project/codespell/pull/3357)
- Fix "dubious ownership" error in dev containers by
[@&#8203;korverdev](https://togithub.com/korverdev) in
[https://github.com/codespell-project/codespell/pull/3361](https://togithub.com/codespell-project/codespell/pull/3361)
- Assorted mispellings by
[@&#8203;korverdev](https://togithub.com/korverdev) in
[https://github.com/codespell-project/codespell/pull/3360](https://togithub.com/codespell-project/codespell/pull/3360)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://togithub.com/pre-commit-ci) in
[https://github.com/codespell-project/codespell/pull/3364](https://togithub.com/codespell-project/codespell/pull/3364)
- Add metadataa typo by
[@&#8203;yarikoptic](https://togithub.com/yarikoptic) in
[https://github.com/codespell-project/codespell/pull/3368](https://togithub.com/codespell-project/codespell/pull/3368)
- Add corrections for all \*in->\*ing words starting with "A" by
[@&#8203;jdufresne](https://togithub.com/jdufresne) in
[https://github.com/codespell-project/codespell/pull/3336](https://togithub.com/codespell-project/codespell/pull/3336)
- Add corrections for all \*in->\*ing words starting with "B" by
[@&#8203;jdufresne](https://togithub.com/jdufresne) in
[https://github.com/codespell-project/codespell/pull/3312](https://togithub.com/codespell-project/codespell/pull/3312)
- Add corrections for all \*in->\*ing words starting with "C" by
[@&#8203;jdufresne](https://togithub.com/jdufresne) in
[https://github.com/codespell-project/codespell/pull/3314](https://togithub.com/codespell-project/codespell/pull/3314)
- editible->editable by
[@&#8203;skshetry](https://togithub.com/skshetry) in
[https://github.com/codespell-project/codespell/pull/3367](https://togithub.com/codespell-project/codespell/pull/3367)
- Add corrections for all \*in->\*ing words starting with "D" by
[@&#8203;jdufresne](https://togithub.com/jdufresne) in
[https://github.com/codespell-project/codespell/pull/3319](https://togithub.com/codespell-project/codespell/pull/3319)
- Add corrections for all \*in->\*ing words starting with "E" by
[@&#8203;jdufresne](https://togithub.com/jdufresne) in
[https://github.com/codespell-project/codespell/pull/3318](https://togithub.com/codespell-project/codespell/pull/3318)
- Add corrections for all \*in->\*ing words starting with "F" by
[@&#8203;jdufresne](https://togithub.com/jdufresne) in
[https://github.com/codespell-project/codespell/pull/3330](https://togithub.com/codespell-project/codespell/pull/3330)
- Add correction for spoofing and spoofed. by
[@&#8203;cfi-gb](https://togithub.com/cfi-gb) in
[https://github.com/codespell-project/codespell/pull/3370](https://togithub.com/codespell-project/codespell/pull/3370)
- Add reliabe->reliable by
[@&#8203;adamscott](https://togithub.com/adamscott) in
[https://github.com/codespell-project/codespell/pull/3372](https://togithub.com/codespell-project/codespell/pull/3372)
- Add corrections for all \*in->\*ing words starting with "G" by
[@&#8203;jdufresne](https://togithub.com/jdufresne) in
[https://github.com/codespell-project/codespell/pull/3325](https://togithub.com/codespell-project/codespell/pull/3325)
- Add corrections for all \*in->\*ing words starting with "H" by
[@&#8203;jdufresne](https://togithub.com/jdufresne) in
[https://github.com/codespell-project/codespell/pull/3315](https://togithub.com/codespell-project/codespell/pull/3315)
- Add corrections for all \*in->\*ing words starting with "I" by
[@&#8203;jdufresne](https://togithub.com/jdufresne) in
[https://github.com/codespell-project/codespell/pull/3329](https://togithub.com/codespell-project/codespell/pull/3329)
- Add corrections for all \*in->\*ing words starting with "J" by
[@&#8203;jdufresne](https://togithub.com/jdufresne) in
[https://github.com/codespell-project/codespell/pull/3331](https://togithub.com/codespell-project/codespell/pull/3331)
- Add corrections for all \*in->\*ing words starting with "K" by
[@&#8203;jdufresne](https://togithub.com/jdufresne) in
[https://github.com/codespell-project/codespell/pull/3332](https://togithub.com/codespell-project/codespell/pull/3332)
- Add corrections for all \*in->\*ing words starting with "L" by
[@&#8203;jdufresne](https://togithub.com/jdufresne) in
[https://github.com/codespell-project/codespell/pull/3326](https://togithub.com/codespell-project/codespell/pull/3326)
- Add corrections for all \*in->\*ing words starting with "M" by
[@&#8203;jdufresne](https://togithub.com/jdufresne) in
[https://github.com/codespell-project/codespell/pull/3317](https://togithub.com/codespell-project/codespell/pull/3317)
- Add corrections for all \*in->\*ing words starting with "N" by
[@&#8203;jdufresne](https://togithub.com/jdufresne) in
[https://github.com/codespell-project/codespell/pull/3320](https://togithub.com/codespell-project/codespell/pull/3320)
- Add corrections for all \*in->\*ing words starting with "O" by
[@&#8203;jdufresne](https://togithub.com/jdufresne) in
[https://github.com/codespell-project/codespell/pull/3313](https://togithub.com/codespell-project/codespell/pull/3313)
- Move focusin to code by
[@&#8203;peternewman](https://togithub.com/peternewman) in
[https://github.com/codespell-project/codespell/pull/3373](https://togithub.com/codespell-project/codespell/pull/3373)
- Add filaname->filename by
[@&#8203;cjwatson](https://togithub.com/cjwatson) in
[https://github.com/codespell-project/codespell/pull/3371](https://togithub.com/codespell-project/codespell/pull/3371)
- Add corrections for all \*in->\*ing words starting with "R" by
[@&#8203;jdufresne](https://togithub.com/jdufresne) in
[https://github.com/codespell-project/codespell/pull/3324](https://togithub.com/codespell-project/codespell/pull/3324)
- Add corrections for all \*in->\*ing words starting with "S" by
[@&#8203;jdufresne](https://togithub.com/jdufresne) in
[https://github.com/codespell-project/codespell/pull/3316](https://togithub.com/codespell-project/codespell/pull/3316)
- Add corrections for all \*in->\*ing words starting with "P" by
[@&#8203;jdufresne](https://togithub.com/jdufresne) in
[https://github.com/codespell-project/codespell/pull/3322](https://togithub.com/codespell-project/codespell/pull/3322)
- Add corrections for all \*in->\*ing words starting with "Q" by
[@&#8203;jdufresne](https://togithub.com/jdufresne) in
[https://github.com/codespell-project/codespell/pull/3333](https://togithub.com/codespell-project/codespell/pull/3333)
- Add corrections for all \*in->\*ing words starting with "T" by
[@&#8203;jdufresne](https://togithub.com/jdufresne) in
[https://github.com/codespell-project/codespell/pull/3328](https://togithub.com/codespell-project/codespell/pull/3328)
- Add corrections for all \*in->\*ing words starting with "U" by
[@&#8203;jdufresne](https://togithub.com/jdufresne) in
[https://github.com/codespell-project/codespell/pull/3321](https://togithub.com/codespell-project/codespell/pull/3321)
- Add corrections for all \*in->\*ing words starting with "V" by
[@&#8203;jdufresne](https://togithub.com/jdufresne) in
[https://github.com/codespell-project/codespell/pull/3327](https://togithub.com/codespell-project/codespell/pull/3327)
- Add corrections for all \*in->\*ing words starting with "W" by
[@&#8203;jdufresne](https://togithub.com/jdufresne) in
[https://github.com/codespell-project/codespell/pull/3323](https://togithub.com/codespell-project/codespell/pull/3323)
- Add corrections for all \*in->\*ing words starting with "Y" by
[@&#8203;jdufresne](https://togithub.com/jdufresne) in
[https://github.com/codespell-project/codespell/pull/3334](https://togithub.com/codespell-project/codespell/pull/3334)
- Add corrections for all \*in->\*ing words starting with "Z" by
[@&#8203;jdufresne](https://togithub.com/jdufresne) in
[https://github.com/codespell-project/codespell/pull/3335](https://togithub.com/codespell-project/codespell/pull/3335)
- Add 'quotted->quoted' by
[@&#8203;sirosen](https://togithub.com/sirosen) in
[https://github.com/codespell-project/codespell/pull/3374](https://togithub.com/codespell-project/codespell/pull/3374)
- Remove reoccurrence from the dictionary.txt -- LGTM and popular word
by [@&#8203;yarikoptic](https://togithub.com/yarikoptic) in
[https://github.com/codespell-project/codespell/pull/3378](https://togithub.com/codespell-project/codespell/pull/3378)
- Add typos for expration(s) by
[@&#8203;fishilico](https://togithub.com/fishilico) in
[https://github.com/codespell-project/codespell/pull/3377](https://togithub.com/codespell-project/codespell/pull/3377)
- Implement inline ignores by
[@&#8203;kaste](https://togithub.com/kaste) in
[https://github.com/codespell-project/codespell/pull/2400](https://togithub.com/codespell-project/codespell/pull/2400)
- Add softwrae typo fix by
[@&#8203;yarikoptic](https://togithub.com/yarikoptic) in
[https://github.com/codespell-project/codespell/pull/3383](https://togithub.com/codespell-project/codespell/pull/3383)
- Add spelling corrections for morphology by
[@&#8203;adrien-berchet](https://togithub.com/adrien-berchet) in
[https://github.com/codespell-project/codespell/pull/3379](https://togithub.com/codespell-project/codespell/pull/3379)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://togithub.com/pre-commit-ci) in
[https://github.com/codespell-project/codespell/pull/3382](https://togithub.com/codespell-project/codespell/pull/3382)
- Several spelling suggestions by
[@&#8203;mdeweerd](https://togithub.com/mdeweerd) in
[https://github.com/codespell-project/codespell/pull/3386](https://togithub.com/codespell-project/codespell/pull/3386)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://togithub.com/pre-commit-ci) in
[https://github.com/codespell-project/codespell/pull/3389](https://togithub.com/codespell-project/codespell/pull/3389)
- Add 'repeatition->repetition' and variants by
[@&#8203;fishilico](https://togithub.com/fishilico) in
[https://github.com/codespell-project/codespell/pull/3388](https://togithub.com/codespell-project/codespell/pull/3388)
- Add labael->label and variants by
[@&#8203;peternewman](https://togithub.com/peternewman) in
[https://github.com/codespell-project/codespell/pull/3384](https://togithub.com/codespell-project/codespell/pull/3384)
- docs: add the documentation of the new inline ignore comments by
[@&#8203;12rambau](https://togithub.com/12rambau) in
[https://github.com/codespell-project/codespell/pull/3390](https://togithub.com/codespell-project/codespell/pull/3390)
- Add reposiroty->repository by
[@&#8203;fishilico](https://togithub.com/fishilico) in
[https://github.com/codespell-project/codespell/pull/3393](https://togithub.com/codespell-project/codespell/pull/3393)
- Adding communicationg->communicating by
[@&#8203;barndawgie](https://togithub.com/barndawgie) in
[https://github.com/codespell-project/codespell/pull/3394](https://togithub.com/codespell-project/codespell/pull/3394)
- Add 'croporate->corporate', 'incroporate->incorporate' and variants by
[@&#8203;fishilico](https://togithub.com/fishilico) in
[https://github.com/codespell-project/codespell/pull/3395](https://togithub.com/codespell-project/codespell/pull/3395)
- docs: indentation error by
[@&#8203;12rambau](https://togithub.com/12rambau) in
[https://github.com/codespell-project/codespell/pull/3392](https://togithub.com/codespell-project/codespell/pull/3392)
- More typos from Wikipedia by
[@&#8203;DimitriPapadopoulos](https://togithub.com/DimitriPapadopoulos)
in
[https://github.com/codespell-project/codespell/pull/3363](https://togithub.com/codespell-project/codespell/pull/3363)
- Add compatiblility / configurated by
[@&#8203;DimitriPapadopoulos](https://togithub.com/DimitriPapadopoulos)
in
[https://github.com/codespell-project/codespell/pull/3161](https://togithub.com/codespell-project/codespell/pull/3161)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://togithub.com/pre-commit-ci) in
[https://github.com/codespell-project/codespell/pull/3398](https://togithub.com/codespell-project/codespell/pull/3398)
- Handle multiline options by
[@&#8203;DimitriPapadopoulos](https://togithub.com/DimitriPapadopoulos)
in
[https://github.com/codespell-project/codespell/pull/3400](https://togithub.com/codespell-project/codespell/pull/3400)
- docs: just `codespell:ignore` by
[@&#8203;DimitriPapadopoulos](https://togithub.com/DimitriPapadopoulos)
in
[https://github.com/codespell-project/codespell/pull/3397](https://togithub.com/codespell-project/codespell/pull/3397)
- Add `aftewards` misspelling by
[@&#8203;korverdev](https://togithub.com/korverdev) in
[https://github.com/codespell-project/codespell/pull/3403](https://togithub.com/codespell-project/codespell/pull/3403)
- Add correction for trasversal and variants. by
[@&#8203;cfi-gb](https://togithub.com/cfi-gb) in
[https://github.com/codespell-project/codespell/pull/3405](https://togithub.com/codespell-project/codespell/pull/3405)
- A few mispellings for the dictionnary by
[@&#8203;mdeweerd](https://togithub.com/mdeweerd) in
[https://github.com/codespell-project/codespell/pull/3404](https://togithub.com/codespell-project/codespell/pull/3404)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://togithub.com/pre-commit-ci) in
[https://github.com/codespell-project/codespell/pull/3406](https://togithub.com/codespell-project/codespell/pull/3406)
- Options that expect a file, should accept lists of files too by
[@&#8203;DimitriPapadopoulos](https://togithub.com/DimitriPapadopoulos)
in
[https://github.com/codespell-project/codespell/pull/2767](https://togithub.com/codespell-project/codespell/pull/2767)
- Add spelling correction for specialiaze/specialiase and variants. by
[@&#8203;cfi-gb](https://togithub.com/cfi-gb) in
[https://github.com/codespell-project/codespell/pull/3409](https://togithub.com/codespell-project/codespell/pull/3409)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://togithub.com/pre-commit-ci) in
[https://github.com/codespell-project/codespell/pull/3411](https://togithub.com/codespell-project/codespell/pull/3411)
- Add statestics typo (github has over 300 hits) by
[@&#8203;yarikoptic](https://togithub.com/yarikoptic) in
[https://github.com/codespell-project/codespell/pull/3412](https://togithub.com/codespell-project/codespell/pull/3412)
- nueroimaging typo (13 hits on github) -- domain specific but no doubt
wrong! by [@&#8203;yarikoptic](https://togithub.com/yarikoptic) in
[https://github.com/codespell-project/codespell/pull/3413](https://togithub.com/codespell-project/codespell/pull/3413)
- Added minor typos by [@&#8203;matlupi](https://togithub.com/matlupi)
in
[https://github.com/codespell-project/codespell/pull/3410](https://togithub.com/codespell-project/codespell/pull/3410)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://togithub.com/pre-commit-ci) in
[https://github.com/codespell-project/codespell/pull/3415](https://togithub.com/codespell-project/codespell/pull/3415)
- Add netflify typo by
[@&#8203;yarikoptic](https://togithub.com/yarikoptic) in
[https://github.com/codespell-project/codespell/pull/3417](https://togithub.com/codespell-project/codespell/pull/3417)
- insstance typo by
[@&#8203;yarikoptic](https://togithub.com/yarikoptic) in
[https://github.com/codespell-project/codespell/pull/3418](https://togithub.com/codespell-project/codespell/pull/3418)
- mian->main by [@&#8203;MercuryDemo](https://togithub.com/MercuryDemo)
in
[https://github.com/codespell-project/codespell/pull/3339](https://togithub.com/codespell-project/codespell/pull/3339)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://togithub.com/pre-commit-ci) in
[https://github.com/codespell-project/codespell/pull/3420](https://togithub.com/codespell-project/codespell/pull/3420)
- Add coverage files to `.gitignore` by
[@&#8203;korverdev](https://togithub.com/korverdev) in
[https://github.com/codespell-project/codespell/pull/3422](https://togithub.com/codespell-project/codespell/pull/3422)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://togithub.com/pre-commit-ci) in
[https://github.com/codespell-project/codespell/pull/3423](https://togithub.com/codespell-project/codespell/pull/3423)
- Add `arragne->arrange` typo by
[@&#8203;korverdev](https://togithub.com/korverdev) in
[https://github.com/codespell-project/codespell/pull/3421](https://togithub.com/codespell-project/codespell/pull/3421)
- Materials science-related corrections 3 by
[@&#8203;janosh](https://togithub.com/janosh) in
[https://github.com/codespell-project/codespell/pull/3424](https://togithub.com/codespell-project/codespell/pull/3424)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://togithub.com/pre-commit-ci) in
[https://github.com/codespell-project/codespell/pull/3428](https://togithub.com/codespell-project/codespell/pull/3428)

#### New Contributors

- [@&#8203;SimonVerhoeven](https://togithub.com/SimonVerhoeven) made
their first contribution in
[https://github.com/codespell-project/codespell/pull/3126](https://togithub.com/codespell-project/codespell/pull/3126)
- [@&#8203;muhahahmad68](https://togithub.com/muhahahmad68) made their
first contribution in
[https://github.com/codespell-project/codespell/pull/3146](https://togithub.com/codespell-project/codespell/pull/3146)
- [@&#8203;macpijan](https://togithub.com/macpijan) made their first
contribution in
[https://github.com/codespell-project/codespell/pull/3197](https://togithub.com/codespell-project/codespell/pull/3197)
- [@&#8203;hugovk](https://togithub.com/hugovk) made their first
contribution in
[https://github.com/codespell-project/codespell/pull/3204](https://togithub.com/codespell-project/codespell/pull/3204)
- [@&#8203;jcubic](https://togithub.com/jcubic) made their first
contribution in
[https://github.com/codespell-project/codespell/pull/3218](https://togithub.com/codespell-project/codespell/pull/3218)
- [@&#8203;barndawgie](https://togithub.com/barndawgie) made their first
contribution in
[https://github.com/codespell-project/codespell/pull/3215](https://togithub.com/codespell-project/codespell/pull/3215)
- [@&#8203;Jendker](https://togithub.com/Jendker) made their first
contribution in
[https://github.com/codespell-project/codespell/pull/3224](https://togithub.com/codespell-project/codespell/pull/3224)
- [@&#8203;chenrui333](https://togithub.com/chenrui333) made their first
contribution in
[https://github.com/codespell-project/codespell/pull/3231](https://togithub.com/codespell-project/codespell/pull/3231)
- [@&#8203;zingale](https://togithub.com/zingale) made their first
contribution in
[https://github.com/codespell-project/codespell/pull/3241](https://togithub.com/codespell-project/codespell/pull/3241)
- [@&#8203;perillo](https://togithub.com/perillo) made their first
contribution in
[https://github.com/codespell-project/codespell/pull/3262](https://togithub.com/codespell-project/codespell/pull/3262)
- [@&#8203;vEnhance](https://togithub.com/vEnhance) made their first
contribution in
[https://github.com/codespell-project/codespell/pull/3274](https://togithub.com/codespell-project/codespell/pull/3274)
- [@&#8203;sshane](https://togithub.com/sshane) made their first
contribution in
[https://github.com/codespell-project/codespell/pull/3275](https://togithub.com/codespell-project/codespell/pull/3275)
- [@&#8203;matlupi](https://togithub.com/matlupi) made their first
contribution in
[https://github.com/codespell-project/codespell/pull/3279](https://togithub.com/codespell-project/codespell/pull/3279)
- [@&#8203;hannah-morilak](https://togithub.com/hannah-morilak) made
their first contribution in
[https://github.com/codespell-project/codespell/pull/3287](https://togithub.com/codespell-project/codespell/pull/3287)
- [@&#8203;amarvin](https://togithub.com/amarvin) made their first
contribution in
[https://github.com/codespell-project/codespell/pull/3307](https://togithub.com/codespell-project/codespell/pull/3307)
- [@&#8203;skshetry](https://togithub.com/skshetry) made their first
contribution in
[https://github.com/codespell-project/codespell/pull/3367](https://togithub.com/codespell-project/codespell/pull/3367)
- [@&#8203;adamscott](https://togithub.com/adamscott) made their first
contribution in
[https://github.com/codespell-project/codespell/pull/3372](https://togithub.com/codespell-project/codespell/pull/3372)
- [@&#8203;cjwatson](https://togithub.com/cjwatson) made their first
contribution in
[https://github.com/codespell-project/codespell/pull/3371](https://togithub.com/codespell-project/codespell/pull/3371)
- [@&#8203;kaste](https://togithub.com/kaste) made their first
contribution in
[https://github.com/codespell-project/codespell/pull/2400](https://togithub.com/codespell-project/codespell/pull/2400)
- [@&#8203;12rambau](https://togithub.com/12rambau) made their first
contribution in
[https://github.com/codespell-project/codespell/pull/3390](https://togithub.com/codespell-project/codespell/pull/3390)
- [@&#8203;MercuryDemo](https://togithub.com/MercuryDemo) made their
first contribution in
[https://github.com/codespell-project/codespell/pull/3339](https://togithub.com/codespell-project/codespell/pull/3339)

**Full Changelog**:
https://github.com/codespell-project/codespell/compare/v2.2.6...v2.3.0

</details>

<details>
<summary>agronholm/exceptiongroup (exceptiongroup)</summary>

###
[`v1.2.1`](https://togithub.com/agronholm/exceptiongroup/releases/tag/1.2.1)

[Compare
Source](https://togithub.com/agronholm/exceptiongroup/compare/1.2.0...1.2.1)

- Updated the copying of `__notes__` to match CPython behavior (PR by CF
Bolz-Tereick)
- Corrected the type annotation of the exception handler callback to
accept a `BaseExceptionGroup` instead of `BaseException`
- Fixed type errors on Python < 3.10 and the type annotation of
`suppress()` (PR by John Litborn)

###
[`v1.2.0`](https://togithub.com/agronholm/exceptiongroup/releases/tag/1.2.0)

[Compare Source](https://togithub.com/agronho

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 1am and before 2am on saturday"
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](https://togithub.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 [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/canonical/spark-k8s-toolkit-py).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40MjAuMSIsInVwZGF0ZWRJblZlciI6IjM3LjQyMS45IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
renovate bot and others added 15 commits August 13, 2024 08:53
--- 

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [anyio](https://redirect.github.com/agronholm/anyio)
([changelog](https://anyio.readthedocs.io/en/stable/versionhistory.html))
| `==4.6.0` -> `==4.6.2.post1` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/anyio/4.6.2.post1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/anyio/4.6.2.post1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/anyio/4.6.0/4.6.2.post1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/anyio/4.6.0/4.6.2.post1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [black](https://redirect.github.com/psf/black)
([changelog](https://redirect.github.com/psf/black/blob/main/CHANGES.md))
| `24.8.0` -> `24.10.0` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/black/24.10.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/black/24.10.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/black/24.8.0/24.10.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/black/24.8.0/24.10.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [httpcore](https://redirect.github.com/encode/httpcore) | `==1.0.5` ->
`==1.0.6` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/httpcore/1.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/httpcore/1.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/httpcore/1.0.5/1.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/httpcore/1.0.5/1.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [mypy](https://www.mypy-lang.org/)
([source](https://redirect.github.com/python/mypy),
[changelog](https://mypy-lang.blogspot.com/)) | `1.11.2` -> `1.13.0` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/mypy/1.13.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/mypy/1.13.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/mypy/1.11.2/1.13.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/mypy/1.11.2/1.13.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [tox](https://redirect.github.com/tox-dev/tox)
([changelog](https://tox.wiki/en/latest/changelog.html)) | `4.21.2` ->
`4.23.2` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/tox/4.23.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/tox/4.23.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/tox/4.21.2/4.23.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/tox/4.21.2/4.23.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>agronholm/anyio (anyio)</summary>

###
[`v4.6.2.post1`](https://redirect.github.com/agronholm/anyio/compare/4.6.2...4.6.2.post1)

[Compare
Source](https://redirect.github.com/agronholm/anyio/compare/4.6.2...4.6.2.post1)

###
[`v4.6.2`](https://redirect.github.com/agronholm/anyio/releases/tag/4.6.2)

[Compare
Source](https://redirect.github.com/agronholm/anyio/compare/4.6.1...4.6.2)

- Fixed regression caused by
([#&#8203;807](https://redirect.github.com/agronholm/anyio/pull/807))
that prevented the use of parametrized async fixtures

###
[`v4.6.1`](https://redirect.github.com/agronholm/anyio/releases/tag/4.6.1)

[Compare
Source](https://redirect.github.com/agronholm/anyio/compare/4.6.0...4.6.1)

This release contains all the changes from both v4.5.1 and v4.6.0, plus:

- Fixed TaskGroup and CancelScope producing cyclic references in
tracebacks when raising exceptions
([#&#8203;806](https://redirect.github.com/agronholm/anyio/pull/806))
(PR by [@&#8203;graingert](https://redirect.github.com/graingert))

</details>

<details>
<summary>psf/black (black)</summary>

###
[`v24.10.0`](https://redirect.github.com/psf/black/blob/HEAD/CHANGES.md#24100)

[Compare
Source](https://redirect.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.
([#&#8203;4436](https://redirect.github.com/psf/black/issues/4436))
([#&#8203;4449](https://redirect.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.
([#&#8203;4447](https://redirect.github.com/psf/black/issues/4447))
- Black no longer supports running with Python 3.8
([#&#8203;4452](https://redirect.github.com/psf/black/issues/4452))

##### Stable style

- Fix crashes involving comments in parenthesised return types or `X |
Y` style unions.
    ([#&#8203;4453](https://redirect.github.com/psf/black/issues/4453))
- Fix skipping Jupyter cells with unknown `%%` magic
([#&#8203;4462](https://redirect.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`)
([#&#8203;4440](https://redirect.github.com/psf/black/issues/4440))

##### Caching

- Fix bug where the cache was shared between runs with and without
`--unstable`
([#&#8203;4466](https://redirect.github.com/psf/black/issues/4466))

##### Packaging

- Upgrade version of mypyc used to 1.12 beta
([#&#8203;4450](https://redirect.github.com/psf/black/issues/4450))
([#&#8203;4449](https://redirect.github.com/psf/black/issues/4449))
- `blackd` now requires a newer version of aiohttp.
([#&#8203;4451](https://redirect.github.com/psf/black/issues/4451))

##### Output

- Added Python target version information on parse error
([#&#8203;4378](https://redirect.github.com/psf/black/issues/4378))
- Add information about Black version to internal error messages
([#&#8203;4457](https://redirect.github.com/psf/black/issues/4457))

</details>

<details>
<summary>encode/httpcore (httpcore)</summary>

###
[`v1.0.6`](https://redirect.github.com/encode/httpcore/blob/HEAD/CHANGELOG.md#Version-106-October-1st-2024)

[Compare
Source](https://redirect.github.com/encode/httpcore/compare/1.0.5...1.0.6)

- Relax `trio` dependency pinning.
([#&#8203;956](https://redirect.github.com/encode/httpcore/issues/956))
- Handle `trio` raising `NotImplementedError` on unsupported platforms.
([#&#8203;955](https://redirect.github.com/encode/httpcore/issues/955))
- Handle mapping `ssl.SSLError` to `httpcore.ConnectError`.
([#&#8203;918](https://redirect.github.com/encode/httpcore/issues/918))

</details>

<details>
<summary>python/mypy (mypy)</summary>

###
[`v1.13.0`](https://redirect.github.com/python/mypy/compare/v1.12.1...v1.13.0)

[Compare
Source](https://redirect.github.com/python/mypy/compare/v1.12.1...v1.13.0)

###
[`v1.12.1`](https://redirect.github.com/python/mypy/blob/HEAD/CHANGELOG.md#Mypy-1121)

[Compare
Source](https://redirect.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://redirect.github.com/python/mypy/pull/17961))
- Fix iteration over union (when self type is involved) (Shantanu, PR
[17976](https://redirect.github.com/python/mypy/pull/17976))
- Fix type object with type var default in union context (Jukka
Lehtosalo, PR
[17991](https://redirect.github.com/python/mypy/pull/17991))
- Revert change to `os.path` stubs affecting use of `os.PathLike[Any]`
(Shantanu, PR
[17995](https://redirect.github.com/python/mypy/pull/17995))

###
[`v1.12.0`](https://redirect.github.com/python/mypy/compare/v1.11.2...v1.12.0)

[Compare
Source](https://redirect.github.com/python/mypy/compare/v1.11.2...v1.12.0)

</details>

<details>
<summary>tox-dev/tox (tox)</summary>

###
[`v4.23.2`](https://redirect.github.com/tox-dev/tox/releases/tag/4.23.2)

[Compare
Source](https://redirect.github.com/tox-dev/tox/compare/4.23.1...4.23.2)

<!-- Release notes generated using configuration in .github/release.yml
at 4.23.2 -->

#### What's Changed

- Support external tox.pytest usage via "test" extra by
[@&#8203;mbra](https://redirect.github.com/mbra) in
[https://github.com/tox-dev/tox/pull/3422](https://redirect.github.com/tox-dev/tox/pull/3422)

#### New Contributors

- [@&#8203;mbra](https://redirect.github.com/mbra) made their first
contribution in
[https://github.com/tox-dev/tox/pull/3422](https://redirect.github.com/tox-dev/tox/pull/3422)

**Full Changelog**:
tox-dev/tox@4.23.1...4.23.2

###
[`v4.23.1`](https://redirect.github.com/tox-dev/tox/releases/tag/4.23.1)

[Compare
Source](https://redirect.github.com/tox-dev/tox/compare/4.23.0...4.23.1)

<!-- Release notes generated using configuration in .github/release.yml
at 4.23.1 -->

#### What's Changed

- Docs: adjusting EOL Python version testing remarks by
[@&#8203;robsdedude](https://redirect.github.com/robsdedude) in
[https://github.com/tox-dev/tox/pull/3417](https://redirect.github.com/tox-dev/tox/pull/3417)
- Fix example docs by
[@&#8203;gaborbernat](https://redirect.github.com/gaborbernat) in
[https://github.com/tox-dev/tox/pull/3421](https://redirect.github.com/tox-dev/tox/pull/3421)

#### New Contributors

- [@&#8203;robsdedude](https://redirect.github.com/robsdedude) made
their first contribution in
[https://github.com/tox-dev/tox/pull/3417](https://redirect.github.com/tox-dev/tox/pull/3417)

**Full Changelog**:
tox-dev/tox@4.23.0...4.23.1

###
[`v4.23.0`](https://redirect.github.com/tox-dev/tox/releases/tag/4.23.0)

[Compare
Source](https://redirect.github.com/tox-dev/tox/compare/4.22.0...4.23.0)

<!-- Release notes generated using configuration in .github/release.yml
at 4.23.0 -->

#### What's Changed

- replace tool.pyproject and tool.tox.pyproject with tool.tox in config…
by [@&#8203;graingert-coef](https://redirect.github.com/graingert-coef)
in
[https://github.com/tox-dev/tox/pull/3411](https://redirect.github.com/tox-dev/tox/pull/3411)
- Add NETRC to the default_pass_env list by
[@&#8203;chipot](https://redirect.github.com/chipot) in
[https://github.com/tox-dev/tox/pull/3410](https://redirect.github.com/tox-dev/tox/pull/3410)

#### New Contributors

- [@&#8203;graingert-coef](https://redirect.github.com/graingert-coef)
made their first contribution in
[https://github.com/tox-dev/tox/pull/3411](https://redirect.github.com/tox-dev/tox/pull/3411)
- [@&#8203;chipot](https://redirect.github.com/chipot) made their first
contribution in
[https://github.com/tox-dev/tox/pull/3410](https://redirect.github.com/tox-dev/tox/pull/3410)

**Full Changelog**:
tox-dev/tox@4.22.0...4.23.0

###
[`v4.22.0`](https://redirect.github.com/tox-dev/tox/releases/tag/4.22.0)

[Compare
Source](https://redirect.github.com/tox-dev/tox/compare/4.21.2...4.22.0)

<!-- Release notes generated using configuration in .github/release.yml
at 4.22.0 -->

#### What's Changed

- Fix the fix environment definition by
[@&#8203;gaborbernat](https://redirect.github.com/gaborbernat) in
[https://github.com/tox-dev/tox/pull/3407](https://redirect.github.com/tox-dev/tox/pull/3407)
- Expose type checking dependencies into an extra by
[@&#8203;ssbarnea](https://redirect.github.com/ssbarnea) in
[https://github.com/tox-dev/tox/pull/3404](https://redirect.github.com/tox-dev/tox/pull/3404)
- Add dependency-groups support (PEP-735) by
[@&#8203;gaborbernat](https://redirect.github.com/gaborbernat) in
[https://github.com/tox-dev/tox/pull/3409](https://redirect.github.com/tox-dev/tox/pull/3409)

**Full Changelog**:
tox-dev/tox@4.21.2...4.22.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 1am and before 2am on saturday"
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](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/canonical/spark-k8s-toolkit-py).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC4xMTUuMSIsInVwZGF0ZWRJblZlciI6IjM4LjEyMC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
@theoctober19th theoctober19th changed the base branch from main to dpe-3519 December 12, 2024 15:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants