pytest 8.4.0__tar.gz → 8.4.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pytest-8.4.0 → pytest-8.4.2}/.github/workflows/deploy.yml +5 -5
- {pytest-8.4.0 → pytest-8.4.2}/.github/workflows/test.yml +40 -3
- {pytest-8.4.0 → pytest-8.4.2}/AUTHORS +1 -0
- {pytest-8.4.0/src/pytest.egg-info → pytest-8.4.2}/PKG-INFO +1 -1
- {pytest-8.4.0 → pytest-8.4.2}/RELEASING.rst +0 -1
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/index.rst +2 -0
- pytest-8.4.2/doc/en/announce/release-8.4.1.rst +21 -0
- pytest-8.4.2/doc/en/announce/release-8.4.2.rst +27 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/builtin.rst +2 -2
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/changelog.rst +71 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/deprecations.rst +0 -40
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/parametrize.rst +4 -4
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/pythoncollection.rst +2 -2
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/getting-started.rst +1 -1
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/assert.rst +44 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/failures.rst +1 -1
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/fixtures.rst +1 -1
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/parametrize.rst +7 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/plugins.rst +4 -1
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/writing_hook_functions.rst +6 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/index.rst +1 -1
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/reference/reference.rst +3 -0
- {pytest-8.4.0 → pytest-8.4.2}/pyproject.toml +3 -0
- {pytest-8.4.0 → pytest-8.4.2}/scripts/prepare-release-pr.py +1 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/_version.py +16 -3
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/capture.py +1 -1
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/compat.py +32 -1
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/config/argparsing.py +3 -1
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/fixtures.py +3 -2
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/nodes.py +1 -1
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/pytester.py +8 -2
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/python.py +7 -6
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/python_api.py +21 -5
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/raises.py +2 -2
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/terminal.py +10 -5
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/unittest.py +119 -36
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/unraisableexception.py +10 -5
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/warning_types.py +11 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/pytest/__init__.py +2 -0
- {pytest-8.4.0 → pytest-8.4.2/src/pytest.egg-info}/PKG-INFO +1 -1
- {pytest-8.4.0 → pytest-8.4.2}/src/pytest.egg-info/SOURCES.txt +2 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/acceptance_test.py +2 -2
- {pytest-8.4.0 → pytest-8.4.2}/testing/conftest.py +12 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/python/approx.py +8 -2
- {pytest-8.4.0 → pytest-8.4.2}/testing/python/raises_group.py +1 -1
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_collection.py +40 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_config.py +2 -1
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_doctest.py +6 -3
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_faulthandler.py +1 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_terminal.py +35 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_threadexception.py +1 -1
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_unraisableexception.py +23 -28
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_warnings.py +1 -0
- {pytest-8.4.0 → pytest-8.4.2}/tox.ini +15 -5
- {pytest-8.4.0 → pytest-8.4.2}/.coveragerc +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/.git-blame-ignore-revs +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/.gitattributes +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/.github/FUNDING.yml +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/.github/ISSUE_TEMPLATE/1_bug_report.md +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/.github/ISSUE_TEMPLATE/2_feature_request.md +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/.github/chronographer.yml +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/.github/config.yml +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/.github/dependabot.yml +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/.github/labels.toml +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/.github/patchback.yml +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/.github/workflows/prepare-release-pr.yml +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/.github/workflows/stale.yml +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/.github/workflows/update-plugin-list.yml +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/.gitignore +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/.pre-commit-config.yaml +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/.readthedocs.yaml +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/CHANGELOG.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/CITATION +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/CODE_OF_CONDUCT.md +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/CONTRIBUTING.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/LICENSE +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/OPENCOLLECTIVE.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/README.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/TIDELIFT.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/bench/bench.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/bench/bench_argcomplete.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/bench/empty.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/bench/manyparam.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/bench/skip.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/bench/unit_test.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/bench/xunit.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/changelog/.gitignore +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/changelog/README.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/changelog/_template.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/codecov.yml +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/Makefile +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/_static/pytest-custom.css +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/_static/pytest1.png +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/_templates/links.html +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/adopt.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.0.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.0.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.0.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.0.3.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.1.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.1.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.1.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.1.3.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.2.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.2.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.2.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.2.4.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.3.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.3.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.3.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.3.3.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.3.4.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.3.5.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.4.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.4.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.4.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.5.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.5.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.5.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.6.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.6.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.6.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.6.3.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.7.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.7.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.7.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.8.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.8.3.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.8.4.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.8.5.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.8.6.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.8.7.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.9.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.9.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.9.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.0.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.0.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.0.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.0.3.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.0.4.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.0.5.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.0.6.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.0.7.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.1.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.1.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.1.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.1.3.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.10.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.10.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.2.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.2.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.2.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.2.3.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.2.4.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.2.5.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.3.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.3.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.3.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.4.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.4.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.4.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.5.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.5.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.6.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.6.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.6.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.6.3.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.6.4.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.7.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.7.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.7.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.7.3.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.7.4.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.8.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.8.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.8.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.9.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.9.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.9.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.9.3.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.0.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.0.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.0.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.1.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.1.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.2.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.2.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.3.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.3.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.4.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.4.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.4.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.5.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.6.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.6.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.6.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.6.3.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.6.4.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.6.5.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.6.6.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.6.7.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.6.8.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.6.9.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.0.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.0.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.1.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.1.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.1.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.1.3.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.2.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.2.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.2.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.2.3.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.2.4.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.3.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.3.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.3.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.3.3.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.3.4.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.3.5.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.4.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.4.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.4.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.4.3.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-6.0.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-6.0.0rc1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-6.0.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-6.0.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-6.1.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-6.1.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-6.1.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-6.2.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-6.2.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-6.2.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-6.2.3.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-6.2.4.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-6.2.5.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.0.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.0.0rc1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.0.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.1.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.1.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.1.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.1.3.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.2.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.2.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.2.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.3.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.3.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.3.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.4.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.4.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.4.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.4.3.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.4.4.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.0.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.0.0rc1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.0.0rc2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.0.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.0.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.1.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.1.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.1.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.2.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.2.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.2.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.3.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.3.1.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.3.2.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.3.3.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.3.4.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.3.5.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.4.0.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/sprint2016.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/backwards-compatibility.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/broken-dep-constraints.txt +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/conf.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/conftest.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/contact.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/contents.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/contributing.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/development_guide.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/assertion/failure_demo.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/assertion/global_testmodule_config/conftest.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/assertion/global_testmodule_config/test_hello_world.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/assertion/test_failures.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/assertion/test_setup_flow_example.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/attic.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/conftest.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/customdirectory/conftest.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/customdirectory/pytest.ini +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/customdirectory/tests/manifest.json +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/customdirectory/tests/test_first.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/customdirectory/tests/test_second.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/customdirectory/tests/test_third.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/customdirectory.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/fixture_availability.svg +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/fixture_availability_plugins.svg +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_autouse.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_autouse.svg +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_autouse_flat.svg +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_autouse_multiple_scopes.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_autouse_multiple_scopes.svg +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_autouse_temp_effects.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_autouse_temp_effects.svg +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_dependencies.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_dependencies.svg +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_dependencies_flat.svg +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_dependencies_unclear.svg +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_scope.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_scope.svg +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_request_different_scope.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_request_different_scope.svg +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/index.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/markers.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/multipython.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/nonpython/__init__.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/nonpython/conftest.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/nonpython/test_simple.yaml +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/nonpython.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/pythoncollection.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/reportingdemo.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/simple.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/special.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/xfail_demo.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/explanation/anatomy.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/explanation/ci.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/explanation/fixtures.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/explanation/flaky.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/explanation/goodpractices.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/explanation/index.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/explanation/pythonpath.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/explanation/types.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/funcarg_compare.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/funcargs.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/historical-notes.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/history.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/bash-completion.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/cache.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/capture-stdout-stderr.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/capture-warnings.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/doctest.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/existingtestsuite.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/index.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/logging.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/mark.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/monkeypatch.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/output.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/skipping.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/tmp_path.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/unittest.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/usage.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/writing_plugins.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/xunit_setup.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/img/cramer2.png +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/img/favicon.png +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/img/freiburg2.jpg +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/img/gaynor3.png +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/img/keleshev.png +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/img/pullrequest.png +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/img/pylib.png +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/img/pytest_logo_curves.svg +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/img/theuni.png +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/license.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/naming20.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/proposals/parametrize_with_fixtures.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/pytest.ini +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/recwarn.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/reference/customize.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/reference/exit-codes.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/reference/fixtures.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/reference/index.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/reference/plugin_list.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/requirements.txt +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/sponsor.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/talks.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/tidelift.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/doc/en/yieldfixture.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/extra/get_issues.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/scripts/.gitignore +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/scripts/generate-gh-release-notes.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/scripts/release.major.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/scripts/release.minor.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/scripts/release.patch.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/scripts/release.pre.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/scripts/release.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/scripts/update-plugin-list.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/setup.cfg +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/__init__.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/_argcomplete.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/_code/__init__.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/_code/code.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/_code/source.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/_io/__init__.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/_io/pprint.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/_io/saferepr.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/_io/terminalwriter.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/_io/wcwidth.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/_py/__init__.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/_py/error.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/_py/path.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/assertion/__init__.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/assertion/rewrite.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/assertion/truncate.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/assertion/util.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/cacheprovider.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/config/__init__.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/config/compat.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/config/exceptions.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/config/findpaths.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/debugging.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/deprecated.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/doctest.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/faulthandler.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/freeze_support.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/helpconfig.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/hookspec.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/junitxml.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/legacypath.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/logging.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/main.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/mark/__init__.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/mark/expression.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/mark/structures.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/monkeypatch.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/outcomes.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/pastebin.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/pathlib.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/py.typed +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/pytester_assertions.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/recwarn.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/reports.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/runner.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/scope.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/setuponly.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/setupplan.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/skipping.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/stash.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/stepwise.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/threadexception.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/timing.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/tmpdir.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/tracemalloc.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/warnings.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/py.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/pytest/__main__.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/pytest/py.typed +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/pytest.egg-info/dependency_links.txt +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/pytest.egg-info/entry_points.txt +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/pytest.egg-info/requires.txt +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/src/pytest.egg-info/top_level.txt +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/_py/test_local.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/code/test_code.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/code/test_excinfo.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/code/test_source.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/deprecated_test.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/README.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/__init__.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/acceptance/fixture_mock_integration.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/collect/collect_init_tests/pytest.ini +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/collect/collect_init_tests/tests/__init__.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/collect/collect_init_tests/tests/test_foo.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/collect/package_infinite_recursion/__init__.pyi +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/collect/package_infinite_recursion/conftest.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/collect/package_infinite_recursion/tests/__init__.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/collect/package_infinite_recursion/tests/test_basic.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/collect/package_init_given_as_arg/pkg/__init__.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/collect/package_init_given_as_arg/pkg/test_foo.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/config/collect_pytest_prefix/__init__.pyi +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/config/collect_pytest_prefix/conftest.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/config/collect_pytest_prefix/test_foo.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/conftest_usageerror/__init__.pyi +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/conftest_usageerror/conftest.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/customdirectory/conftest.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/customdirectory/pytest.ini +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/customdirectory/tests/manifest.json +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/customdirectory/tests/test_first.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/customdirectory/tests/test_second.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/customdirectory/tests/test_third.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/dataclasses/test_compare_dataclasses.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/dataclasses/test_compare_dataclasses_field_comparison_off.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/dataclasses/test_compare_dataclasses_verbose.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/dataclasses/test_compare_dataclasses_with_custom_eq.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/dataclasses/test_compare_initvar.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/dataclasses/test_compare_recursive_dataclasses.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/dataclasses/test_compare_two_different_dataclasses.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/doctest/main_py/__main__.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/doctest/main_py/test_normal_module.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/custom_item/__init__.pyi +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/custom_item/conftest.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/custom_item/foo/__init__.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/custom_item/foo/test_foo.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub1/__init__.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub1/conftest.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub1/test_in_sub1.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub2/__init__.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub2/conftest.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub2/test_in_sub2.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_detect_recursive_dependency_error.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/__init__.pyi +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/conftest.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/pkg/__init__.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/pkg/conftest.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/pkg/test_spam.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_module/__init__.pyi +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_module/conftest.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_module/test_extend_fixture_conftest_module.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_module_class.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_funcarg_basic.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_funcarg_lookup_classlevel.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_funcarg_lookup_modulelevel.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_funcarg_lookupfails.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/test_fixture_named_request.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/test_getfixturevalue_dynamic.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/issue88_initial_file_multinodes/__init__.pyi +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/issue88_initial_file_multinodes/conftest.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/issue88_initial_file_multinodes/test_hello.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/issue_519.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/junit-10.xsd +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/marks/marks_considered_keywords/__init__.pyi +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/marks/marks_considered_keywords/conftest.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/marks/marks_considered_keywords/test_marks_as_keywords.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/perf_examples/collect_stats/.gitignore +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/perf_examples/collect_stats/generate_folders.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/perf_examples/collect_stats/template_test.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/pytest.ini +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/tmpdir/tmp_path_fixture.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/unittest/test_parametrized_fixture_error_message.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/unittest/test_setup_skip.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/unittest/test_setup_skip_class.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/unittest/test_setup_skip_module.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/unittest/test_unittest_asyncio.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/unittest/test_unittest_asynctest.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/unittest/test_unittest_plain_async.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/warnings/test_group_warnings_by_message.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/warnings/test_group_warnings_by_message_summary/test_1.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/warnings/test_group_warnings_by_message_summary/test_2.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/examples/test_issue519.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/freeze/.gitignore +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/freeze/create_executable.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/freeze/runtests_script.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/freeze/tests/test_doctest.txt +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/freeze/tests/test_trivial.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/freeze/tox_run.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/io/test_pprint.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/io/test_saferepr.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/io/test_terminalwriter.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/io/test_wcwidth.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/logging/test_fixture.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/logging/test_formatter.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/logging/test_reporting.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/plugins_integration/.gitignore +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/plugins_integration/README.rst +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/plugins_integration/bdd_wallet.feature +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/plugins_integration/bdd_wallet.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/plugins_integration/django_settings.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/plugins_integration/pytest.ini +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/plugins_integration/pytest_anyio_integration.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/plugins_integration/pytest_asyncio_integration.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/plugins_integration/pytest_mock_integration.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/plugins_integration/pytest_rerunfailures_integration.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/plugins_integration/pytest_trio_integration.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/plugins_integration/pytest_twisted_integration.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/plugins_integration/requirements.txt +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/plugins_integration/simple_integration.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/python/collect.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/python/fixtures.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/python/integration.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/python/metafunc.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/python/raises.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/python/show_fixtures_per_test.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_argcomplete.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_assertion.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_assertrewrite.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_cacheprovider.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_capture.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_collect_imported_tests.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_compat.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_conftest.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_debugging.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_entry_points.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_error_diffs.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_findpaths.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_helpconfig.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_junitxml.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_legacypath.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_link_resolve.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_main.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_mark.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_mark_expression.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_meta.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_monkeypatch.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_nodes.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_parseopt.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_pastebin.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_pathlib.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_pluginmanager.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_pytester.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_python_path.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_recwarn.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_reports.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_runner.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_runner_xunit.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_scope.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_session.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_setuponly.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_setupplan.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_skipping.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_stash.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_stepwise.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_tmpdir.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_unittest.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/test_warning_types.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/typing_checks.py +0 -0
- {pytest-8.4.0 → pytest-8.4.2}/testing/typing_raises_group.py +0 -0
|
@@ -109,8 +109,8 @@ jobs:
|
|
|
109
109
|
tox -e generate-gh-release-notes -- "$VERSION" scripts/latest-release-notes.md
|
|
110
110
|
|
|
111
111
|
- name: Publish GitHub Release
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
112
|
+
env:
|
|
113
|
+
VERSION: ${{ github.event.inputs.version }}
|
|
114
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
115
|
+
run: |
|
|
116
|
+
gh release create --notes-file scripts/latest-release-notes.md --verify-tag "$VERSION" dist/*
|
|
@@ -54,7 +54,9 @@ jobs:
|
|
|
54
54
|
fail-fast: false
|
|
55
55
|
matrix:
|
|
56
56
|
name: [
|
|
57
|
-
"windows-py39-
|
|
57
|
+
"windows-py39-unittest-asynctest",
|
|
58
|
+
"windows-py39-unittest-twisted24",
|
|
59
|
+
"windows-py39-unittest-twisted25",
|
|
58
60
|
"windows-py39-pluggy",
|
|
59
61
|
"windows-py39-xdist",
|
|
60
62
|
"windows-py310",
|
|
@@ -63,6 +65,9 @@ jobs:
|
|
|
63
65
|
"windows-py313",
|
|
64
66
|
"windows-py314",
|
|
65
67
|
|
|
68
|
+
"ubuntu-py39-unittest-asynctest",
|
|
69
|
+
"ubuntu-py39-unittest-twisted24",
|
|
70
|
+
"ubuntu-py39-unittest-twisted25",
|
|
66
71
|
"ubuntu-py39-lsof-numpy-pexpect",
|
|
67
72
|
"ubuntu-py39-pluggy",
|
|
68
73
|
"ubuntu-py39-freeze",
|
|
@@ -85,10 +90,23 @@ jobs:
|
|
|
85
90
|
]
|
|
86
91
|
|
|
87
92
|
include:
|
|
88
|
-
|
|
93
|
+
# Use separate jobs for different unittest flavors (twisted, asynctest) to ensure proper coverage.
|
|
94
|
+
- name: "windows-py39-unittest-asynctest"
|
|
89
95
|
python: "3.9"
|
|
90
96
|
os: windows-latest
|
|
91
|
-
tox_env: "py39-
|
|
97
|
+
tox_env: "py39-asynctest"
|
|
98
|
+
use_coverage: true
|
|
99
|
+
|
|
100
|
+
- name: "windows-py39-unittest-twisted24"
|
|
101
|
+
python: "3.9"
|
|
102
|
+
os: windows-latest
|
|
103
|
+
tox_env: "py39-twisted24"
|
|
104
|
+
use_coverage: true
|
|
105
|
+
|
|
106
|
+
- name: "windows-py39-unittest-twisted25"
|
|
107
|
+
python: "3.9"
|
|
108
|
+
os: windows-latest
|
|
109
|
+
tox_env: "py39-twisted25"
|
|
92
110
|
use_coverage: true
|
|
93
111
|
|
|
94
112
|
- name: "windows-py39-pluggy"
|
|
@@ -126,6 +144,25 @@ jobs:
|
|
|
126
144
|
os: windows-latest
|
|
127
145
|
tox_env: "py314"
|
|
128
146
|
|
|
147
|
+
# Use separate jobs for different unittest flavors (twisted, asynctest) to ensure proper coverage.
|
|
148
|
+
- name: "ubuntu-py39-unittest-asynctest"
|
|
149
|
+
python: "3.9"
|
|
150
|
+
os: ubuntu-latest
|
|
151
|
+
tox_env: "py39-asynctest"
|
|
152
|
+
use_coverage: true
|
|
153
|
+
|
|
154
|
+
- name: "ubuntu-py39-unittest-twisted24"
|
|
155
|
+
python: "3.9"
|
|
156
|
+
os: ubuntu-latest
|
|
157
|
+
tox_env: "py39-twisted24"
|
|
158
|
+
use_coverage: true
|
|
159
|
+
|
|
160
|
+
- name: "ubuntu-py39-unittest-twisted25"
|
|
161
|
+
python: "3.9"
|
|
162
|
+
os: ubuntu-latest
|
|
163
|
+
tox_env: "py39-twisted25"
|
|
164
|
+
use_coverage: true
|
|
165
|
+
|
|
129
166
|
- name: "ubuntu-py39-lsof-numpy-pexpect"
|
|
130
167
|
python: "3.9"
|
|
131
168
|
os: ubuntu-latest
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pytest
|
|
3
|
-
Version: 8.4.
|
|
3
|
+
Version: 8.4.2
|
|
4
4
|
Summary: pytest: simple powerful testing with Python
|
|
5
5
|
Author: Holger Krekel, Bruno Oliveira, Ronny Pfannschmidt, Floris Bruynooghe, Brianna Laugher, Florian Bruhin, Others (See AUTHORS)
|
|
6
6
|
License: MIT
|
|
@@ -168,7 +168,6 @@ Both automatic and manual processes described above follow the same steps from t
|
|
|
168
168
|
|
|
169
169
|
To the following mailing lists:
|
|
170
170
|
|
|
171
|
-
* pytest-dev@python.org (all releases)
|
|
172
171
|
* python-announce-list@python.org (all releases)
|
|
173
172
|
* testing-in-python@lists.idyll.org (only major/minor releases)
|
|
174
173
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
pytest-8.4.1
|
|
2
|
+
=======================================
|
|
3
|
+
|
|
4
|
+
pytest 8.4.1 has just been released to PyPI.
|
|
5
|
+
|
|
6
|
+
This is a bug-fix release, being a drop-in replacement.
|
|
7
|
+
|
|
8
|
+
The full changelog is available at https://docs.pytest.org/en/stable/changelog.html.
|
|
9
|
+
|
|
10
|
+
Thanks to all of the contributors to this release:
|
|
11
|
+
|
|
12
|
+
* Bruno Oliveira
|
|
13
|
+
* Iwithyou2025
|
|
14
|
+
* John Litborn
|
|
15
|
+
* Martin Fischer
|
|
16
|
+
* Ran Benita
|
|
17
|
+
* SarahPythonista
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
Happy testing,
|
|
21
|
+
The pytest Development Team
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
pytest-8.4.2
|
|
2
|
+
=======================================
|
|
3
|
+
|
|
4
|
+
pytest 8.4.2 has just been released to PyPI.
|
|
5
|
+
|
|
6
|
+
This is a bug-fix release, being a drop-in replacement.
|
|
7
|
+
|
|
8
|
+
The full changelog is available at https://docs.pytest.org/en/stable/changelog.html.
|
|
9
|
+
|
|
10
|
+
Thanks to all of the contributors to this release:
|
|
11
|
+
|
|
12
|
+
* AD
|
|
13
|
+
* Aditi De
|
|
14
|
+
* Bruno Oliveira
|
|
15
|
+
* Florian Bruhin
|
|
16
|
+
* John Litborn
|
|
17
|
+
* Liam DeVoe
|
|
18
|
+
* Marc Mueller
|
|
19
|
+
* NayeemJohn
|
|
20
|
+
* Olivier Grisel
|
|
21
|
+
* Ran Benita
|
|
22
|
+
* bengartner
|
|
23
|
+
* 🇺🇦 Sviatoslav Sydorenko (Святослав Сидоренко)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
Happy testing,
|
|
27
|
+
The pytest Development Team
|
|
@@ -69,7 +69,7 @@ For information about fixtures, see :ref:`fixtures`. To see a complete list of a
|
|
|
69
69
|
|
|
70
70
|
.. code-block:: python
|
|
71
71
|
|
|
72
|
-
def test_output(
|
|
72
|
+
def test_output(capteesys):
|
|
73
73
|
print("hello")
|
|
74
74
|
captured = capteesys.readouterr()
|
|
75
75
|
assert captured.out == "hello\n"
|
|
@@ -142,7 +142,7 @@ For information about fixtures, see :ref:`fixtures`. To see a complete list of a
|
|
|
142
142
|
|
|
143
143
|
For more details: :ref:`doctest_namespace`.
|
|
144
144
|
|
|
145
|
-
pytestconfig [session scope] -- .../_pytest/fixtures.py:
|
|
145
|
+
pytestconfig [session scope] -- .../_pytest/fixtures.py:1425
|
|
146
146
|
Session-scoped fixture that returns the session's :class:`pytest.Config`
|
|
147
147
|
object.
|
|
148
148
|
|
|
@@ -31,6 +31,77 @@ with advance notice in the **Deprecations** section of releases.
|
|
|
31
31
|
|
|
32
32
|
.. towncrier release notes start
|
|
33
33
|
|
|
34
|
+
pytest 8.4.2 (2025-09-03)
|
|
35
|
+
=========================
|
|
36
|
+
|
|
37
|
+
Bug fixes
|
|
38
|
+
---------
|
|
39
|
+
|
|
40
|
+
- `#13478 <https://github.com/pytest-dev/pytest/issues/13478>`_: Fixed a crash when using :confval:`console_output_style` with ``times`` and a module is skipped.
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
- `#13530 <https://github.com/pytest-dev/pytest/issues/13530>`_: Fixed a crash when using :func:`pytest.approx` and :class:`decimal.Decimal` instances with the :class:`decimal.FloatOperation` trap set.
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
- `#13549 <https://github.com/pytest-dev/pytest/issues/13549>`_: No longer evaluate type annotations in Python ``3.14`` when inspecting function signatures.
|
|
47
|
+
|
|
48
|
+
This prevents crashes during module collection when modules do not explicitly use ``from __future__ import annotations`` and import types for annotations within a ``if TYPE_CHECKING:`` block.
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
- `#13559 <https://github.com/pytest-dev/pytest/issues/13559>`_: Added missing `int` and `float` variants to the `Literal` type annotation of the `type` parameter in :meth:`pytest.Parser.addini`.
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
- `#13563 <https://github.com/pytest-dev/pytest/issues/13563>`_: :func:`pytest.approx` now only imports ``numpy`` if NumPy is already in ``sys.modules``. This fixes unconditional import behavior introduced in `8.4.0`.
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
Improved documentation
|
|
59
|
+
----------------------
|
|
60
|
+
|
|
61
|
+
- `#13577 <https://github.com/pytest-dev/pytest/issues/13577>`_: Clarify that ``pytest_generate_tests`` is discovered in test modules/classes; other hooks must be in ``conftest.py`` or plugins.
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
Contributor-facing changes
|
|
66
|
+
--------------------------
|
|
67
|
+
|
|
68
|
+
- `#13480 <https://github.com/pytest-dev/pytest/issues/13480>`_: Self-testing: fixed a few test failures when run with ``-Wdefault`` or a similar override.
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
- `#13547 <https://github.com/pytest-dev/pytest/issues/13547>`_: Self-testing: corrected expected message for ``test_doctest_unexpected_exception`` in Python ``3.14``.
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
- `#13684 <https://github.com/pytest-dev/pytest/issues/13684>`_: Make pytest's own testsuite insensitive to the presence of the ``CI`` environment variable -- by :user:`ogrisel`.
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
pytest 8.4.1 (2025-06-17)
|
|
78
|
+
=========================
|
|
79
|
+
|
|
80
|
+
Bug fixes
|
|
81
|
+
---------
|
|
82
|
+
|
|
83
|
+
- `#13461 <https://github.com/pytest-dev/pytest/issues/13461>`_: Corrected ``_pytest.terminal.TerminalReporter.isatty`` to support
|
|
84
|
+
being called as a method. Before it was just a boolean which could
|
|
85
|
+
break correct code when using ``-o log_cli=true``).
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
- `#13477 <https://github.com/pytest-dev/pytest/issues/13477>`_: Reintroduced :class:`pytest.PytestReturnNotNoneWarning` which was removed by accident in pytest `8.4`.
|
|
89
|
+
|
|
90
|
+
This warning is raised when a test functions returns a value other than ``None``, which is often a mistake made by beginners.
|
|
91
|
+
|
|
92
|
+
See :ref:`return-not-none` for more information.
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
- `#13497 <https://github.com/pytest-dev/pytest/issues/13497>`_: Fixed compatibility with ``Twisted 25+``.
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
Improved documentation
|
|
100
|
+
----------------------
|
|
101
|
+
|
|
102
|
+
- `#13492 <https://github.com/pytest-dev/pytest/issues/13492>`_: Fixed outdated warning about ``faulthandler`` not working on Windows.
|
|
103
|
+
|
|
104
|
+
|
|
34
105
|
pytest 8.4.0 (2025-06-02)
|
|
35
106
|
=========================
|
|
36
107
|
|
|
@@ -316,46 +316,6 @@ Users expected in this case that the ``usefixtures`` mark would have its intende
|
|
|
316
316
|
Now pytest will issue a warning when it encounters this problem, and will raise an error in the future versions.
|
|
317
317
|
|
|
318
318
|
|
|
319
|
-
Returning non-None value in test functions
|
|
320
|
-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
321
|
-
|
|
322
|
-
.. deprecated:: 7.2
|
|
323
|
-
|
|
324
|
-
A ``pytest.PytestReturnNotNoneWarning`` is now emitted if a test function returns something other than `None`.
|
|
325
|
-
|
|
326
|
-
This prevents a common mistake among beginners that expect that returning a `bool` would cause a test to pass or fail, for example:
|
|
327
|
-
|
|
328
|
-
.. code-block:: python
|
|
329
|
-
|
|
330
|
-
@pytest.mark.parametrize(
|
|
331
|
-
["a", "b", "result"],
|
|
332
|
-
[
|
|
333
|
-
[1, 2, 5],
|
|
334
|
-
[2, 3, 8],
|
|
335
|
-
[5, 3, 18],
|
|
336
|
-
],
|
|
337
|
-
)
|
|
338
|
-
def test_foo(a, b, result):
|
|
339
|
-
return foo(a, b) == result
|
|
340
|
-
|
|
341
|
-
Given that pytest ignores the return value, this might be surprising that it will never fail.
|
|
342
|
-
|
|
343
|
-
The proper fix is to change the `return` to an `assert`:
|
|
344
|
-
|
|
345
|
-
.. code-block:: python
|
|
346
|
-
|
|
347
|
-
@pytest.mark.parametrize(
|
|
348
|
-
["a", "b", "result"],
|
|
349
|
-
[
|
|
350
|
-
[1, 2, 5],
|
|
351
|
-
[2, 3, 8],
|
|
352
|
-
[5, 3, 18],
|
|
353
|
-
],
|
|
354
|
-
)
|
|
355
|
-
def test_foo(a, b, result):
|
|
356
|
-
assert foo(a, b) == result
|
|
357
|
-
|
|
358
|
-
|
|
359
319
|
The ``yield_fixture`` function/decorator
|
|
360
320
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
361
321
|
|
|
@@ -162,7 +162,7 @@ objects, they are still using the default pytest representation:
|
|
|
162
162
|
rootdir: /home/sweet/project
|
|
163
163
|
collected 8 items
|
|
164
164
|
|
|
165
|
-
<Dir parametrize.rst-
|
|
165
|
+
<Dir parametrize.rst-209>
|
|
166
166
|
<Module test_time.py>
|
|
167
167
|
<Function test_timedistance_v0[a0-b0-expected0]>
|
|
168
168
|
<Function test_timedistance_v0[a1-b1-expected1]>
|
|
@@ -239,7 +239,7 @@ If you just collect tests you'll also nicely see 'advanced' and 'basic' as varia
|
|
|
239
239
|
rootdir: /home/sweet/project
|
|
240
240
|
collected 4 items
|
|
241
241
|
|
|
242
|
-
<Dir parametrize.rst-
|
|
242
|
+
<Dir parametrize.rst-209>
|
|
243
243
|
<Module test_scenarios.py>
|
|
244
244
|
<Class TestSampleWithScenarios>
|
|
245
245
|
<Function test_demo1[basic]>
|
|
@@ -318,7 +318,7 @@ Let's first see how it looks like at collection time:
|
|
|
318
318
|
rootdir: /home/sweet/project
|
|
319
319
|
collected 2 items
|
|
320
320
|
|
|
321
|
-
<Dir parametrize.rst-
|
|
321
|
+
<Dir parametrize.rst-209>
|
|
322
322
|
<Module test_backends.py>
|
|
323
323
|
<Function test_db_initialized[d1]>
|
|
324
324
|
<Function test_db_initialized[d2]>
|
|
@@ -352,7 +352,7 @@ The first invocation with ``db == "DB1"`` passed while the second with ``db == "
|
|
|
352
352
|
Indirect parametrization
|
|
353
353
|
---------------------------------------------------
|
|
354
354
|
|
|
355
|
-
Using the ``indirect=True`` parameter when parametrizing a test allows to
|
|
355
|
+
Using the ``indirect=True`` parameter when parametrizing a test allows one to
|
|
356
356
|
parametrize a test with a fixture receiving the values before passing them to a
|
|
357
357
|
test:
|
|
358
358
|
|
|
@@ -152,7 +152,7 @@ The test collection would look like this:
|
|
|
152
152
|
configfile: pytest.ini
|
|
153
153
|
collected 2 items
|
|
154
154
|
|
|
155
|
-
<Dir pythoncollection.rst-
|
|
155
|
+
<Dir pythoncollection.rst-210>
|
|
156
156
|
<Module check_myapp.py>
|
|
157
157
|
<Class CheckMyApp>
|
|
158
158
|
<Function simple_check>
|
|
@@ -215,7 +215,7 @@ You can always peek at the collection tree without running tests like this:
|
|
|
215
215
|
configfile: pytest.ini
|
|
216
216
|
collected 3 items
|
|
217
217
|
|
|
218
|
-
<Dir pythoncollection.rst-
|
|
218
|
+
<Dir pythoncollection.rst-210>
|
|
219
219
|
<Dir CWD>
|
|
220
220
|
<Module pythoncollection.py>
|
|
221
221
|
<Function test_function>
|
|
@@ -476,6 +476,50 @@ the conftest file:
|
|
|
476
476
|
FAILED test_foocompare.py::test_compare - assert Comparing Foo instances:
|
|
477
477
|
1 failed in 0.12s
|
|
478
478
|
|
|
479
|
+
.. _`return-not-none`:
|
|
480
|
+
|
|
481
|
+
Returning non-None value in test functions
|
|
482
|
+
------------------------------------------
|
|
483
|
+
|
|
484
|
+
A :class:`pytest.PytestReturnNotNoneWarning` is emitted when a test function returns a value other than ``None``.
|
|
485
|
+
|
|
486
|
+
This helps prevent a common mistake made by beginners who assume that returning a ``bool`` (e.g., ``True`` or ``False``) will determine whether a test passes or fails.
|
|
487
|
+
|
|
488
|
+
Example:
|
|
489
|
+
|
|
490
|
+
.. code-block:: python
|
|
491
|
+
|
|
492
|
+
@pytest.mark.parametrize(
|
|
493
|
+
["a", "b", "result"],
|
|
494
|
+
[
|
|
495
|
+
[1, 2, 5],
|
|
496
|
+
[2, 3, 8],
|
|
497
|
+
[5, 3, 18],
|
|
498
|
+
],
|
|
499
|
+
)
|
|
500
|
+
def test_foo(a, b, result):
|
|
501
|
+
return foo(a, b) == result # Incorrect usage, do not do this.
|
|
502
|
+
|
|
503
|
+
Since pytest ignores return values, it might be surprising that the test will never fail based on the returned value.
|
|
504
|
+
|
|
505
|
+
The correct fix is to replace the ``return`` statement with an ``assert``:
|
|
506
|
+
|
|
507
|
+
.. code-block:: python
|
|
508
|
+
|
|
509
|
+
@pytest.mark.parametrize(
|
|
510
|
+
["a", "b", "result"],
|
|
511
|
+
[
|
|
512
|
+
[1, 2, 5],
|
|
513
|
+
[2, 3, 8],
|
|
514
|
+
[5, 3, 18],
|
|
515
|
+
],
|
|
516
|
+
)
|
|
517
|
+
def test_foo(a, b, result):
|
|
518
|
+
assert foo(a, b) == result
|
|
519
|
+
|
|
520
|
+
|
|
521
|
+
|
|
522
|
+
|
|
479
523
|
.. _assert-details:
|
|
480
524
|
.. _`assert introspection`:
|
|
481
525
|
|
|
@@ -112,7 +112,7 @@ on the command-line.
|
|
|
112
112
|
|
|
113
113
|
Also the :confval:`faulthandler_timeout=X<faulthandler_timeout>` configuration option can be used
|
|
114
114
|
to dump the traceback of all threads if a test takes longer than ``X``
|
|
115
|
-
seconds to finish
|
|
115
|
+
seconds to finish.
|
|
116
116
|
|
|
117
117
|
.. note::
|
|
118
118
|
|
|
@@ -1423,7 +1423,7 @@ Running the above tests results in the following test IDs being used:
|
|
|
1423
1423
|
rootdir: /home/sweet/project
|
|
1424
1424
|
collected 12 items
|
|
1425
1425
|
|
|
1426
|
-
<Dir fixtures.rst-
|
|
1426
|
+
<Dir fixtures.rst-230>
|
|
1427
1427
|
<Module test_anothersmtp.py>
|
|
1428
1428
|
<Function test_showhelo[smtp.gmail.com]>
|
|
1429
1429
|
<Function test_showhelo[mail.python.org]>
|
|
@@ -240,6 +240,13 @@ command line option and the parametrization of our test function:
|
|
|
240
240
|
if "stringinput" in metafunc.fixturenames:
|
|
241
241
|
metafunc.parametrize("stringinput", metafunc.config.getoption("stringinput"))
|
|
242
242
|
|
|
243
|
+
.. note::
|
|
244
|
+
|
|
245
|
+
The :hook:`pytest_generate_tests` hook can also be implemented directly in a test
|
|
246
|
+
module or inside a test class; unlike other hooks, pytest will discover it there
|
|
247
|
+
as well. Other hooks must live in a :ref:`conftest.py <localplugin>` or a plugin.
|
|
248
|
+
See :ref:`writinghooks`.
|
|
249
|
+
|
|
243
250
|
If we now pass two stringinput values, our test will run twice:
|
|
244
251
|
|
|
245
252
|
.. code-block:: pytest
|
|
@@ -154,7 +154,10 @@ manually specify each plugin with ``-p`` or :envvar:`PYTEST_PLUGINS`, you can us
|
|
|
154
154
|
.. code-block:: ini
|
|
155
155
|
|
|
156
156
|
[pytest]
|
|
157
|
-
addopts =
|
|
157
|
+
addopts =
|
|
158
|
+
--disable-plugin-autoload
|
|
159
|
+
-p NAME
|
|
160
|
+
-p NAME2
|
|
158
161
|
|
|
159
162
|
.. versionadded:: 8.4
|
|
160
163
|
|
|
@@ -235,6 +235,12 @@ Example:
|
|
|
235
235
|
"""
|
|
236
236
|
print(config.hook)
|
|
237
237
|
|
|
238
|
+
.. note::
|
|
239
|
+
|
|
240
|
+
Unlike other hooks, the :hook:`pytest_generate_tests` hook is also discovered when
|
|
241
|
+
defined inside a test module or test class. Other hooks must live in
|
|
242
|
+
:ref:`conftest.py plugins <localplugin>` or external plugins.
|
|
243
|
+
See :ref:`parametrize-basics` and the :ref:`hook-reference`.
|
|
238
244
|
|
|
239
245
|
.. _`addoptionhooks`:
|
|
240
246
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
.. sidebar:: **Next Open Trainings and Events**
|
|
4
4
|
|
|
5
|
-
- `
|
|
5
|
+
- `Testen mit pytest <https://www.letsboot.ch/kurs/pytest>`_ (German), via `Letsboot <https://www.letsboot.ch/>`_ (3 day in-depth training), **October 29th -- 31st**, Zurich (CH)
|
|
6
6
|
- `Professional Testing with Python <https://python-academy.com/courses/python_course_testing.html>`_, via `Python Academy <https://www.python-academy.com/>`_ (3 day in-depth training), **March 3th -- 5th 2026**, Leipzig (DE) / Remote
|
|
7
7
|
|
|
8
8
|
Also see :doc:`previous talks and blogposts <talks>`
|
|
@@ -1274,6 +1274,9 @@ Custom warnings generated in some situations such as improper usage or deprecate
|
|
|
1274
1274
|
.. autoclass:: pytest.PytestExperimentalApiWarning
|
|
1275
1275
|
:show-inheritance:
|
|
1276
1276
|
|
|
1277
|
+
.. autoclass:: pytest.PytestReturnNotNoneWarning
|
|
1278
|
+
:show-inheritance:
|
|
1279
|
+
|
|
1277
1280
|
.. autoclass:: pytest.PytestRemovedIn9Warning
|
|
1278
1281
|
:show-inheritance:
|
|
1279
1282
|
|
|
@@ -426,6 +426,9 @@ markers = [
|
|
|
426
426
|
"slow",
|
|
427
427
|
# experimental mark for all tests using pexpect
|
|
428
428
|
"uses_pexpect",
|
|
429
|
+
# Disables the `remove_ci_env_var` autouse fixture on a given test that
|
|
430
|
+
# actually inspects whether the CI environment variable is set.
|
|
431
|
+
"keep_ci_var",
|
|
429
432
|
]
|
|
430
433
|
|
|
431
434
|
[tool.towncrier]
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
# file generated by setuptools-scm
|
|
2
2
|
# don't change, don't track in version control
|
|
3
3
|
|
|
4
|
-
__all__ = [
|
|
4
|
+
__all__ = [
|
|
5
|
+
"__version__",
|
|
6
|
+
"__version_tuple__",
|
|
7
|
+
"version",
|
|
8
|
+
"version_tuple",
|
|
9
|
+
"__commit_id__",
|
|
10
|
+
"commit_id",
|
|
11
|
+
]
|
|
5
12
|
|
|
6
13
|
TYPE_CHECKING = False
|
|
7
14
|
if TYPE_CHECKING:
|
|
@@ -9,13 +16,19 @@ if TYPE_CHECKING:
|
|
|
9
16
|
from typing import Union
|
|
10
17
|
|
|
11
18
|
VERSION_TUPLE = Tuple[Union[int, str], ...]
|
|
19
|
+
COMMIT_ID = Union[str, None]
|
|
12
20
|
else:
|
|
13
21
|
VERSION_TUPLE = object
|
|
22
|
+
COMMIT_ID = object
|
|
14
23
|
|
|
15
24
|
version: str
|
|
16
25
|
__version__: str
|
|
17
26
|
__version_tuple__: VERSION_TUPLE
|
|
18
27
|
version_tuple: VERSION_TUPLE
|
|
28
|
+
commit_id: COMMIT_ID
|
|
29
|
+
__commit_id__: COMMIT_ID
|
|
19
30
|
|
|
20
|
-
__version__ = version = '8.4.
|
|
21
|
-
__version_tuple__ = version_tuple = (8, 4,
|
|
31
|
+
__version__ = version = '8.4.2'
|
|
32
|
+
__version_tuple__ = version_tuple = (8, 4, 2)
|
|
33
|
+
|
|
34
|
+
__commit_id__ = commit_id = None
|
|
@@ -1043,7 +1043,7 @@ def capteesys(request: SubRequest) -> Generator[CaptureFixture[str]]:
|
|
|
1043
1043
|
|
|
1044
1044
|
.. code-block:: python
|
|
1045
1045
|
|
|
1046
|
-
def test_output(
|
|
1046
|
+
def test_output(capteesys):
|
|
1047
1047
|
print("hello")
|
|
1048
1048
|
captured = capteesys.readouterr()
|
|
1049
1049
|
assert captured.out == "hello\n"
|
|
@@ -8,7 +8,7 @@ import enum
|
|
|
8
8
|
import functools
|
|
9
9
|
import inspect
|
|
10
10
|
from inspect import Parameter
|
|
11
|
-
from inspect import
|
|
11
|
+
from inspect import Signature
|
|
12
12
|
import os
|
|
13
13
|
from pathlib import Path
|
|
14
14
|
import sys
|
|
@@ -19,6 +19,10 @@ from typing import NoReturn
|
|
|
19
19
|
import py
|
|
20
20
|
|
|
21
21
|
|
|
22
|
+
if sys.version_info >= (3, 14):
|
|
23
|
+
from annotationlib import Format
|
|
24
|
+
|
|
25
|
+
|
|
22
26
|
#: constant to prepare valuing pylib path replacements/lazy proxies later on
|
|
23
27
|
# intended for removal in pytest 8.0 or 9.0
|
|
24
28
|
|
|
@@ -60,6 +64,13 @@ def is_async_function(func: object) -> bool:
|
|
|
60
64
|
return iscoroutinefunction(func) or inspect.isasyncgenfunction(func)
|
|
61
65
|
|
|
62
66
|
|
|
67
|
+
def signature(obj: Callable[..., Any]) -> Signature:
|
|
68
|
+
"""Return signature without evaluating annotations."""
|
|
69
|
+
if sys.version_info >= (3, 14):
|
|
70
|
+
return inspect.signature(obj, annotation_format=Format.STRING)
|
|
71
|
+
return inspect.signature(obj)
|
|
72
|
+
|
|
73
|
+
|
|
63
74
|
def getlocation(function, curdir: str | os.PathLike[str] | None = None) -> str:
|
|
64
75
|
function = get_real_func(function)
|
|
65
76
|
fn = Path(inspect.getfile(function))
|
|
@@ -300,3 +311,23 @@ def get_user_id() -> int | None:
|
|
|
300
311
|
# This also work for Enums (if you use `is` to compare) and Literals.
|
|
301
312
|
def assert_never(value: NoReturn) -> NoReturn:
|
|
302
313
|
assert False, f"Unhandled value: {value} ({type(value).__name__})"
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
class CallableBool:
|
|
317
|
+
"""
|
|
318
|
+
A bool-like object that can also be called, returning its true/false value.
|
|
319
|
+
|
|
320
|
+
Used for backwards compatibility in cases where something was supposed to be a method
|
|
321
|
+
but was implemented as a simple attribute by mistake (see `TerminalReporter.isatty`).
|
|
322
|
+
|
|
323
|
+
Do not use in new code.
|
|
324
|
+
"""
|
|
325
|
+
|
|
326
|
+
def __init__(self, value: bool) -> None:
|
|
327
|
+
self._value = value
|
|
328
|
+
|
|
329
|
+
def __bool__(self) -> bool:
|
|
330
|
+
return self._value
|
|
331
|
+
|
|
332
|
+
def __call__(self) -> bool:
|
|
333
|
+
return self._value
|
|
@@ -174,7 +174,9 @@ class Parser:
|
|
|
174
174
|
self,
|
|
175
175
|
name: str,
|
|
176
176
|
help: str,
|
|
177
|
-
type: Literal[
|
|
177
|
+
type: Literal[
|
|
178
|
+
"string", "paths", "pathlist", "args", "linelist", "bool", "int", "float"
|
|
179
|
+
]
|
|
178
180
|
| None = None,
|
|
179
181
|
default: Any = NOT_SET,
|
|
180
182
|
) -> None:
|