pyca/cryptography (cryptography)
### [`v43.0.0`](https://togithub.com/pyca/cryptography/compare/42.0.8...43.0.0)
[Compare Source](https://togithub.com/pyca/cryptography/compare/42.0.8...43.0.0)
### [`v42.0.8`](https://togithub.com/pyca/cryptography/compare/42.0.7...42.0.8)
[Compare Source](https://togithub.com/pyca/cryptography/compare/42.0.7...42.0.8)
### [`v42.0.7`](https://togithub.com/pyca/cryptography/compare/42.0.6...42.0.7)
[Compare Source](https://togithub.com/pyca/cryptography/compare/42.0.6...42.0.7)
### [`v42.0.6`](https://togithub.com/pyca/cryptography/compare/42.0.5...42.0.6)
[Compare Source](https://togithub.com/pyca/cryptography/compare/42.0.5...42.0.6)
pytest-dev/pytest (pytest)
### [`v8.3.2`](https://togithub.com/pytest-dev/pytest/releases/tag/8.3.2)
[Compare Source](https://togithub.com/pytest-dev/pytest/compare/8.3.1...8.3.2)
# pytest 8.3.2 (2024-07-24)
## Bug fixes
- [#12652](https://togithub.com/pytest-dev/pytest/issues/12652): Resolve regression \[conda]{.title-ref} environments where no longer being automatically detected.
\-- by `RonnyPfannschmidt`{.interpreted-text role="user"}
### [`v8.3.1`](https://togithub.com/pytest-dev/pytest/releases/tag/8.3.1)
[Compare Source](https://togithub.com/pytest-dev/pytest/compare/8.3.0...8.3.1)
# pytest 8.3.1 (2024-07-20)
The 8.3.0 release failed to include the change notes and docs for the release. This patch release remedies this. There are no other changes.
### [`v8.3.0`](https://togithub.com/pytest-dev/pytest/compare/8.2.2...8.3.0)
[Compare Source](https://togithub.com/pytest-dev/pytest/compare/8.2.2...8.3.0)
### [`v8.2.2`](https://togithub.com/pytest-dev/pytest/releases/tag/8.2.2)
[Compare Source](https://togithub.com/pytest-dev/pytest/compare/8.2.1...8.2.2)
# pytest 8.2.2 (2024-06-04)
## Bug Fixes
- [#12355](https://togithub.com/pytest-dev/pytest/issues/12355): Fix possible catastrophic performance slowdown on a certain parametrization pattern involving many higher-scoped parameters.
- [#12367](https://togithub.com/pytest-dev/pytest/issues/12367): Fix a regression in pytest 8.2.0 where unittest class instances (a fresh one is created for each test) were not released promptly on test teardown but only on session teardown.
- [#12381](https://togithub.com/pytest-dev/pytest/issues/12381): Fix possible "Directory not empty" crashes arising from concurent cache dir (`.pytest_cache`) creation. Regressed in pytest 8.2.0.
## Improved Documentation
- [#12290](https://togithub.com/pytest-dev/pytest/issues/12290): Updated Sphinx theme to use Furo instead of Flask, enabling Dark mode theme.
- [#12356](https://togithub.com/pytest-dev/pytest/issues/12356): Added a subsection to the documentation for debugging flaky tests to mention
lack of thread safety in pytest as a possible source of flakyness.
- [#12363](https://togithub.com/pytest-dev/pytest/issues/12363): The documentation webpages now links to a canonical version to reduce outdated documentation in search engine results.
### [`v8.2.1`](https://togithub.com/pytest-dev/pytest/releases/tag/8.2.1)
[Compare Source](https://togithub.com/pytest-dev/pytest/compare/8.2.0...8.2.1)
# pytest 8.2.1 (2024-05-19)
## Improvements
- [#12334](https://togithub.com/pytest-dev/pytest/issues/12334): Support for Python 3.13 (beta1 at the time of writing).
## Bug Fixes
- [#12120](https://togithub.com/pytest-dev/pytest/issues/12120): Fix \[PermissionError]{.title-ref} crashes arising from directories which are not selected on the command-line.
- [#12191](https://togithub.com/pytest-dev/pytest/issues/12191): Keyboard interrupts and system exits are now properly handled during the test collection.
- [#12300](https://togithub.com/pytest-dev/pytest/issues/12300): Fixed handling of 'Function not implemented' error under squashfuse_ll, which is a different way to say that the mountpoint is read-only.
- [#12308](https://togithub.com/pytest-dev/pytest/issues/12308): Fix a regression in pytest 8.2.0 where the permissions of automatically-created `.pytest_cache` directories became `rwx------` instead of the expected `rwxr-xr-x`.
## Trivial/Internal Changes
- [#12333](https://togithub.com/pytest-dev/pytest/issues/12333): pytest releases are now attested using the recent [Artifact Attestation](https://github.blog/2024-05-02-introducing-artifact-attestations-now-in-public-beta/) support from GitHub, allowing users to verify the provenance of pytest's sdist and wheel artifacts.
### [`v8.2.0`](https://togithub.com/pytest-dev/pytest/releases/tag/8.2.0)
[Compare Source](https://togithub.com/pytest-dev/pytest/compare/8.1.2...8.2.0)
# pytest 8.2.0 (2024-04-27)
## Deprecations
- [#12069](https://togithub.com/pytest-dev/pytest/issues/12069): A deprecation warning is now raised when implementations of one of the following hooks request a deprecated `py.path.local` parameter instead of the `pathlib.Path` parameter which replaced it:
- `pytest_ignore_collect`{.interpreted-text role="hook"} - the `path` parameter - use `collection_path` instead.
- `pytest_collect_file`{.interpreted-text role="hook"} - the `path` parameter - use `file_path` instead.
- `pytest_pycollect_makemodule`{.interpreted-text role="hook"} - the `path` parameter - use `module_path` instead.
- `pytest_report_header`{.interpreted-text role="hook"} - the `startdir` parameter - use `start_path` instead.
- `pytest_report_collectionfinish`{.interpreted-text role="hook"} - the `startdir` parameter - use `start_path` instead.
The replacement parameters are available since pytest 7.0.0.
The old parameters will be removed in pytest 9.0.0.
See `legacy-path-hooks-deprecated`{.interpreted-text role="ref"} for more details.
## Features
- [#11871](https://togithub.com/pytest-dev/pytest/issues/11871): Added support for reading command line arguments from a file using the prefix character `@`, like e.g.: `pytest @tests.txt`. The file must have one argument per line.
See `Read arguments from file `{.interpreted-text role="ref"} for details.
## Improvements
- [#11523](https://togithub.com/pytest-dev/pytest/issues/11523): `pytest.importorskip`{.interpreted-text role="func"} will now issue a warning if the module could be found, but raised `ImportError`{.interpreted-text role="class"} instead of `ModuleNotFoundError`{.interpreted-text role="class"}.
The warning can be suppressed by passing `exc_type=ImportError` to `pytest.importorskip`{.interpreted-text role="func"}.
See `import-or-skip-import-error`{.interpreted-text role="ref"} for details.
- [#11728](https://togithub.com/pytest-dev/pytest/issues/11728): For `unittest`-based tests, exceptions during class cleanup (as raised by functions registered with `TestCase.addClassCleanup `{.interpreted-text role="meth"}) are now reported instead of silently failing.
- [#11777](https://togithub.com/pytest-dev/pytest/issues/11777): Text is no longer truncated in the `short test summary info` section when `-vv` is given.
- [#12112](https://togithub.com/pytest-dev/pytest/issues/12112): Improved namespace packages detection when `consider_namespace_packages`{.interpreted-text role="confval"} is enabled, covering more situations (like editable installs).
- [#9502](https://togithub.com/pytest-dev/pytest/issues/9502): Added `PYTEST_VERSION`{.interpreted-text role="envvar"} environment variable which is defined at the start of the pytest session and undefined afterwards. It contains the value of `pytest.__version__`, and among other things can be used to easily check if code is running from within a pytest run.
## Bug Fixes
- [#12065](https://togithub.com/pytest-dev/pytest/issues/12065): Fixed a regression in pytest 8.0.0 where test classes containing `setup_method` and tests using `@staticmethod` or `@classmethod` would crash with `AttributeError: 'NoneType' object has no attribute 'setup_method'`.
Now the `request.instance `{.interpreted-text role="attr"} attribute of tests using `@staticmethod` and `@classmethod` is no longer `None`, but a fresh instance of the class, like in non-static methods.
Previously it was `None`, and all fixtures of such tests would share a single `self`.
- [#12135](https://togithub.com/pytest-dev/pytest/issues/12135): Fixed issue where fixtures adding their finalizer multiple times to fixtures they request would cause unreliable and non-intuitive teardown ordering in some instances.
- [#12194](https://togithub.com/pytest-dev/pytest/issues/12194): Fixed a bug with `--importmode=importlib` and `--doctest-modules` where child modules did not appear as attributes in parent modules.
- [#1489](https://togithub.com/pytest-dev/pytest/issues/1489): Fixed some instances where teardown of higher-scoped fixtures was not happening in the reverse order they were initialized in.
## Trivial/Internal Changes
- [#12069](https://togithub.com/pytest-dev/pytest/issues/12069): `pluggy>=1.5.0` is now required.
- [#12167](https://togithub.com/pytest-dev/pytest/issues/12167): `cache `{.interpreted-text role="ref"}: create supporting files (`CACHEDIR.TAG`, `.gitignore`, etc.) in a temporary directory to provide atomic semantics.
### [`v8.1.2`](https://togithub.com/pytest-dev/pytest/releases/tag/8.1.2)
[Compare Source](https://togithub.com/pytest-dev/pytest/compare/8.1.1...8.1.2)
# pytest 8.1.2 (2024-04-26)
## Bug Fixes
- [#12114](https://togithub.com/pytest-dev/pytest/issues/12114): Fixed error in `pytest.approx`{.interpreted-text role="func"} when used with \[numpy]{.title-ref} arrays and comparing with other types.
### [`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
- [#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.
- [#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 `{.interpreted-text role="ref"} for more details.
## Improvements
- [#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 #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.
- [#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"}.
- [#11475](https://togithub.com/pytest-dev/pytest/issues/11475): `--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`).
- [#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.
- [#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.
- [#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`.
- [#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.
- [#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
- [#11475](https://togithub.com/pytest-dev/pytest/issues/11475): Fixed regression where `--importmode=importlib` would import non-test modules more than once.
- [#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.
- [#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.
- [#12014](https://togithub.com/pytest-dev/pytest/issues/12014): Fix the `stacklevel` used when warning about marks used on fixtures.
- [#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
- [#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
- [#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.
- [#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 [#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 [#12069](https://togithub.com/pytest-dev/pytest/issues/12069).
## Features
- [#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.
- [#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 `{.interpreted-text role="ref"} for more details.
## Improvements
- [#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 #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.
- [#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"}.
- [#11475](https://togithub.com/pytest-dev/pytest/issues/11475): `--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`).
- [#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.
- [#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.
- [#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`.
- [#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.
- [#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
- [#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.
- [#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.
- [#12014](https://togithub.com/pytest-dev/pytest/issues/12014): Fix the `stacklevel` used when warning about marks used on fixtures.
- [#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
- [#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
- [#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
- [#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`).
- [#11953](https://togithub.com/pytest-dev/pytest/issues/11953): Fix an `IndexError` crash raising from `getstatementrange_ast`.
- [#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
- [#11875](https://togithub.com/pytest-dev/pytest/issues/11875): Correctly handle errors from `getpass.getuser`{.interpreted-text role="func"} in Python 3.13.
- [#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"}.
- [#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}.
- [#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.
- [#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.
- [#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
- [#11842](https://togithub.com/pytest-dev/pytest/issues/11842): Properly escape the `reason` of a `skip `{.interpreted-text role="ref"} mark when writing JUnit XML files.
- [#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.
jd/tenacity (tenacity)
### [`v9.0.0`](https://togithub.com/jd/tenacity/releases/tag/9.0.0): tenacity 9.0.0
[Compare Source](https://togithub.com/jd/tenacity/compare/8.5.0...9.0.0)
#### What's Changed
- Respects `min` argument for `wait_random_exponential` by [@yxtay](https://togithub.com/yxtay) in [https://github.com/jd/tenacity/pull/425](https://togithub.com/jd/tenacity/pull/425)
- Bump major version to warn API breakage on statistics attribute
**Full Changelog**: https://github.com/jd/tenacity/compare/8.5.0...9.0.0
### [`v8.5.0`](https://togithub.com/jd/tenacity/releases/tag/8.5.0)
[Compare Source](https://togithub.com/jd/tenacity/compare/8.4.2...8.5.0)
#### What's Changed
- fix: Restore contents of retry attribute for wrapped functions by [@hasier](https://togithub.com/hasier) in [https://github.com/jd/tenacity/pull/484](https://togithub.com/jd/tenacity/pull/484)
**Full Changelog**: https://github.com/jd/tenacity/compare/8.4.2...8.5.0
### [`v8.4.2`](https://togithub.com/jd/tenacity/releases/tag/8.4.2): tenacity 8.4.2
[Compare Source](https://togithub.com/jd/tenacity/compare/8.4.1...8.4.2)
##### What's Changed
- fix: Avoid overwriting local contexts with retry decorator by [@hasier](https://togithub.com/hasier) in [https://github.com/jd/tenacity/pull/479](https://togithub.com/jd/tenacity/pull/479)
**Full Changelog**: https://github.com/jd/tenacity/compare/8.4.1...8.4.2
### [`v8.4.1`](https://togithub.com/jd/tenacity/releases/tag/8.4.1): tenacity 8.4.1
[Compare Source](https://togithub.com/jd/tenacity/compare/8.4.0...8.4.1)
#### What's Changed
- Include `tenacity.asyncio` subpackage in release dist by [@cdce8p](https://togithub.com/cdce8p) in [https://github.com/jd/tenacity/pull/474](https://togithub.com/jd/tenacity/pull/474)
**Full Changelog**: https://github.com/jd/tenacity/compare/8.4.0...8.4.1
### [`v8.4.0`](https://togithub.com/jd/tenacity/releases/tag/8.4.0): tenacity 8.4.0
[Compare Source](https://togithub.com/jd/tenacity/compare/8.3.0...8.4.0)
#### What's Changed
- Add async strategies by [@hasier](https://togithub.com/hasier) in [https://github.com/jd/tenacity/pull/451](https://togithub.com/jd/tenacity/pull/451)
- Support Trio out-of-the-box by [@jakkdl](https://togithub.com/jakkdl) in [https://github.com/jd/tenacity/pull/463](https://togithub.com/jd/tenacity/pull/463)
**Full Changelog**: https://github.com/jd/tenacity/compare/8.3.0...8.4.0
### [`v8.3.0`](https://togithub.com/jd/tenacity/releases/tag/8.3.0)
[Compare Source](https://togithub.com/jd/tenacity/compare/8.2.3...8.3.0)
### New Features
- Added a new stop function: `stop_before_delay`, which will stop execution if the next sleep time would cause overall delay to exceed the specified delay. Useful for use cases where you have some upper bound on retry times that you must not exceed, so returning before that timeout is preferable than returning after that timeout.
### Bug Fixes
- Preserve **defaults** and **kwdefaults** through retry decorator
### Other Notes
- Add a "test" extra
### [`v8.2.3`](https://togithub.com/jd/tenacity/compare/8.2.2...8.2.3)
[Compare Source](https://togithub.com/jd/tenacity/compare/8.2.2...8.2.3)
urllib3/urllib3 (urllib3)
### [`v2.2.2`](https://togithub.com/urllib3/urllib3/blob/HEAD/CHANGES.rst#222-2024-06-17)
[Compare Source](https://togithub.com/urllib3/urllib3/compare/2.2.1...2.2.2)
\==================
- Added the `Proxy-Authorization` header to the list of headers to strip from requests when redirecting to a different host. As before, different headers can be set via `Retry.remove_headers_on_redirect`.
- Allowed passing negative integers as `amt` to read methods of `http.client.HTTPResponse` as an alternative to `None`. (`#3122 `\__)
- Fixed return types representing copying actions to use `typing.Self`. (`#3363 `\__)
### [`v2.2.1`](https://togithub.com/urllib3/urllib3/blob/HEAD/CHANGES.rst#221-2024-02-16)
[Compare Source](https://togithub.com/urllib3/urllib3/compare/2.2.0...2.2.1)
\==================
- Fixed issue where `InsecureRequestWarning` was emitted for HTTPS connections when using Emscripten. (`#3331 `\__)
- Fixed `HTTPConnectionPool.urlopen` to stop automatically casting non-proxy headers to `HTTPHeaderDict`. This change was premature as it did not apply to proxy headers and `HTTPHeaderDict` does not handle byte header values correctly yet. (`#3343 `\__)
- Changed `InvalidChunkLength` to `ProtocolError` when response terminates before the chunk length is sent. (`#2860 `\__)
- Changed `ProtocolError` to be more verbose on incomplete reads with excess content. (`#3261 `\__)
### [`v2.2.0`](https://togithub.com/urllib3/urllib3/blob/HEAD/CHANGES.rst#220-2024-01-30)
[Compare Source](https://togithub.com/urllib3/urllib3/compare/2.1.0...2.2.0)
\==================
- Added support for `Emscripten and Pyodide `**, including streaming support in cross-origin isolated browser environments where threading is enabled. (`#2951 `**)
- Added support for `HTTPResponse.read1()` method. (`#3186 `\__)
- Added rudimentary support for HTTP/2. (`#3284 `\__)
- Fixed issue where requests against urls with trailing dots were failing due to SSL errors
when using proxy. (`#2244 `\__)
- Fixed `HTTPConnection.proxy_is_verified` and `HTTPSConnection.proxy_is_verified`
to be always set to a boolean after connecting to a proxy. It could be
`None` in some cases previously. (`#3130 `\__)
- Fixed an issue where `headers` passed in a request with `json=` would be mutated (`#3203 `\__)
- Fixed `HTTPSConnection.is_verified` to be set to `False` when connecting
from a HTTPS proxy to an HTTP target. It was set to `True` previously. (`#3267 `\__)
- Fixed handling of new error message from OpenSSL 3.2.0 when configuring an HTTP proxy as HTTPS (`#3268 `\__)
- Fixed TLS 1.3 post-handshake auth when the server certificate validation is disabled (`#3325 `\__)
- Note for downstream distributors: To run integration tests, you now need to run the tests a second
time with the `--integration` pytest flag. (`#3181 `\__)
### [`v2.1.0`](https://togithub.com/urllib3/urllib3/blob/HEAD/CHANGES.rst#210-2023-11-13)
[Compare Source](https://togithub.com/urllib3/urllib3/compare/2.0.7...2.1.0)
\==================
Read the `v2 migration guide `\__ for help upgrading to the latest version of urllib3.
## Removals
- Removed support for the deprecated urllib3\[secure] extra. (`#2680 `\__)
- Removed support for the deprecated SecureTransport TLS implementation. (`#2681 `\__)
- Removed support for the end-of-life Python 3.7. (`#3143 `\__)
## Bugfixes
- Allowed loading CA certificates from memory for proxies. (`#3065 `\__)
- Fixed decoding Gzip-encoded responses which specified `x-gzip` content-encoding. (`#3174 `\__)
### [`v2.0.7`](https://togithub.com/urllib3/urllib3/blob/HEAD/CHANGES.rst#207-2023-10-17)
[Compare Source](https://togithub.com/urllib3/urllib3/compare/2.0.6...2.0.7)
\==================
- Made body stripped from HTTP requests changing the request method to GET after HTTP 303 "See Other" redirect responses.
### [`v2.0.6`](https://togithub.com/urllib3/urllib3/blob/HEAD/CHANGES.rst#206-2023-10-02)
[Compare Source](https://togithub.com/urllib3/urllib3/compare/2.0.5...2.0.6)
\==================
- Added the `Cookie` header to the list of headers to strip from requests when redirecting to a different host. As before, different headers can be set via `Retry.remove_headers_on_redirect`.
### [`v2.0.5`](https://togithub.com/urllib3/urllib3/blob/HEAD/CHANGES.rst#205-2023-09-20)
[Compare Source](https://togithub.com/urllib3/urllib3/compare/2.0.4...2.0.5)
\==================
- Allowed pyOpenSSL third-party module without any deprecation warning. (`#3126 `\__)
- Fixed default `blocksize` of `HTTPConnection` classes to match high-level classes. Previously was 8KiB, now 16KiB. (`#3066 `\__)
### [`v2.0.4`](https://togithub.com/urllib3/urllib3/blob/HEAD/CHANGES.rst#204-2023-07-19)
[Compare Source](https://togithub.com/urllib3/urllib3/compare/2.0.3...2.0.4)
\==================
- Added support for union operators to `HTTPHeaderDict` (`#2254 `\__)
- Added `BaseHTTPResponse` to `urllib3.__all__` (`#3078 `\__)
- Fixed `urllib3.connection.HTTPConnection` to raise the `http.client.connect` audit event to have the same behavior as the standard library HTTP client (`#2757 `\__)
- Relied on the standard library for checking hostnames in supported PyPy releases (`#3087 `\__)
### [`v2.0.3`](https://togithub.com/urllib3/urllib3/blob/HEAD/CHANGES.rst#203-2023-06-07)
[Compare Source](https://togithub.com/urllib3/urllib3/compare/2.0.2...2.0.3)
\==================
- Allowed alternative SSL libraries such as LibreSSL, while still issuing a warning as we cannot help users facing issues with implementations other than OpenSSL. (`#3020 `\__)
- Deprecated URLs which don't have an explicit scheme (`#2950 `\_)
- Fixed response decoding with Zstandard when compressed data is made of several frames. (`#3008 `\__)
- Fixed `assert_hostname=False` to correctly skip hostname check. (`#3051 `\__)
### [`v2.0.2`](https://togithub.com/urllib3/urllib3/blob/HEAD/CHANGES.rst#202-2023-05-03)
[Compare Source](https://togithub.com/urllib3/urllib3/compare/2.0.1...2.0.2)
\==================
- Fixed `HTTPResponse.stream()` to continue yielding bytes if buffered decompressed data
was still available to be read even if the underlying socket is closed. This prevents
a compressed response from being truncated. (`#3009 `\__)
### [`v2.0.1`](https://togithub.com/urllib3/urllib3/blob/HEAD/CHANGES.rst#201-2023-04-30)
[Compare Source](https://togithub.com/urllib3/urllib3/compare/2.0.0...2.0.1)
\==================
- Fixed a socket leak when fingerprint or hostname verifications fail. (`#2991 `\__)
- Fixed an error when `HTTPResponse.read(0)` was the first `read` call or when the internal response body buffer was otherwise empty. (`#2998 `\__)
### [`v2.0.0`](https://togithub.com/urllib3/urllib3/blob/HEAD/CHANGES.rst#200-2023-04-26)
[Compare Source](https://togithub.com/urllib3/urllib3/compare/1.26.19...2.0.0)
\==================
Read the `v2.0 migration guide `\__ for help upgrading to the latest version of urllib3.
## Removed
- Removed support for Python 2.7, 3.5, and 3.6 (`#883 `**, `#2336 `**).
- Removed fallback on certificate `commonName` in `match_hostname()` function.
This behavior was deprecated in May 2000 in RFC 2818. Instead only `subjectAltName`
is used to verify the hostname by default. To enable verifying the hostname against
`commonName` use `SSLContext.hostname_checks_common_name = True` (`#2113 `\__).
- Removed support for Python with an `ssl` module compiled with LibreSSL, CiscoSSL,
wolfSSL, and all other OpenSSL alternatives. Python is moving to require OpenSSL with PEP 644 (`#2168 `\__).
- Removed support for OpenSSL versions earlier than 1.1.1 or that don't have SNI support.
When an incompatible OpenSSL version is detected an `ImportError` is raised (`#2168 `\__).
- Removed the list of default ciphers for OpenSSL 1.1.1+ and SecureTransport as their own defaults are already secure (`#2082 `\__).
- Removed `urllib3.contrib.appengine.AppEngineManager` and support for Google App Engine Standard Environment (`#2044 `\__).
- Removed deprecated `Retry` options `method_whitelist`, `DEFAULT_REDIRECT_HEADERS_BLACKLIST` (`#2086 `\__).
- Removed `urllib3.HTTPResponse.from_httplib` (`#2648 `\__).
- Removed default value of `None` for the `request_context` parameter of `urllib3.PoolManager.connection_from_pool_key`. This change should have no effect on users as the default value of `None` was an invalid option and was never used (`#1897 `\__).
- Removed the `urllib3.request` module. `urllib3.request.RequestMethods` has been made a private API.
This change was made to ensure that `from urllib3 import request` imported the top-level `request()`
function instead of the `urllib3.request` module (`#2269 `\__).
- Removed support for SSLv3.0 from the `urllib3.contrib.pyopenssl` even when support is available from the compiled OpenSSL library (`#2233 `\__).
- Removed the deprecated `urllib3.contrib.ntlmpool` module (`#2339 `\__).
- Removed `DEFAULT_CIPHERS`, `HAS_SNI`, `USE_DEFAULT_SSLCONTEXT_CIPHERS`, from the private module `urllib3.util.ssl_` (`#2168 `\__).
- Removed `urllib3.exceptions.SNIMissingWarning` (`#2168 `\__).
- Removed the `_prepare_conn` method from `HTTPConnectionPool`. Previously this was only used to call `HTTPSConnection.set_cert()` by `HTTPSConnectionPool` (`#1985 `\__).
- Removed `tls_in_tls_required` property from `HTTPSConnection`. This is now determined from the `scheme` parameter in `HTTPConnection.set_tunnel()` (`#1985 `\__).
- Removed the `strict` parameter/attribute from `HTTPConnection`, `HTTPSConnection`, `HTTPConnectionPool`, `HTTPSConnectionPool`, and `HTTPResponse` (`#2064 `\__).
## Deprecated
- Deprecated `HTTPResponse.getheaders()` and `HTTPResponse.getheader()` which will be removed in urllib3 v2.1.0. Instead use `HTTPResponse.headers` and `HTTPResponse.headers.get(name, default)`. (`#1543 `**, `#2814 `**).
- Deprecated `urllib3.contrib.pyopenssl` module which will be removed in urllib3 v2.1.0 (`#2691 `\__).
- Deprecated `urllib3.contrib.securetransport` module which will be removed in urllib3 v2.1.0 (`#2692 `\__).
- Deprecated `ssl_version` option in favor of `ssl_minimum_version`. `ssl_version` will be removed in urllib3 v2.1.0 (`#2110 `\__).
- Deprecated the `strict` parameter of `PoolManager.connection_from_context()` as it's not longer needed in Python 3.x. It will be removed in urllib3 v2.1.0 (`#2267 `\__)
- Deprecated the `NewConnectionError.pool` attribute which will be removed in urllib3 v2.1.0 (`#2271 `\__).
- Deprecated `format_header_param_html5` and `format_header_param` in favor of `format_multipart_header_param` (`#2257 `\__).
- Deprecated `RequestField.header_formatter` parameter which will be removed in urllib3 v2.1.0 (`#2257 `\__).
- Deprecated `HTTPSConnection.set_cert()` method. Instead pass parameters to the `HTTPSConnection` constructor (`#1985 `\__).
- Deprecated `HTTPConnection.request_chunked()` method which will be removed in urllib3 v2.1.0. Instead pass `chunked=True` to `HTTPConnection.request()` (`#1985 `\__).
## Added
- Added top-level `urllib3.request` function which uses a preconfigured module-global `PoolManager` instance (`#2150 `\__).
- Added the `json` parameter to `urllib3.request()`, `PoolManager.request()`, and `ConnectionPool.request()` methods to send JSON bodies in requests. Using this parameter will set the header `Content-Type: application/json` if `Content-Type` isn't already defined.
Added support for parsing JSON response bodies with `HTTPResponse.json()` method (`#2243 `\__).
- Added type hints to the `urllib3` module (`#1897 `\__).
- Added `ssl_minimum_version` and `ssl_maximum_version` options which set
`SSLContext.minimum_version` and `SSLContext.maximum_version` (`#2110 `\__).
- Added support for Zstandard (RFC 8878) when `zstandard` 1.18.0 or later is installed.
Added the `zstd` extra which installs the `zstandard` package (`#1992 `\__).
- Added `urllib3.response.BaseHTTPResponse` class. All future response classes will be subclasses of `BaseHTTPResponse` (`#2083 `\__).
- Added `FullPoolError` which is raised when `PoolManager(block=True)` and a connection is returned to a full pool (`#2197 `\__).
- Added `HTTPHeaderDict` to the top-level `urllib3` namespace (`#2216 `\__).
- Added support for configuring header merging behavior with HTTPHeaderDict
When using a `HTTPHeaderDict` to provide headers for a request, by default duplicate
header values will be repeated. But if `combine=True` is passed into a call to
`HTTPHeaderDict.add`, then the added header value will be merged in with an existing
value into a comma-separated list (`X-My-Header: foo, bar`) (`#2242 `\__).
- Added `NameResolutionError` exception when a DNS error occurs (`#2305 `\__).
- Added `proxy_assert_hostname` and `proxy_assert_fingerprint` kwargs to `ProxyManager` (`#2409 `\__).
- Added a configurable `backoff_max` parameter to the `Retry` class.
If a custom `backoff_max` is provided to the `Retry` class, it
will replace the `Retry.DEFAULT_BACKOFF_MAX` (`#2494 `\__).
- Added the `authority` property to the Url class as per RFC 3986 3.2. This property should be used in place of `netloc` for users who want to include the userinfo (auth) component of the URI (`#2520 `\__).
- Added the `scheme` parameter to `HTTPConnection.set_tunnel` to configure the scheme of the origin being tunnelled to (`#1985 `\__).
- Added the `is_closed`, `is_connected` and `has_connected_to_proxy` properties to `HTTPConnection` (`#1985 `\__).
- Added optional `backoff_jitter` parameter to `Retry`. (`#2952 `\__)
## Changed
- Changed `urllib3.response.HTTPResponse.read` to respect the semantics of `io.BufferedIOBase` regardless of compression. Specifically, this method:
- Only returns an empty bytes object to indicate EOF (that is, the response has been fully consumed).
- Never returns more bytes than requested.
- Can issue any number of system calls: zero, one or multiple.
If you want each `urllib3.response.HTTPResponse.read` call to issue a single system call, you need to disable decompression by setting `decode_content=False` (`#2128 `\__).
- Changed `urllib3.HTTPConnection.getresponse` to return an instance of `urllib3.HTTPResponse` instead of `http.client.HTTPResponse` (`#2648 `\__).
- Changed `ssl_version` to instead set the corresponding `SSLContext.minimum_version`
and `SSLContext.maximum_version` values. Regardless of `ssl_version` passed
`SSLContext` objects are now constructed using `ssl.PROTOCOL_TLS_CLIENT` (`#2110 `\__).
- Changed default `SSLContext.minimum_version` to be `TLSVersion.TLSv1_2` in line with Python 3.10 (`#2373 `\__).
- Changed `ProxyError` to wrap any connection error (timeout, TLS, DNS) that occurs when connecting to the proxy (`#2482 `\__).
- Changed `urllib3.util.create_urllib3_context` to not override the system cipher suites with
a default value. The new default will be cipher suites configured by the operating system (`#2168 `\__).
- Changed `multipart/form-data` header parameter formatting matches the WHATWG HTML Standard as of 2021-06-10. Control characters in filenames are no longer percent encoded (`#2257 `\__).
- Changed the error raised when connecting via HTTPS when the `ssl` module isn't available from `SSLError` to `ImportError` (`#2589 `\__).
- Changed `HTTPConnection.request()` to always use lowercase chunk boundaries when sending requests with `Transfer-Encoding: chunked` (`#2515 `\__).
- Changed `enforce_content_length` default to True, preventing silent data loss when reading streamed responses (`#2514 `\__).
- Changed internal implementation of `HTTPHeaderDict` to use `dict` instead of `collections.OrderedDict` for better performance (`#2080 `\__).
- Changed the `urllib3.contrib.pyopenssl` module to wrap `OpenSSL.SSL.Error` with `ssl.SSLError` in `PyOpenSSLContext.load_cert_chain` (`#2628 `\__).
- Changed usage of the deprecated `socket.error` to `OSError` (`#2120 `\__).
- Changed all parameters in the `HTTPConnection` and `HTTPSConnection` constructors to be keyword-only except `host` and `port` (`#1985 `\__).
- Changed `HTTPConnection.getresponse()` to set the socket timeout from `HTTPConnection.timeout` value before reading
data from the socket. This previously was done manually by the `HTTPConnectionPool` calling `HTTPConnection.sock.settimeout(...)` (`#1985 `\__).
- Changed the `_proxy_host` property to `_tunnel_host` in `HTTPConnectionPool` to more closely match how the property is used (value in `HTTPConnection.set_tunnel()`) (`#1985 `\__).
- Changed name of `Retry.BACK0FF_MAX` to be `Retry.DEFAULT_BACKOFF_MAX`.
- Changed TLS handshakes to use `SSLContext.check_hostname` when possible (`#2452 `\__).
- Changed `server_hostname` to behave like other parameters only used by `HTTPSConnectionPool` (`#2537 `\__).
- Changed the default `blocksize` to 16KB to match OpenSSL's default read amounts (`#2348 `\__).
- Changed `HTTPResponse.read()` to raise an error when calling with `decode_content=False` after using `decode_content=True` to prevent data loss (`#2800 `\__).
## Fixed
- Fixed thread-safety issue where accessing a `PoolManager` with many distinct origins would cause connection pools to be closed while requests are in progress (`#1252 `\__).
- Fixed an issue where an `HTTPConnection` instance would erroneously reuse the socket read timeout value from reading the previous response instead of a newly configured connect timeout.
Instead now if `HTTPConnection.timeout` is updated before sending the next request the new timeout value will be used (`#2645 `\__).
- Fixed `socket.error.errno` when raised from pyOpenSSL's `OpenSSL.SSL.SysCallError` (`#2118 `\__).
- Fixed the default value of `HTTPSConnection.socket_options` to match `HTTPConnection` (`#2213 `\__).
- Fixed a bug where `headers` would be modified by the `remove_headers_on_redirect` feature (`#2272 `\__).
- Fixed a reference cycle bug in `urllib3.util.connection.create_connection()` (`#2277 `\__).
- Fixed a socket leak if `HTTPConnection.connect()` fails (`#2571 `\__).
- Fixed `urllib3.contrib.pyopenssl.WrappedSocket` and `urllib3.contrib.securetransport.WrappedSocket` close methods (`#2970 `\__)
Configuration
📅 Schedule: Branch creation - "after 1am and before 3am every weekday" in timezone Etc/UTC, Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
[ ] If you want to rebase/retry this PR, check this box
This PR contains the following updates:
42.0.5
->43.0.0
^7.4.0
->^8.3.2
^8.2.2
->^9.0.0
^1.26.16
->^2.2.2
Release Notes
pyca/cryptography (cryptography)
### [`v43.0.0`](https://togithub.com/pyca/cryptography/compare/42.0.8...43.0.0) [Compare Source](https://togithub.com/pyca/cryptography/compare/42.0.8...43.0.0) ### [`v42.0.8`](https://togithub.com/pyca/cryptography/compare/42.0.7...42.0.8) [Compare Source](https://togithub.com/pyca/cryptography/compare/42.0.7...42.0.8) ### [`v42.0.7`](https://togithub.com/pyca/cryptography/compare/42.0.6...42.0.7) [Compare Source](https://togithub.com/pyca/cryptography/compare/42.0.6...42.0.7) ### [`v42.0.6`](https://togithub.com/pyca/cryptography/compare/42.0.5...42.0.6) [Compare Source](https://togithub.com/pyca/cryptography/compare/42.0.5...42.0.6)pytest-dev/pytest (pytest)
### [`v8.3.2`](https://togithub.com/pytest-dev/pytest/releases/tag/8.3.2) [Compare Source](https://togithub.com/pytest-dev/pytest/compare/8.3.1...8.3.2) # pytest 8.3.2 (2024-07-24) ## Bug fixes - [#12652](https://togithub.com/pytest-dev/pytest/issues/12652): Resolve regression \[conda]{.title-ref} environments where no longer being automatically detected. \-- by `RonnyPfannschmidt`{.interpreted-text role="user"} ### [`v8.3.1`](https://togithub.com/pytest-dev/pytest/releases/tag/8.3.1) [Compare Source](https://togithub.com/pytest-dev/pytest/compare/8.3.0...8.3.1) # pytest 8.3.1 (2024-07-20) The 8.3.0 release failed to include the change notes and docs for the release. This patch release remedies this. There are no other changes. ### [`v8.3.0`](https://togithub.com/pytest-dev/pytest/compare/8.2.2...8.3.0) [Compare Source](https://togithub.com/pytest-dev/pytest/compare/8.2.2...8.3.0) ### [`v8.2.2`](https://togithub.com/pytest-dev/pytest/releases/tag/8.2.2) [Compare Source](https://togithub.com/pytest-dev/pytest/compare/8.2.1...8.2.2) # pytest 8.2.2 (2024-06-04) ## Bug Fixes - [#12355](https://togithub.com/pytest-dev/pytest/issues/12355): Fix possible catastrophic performance slowdown on a certain parametrization pattern involving many higher-scoped parameters. - [#12367](https://togithub.com/pytest-dev/pytest/issues/12367): Fix a regression in pytest 8.2.0 where unittest class instances (a fresh one is created for each test) were not released promptly on test teardown but only on session teardown. - [#12381](https://togithub.com/pytest-dev/pytest/issues/12381): Fix possible "Directory not empty" crashes arising from concurent cache dir (`.pytest_cache`) creation. Regressed in pytest 8.2.0. ## Improved Documentation - [#12290](https://togithub.com/pytest-dev/pytest/issues/12290): Updated Sphinx theme to use Furo instead of Flask, enabling Dark mode theme. - [#12356](https://togithub.com/pytest-dev/pytest/issues/12356): Added a subsection to the documentation for debugging flaky tests to mention lack of thread safety in pytest as a possible source of flakyness. - [#12363](https://togithub.com/pytest-dev/pytest/issues/12363): The documentation webpages now links to a canonical version to reduce outdated documentation in search engine results. ### [`v8.2.1`](https://togithub.com/pytest-dev/pytest/releases/tag/8.2.1) [Compare Source](https://togithub.com/pytest-dev/pytest/compare/8.2.0...8.2.1) # pytest 8.2.1 (2024-05-19) ## Improvements - [#12334](https://togithub.com/pytest-dev/pytest/issues/12334): Support for Python 3.13 (beta1 at the time of writing). ## Bug Fixes - [#12120](https://togithub.com/pytest-dev/pytest/issues/12120): Fix \[PermissionError]{.title-ref} crashes arising from directories which are not selected on the command-line. - [#12191](https://togithub.com/pytest-dev/pytest/issues/12191): Keyboard interrupts and system exits are now properly handled during the test collection. - [#12300](https://togithub.com/pytest-dev/pytest/issues/12300): Fixed handling of 'Function not implemented' error under squashfuse_ll, which is a different way to say that the mountpoint is read-only. - [#12308](https://togithub.com/pytest-dev/pytest/issues/12308): Fix a regression in pytest 8.2.0 where the permissions of automatically-created `.pytest_cache` directories became `rwx------` instead of the expected `rwxr-xr-x`. ## Trivial/Internal Changes - [#12333](https://togithub.com/pytest-dev/pytest/issues/12333): pytest releases are now attested using the recent [Artifact Attestation](https://github.blog/2024-05-02-introducing-artifact-attestations-now-in-public-beta/) support from GitHub, allowing users to verify the provenance of pytest's sdist and wheel artifacts. ### [`v8.2.0`](https://togithub.com/pytest-dev/pytest/releases/tag/8.2.0) [Compare Source](https://togithub.com/pytest-dev/pytest/compare/8.1.2...8.2.0) # pytest 8.2.0 (2024-04-27) ## Deprecations - [#12069](https://togithub.com/pytest-dev/pytest/issues/12069): A deprecation warning is now raised when implementations of one of the following hooks request a deprecated `py.path.local` parameter instead of the `pathlib.Path` parameter which replaced it: - `pytest_ignore_collect`{.interpreted-text role="hook"} - the `path` parameter - use `collection_path` instead. - `pytest_collect_file`{.interpreted-text role="hook"} - the `path` parameter - use `file_path` instead. - `pytest_pycollect_makemodule`{.interpreted-text role="hook"} - the `path` parameter - use `module_path` instead. - `pytest_report_header`{.interpreted-text role="hook"} - the `startdir` parameter - use `start_path` instead. - `pytest_report_collectionfinish`{.interpreted-text role="hook"} - the `startdir` parameter - use `start_path` instead. The replacement parameters are available since pytest 7.0.0. The old parameters will be removed in pytest 9.0.0. See `legacy-path-hooks-deprecated`{.interpreted-text role="ref"} for more details. ## Features - [#11871](https://togithub.com/pytest-dev/pytest/issues/11871): Added support for reading command line arguments from a file using the prefix character `@`, like e.g.: `pytest @tests.txt`. The file must have one argument per line. See `Read arguments from filejd/tenacity (tenacity)
### [`v9.0.0`](https://togithub.com/jd/tenacity/releases/tag/9.0.0): tenacity 9.0.0 [Compare Source](https://togithub.com/jd/tenacity/compare/8.5.0...9.0.0) #### What's Changed - Respects `min` argument for `wait_random_exponential` by [@yxtay](https://togithub.com/yxtay) in [https://github.com/jd/tenacity/pull/425](https://togithub.com/jd/tenacity/pull/425) - Bump major version to warn API breakage on statistics attribute **Full Changelog**: https://github.com/jd/tenacity/compare/8.5.0...9.0.0 ### [`v8.5.0`](https://togithub.com/jd/tenacity/releases/tag/8.5.0) [Compare Source](https://togithub.com/jd/tenacity/compare/8.4.2...8.5.0) #### What's Changed - fix: Restore contents of retry attribute for wrapped functions by [@hasier](https://togithub.com/hasier) in [https://github.com/jd/tenacity/pull/484](https://togithub.com/jd/tenacity/pull/484) **Full Changelog**: https://github.com/jd/tenacity/compare/8.4.2...8.5.0 ### [`v8.4.2`](https://togithub.com/jd/tenacity/releases/tag/8.4.2): tenacity 8.4.2 [Compare Source](https://togithub.com/jd/tenacity/compare/8.4.1...8.4.2) ##### What's Changed - fix: Avoid overwriting local contexts with retry decorator by [@hasier](https://togithub.com/hasier) in [https://github.com/jd/tenacity/pull/479](https://togithub.com/jd/tenacity/pull/479) **Full Changelog**: https://github.com/jd/tenacity/compare/8.4.1...8.4.2 ### [`v8.4.1`](https://togithub.com/jd/tenacity/releases/tag/8.4.1): tenacity 8.4.1 [Compare Source](https://togithub.com/jd/tenacity/compare/8.4.0...8.4.1) #### What's Changed - Include `tenacity.asyncio` subpackage in release dist by [@cdce8p](https://togithub.com/cdce8p) in [https://github.com/jd/tenacity/pull/474](https://togithub.com/jd/tenacity/pull/474) **Full Changelog**: https://github.com/jd/tenacity/compare/8.4.0...8.4.1 ### [`v8.4.0`](https://togithub.com/jd/tenacity/releases/tag/8.4.0): tenacity 8.4.0 [Compare Source](https://togithub.com/jd/tenacity/compare/8.3.0...8.4.0) #### What's Changed - Add async strategies by [@hasier](https://togithub.com/hasier) in [https://github.com/jd/tenacity/pull/451](https://togithub.com/jd/tenacity/pull/451) - Support Trio out-of-the-box by [@jakkdl](https://togithub.com/jakkdl) in [https://github.com/jd/tenacity/pull/463](https://togithub.com/jd/tenacity/pull/463) **Full Changelog**: https://github.com/jd/tenacity/compare/8.3.0...8.4.0 ### [`v8.3.0`](https://togithub.com/jd/tenacity/releases/tag/8.3.0) [Compare Source](https://togithub.com/jd/tenacity/compare/8.2.3...8.3.0) ### New Features - Added a new stop function: `stop_before_delay`, which will stop execution if the next sleep time would cause overall delay to exceed the specified delay. Useful for use cases where you have some upper bound on retry times that you must not exceed, so returning before that timeout is preferable than returning after that timeout. ### Bug Fixes - Preserve **defaults** and **kwdefaults** through retry decorator ### Other Notes - Add a "test" extra ### [`v8.2.3`](https://togithub.com/jd/tenacity/compare/8.2.2...8.2.3) [Compare Source](https://togithub.com/jd/tenacity/compare/8.2.2...8.2.3)urllib3/urllib3 (urllib3)
### [`v2.2.2`](https://togithub.com/urllib3/urllib3/blob/HEAD/CHANGES.rst#222-2024-06-17) [Compare Source](https://togithub.com/urllib3/urllib3/compare/2.2.1...2.2.2) \================== - Added the `Proxy-Authorization` header to the list of headers to strip from requests when redirecting to a different host. As before, different headers can be set via `Retry.remove_headers_on_redirect`. - Allowed passing negative integers as `amt` to read methods of `http.client.HTTPResponse` as an alternative to `None`. (`#3122Configuration
📅 Schedule: Branch creation - "after 1am and before 3am every weekday" in timezone Etc/UTC, Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR was generated by Mend Renovate. View the repository job log.