Skip to content

Commit

Permalink
Update Python dependencies (major) (#69)
Browse files Browse the repository at this point in the history
[![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>
  • Loading branch information
renovate[bot] committed Mar 27, 2024
1 parent 40e578c commit 0a6c546
Showing 1 changed file with 20 additions and 20 deletions.
40 changes: 20 additions & 20 deletions poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 0a6c546

Please sign in to comment.