renovate-bot opened a new pull request, #695:
URL: https://github.com/apache/polaris/pull/695

   This PR contains the following updates:
   
   | Package | Change | Age | Adoption | Passing | Confidence |
   |---|---|---|---|---|---|
   | [pytest](https://redirect.github.com/pytest-dev/pytest) 
([changelog](https://docs.pytest.org/en/stable/changelog.html)) | `~=7.1.3` -> 
`~=8.3.4` | 
[![age](https://developer.mend.io/api/mc/badges/age/pypi/pytest/8.3.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
 | 
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/pytest/8.3.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
 | 
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/pytest/7.1.3/8.3.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
 | 
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pytest/7.1.3/8.3.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
 |
   
   ---
   
   ### Release Notes
   
   <details>
   <summary>pytest-dev/pytest (pytest)</summary>
   
   ### 
[`v8.3.4`](https://redirect.github.com/pytest-dev/pytest/releases/tag/8.3.4)
   
   [Compare 
Source](https://redirect.github.com/pytest-dev/pytest/compare/8.3.3...8.3.4)
   
   ### pytest 8.3.4 (2024-12-01)
   
   #### Bug fixes
   
   -   
[#&#8203;12592](https://redirect.github.com/pytest-dev/pytest/issues/12592): 
Fixed `KeyError`{.interpreted-text role="class"} crash when using 
`--import-mode=importlib` in a directory layout where a directory contains a 
child directory with the same name.
   
   -   
[#&#8203;12818](https://redirect.github.com/pytest-dev/pytest/issues/12818): 
Assertion rewriting now preserves the source ranges of the original 
instructions, making it play well with tools that deal with the `AST`, like 
[executing](https://redirect.github.com/alexmojaki/executing).
   
   -   
[#&#8203;12849](https://redirect.github.com/pytest-dev/pytest/issues/12849): 
ANSI escape codes for colored output now handled correctly in 
`pytest.fail`{.interpreted-text role="func"} with \[pytrace=False]{.title-ref}.
   
   -   
[#&#8203;9353](https://redirect.github.com/pytest-dev/pytest/issues/9353): 
`pytest.approx`{.interpreted-text role="func"} now uses strict equality when 
given booleans.
   
   #### Improved documentation
   
   -   
[#&#8203;10558](https://redirect.github.com/pytest-dev/pytest/issues/10558): 
Fix ambiguous docstring of `pytest.Config.getoption`{.interpreted-text 
role="func"}.
   
   -   
[#&#8203;10829](https://redirect.github.com/pytest-dev/pytest/issues/10829): 
Improve documentation on the current handling of the `--basetemp` option and 
its lack of retention functionality (`temporary directory location and 
retention`{.interpreted-text role="ref"}).
   
   -   
[#&#8203;12866](https://redirect.github.com/pytest-dev/pytest/issues/12866): 
Improved cross-references concerning the `recwarn`{.interpreted-text 
role="fixture"} fixture.
   
   -   
[#&#8203;12966](https://redirect.github.com/pytest-dev/pytest/issues/12966): 
Clarify `filterwarnings`{.interpreted-text role="ref"} docs on filter 
precedence/order when using multiple `@pytest.mark.filterwarnings 
<pytest.mark.filterwarnings ref>`{.interpreted-text role="ref"} marks.
   
   #### Contributor-facing changes
   
   -   
[#&#8203;12497](https://redirect.github.com/pytest-dev/pytest/issues/12497): 
Fixed two failing pdb-related tests on Python 3.13.
   
   ### 
[`v8.3.3`](https://redirect.github.com/pytest-dev/pytest/releases/tag/8.3.3)
   
   [Compare 
Source](https://redirect.github.com/pytest-dev/pytest/compare/8.3.2...8.3.3)
   
   # pytest 8.3.3 (2024-09-09)
   
   ## Bug fixes
   
   -   
[#&#8203;12446](https://redirect.github.com/pytest-dev/pytest/issues/12446): 
Avoid calling `@property` (and other instance descriptors) during fixture 
discovery -- by `asottile`{.interpreted-text role="user"}
   
   -   
[#&#8203;12659](https://redirect.github.com/pytest-dev/pytest/issues/12659): 
Fixed the issue of not displaying assertion failure differences when using the 
parameter `--import-mode=importlib` in pytest>=8.1.
   
   -   
[#&#8203;12667](https://redirect.github.com/pytest-dev/pytest/issues/12667): 
Fixed a regression where type change in 
\[ExceptionInfo.errisinstance]{.title-ref} caused \[mypy]{.title-ref} to fail.
   
   -   
[#&#8203;12744](https://redirect.github.com/pytest-dev/pytest/issues/12744): 
Fixed typing compatibility with Python 3.9 or less -- replaced 
\[typing.Self]{.title-ref} with \[typing_extensions.Self]{.title-ref} -- by 
`Avasam`{.interpreted-text role="user"}
   
   -   
[#&#8203;12745](https://redirect.github.com/pytest-dev/pytest/issues/12745): 
Fixed an issue with backslashes being incorrectly converted in nodeid paths on 
Windows, ensuring consistent path handling across environments.
   
   -   
[#&#8203;6682](https://redirect.github.com/pytest-dev/pytest/issues/6682): 
Fixed bug where the verbosity levels where not being respected when printing 
the "msg" part of failed assertion (as in `assert condition, msg`).
   
   -   
[#&#8203;9422](https://redirect.github.com/pytest-dev/pytest/issues/9422): Fix 
bug where disabling the terminal plugin via `-p no:terminal` would cause 
crashes related to missing the `verbose` option.
   
       \-- by `GTowers1`{.interpreted-text role="user"}
   
   ## Improved documentation
   
   -   
[#&#8203;12663](https://redirect.github.com/pytest-dev/pytest/issues/12663): 
Clarify that the \[pytest_deselected]{.title-ref} hook should be called from 
\[pytest_collection_modifyitems]{.title-ref} hook implementations when items 
are deselected.
   -   
[#&#8203;12678](https://redirect.github.com/pytest-dev/pytest/issues/12678): 
Remove erroneous quotes from \[tmp_path_retention_policy]{.title-ref} example 
in docs.
   
   ## Miscellaneous internal changes
   
   -   
[#&#8203;12769](https://redirect.github.com/pytest-dev/pytest/issues/12769): 
Fix typos discovered by codespell and add codespell to pre-commit hooks.
   
   ### 
[`v8.3.2`](https://redirect.github.com/pytest-dev/pytest/releases/tag/8.3.2)
   
   [Compare 
Source](https://redirect.github.com/pytest-dev/pytest/compare/8.3.1...8.3.2)
   
   # pytest 8.3.2 (2024-07-24)
   
   ## Bug fixes
   
   -   
[#&#8203;12652](https://redirect.github.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://redirect.github.com/pytest-dev/pytest/releases/tag/8.3.1)
   
   [Compare 
Source](https://redirect.github.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://redirect.github.com/pytest-dev/pytest/releases/tag/8.3.0)
   
   [Compare 
Source](https://redirect.github.com/pytest-dev/pytest/compare/8.2.2...8.3.0)
   
   ### pytest 8.3.0 (2024-07-20)
   
   #### New features
   
   -   
[#&#8203;12231](https://redirect.github.com/pytest-dev/pytest/issues/12231): 
Added \[--xfail-tb]{.title-ref} flag, which turns on traceback output for XFAIL 
results.
   
       -   If the \[--xfail-tb]{.title-ref} flag is not given, tracebacks for 
XFAIL results are NOT shown.
       -   The style of traceback for XFAIL is set with \[--tb]{.title-ref}, 
and can be \[auto|long|short|line|native|no]{.title-ref}.
       -   Note: Even if you have \[--xfail-tb]{.title-ref} set, you won't see 
them if \[--tb=no]{.title-ref}.
   
       Some history:
   
       With pytest 8.0, \[-rx]{.title-ref} or \[-ra]{.title-ref} would not only 
turn on summary reports for xfail, but also report the tracebacks for xfail 
results. This caused issues with some projects that utilize xfail, but don't 
want to see all of the xfail tracebacks.
   
       This change detaches xfail tracebacks from \[-rx]{.title-ref}, and now 
we turn on xfail tracebacks with \[--xfail-tb]{.title-ref}. With this, the 
default \[-rx]{.title-ref}/ \[-ra]{.title-ref} behavior is identical to pre-8.0 
with respect to xfail tracebacks. While this is a behavior change, it brings 
default behavior back to pre-8.0.0 behavior, which ultimately was considered 
the better course of action.
   
   -   
[#&#8203;12281](https://redirect.github.com/pytest-dev/pytest/issues/12281): 
Added support for keyword matching in marker expressions.
   
       Now tests can be selected by marker keyword arguments.
       Supported values are `int`{.interpreted-text role="class"}, (unescaped) 
`str`{.interpreted-text role="class"}, `bool`{.interpreted-text role="class"} & 
`None`{.interpreted-text role="data"}.
   
       See `marker examples 
<marker_keyword_expression_example>`{.interpreted-text role="ref"} for more 
information.
   
       \-- by `lovetheguitar`{.interpreted-text role="user"}
   
   -   
[#&#8203;12567](https://redirect.github.com/pytest-dev/pytest/issues/12567): 
Added `--no-fold-skipped` command line option.
   
       If this option is set, then skipped tests in short summary are no longer 
grouped
       by reason but all tests are printed individually with their nodeid in 
the same
       way as other statuses.
   
       \-- by `pbrezina`{.interpreted-text role="user"}
   
   #### Improvements in existing functionality
   
   -   
[#&#8203;12469](https://redirect.github.com/pytest-dev/pytest/issues/12469): 
The console output now uses the "third-party plugins" terminology,
       replacing the previously established but confusing and outdated
       reference to `setuptools <setuptools:index>`{.interpreted-text 
role="std:doc"}
       \-- by `webknjaz`{.interpreted-text role="user"}.
   
   -   
[#&#8203;12544](https://redirect.github.com/pytest-dev/pytest/issues/12544), 
[#&#8203;12545](https://redirect.github.com/pytest-dev/pytest/issues/12545): 
Python virtual environment detection was improved by
       checking for a `pyvenv.cfg`{.interpreted-text role="file"} file, 
ensuring reliable detection on
       various platforms -- by `zachsnickers`{.interpreted-text role="user"}.
   
   -   
[#&#8203;2871](https://redirect.github.com/pytest-dev/pytest/issues/2871): Do 
not truncate arguments to functions in output when running with 
\[-vvv]{.title-ref}.
   
   -   [#&#8203;389](https://redirect.github.com/pytest-dev/pytest/issues/389): 
The readability of assertion introspection of bound methods has been enhanced
       \-- by `farbodahm`{.interpreted-text role="user"}, 
`webknjaz`{.interpreted-text role="user"}, `obestwalter`{.interpreted-text 
role="user"}, `flub`{.interpreted-text role="user"}
       and `glyphack`{.interpreted-text role="user"}.
   
       Earlier, it was like:
   
       ```console
       =================================== FAILURES 
===================================
       _____________________________________ test 
_____________________________________
   
           def test():
       >       assert Help().fun() == 2
       E       assert 1 == 2
       E        +  where 1 = <bound method Help.fun of <example.Help instance 
at 0x256a830>>()
       E        +    where <bound method Help.fun of <example.Help instance at 
0x256a830>> = <example.Help instance at 0x256a830>.fun
       E        +      where <example.Help instance at 0x256a830> = Help()
   
       example.py:7: AssertionError
       =========================== 1 failed in 0.03 seconds 
===========================
       ```
   
       And now it's like:
   
       ```console
       =================================== FAILURES 
===================================
       _____________________________________ test 
_____________________________________
   
           def test():
       >       assert Help().fun() == 2
       E       assert 1 == 2
       E        +  where 1 = fun()
       E        +    where fun = <test_local.Help object at 0x1074be230>.fun
       E        +      where <test_local.Help object at 0x1074be230> = Help()
   
       test_local.py:13: AssertionError
       =========================== 1 failed in 0.03 seconds 
===========================
       ```
   
   -   
[#&#8203;7662](https://redirect.github.com/pytest-dev/pytest/issues/7662): 
Added timezone information to the testsuite timestamp in the JUnit XML report.
   
   #### Bug fixes
   
   -   
[#&#8203;11706](https://redirect.github.com/pytest-dev/pytest/issues/11706): 
Fixed reporting of teardown errors in higher-scoped fixtures when using 
\[--maxfail]{.title-ref} or \[--stepwise]{.title-ref}.
   
       Originally added in pytest 8.0.0, but reverted in 8.0.2 due to a 
regression in pytest-xdist.
       This regression was fixed in pytest-xdist 3.6.1.
   
   -   
[#&#8203;11797](https://redirect.github.com/pytest-dev/pytest/issues/11797): 
`pytest.approx`{.interpreted-text role="func"} now correctly handles `Sequence 
<collections.abc.Sequence>`{.interpreted-text role="class"}-like objects.
   
   -   
[#&#8203;12204](https://redirect.github.com/pytest-dev/pytest/issues/12204), 
[#&#8203;12264](https://redirect.github.com/pytest-dev/pytest/issues/12264): 
Fixed a regression in pytest 8.0 where tracebacks get longer and longer when 
multiple
       tests fail due to a shared higher-scope fixture which raised -- by 
`bluetech`{.interpreted-text role="user"}.
   
       Also fixed a similar regression in pytest 5.4 for collectors which raise 
during setup.
   
       The fix necessitated internal changes which may affect some plugins:
   
       -   `FixtureDef.cached_result[2]` is now a tuple `(exc, tb)`
           instead of `exc`.
       -   `SetupState.stack` failures are now a tuple `(exc, tb)`
           instead of `exc`.
   
   -   
[#&#8203;12275](https://redirect.github.com/pytest-dev/pytest/issues/12275): 
Fixed collection error upon encountering an `abstract <abc>`{.interpreted-text 
role="mod"} class, including abstract \[unittest.TestCase]{.title-ref} 
subclasses.
   
   -   
[#&#8203;12328](https://redirect.github.com/pytest-dev/pytest/issues/12328): 
Fixed a regression in pytest 8.0.0 where package-scoped parameterized items 
were not correctly reordered to minimize setups/teardowns in some cases.
   
   -   
[#&#8203;12424](https://redirect.github.com/pytest-dev/pytest/issues/12424): 
Fixed crash with \[assert testcase is not None]{.title-ref} assertion failure 
when re-running unittest tests using plugins like pytest-rerunfailures. 
Regressed in 8.2.2.
   
   -   
[#&#8203;12472](https://redirect.github.com/pytest-dev/pytest/issues/12472): 
Fixed a crash when returning category `"error"` or `"failed"` with a custom 
test status from `pytest_report_teststatus`{.interpreted-text role="hook"} hook 
-- `pbrezina`{.interpreted-text role="user"}.
   
   -   
[#&#8203;12505](https://redirect.github.com/pytest-dev/pytest/issues/12505): 
Improved handling of invalid regex patterns in `pytest.raises(match=r'...') 
<pytest.raises>`{.interpreted-text role="func"} by providing a clear error 
message.
   
   -   
[#&#8203;12580](https://redirect.github.com/pytest-dev/pytest/issues/12580): 
Fixed a crash when using the cache class on Windows and the cache directory was 
created concurrently.
   
   -   
[#&#8203;6962](https://redirect.github.com/pytest-dev/pytest/issues/6962): 
Parametrization parameters are now compared using \[==]{.title-ref} instead of 
\[is]{.title-ref} (\[is]{.title-ref} is still used as a fallback if the 
parameter does not support \[==]{.title-ref}).
       This fixes use of parameters such as lists, which have a different 
\[id]{.title-ref} but compare equal, causing fixtures to be re-computed instead 
of being cached.
   
   -   
[#&#8203;7166](https://redirect.github.com/pytest-dev/pytest/issues/7166): 
Fixed progress percentages (the `[ 87%]` at the edge of the screen) sometimes 
not aligning correctly when running with pytest-xdist `-n`.
   
   #### Improved documentation
   
   -   
[#&#8203;12153](https://redirect.github.com/pytest-dev/pytest/issues/12153): 
Documented using `PYTEST_VERSION`{.interpreted-text role="envvar"} to detect if 
code is running from within a pytest run.
   
   -   
[#&#8203;12469](https://redirect.github.com/pytest-dev/pytest/issues/12469): 
The external plugin mentions in the documentation now avoid mentioning
       `setuptools entry-points <setuptools:index>`{.interpreted-text 
role="std:doc"} as the concept is
       much more generic nowadays. Instead, the terminology of "external",
       "installed", or "third-party" plugins (or packages) replaces that.
   
       \-- by `webknjaz`{.interpreted-text role="user"}
   
   -   
[#&#8203;12577](https://redirect.github.com/pytest-dev/pytest/issues/12577): 
\[CI]{.title-ref} and \[BUILD_NUMBER]{.title-ref} environment variables role is 
discribed in
       the reference doc. They now also appear when doing \[pytest 
-h]{.title-ref}
       \-- by `MarcBresson`{.interpreted-text role="user"}.
   
   #### Contributor-facing changes
   
   -   
[#&#8203;12467](https://redirect.github.com/pytest-dev/pytest/issues/12467): 
Migrated all internal type-annotations to the python3.10+ style by using the 
\[annotations]{.title-ref} future import.
   
       \-- by `RonnyPfannschmidt`{.interpreted-text role="user"}
   
   -   
[#&#8203;11771](https://redirect.github.com/pytest-dev/pytest/issues/11771), 
[#&#8203;12557](https://redirect.github.com/pytest-dev/pytest/issues/12557): 
The PyPy runtime version has been updated to 3.9 from 3.8 that introduced
       a flaky bug at the garbage collector which was not expected to fix there
       as the 3.8 is EoL.
   
       \-- by `x612skm`{.interpreted-text role="user"}
   
   -   
[#&#8203;12493](https://redirect.github.com/pytest-dev/pytest/issues/12493): 
The change log draft preview integration has been refactored to use a
       third party extension `sphinxcontib-towncrier`. The previous in-repo
       script was putting the change log preview file at
       `doc/en/_changelog_towncrier_draft.rst`{.interpreted-text role="file"}. 
Said file is no longer
       ignored in Git and might show up among untracked files in the
       development environments of the contributors. To address that, the
       contributors can run the following command that will clean it up:
   
       ```console
       $ git clean -x -i -- doc/en/_changelog_towncrier_draft.rst
       ```
   
       \-- by `webknjaz`{.interpreted-text role="user"}
   
   -   
[#&#8203;12498](https://redirect.github.com/pytest-dev/pytest/issues/12498): 
All the undocumented `tox` environments now have descriptions.
       They can be listed in one's development environment by invoking
       `tox -av` in a terminal.
   
       \-- by `webknjaz`{.interpreted-text role="user"}
   
   -   
[#&#8203;12501](https://redirect.github.com/pytest-dev/pytest/issues/12501): 
The changelog configuration has been updated to introduce more accurate
       audience-tailored categories. Previously, there was a `trivial`
       change log fragment type with an unclear and broad meaning. It was
       removed and we now have `contrib`, `misc` and `packaging` in
       place of it.
   
       The new change note types target the readers who are downstream
       packagers and project contributors. Additionally, the miscellaneous
       section is kept for unspecified updates that do not fit anywhere else.
   
       \-- by `webknjaz`{.interpreted-text role="user"}
   
   -   
[#&#8203;12502](https://redirect.github.com/pytest-dev/pytest/issues/12502): 
The UX of the GitHub automation making pull requests to update the
       plugin list has been updated. Previously, the maintainers had to close
       the automatically created pull requests and re-open them to trigger the
       CI runs. From now on, they only need to click the \[Ready for 
review]{.title-ref}
       button instead.
   
       \-- by `webknjaz`{.interpreted-text role="user"}
   
   -   
[#&#8203;12522](https://redirect.github.com/pytest-dev/pytest/issues/12522): 
The `:pull:` RST role has been replaced with a shorter
       `:pr:` due to starting to use the implementation from
       the third-party `sphinx-issues`{.interpreted-text role="pypi"} Sphinx 
extension
       \-- by `webknjaz`{.interpreted-text role="user"}.
   
   -   
[#&#8203;12531](https://redirect.github.com/pytest-dev/pytest/issues/12531): 
The coverage reporting configuration has been updated to exclude
       pytest's own tests marked as expected to fail from the coverage
       report. This has an effect of reducing the influence of flaky
       tests on the resulting number.
   
       \-- by `webknjaz`{.interpreted-text role="user"}
   
   -   
[#&#8203;12533](https://redirect.github.com/pytest-dev/pytest/issues/12533): 
The `extlinks` Sphinx extension is no longer enabled. The `:bpo:`
       role it used to declare has been removed with that. BPO itself has
       migrated to GitHub some years ago and it is possible to link the
       respective issues by using their GitHub issue numbers and the
       `:issue:` role that the `sphinx-issues` extension implements.
   
       \-- by `webknjaz`{.interpreted-text role="user"}
   
   -   
[#&#8203;12562](https://redirect.github.com/pytest-dev/pytest/issues/12562): 
Possible typos in using the `:user:` RST role is now being linted
       through the pre-commit tool integration -- by 
`webknjaz`{.interpreted-text role="user"}.
   
   ### 
[`v8.2.2`](https://redirect.github.com/pytest-dev/pytest/releases/tag/8.2.2)
   
   [Compare 
Source](https://redirect.github.com/pytest-dev/pytest/compare/8.2.1...8.2.2)
   
   # pytest 8.2.2 (2024-06-04)
   
   ## Bug Fixes
   
   -   
[#&#8203;12355](https://redirect.github.com/pytest-dev/pytest/issues/12355): 
Fix possible catastrophic performance slowdown on a certain parametrization 
pattern involving many higher-scoped parameters.
   -   
[#&#8203;12367](https://redirect.github.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.
   -   
[#&#8203;12381](https://redirect.github.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
   
   -   
[#&#8203;12290](https://redirect.github.com/pytest-dev/pytest/issues/12290): 
Updated Sphinx theme to use Furo instead of Flask, enabling Dark mode theme.
   -   
[#&#8203;12356](https://redirect.github.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.
   -   
[#&#8203;12363](https://redirect.github.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://redirect.github.com/pytest-dev/pytest/releases/tag/8.2.1)
   
   [Compare 
Source](https://redirect.github.com/pytest-dev/pytest/compare/8.2.0...8.2.1)
   
   # pytest 8.2.1 (2024-05-19)
   
   ## Improvements
   
   -   
[#&#8203;12334](https://redirect.github.com/pytest-dev/pytest/issues/12334): 
Support for Python 3.13 (beta1 at the time of writing).
   
   ## Bug Fixes
   
   -   
[#&#8203;12120](https://redirect.github.com/pytest-dev/pytest/issues/12120): 
Fix \[PermissionError]{.title-ref} crashes arising from directories which are 
not selected on the command-line.
   -   
[#&#8203;12191](https://redirect.github.com/pytest-dev/pytest/issues/12191): 
Keyboard interrupts and system exits are now properly handled during the test 
collection.
   -   
[#&#8203;12300](https://redirect.github.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.
   -   
[#&#8203;12308](https://redirect.github.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
   
   -   
[#&#8203;12333](https://redirect.github.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://redirect.github.com/pytest-dev/pytest/releases/tag/8.2.0)
   
   [Compare 
Source](https://redirect.github.com/pytest-dev/pytest/compare/8.1.2...8.2.0)
   
   # pytest 8.2.0 (2024-04-27)
   
   ## Deprecations
   
   -   
[#&#8203;12069](https://redirect.github.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
   
   -   
[#&#8203;11871](https://redirect.github.com/pytest-dev/pytest/issues/11871): 
Added support for reading command line arguments from a file using the prefix 
character `@`, like e.g.: `pytest @&#8203;tests.txt`. The file must have one 
argument per line.
   
       See `Read arguments from file <args-from-file>`{.interpreted-text 
role="ref"} for details.
   
   ## Improvements
   
   -   
[#&#8203;11523](https://redirect.github.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.
   
   -   
[#&#8203;11728](https://redirect.github.com/pytest-dev/pytest/issues/11728): 
For `unittest`-based tests, exceptions during class cleanup (as raised by 
functions registered with `TestCase.addClassCleanup 
<unittest.TestCase.addClassCleanup>`{.interpreted-text role="meth"}) are now 
reported instead of silently failing.
   
   -   
[#&#8203;11777](https://redirect.github.com/pytest-dev/pytest/issues/11777): 
Text is no longer truncated in the `short test summary info` section when `-vv` 
is given.
   
   -   
[#&#8203;12112](https://redirect.github.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).
   
   -   
[#&#8203;9502](https://redirect.github.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
   
   -   
[#&#8203;12065](https://redirect.github.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 
<pytest.FixtureRequest.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`.
   
   -   
[#&#8203;12135](https://redirect.github.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.
   
   -   
[#&#8203;12194](https://redirect.github.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.
   
   -   
[#&#8203;1489](https://redirect.github.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
   
   -   
[#&#8203;12069](https://redirect.github.com/pytest-dev/pytest/issues/12069): 
`pluggy>=1.5.0` is now required.
   -   
[#&#8203;12167](https://redirect.github.com/pytest-dev/pytest/issues/12167): 
`cache <cache>`{.interpreted-text role="ref"}: create supporting files 
(`CACHEDIR.TAG`, `.gitignore`, etc.) in a temporary directory to provide atomic 
semantics.
   
   ### 
[`v8.1.2`](https://redirect.github.com/pytest-dev/pytest/releases/tag/8.1.2)
   
   [Compare 
Source](https://redirect.github.com/pytest-dev/pytest/compare/8.1.1...8.1.2)
   
   # pytest 8.1.2 (2024-04-26)
   
   ## Bug Fixes
   
   -   
[#&#8203;12114](https://redirect.github.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://redirect.github.com/pytest-dev/pytest/releases/tag/8.1.1)
   
   [Compare 
Source](https://redirect.github.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://redirect.github.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://redirect.github.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://redirect.github.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://redirect.github.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://redirect.github.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://redirect.github.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://redirect.github.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://redirect.github.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://redirect.github.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://redirect.github.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://redirect.github.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://redirect.github.com/pytest-dev/pytest/issues/11475): 
Fixed regression where `--importmode=importlib` would import non-test modules 
more than once.
   
   -   
[#&#8203;11904](https://redirect.github.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://redirect.github.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://redirect.github.com/pytest-dev/pytest/issues/12014): 
Fix the `stacklevel` used when warning about marks used on fixtures.
   
   -   
[#&#8203;12039](https://redirect.github.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://redirect.github.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://redirect.github.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://redirect.github.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://redirect.github.com/pytest-dev/pytest/issues/12069).
   :::
   
   ### 
[`v8.1.0`](https://redirect.github.com/pytest-dev/pytest/releases/tag/8.1.0)
   
   [Compare 
Source](https://redirect.github.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://redirect.github.com/pytest-dev/pytest/issues/12069).
   
   ## Features
   
   -   
[#&#8203;11475](https://redirect.github.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://redirect.github.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://redirect.github.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://redirect.github.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://redirect.github.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://redirect.github.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://redirect.github.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://redirect.github.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://redirect.github.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://redirect.github.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://redirect.github.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://redirect.github.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://redirect.github.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://redirect.github.com/pytest-dev/pytest/issues/12014): 
Fix the `stacklevel` used when warning about marks used on fixtures.
   
   -   
[#&#8203;12039](https://redirect.github.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://redirect.github.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://redirect.github.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://redirect.github.com/pytest-dev/pytest/releases/tag/8.0.2)
   
   [Compare 
Source](https://redirect.github.com/pytest-dev/pytest/compare/8.0.1...8.0.2)
   
   # pytest 8.0.2 (2024-02-24)
   
   ## Bug Fixes
   
   -   
[#&#8203;11895](https://redirect.github.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://redirect.github.com/pytest-dev/pytest/issues/11953): 
Fix an `IndexError` crash raising from `getstatementrange_ast`.
   -   
[#&#8203;12021](https://redirect.github.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://redirect.github.com/pytest-dev/pytest/releases/tag/8.0.1)
   
   [Compare 
Source](https://redirect.github.com/pytest-dev/pytest/compare/8.0.0...8.0.1)
   
   # pytest 8.0.1 (2024-02-16)
   
   ## Bug Fixes
   
   -   
[#&#8203;11875](https://redirect.github.com/pytest-dev/pytest/issues/11875): 
Correctly handle errors from `getpass.getuser`{.interpreted-text role="func"} 
in Python 3.13.
   -   
[#&#8203;11879](https://redirect.github.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://redirect.github.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://redirect.github.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://redirect.github.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://redirect.github.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://redirect.github.com/pytest-dev/pytest/releases/tag/8.0.0): 
pytest 8.0.0 (2024-01-27)
   
   [Compare 
Source](https://redirect.github.com/pytest-dev/pytest/compare/7.4.4...8.0.0)
   
   See 
[8.0.0rc1](https://redirect.github.com/pytest-dev/pytest/releases/tag/8.0.0rc1) 
and 
[8.0.0rc2](https://redirect.github.com/pytest-dev/pytest/releases/tag/8.0.0rc2) 
for the full changes since pytest 7.4!
   
   #### Bug Fixes
   
   -   
[#&#8203;11842](https://redirect.github.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://redirect.github.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.
   
   ### 
[`v7.4.4`](https://redirect.github.com/pytest-dev/pytest/compare/7.4.3...7.4.4)
   
   [Compare 
Source](https://redirect.github.com/pytest-dev/pytest/compare/7.4.3...7.4.4)
   
   ### 
[`v7.4.3`](https://redirect.github.com/pytest-dev/pytest/releases/tag/v7.4.3): 
pytest 7.4.3 (2023-10-24)
   
   [Compare 
Source](https://redirect.github.com/pytest-dev/pytest/compare/7.4.2...7.4.3)
   
   ## Bug Fixes
   
   -   
[#&#8203;10447](https://redirect.github.com/pytest-dev/pytest/issues/10447): 
Markers are now considered in the reverse mro order to ensure base  class 
markers are considered first -- this resolves a regression.
   
   -   
[#&#8203;11239](https://redirect.github.com/pytest-dev/pytest/issues/11239): 
Fixed `:=` in asserts impacting unrelated test cases.
   
   -   
[#&#8203;11439](https://redirect.github.com/pytest-dev/pytest/issues/11439): 
Handled an edge case where :data:`sys.stderr` might already be closed when 
:ref:`faulthandler` is tearing down.
   
   ### 
[`v7.4.2`](https://redirect.github.com/pytest-dev/pytest/releases/tag/7.4.2): 
pytest 7.4.2 (2023-09-07)
   
   [Compare 
Source](https://redirect.github.com/pytest-dev/pytest/compare/7.4.1...7.4.2)
   
   ### Bug Fixes
   
   -   
[#&#8203;11237](https://redirect.github.com/pytest-dev/pytest/issues/11237): 
Fix doctest collection of `functools.cached_property` objects.
   
   -   
[#&#8203;11306](https://redirect.github.com/pytest-dev/pytest/issues/11306): 
Fixed bug using `--importmode=importlib` which would cause package 
`__init__.py` files to be imported more than once in some cases.
   
   -   
[#&#8203;11367](https://redirect.github.com/pytest-dev/pytest/issues/11367): 
Fixed bug where `user_properties` where not being saved in the JUnit XML file 
if a fixture failed during teardown.
   
   -   
[#&#8203;11394](https://redirect.github.com/pytest-dev/pytest/issues/11394): 
Fixed crash when parsing long command line arguments that might be interpreted 
as files.
   
   ### Improved Documentation
   
   -   
[#&#8203;11391](https://redirect.github.com/pytest-dev/pytest/issues/11391): 
Improved disclaimer on pytest plugin reference page to better indicate this is 
an automated, non-curated listing.
   
   ### 
[`v7.4.1`](https://redirect.github.com/pytest-dev/pytest/releases/tag/7.4.1): 
pytest 7.4.1 (2023-09-02)
   
   [Compare 
Source](https://redirect.github.com/pytest-dev/pytest/compare/7.4.0...7.4.1)
   
   ## Bug Fixes
   
   -   
[#&#8203;10337](https://redirect.github.com/pytest-dev/pytest/issues/10337): 
Fixed bug where fake intermediate modules generated by 
`--import-mode=importlib` would not include the
       child modules as attributes of the parent modules.
   
   -   
[#&#8203;10702](https://redirect.github.com/pytest-dev/pytest/issues/10702): 
Fixed error assertion handling in `pytest.approx` when `None` is an expected or 
received value when comparing dictionaries.
   
   -   
[#&#8203;10811](https://redirect.github.com/pytest-dev/pytest/issues/10811): 
Fixed issue when using `--import-mode=importlib` together with 
`--doctest-modules` that caused modules
       to be imported more than once, causing problems with modules that have 
import side effects.
   
   ### 
[`v7.4.0`](https://redirect.github.com/pytest-dev/pytest/releases/tag/7.4.0)
   
   [Compare 
Source](https://redirect.github.com/pytest-dev/pytest/compare/7.3.2...7.4.0)
   
   # pytest 7.4.0 (2023-06-23)
   
   ## Features
   
   -   
[#&#8203;10901](https://redirect.github.com/pytest-dev/pytest/issues/10901): 
Added `ExceptionInfo.from_exception() 
<pytest.ExceptionInfo.from_exception>`{.interpreted-text role="func"}, a 
simpler way to create an `~pytest.ExceptionInfo`{.interpreted-text 
role="class"} from an exception.
       This can replace `ExceptionInfo.from_exc_info() 
<pytest.ExceptionInfo.from_exc_info()>`{.interpreted-text role="func"} for most 
uses.
   
   ## Improvements
   
   -   
[#&#8203;10872](https://redirect.github.com/pytest-dev/pytest/issues/10872): 
Update test log report annotation to named tuple and fixed inconsistency in 
docs for `pytest_report_teststatus`{.interpreted-text role="hook"} hook.
   
   -   
[#&#8203;10907](https://redirect.github.com/pytest-dev/pytest/issues/10907): 
When an exception traceback to be displayed is completely filtered out (by 
mechanisms such as `__tracebackhide__`, internal frames, and similar), now only 
the exception string and the following message are shown:
   
       "All traceback entries are hidden. Pass \[--full-trace]{.title-ref} to 
see hidden and internal frames.".
   
       Previously, the last frame of the traceback was shown, even though it 
was hidden.
   
   -   
[#&#8203;10940](https://redirect.github.com/pytest-dev/pytest/issues/10940): 
Improved verbose output (`-vv`) of `skip` and `xfail` reasons by performing 
text wrapping while leaving a clear margin for progress output.
   
       Added `TerminalReporter.wrap_write()` as a helper for that.
   
   -   
[#&#8203;10991](https://redirect.github.com/pytest-dev/pytest/issues/10991): 
Added handling of `%f` directive to print microseconds in log format options, 
such as `log-date-format`.
   
   -   
[#&#8203;11005](https://redirect.github.com/pytest-dev/pytest/issues/11005): 
Added the underlying exception to the cache provider's path creation and write 
warning messages.
   
   -   
[#&#8203;11013](https://redirect.github.com/pytest-dev/pytest/issues/11013): 
Added warning when `testpaths`{.interpreted-text role="confval"} is set, but 
paths are not found by glob. In this case, pytest will fall back to searching 
from the current directory.
   
   -   
[#&#8203;11043](https://redirect.github.com/pytest-dev/pytest/issues/11043): 
When \[--confcutdir]{.title-ref} is not specified, and there is no config file 
present, the conftest cutoff directory (\[--confcutdir]{.title-ref}) is now set 
to the `rootdir <rootdir>`{.interpreted-text role="ref"}.
       Previously in such cases, \[conftest.py]{.title-ref} files would be 
probed all the way to the root directory of the filesystem.
       If you are badly affected by this change, consider adding an empty 
config file to your desired cutoff directory, or explicitly set 
\[--confcutdir]{.title-ref}.
   
   -   
[#&#8203;11081](https://redirect.github.com/pytest-dev/pytest/issues/11081): 
The `norecursedirs`{.interpreted-text role="confval"} check is now performed in 
a `pytest_ignore_collect`{.interpreted-text role="hook"} implementation, so 
plugins can affect it.
   
       If after updating to this version you see that your 
\[norecursedirs]{.title-ref} setting is not being respected,
       it means that a conftest or a plugin you use has a bad 
\[pytest_ignore_collect]{.title-ref} implementation.
       Most likely, your hook returns \[False]{.title-ref} for paths it does 
not want to ignore,
       which ends the processing and doesn't allow other plugins, including 
pytest itself, to ignore the path.
       The fix is to return \[None]{.title-ref} instead of \[False]{.title-ref} 
for paths your hook doesn't want to ignore.
   
   -   
[#&#8203;8711](https://redirect.github.com/pytest-dev/pytest/issues/8711): 
`caplog.set_level() <pytest.LogCaptureFixture.set_level>`{.interpreted-text 
role="func"} and `caplog.at_level() 
<pytest.LogCaptureFixture.at_level>`{.interpreted-text role="func"}
       will temporarily enable the requested `level` if `level` was disabled 
globally via
       `logging.disable(LEVEL)`.
   
   ## Bug Fixes
   
   -   
[#&#8203;10831](https://redirect.github.com/pytest-dev/pytest/issues/10831): 
Terminal Reporting: Fixed bug when running in `--tb=line` mode where 
`pytest.fail(pytrace=False)` tests report `None`.
   -   
[#&#8203;11068](https://redirect.github.com/pytest-dev/pytest/issues/11068): 
Fixed the `--last-failed` whole-file skipping functionality ("skipped N files") 
for `non-python test files <non-python tests>`{.interpreted-text role="ref"}.
   -   
[#&#8203;11104](https://redirect.github.com/pytest-dev/pytest/issues/11104): 
Fixed a regression in pytest 7.3.2 which caused to 
`testpaths`{.interpreted-text role="confval"} to be considered for loading 
initial conftests,
       even when it was not utilized (e.g. when explicit paths were given on 
the command line).
       Now the `testpaths` are only considered when they are in use.
   -   
[#&#8203;1904](https://redirect.github.com/pytest-dev/pytest/issues/1904): 
Fixed traceback entries hidden with `__tracebackhide__ = True` still being 
shown for chained exceptions (parts after "... the above exception ..." 
message).
   -   
[#&#8203;7781](https://redirect.github.com/pytest-dev/pytest/issues/7781): Fix 
writing non-encodable text to log file when using `--debug`.
   
   ## Improved Documentation
   
   -   
[#&#8203;9146](https://redirect.github.com/pytest-dev/pytest/issues/9146): 
Improved documentation for `caplog.set_level() 
<pytest.LogCaptureFixture.set_level>`{.interpreted-text role="func"}.
   
   ## Trivial/Internal Changes
   
   -   
[#&#8203;11031](https://redirect.github.com/pytest-dev/pytest/issues/11031): 
Enhanced the CLI flag for `-c` to now include `--config-file` to make it clear 
that this flag applies to the usage of a custom config file.
   
   ### 
[`v7.3.2`](https://redirect.github.com/pytest-dev/pytest/releases/tag/7.3.2)
   
   [Compare 
Source](https://redirect.github.com/pytest-dev/pytest/compare/7.3.1...7.3.2)
   
   # pytest 7.3.2 (2023-06-10)
   
   ## Bug Fixes
   
   -   
[#&#8203;10169](https://redirect.github.com/pytest-dev/pytest/issues/10169): 
Fix bug where very long option names could cause pytest to break with `OSError: 
[Errno 36] File name too long` on some systems.
   -   
[#&#8203;10894](https://redirect.github.com/pytest-dev/pytest/issues/10894): 
Support for Python 3.12 (beta at the time of writing).
   -   
[#&#8203;10987](https://redirect.github.com/pytest-dev/pytest/issues/10987): 
`testpaths`{.interpreted-text role="confval"} is now honored to load root 
`conftests`.
   -   
[#&#8203;10999](https://redirect.github.com/pytest-dev/pytest/issues/10999): 
The \[monkeypatch]{.title-ref} \[setitem]{.title-ref}/\[delitem]{.title-ref} 
type annotations now allow \[TypedDict]{.title-ref} arguments.
   -   
[#&#8203;11028](https://redirect.github.com/pytest-dev/pytest/issues/11028): 
Fixed bug in assertion rewriting where a variable assigned with the walrus 
operator could not be used later in a function call.
   -   
[#&#8203;11054](https://redirect.github.com/pytest-dev/pytest/issues/11054): 
Fixed `--last-failed`'s "(skipped N files)" functionality for files inside of 
packages (directories with \[\__init\_\_.py]{.title-ref} files).
   
   ### 
[`v7.3.1`](https://redirect.github.com/pytest-dev/pytest/releases/tag/7.3.1)
   
   [Compare 
Source](https://redirect.github.com/pytest-dev/pytest/compare/7.3.0...7.3.1)
   
   # pytest 7.3.1 (2023-04-14)
   
   ## Improvements
   
   -   
[#&#8203;10875](https://redirect.github.com/pytest-dev/pytest/issues/10875): 
Python 3.12 support: fixed `RuntimeError: TestResult has no addDuration method` 
when running `unittest` tests.
   -   
[#&#8203;10890](https://redirect.github.com/pytest-dev/pytest/issues/10890): 
Python 3.12 support: fixed `shutil.rmtree(onerror=...)` deprecation warning 
when using `tmp_path`{.interpreted-text role="fixture"}.
   
   ## Bug Fixes
   
   -   
[#&#8203;10896](https://redirect.github.com/pytest-dev/pytest/issues/10896): 
Fixed performance regression related to `tmp_path`{.interpreted-text 
role="fixture"} and the new `tmp_path_retention_policy`{.interpreted-text 
role="confval"} option.
   -   
[#&#8203;10903](https://redirect.github.com/pytest-dev/pytest/issues/10903): 
Fix crash `INTERNALERROR IndexError: list index out of range` which happens 
when displaying an exception where all entries are hidden.
       This reverts the change "Correctly handle `__tracebackhide__` for 
chained exceptions." introduced in version 7.3.0.
   
   ### 
[`v7.3.0`](https://redirect.github.com/pytest-dev/pytest/releases/tag/7.3.0)
   
   [Compare 
Source](https://redirect.github.com/pytest-dev/pytest/compare/7.2.2...7.3.0)
   
   # pytest 7.3.0 (2023-04-08)
   
   ## Features
   
   -   
[#&#8203;10525](https://redirect.github.com/pytest-dev/pytest/issues/10525): 
Test methods decorated with `@classmethod` can now be discovered as tests, 
following the same rules as normal methods. This fills the gap that static 
methods were discoverable as tests but not class methods.
   -   
[#&#8203;10755](https://redirect.github.com/pytest-dev/pytest/issues/10755): 
`console_output_style`{.interpreted-text role="confval"} now supports 
`progress-even-when-capture-no` to force the use of the progress output even 
when capture is disabled. This is useful in large test suites where capture may 
have significant performance impact.
   -   
[#&#8203;7431](https://redirect.github.com/pytest-dev/pytest/issues/7431): 
`--log-disable` CLI option added to disable individual loggers.
   -   
[#&#8203;8141](https://redirect.github.com/pytest-dev/pytest/issues/8141): 
Added `tmp_path_retention_count`{.interpreted-text role="confval"} and 
`tmp_path_retention_policy`{.interpreted-text role="confval"} configuration 
options to control how directories created by the `tmp_path`{.interpreted-text 
role="fixture"} fixture are kept.
   
   ## Improvements
   
   -   
[#&#8203;10226](https://redirect.github.com/pytest-dev/pytest/issues/10226): If 
multiple errors are raised in teardown, we now re-raise an `ExceptionGroup` of 
them instead of discarding all but the last.
   -   
[#&#8203;10658](https://redirect.github.com/pytest-dev/pytest/issues/10658): 
Allow `-p` arguments to include spaces (eg: `-p no:logging` instead of
       `-pno:logging`). Mostly useful in the `addopts` section of the 
configuration
       file.
   -   
[#&#8203;10710](https://redirect.github.com/pytest-dev/pytest/issues/10710): 
Added `start` and `stop` timestamps to `TestReport` objects.
   -   
[#&#8203;10727](https://redirect.github.com/pytest-dev/pytest/issues/10727): 
Split the report header for `rootdir`, `config file` and `testpaths` so each 
has its own line.
   -   
[#&#8203;10840](https://redirect.github.com/pytest-dev/pytest/issues/10840): 
pytest should no longer crash on AST with pathological position attributes, for 
example testing AST produced by \[Hylang 
\<https://github.com/hylang/hy>\__]{.title-ref}.
   -   
[#&#8203;6267](https://redirect.github.com/pytest-dev/pytest/issues/6267): The 
full output of a test is no longer truncated if the truncation message would be 
longer than
       the hidden text. The line number shown has a
   
   </details>
   
   ---
   
   ### Configuration
   
   📅 **Schedule**: Branch creation - At any time (no schedule defined), 
Automerge - At any time (no schedule defined).
   
   🚦 **Automerge**: Disabled by config. Please merge this manually once you are 
satisfied.
   
   â™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry 
checkbox.
   
   🔕 **Ignore**: Close this PR and you won't be reminded about this update 
again.
   
   ---
   
    - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this 
box
   
   ---
   
   This PR was generated by [Mend Renovate](https://mend.io/renovate/). View 
the [repository job log](https://developer.mend.io/github/apache/polaris).
   
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS45Mi4wIiwidXBkYXRlZEluVmVyIjoiMzkuOTIuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to