pytest 8.2.1__tar.gz → 8.2.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.2.1 → pytest-8.2.2}/AUTHORS +3 -0
- {pytest-8.2.1 → pytest-8.2.2}/CONTRIBUTING.rst +0 -4
- {pytest-8.2.1/src/pytest.egg-info → pytest-8.2.2}/PKG-INFO +1 -1
- pytest-8.2.2/doc/en/_templates/sidebar/brand.html +7 -0
- pytest-8.2.2/doc/en/_templates/style.html +7 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/index.rst +1 -0
- pytest-8.2.2/doc/en/announce/release-8.2.2.rst +19 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/builtin.rst +2 -2
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/changelog.rst +30 -1
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/conf.py +14 -19
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/deprecations.rst +0 -4
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/parametrize.rst +3 -3
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/pythoncollection.rst +2 -2
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/explanation/flaky.rst +19 -3
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/getting-started.rst +1 -1
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/fixtures.rst +1 -1
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/index.rst +7 -9
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/reference/reference.rst +0 -3
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/requirements.txt +2 -2
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/_version.py +2 -2
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/cacheprovider.py +19 -8
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/fixtures.py +11 -8
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/hookspec.py +6 -1
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/unittest.py +2 -1
- {pytest-8.2.1 → pytest-8.2.2/src/pytest.egg-info}/PKG-INFO +1 -1
- {pytest-8.2.1 → pytest-8.2.2}/src/pytest.egg-info/SOURCES.txt +4 -2
- {pytest-8.2.1 → pytest-8.2.2}/testing/python/fixtures.py +19 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_unittest.py +20 -16
- pytest-8.2.1/doc/en/_templates/slim_searchbox.html +0 -14
- {pytest-8.2.1 → pytest-8.2.2}/.coveragerc +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/.git-blame-ignore-revs +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/.gitattributes +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/.github/FUNDING.yml +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/.github/ISSUE_TEMPLATE/1_bug_report.md +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/.github/ISSUE_TEMPLATE/2_feature_request.md +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/.github/config.yml +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/.github/dependabot.yml +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/.github/labels.toml +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/.github/workflows/backport.yml +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/.github/workflows/deploy.yml +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/.github/workflows/prepare-release-pr.yml +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/.github/workflows/stale.yml +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/.github/workflows/test.yml +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/.github/workflows/update-plugin-list.yml +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/.gitignore +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/.pre-commit-config.yaml +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/.readthedocs.yml +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/CHANGELOG.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/CITATION +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/CODE_OF_CONDUCT.md +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/LICENSE +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/OPENCOLLECTIVE.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/README.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/RELEASING.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/TIDELIFT.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/bench/bench.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/bench/bench_argcomplete.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/bench/empty.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/bench/manyparam.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/bench/skip.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/bench/unit_test.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/bench/xunit.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/changelog/README.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/changelog/_template.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/codecov.yml +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/Makefile +0 -0
- {pytest-8.2.1/doc/en/img → pytest-8.2.2/doc/en/_static}/pytest1.png +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/_templates/globaltoc.html +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/_templates/layout.html +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/_templates/links.html +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/_templates/relations.html +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/_templates/sidebarintro.html +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/adopt.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.0.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.0.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.0.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.0.3.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.1.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.1.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.1.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.1.3.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.2.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.2.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.2.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.2.4.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.3.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.3.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.3.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.3.3.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.3.4.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.3.5.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.4.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.4.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.4.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.5.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.5.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.5.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.6.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.6.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.6.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.6.3.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.7.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.7.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.7.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.8.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.8.3.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.8.4.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.8.5.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.8.6.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.8.7.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.9.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.9.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.9.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.0.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.0.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.0.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.0.3.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.0.4.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.0.5.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.0.6.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.0.7.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.1.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.1.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.1.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.1.3.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.10.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.10.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.2.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.2.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.2.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.2.3.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.2.4.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.2.5.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.3.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.3.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.3.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.4.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.4.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.4.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.5.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.5.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.6.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.6.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.6.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.6.3.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.6.4.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.7.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.7.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.7.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.7.3.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.7.4.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.8.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.8.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.8.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.9.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.9.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.9.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.9.3.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.0.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.0.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.0.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.1.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.1.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.2.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.2.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.3.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.3.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.4.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.4.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.4.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.5.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.6.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.6.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.6.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.6.3.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.6.4.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.6.5.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.6.6.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.6.7.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.6.8.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.6.9.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.0.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.0.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.1.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.1.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.1.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.1.3.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.2.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.2.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.2.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.2.3.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.2.4.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.3.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.3.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.3.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.3.3.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.3.4.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.3.5.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.4.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.4.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.4.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.4.3.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-6.0.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-6.0.0rc1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-6.0.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-6.0.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-6.1.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-6.1.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-6.1.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-6.2.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-6.2.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-6.2.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-6.2.3.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-6.2.4.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-6.2.5.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.0.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.0.0rc1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.0.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.1.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.1.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.1.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.1.3.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.2.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.2.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.2.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.3.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.3.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.3.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.4.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.4.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.4.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.4.3.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.4.4.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-8.0.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-8.0.0rc1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-8.0.0rc2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-8.0.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-8.0.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-8.1.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-8.1.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-8.1.2.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-8.2.0.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-8.2.1.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/sprint2016.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/backwards-compatibility.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/conftest.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/contact.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/contents.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/contributing.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/development_guide.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/assertion/failure_demo.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/assertion/global_testmodule_config/conftest.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/assertion/global_testmodule_config/test_hello_world.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/assertion/test_failures.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/assertion/test_setup_flow_example.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/attic.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/conftest.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/customdirectory/conftest.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/customdirectory/pytest.ini +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/customdirectory/tests/manifest.json +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/customdirectory/tests/test_first.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/customdirectory/tests/test_second.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/customdirectory/tests/test_third.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/customdirectory.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/fixture_availability.svg +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/fixture_availability_plugins.svg +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/test_fixtures_order_autouse.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/test_fixtures_order_autouse.svg +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/test_fixtures_order_autouse_flat.svg +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/test_fixtures_order_autouse_multiple_scopes.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/test_fixtures_order_autouse_multiple_scopes.svg +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/test_fixtures_order_autouse_temp_effects.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/test_fixtures_order_autouse_temp_effects.svg +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/test_fixtures_order_dependencies.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/test_fixtures_order_dependencies.svg +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/test_fixtures_order_dependencies_flat.svg +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/test_fixtures_order_dependencies_unclear.svg +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/test_fixtures_order_scope.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/test_fixtures_order_scope.svg +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/test_fixtures_request_different_scope.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/test_fixtures_request_different_scope.svg +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/index.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/markers.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/multipython.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/nonpython/__init__.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/nonpython/conftest.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/nonpython/test_simple.yaml +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/nonpython.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/pythoncollection.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/reportingdemo.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/simple.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/special.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/xfail_demo.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/explanation/anatomy.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/explanation/fixtures.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/explanation/goodpractices.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/explanation/index.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/explanation/pythonpath.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/funcarg_compare.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/funcargs.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/historical-notes.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/history.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/assert.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/bash-completion.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/cache.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/capture-stdout-stderr.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/capture-warnings.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/doctest.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/existingtestsuite.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/failures.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/index.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/logging.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/mark.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/monkeypatch.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/output.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/parametrize.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/plugins.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/skipping.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/tmp_path.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/unittest.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/usage.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/writing_hook_functions.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/writing_plugins.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/xunit_setup.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/img/cramer2.png +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/img/favicon.png +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/img/freiburg2.jpg +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/img/gaynor3.png +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/img/keleshev.png +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/img/pullrequest.png +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/img/pylib.png +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/img/pytest_logo_curves.svg +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/img/theuni.png +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/license.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/naming20.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/proposals/parametrize_with_fixtures.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/pytest.ini +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/recwarn.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/reference/customize.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/reference/exit-codes.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/reference/fixtures.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/reference/index.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/reference/plugin_list.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/sponsor.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/talks.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/tidelift.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/doc/en/yieldfixture.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/extra/get_issues.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/pyproject.toml +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/scripts/.gitignore +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/scripts/generate-gh-release-notes.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/scripts/prepare-release-pr.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/scripts/release.major.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/scripts/release.minor.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/scripts/release.patch.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/scripts/release.pre.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/scripts/release.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/scripts/towncrier-draft-to-file.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/scripts/update-plugin-list.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/setup.cfg +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/__init__.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/_argcomplete.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/_code/__init__.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/_code/code.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/_code/source.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/_io/__init__.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/_io/pprint.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/_io/saferepr.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/_io/terminalwriter.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/_io/wcwidth.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/_py/__init__.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/_py/error.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/_py/path.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/assertion/__init__.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/assertion/rewrite.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/assertion/truncate.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/assertion/util.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/capture.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/compat.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/config/__init__.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/config/argparsing.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/config/compat.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/config/exceptions.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/config/findpaths.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/debugging.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/deprecated.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/doctest.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/faulthandler.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/freeze_support.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/helpconfig.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/junitxml.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/legacypath.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/logging.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/main.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/mark/__init__.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/mark/expression.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/mark/structures.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/monkeypatch.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/nodes.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/outcomes.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/pastebin.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/pathlib.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/py.typed +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/pytester.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/pytester_assertions.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/python.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/python_api.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/python_path.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/recwarn.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/reports.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/runner.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/scope.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/setuponly.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/setupplan.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/skipping.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/stash.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/stepwise.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/terminal.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/threadexception.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/timing.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/tmpdir.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/unraisableexception.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/warning_types.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/warnings.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/py.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/pytest/__init__.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/pytest/__main__.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/pytest/py.typed +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/pytest.egg-info/dependency_links.txt +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/pytest.egg-info/entry_points.txt +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/pytest.egg-info/requires.txt +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/src/pytest.egg-info/top_level.txt +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/_py/test_local.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/acceptance_test.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/code/test_code.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/code/test_excinfo.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/code/test_source.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/conftest.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/deprecated_test.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/README.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/__init__.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/acceptance/fixture_mock_integration.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/collect/collect_init_tests/pytest.ini +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/collect/collect_init_tests/tests/__init__.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/collect/collect_init_tests/tests/test_foo.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/collect/package_infinite_recursion/__init__.pyi +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/collect/package_infinite_recursion/conftest.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/collect/package_infinite_recursion/tests/__init__.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/collect/package_infinite_recursion/tests/test_basic.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/collect/package_init_given_as_arg/pkg/__init__.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/collect/package_init_given_as_arg/pkg/test_foo.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/config/collect_pytest_prefix/__init__.pyi +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/config/collect_pytest_prefix/conftest.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/config/collect_pytest_prefix/test_foo.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/conftest_usageerror/__init__.pyi +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/conftest_usageerror/conftest.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/customdirectory/conftest.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/customdirectory/pytest.ini +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/customdirectory/tests/manifest.json +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/customdirectory/tests/test_first.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/customdirectory/tests/test_second.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/customdirectory/tests/test_third.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/dataclasses/test_compare_dataclasses.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/dataclasses/test_compare_dataclasses_field_comparison_off.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/dataclasses/test_compare_dataclasses_verbose.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/dataclasses/test_compare_dataclasses_with_custom_eq.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/dataclasses/test_compare_initvar.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/dataclasses/test_compare_recursive_dataclasses.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/dataclasses/test_compare_two_different_dataclasses.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/doctest/main_py/__main__.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/doctest/main_py/test_normal_module.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/custom_item/__init__.pyi +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/custom_item/conftest.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/custom_item/foo/__init__.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/custom_item/foo/test_foo.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub1/__init__.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub1/conftest.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub1/test_in_sub1.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub2/__init__.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub2/conftest.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub2/test_in_sub2.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_detect_recursive_dependency_error.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/__init__.pyi +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/conftest.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/pkg/__init__.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/pkg/conftest.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/pkg/test_spam.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_module/__init__.pyi +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_module/conftest.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_module/test_extend_fixture_conftest_module.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_module_class.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_funcarg_basic.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_funcarg_lookup_classlevel.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_funcarg_lookup_modulelevel.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_funcarg_lookupfails.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/test_fixture_named_request.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/test_getfixturevalue_dynamic.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/issue88_initial_file_multinodes/__init__.pyi +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/issue88_initial_file_multinodes/conftest.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/issue88_initial_file_multinodes/test_hello.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/issue_519.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/junit-10.xsd +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/marks/marks_considered_keywords/__init__.pyi +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/marks/marks_considered_keywords/conftest.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/marks/marks_considered_keywords/test_marks_as_keywords.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/perf_examples/collect_stats/.gitignore +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/perf_examples/collect_stats/generate_folders.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/perf_examples/collect_stats/template_test.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/pytest.ini +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/tmpdir/tmp_path_fixture.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/unittest/test_parametrized_fixture_error_message.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/unittest/test_setup_skip.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/unittest/test_setup_skip_class.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/unittest/test_setup_skip_module.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/unittest/test_unittest_asyncio.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/unittest/test_unittest_asynctest.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/unittest/test_unittest_plain_async.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/warnings/test_group_warnings_by_message.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/warnings/test_group_warnings_by_message_summary/test_1.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/warnings/test_group_warnings_by_message_summary/test_2.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/examples/test_issue519.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/freeze/.gitignore +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/freeze/create_executable.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/freeze/runtests_script.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/freeze/tests/test_doctest.txt +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/freeze/tests/test_trivial.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/freeze/tox_run.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/io/test_pprint.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/io/test_saferepr.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/io/test_terminalwriter.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/io/test_wcwidth.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/logging/test_fixture.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/logging/test_formatter.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/logging/test_reporting.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/plugins_integration/.gitignore +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/plugins_integration/README.rst +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/plugins_integration/bdd_wallet.feature +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/plugins_integration/bdd_wallet.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/plugins_integration/django_settings.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/plugins_integration/pytest.ini +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/plugins_integration/pytest_anyio_integration.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/plugins_integration/pytest_asyncio_integration.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/plugins_integration/pytest_mock_integration.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/plugins_integration/pytest_trio_integration.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/plugins_integration/pytest_twisted_integration.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/plugins_integration/requirements.txt +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/plugins_integration/simple_integration.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/python/approx.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/python/collect.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/python/integration.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/python/metafunc.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/python/raises.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/python/show_fixtures_per_test.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_argcomplete.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_assertion.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_assertrewrite.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_cacheprovider.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_capture.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_collection.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_compat.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_config.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_conftest.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_debugging.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_doctest.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_entry_points.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_error_diffs.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_faulthandler.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_findpaths.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_helpconfig.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_junitxml.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_legacypath.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_link_resolve.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_main.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_mark.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_mark_expression.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_meta.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_monkeypatch.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_nodes.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_parseopt.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_pastebin.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_pathlib.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_pluginmanager.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_pytester.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_python_path.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_recwarn.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_reports.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_runner.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_runner_xunit.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_scope.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_session.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_setuponly.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_setupplan.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_skipping.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_stash.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_stepwise.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_terminal.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_threadexception.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_tmpdir.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_unraisableexception.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_warning_types.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/test_warnings.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/testing/typing_checks.py +0 -0
- {pytest-8.2.1 → pytest-8.2.2}/tox.ini +0 -0
|
@@ -192,6 +192,7 @@ Jake VanderPlas
|
|
|
192
192
|
Jakob van Santen
|
|
193
193
|
Jakub Mitoraj
|
|
194
194
|
James Bourbeau
|
|
195
|
+
James Frost
|
|
195
196
|
Jan Balster
|
|
196
197
|
Janne Vanhala
|
|
197
198
|
Jason R. Coombs
|
|
@@ -289,6 +290,7 @@ Mike Lundy
|
|
|
289
290
|
Milan Lesnek
|
|
290
291
|
Miro Hrončok
|
|
291
292
|
mrbean-bremen
|
|
293
|
+
Nathan Goldbaum
|
|
292
294
|
Nathaniel Compton
|
|
293
295
|
Nathaniel Waisbrot
|
|
294
296
|
Ned Batchelder
|
|
@@ -358,6 +360,7 @@ Sadra Barikbin
|
|
|
358
360
|
Saiprasad Kale
|
|
359
361
|
Samuel Colvin
|
|
360
362
|
Samuel Dion-Girardeau
|
|
363
|
+
Samuel Jirovec
|
|
361
364
|
Samuel Searles-Bryant
|
|
362
365
|
Samuel Therrien (Avasam)
|
|
363
366
|
Samuele Pedroni
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pytest
|
|
3
|
-
Version: 8.2.
|
|
3
|
+
Version: 8.2.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
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
pytest-8.2.2
|
|
2
|
+
=======================================
|
|
3
|
+
|
|
4
|
+
pytest 8.2.2 has just been released to PyPI.
|
|
5
|
+
|
|
6
|
+
This is a bug-fix release, being a drop-in replacement. To upgrade::
|
|
7
|
+
|
|
8
|
+
pip install --upgrade pytest
|
|
9
|
+
|
|
10
|
+
The full changelog is available at https://docs.pytest.org/en/stable/changelog.html.
|
|
11
|
+
|
|
12
|
+
Thanks to all of the contributors to this release:
|
|
13
|
+
|
|
14
|
+
* Bruno Oliveira
|
|
15
|
+
* Ran Benita
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
Happy testing,
|
|
19
|
+
The pytest Development Team
|
|
@@ -22,7 +22,7 @@ For information about fixtures, see :ref:`fixtures`. To see a complete list of a
|
|
|
22
22
|
cachedir: .pytest_cache
|
|
23
23
|
rootdir: /home/sweet/project
|
|
24
24
|
collected 0 items
|
|
25
|
-
cache -- .../_pytest/cacheprovider.py:
|
|
25
|
+
cache -- .../_pytest/cacheprovider.py:560
|
|
26
26
|
Return a cache object that can persist state between testing sessions.
|
|
27
27
|
|
|
28
28
|
cache.get(key, default)
|
|
@@ -115,7 +115,7 @@ For information about fixtures, see :ref:`fixtures`. To see a complete list of a
|
|
|
115
115
|
|
|
116
116
|
For more details: :ref:`doctest_namespace`.
|
|
117
117
|
|
|
118
|
-
pytestconfig [session scope] -- .../_pytest/fixtures.py:
|
|
118
|
+
pytestconfig [session scope] -- .../_pytest/fixtures.py:1338
|
|
119
119
|
Session-scoped fixture that returns the session's :class:`pytest.Config`
|
|
120
120
|
object.
|
|
121
121
|
|
|
@@ -28,6 +28,35 @@ with advance notice in the **Deprecations** section of releases.
|
|
|
28
28
|
|
|
29
29
|
.. towncrier release notes start
|
|
30
30
|
|
|
31
|
+
pytest 8.2.2 (2024-06-04)
|
|
32
|
+
=========================
|
|
33
|
+
|
|
34
|
+
Bug Fixes
|
|
35
|
+
---------
|
|
36
|
+
|
|
37
|
+
- `#12355 <https://github.com/pytest-dev/pytest/issues/12355>`_: Fix possible catastrophic performance slowdown on a certain parametrization pattern involving many higher-scoped parameters.
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
- `#12367 <https://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.
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
- `#12381 <https://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.
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
Improved Documentation
|
|
48
|
+
----------------------
|
|
49
|
+
|
|
50
|
+
- `#12290 <https://github.com/pytest-dev/pytest/issues/12290>`_: Updated Sphinx theme to use Furo instead of Flask, enabling Dark mode theme.
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
- `#12356 <https://github.com/pytest-dev/pytest/issues/12356>`_: Added a subsection to the documentation for debugging flaky tests to mention
|
|
54
|
+
lack of thread safety in pytest as a possible source of flakyness.
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
- `#12363 <https://github.com/pytest-dev/pytest/issues/12363>`_: The documentation webpages now links to a canonical version to reduce outdated documentation in search engine results.
|
|
58
|
+
|
|
59
|
+
|
|
31
60
|
pytest 8.2.1 (2024-05-19)
|
|
32
61
|
=========================
|
|
33
62
|
|
|
@@ -57,7 +86,7 @@ Bug Fixes
|
|
|
57
86
|
Trivial/Internal Changes
|
|
58
87
|
------------------------
|
|
59
88
|
|
|
60
|
-
- `#12333 <https://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.
|
|
89
|
+
- `#12333 <https://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.
|
|
61
90
|
|
|
62
91
|
|
|
63
92
|
pytest 8.2.0 (2024-04-27)
|
|
@@ -15,9 +15,7 @@
|
|
|
15
15
|
#
|
|
16
16
|
# The full version, including alpha/beta/rc tags.
|
|
17
17
|
# The short X.Y version.
|
|
18
|
-
import os
|
|
19
18
|
import shutil
|
|
20
|
-
import sys
|
|
21
19
|
from textwrap import dedent
|
|
22
20
|
from typing import TYPE_CHECKING
|
|
23
21
|
|
|
@@ -65,7 +63,6 @@ latex_elements = {
|
|
|
65
63
|
# Add any Sphinx extension module names here, as strings. They can be extensions
|
|
66
64
|
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
|
|
67
65
|
extensions = [
|
|
68
|
-
"pallets_sphinx_themes",
|
|
69
66
|
"pygments_pytest",
|
|
70
67
|
"sphinx.ext.autodoc",
|
|
71
68
|
"sphinx.ext.autosummary",
|
|
@@ -140,10 +137,6 @@ add_module_names = False
|
|
|
140
137
|
# output. They are ignored by default.
|
|
141
138
|
# show_authors = False
|
|
142
139
|
|
|
143
|
-
# The name of the Pygments (syntax highlighting) style to use.
|
|
144
|
-
pygments_style = "sphinx"
|
|
145
|
-
|
|
146
|
-
|
|
147
140
|
# A list of ignored prefixes for module index sorting.
|
|
148
141
|
# modindex_common_prefix = []
|
|
149
142
|
|
|
@@ -216,12 +209,9 @@ nitpick_ignore = [
|
|
|
216
209
|
|
|
217
210
|
# -- Options for HTML output ---------------------------------------------------
|
|
218
211
|
|
|
219
|
-
sys.path.append(os.path.abspath("_themes"))
|
|
220
|
-
html_theme_path = ["_themes"]
|
|
221
|
-
|
|
222
212
|
# The theme to use for HTML and HTML Help pages. See the documentation for
|
|
223
213
|
# a list of builtin themes.
|
|
224
|
-
html_theme = "
|
|
214
|
+
html_theme = "furo"
|
|
225
215
|
|
|
226
216
|
# Theme options are theme-specific and customize the look and feel of a theme
|
|
227
217
|
# further. For a list of options available for each theme, see the
|
|
@@ -266,18 +256,24 @@ html_favicon = "img/favicon.png"
|
|
|
266
256
|
|
|
267
257
|
html_sidebars = {
|
|
268
258
|
"index": [
|
|
269
|
-
"
|
|
259
|
+
"sidebar/brand.html",
|
|
260
|
+
"sidebar/search.html",
|
|
261
|
+
"sidebar/scroll-start.html",
|
|
270
262
|
"sidebarintro.html",
|
|
271
263
|
"globaltoc.html",
|
|
272
264
|
"links.html",
|
|
273
|
-
"
|
|
265
|
+
"sidebar/scroll-end.html",
|
|
266
|
+
"style.html",
|
|
274
267
|
],
|
|
275
268
|
"**": [
|
|
276
|
-
"
|
|
269
|
+
"sidebar/brand.html",
|
|
270
|
+
"sidebar/search.html",
|
|
271
|
+
"sidebar/scroll-start.html",
|
|
277
272
|
"globaltoc.html",
|
|
278
273
|
"relations.html",
|
|
279
274
|
"links.html",
|
|
280
|
-
"
|
|
275
|
+
"sidebar/scroll-end.html",
|
|
276
|
+
"style.html",
|
|
281
277
|
],
|
|
282
278
|
}
|
|
283
279
|
|
|
@@ -316,6 +312,9 @@ html_show_sourcelink = False
|
|
|
316
312
|
# Output file base name for HTML help builder.
|
|
317
313
|
htmlhelp_basename = "pytestdoc"
|
|
318
314
|
|
|
315
|
+
# The base URL which points to the root of the HTML documentation. It is used
|
|
316
|
+
# to indicate the location of document using the canonical link relation (#12363).
|
|
317
|
+
html_baseurl = "https://docs.pytest.org/en/stable/"
|
|
319
318
|
|
|
320
319
|
# -- Options for LaTeX output --------------------------------------------------
|
|
321
320
|
|
|
@@ -337,10 +336,6 @@ latex_documents = [
|
|
|
337
336
|
)
|
|
338
337
|
]
|
|
339
338
|
|
|
340
|
-
# The name of an image file (relative to this directory) to place at the top of
|
|
341
|
-
# the title page.
|
|
342
|
-
latex_logo = "img/pytest1.png"
|
|
343
|
-
|
|
344
339
|
# For "manual" documents, if this is true, then toplevel headings are parts,
|
|
345
340
|
# not chapters.
|
|
346
341
|
# latex_use_parts = False
|
|
@@ -7,10 +7,6 @@ This page lists all pytest features that are currently deprecated or have been r
|
|
|
7
7
|
The objective is to give users a clear rationale why a certain feature has been removed, and what alternatives
|
|
8
8
|
should be used instead.
|
|
9
9
|
|
|
10
|
-
.. contents::
|
|
11
|
-
:depth: 3
|
|
12
|
-
:local:
|
|
13
|
-
|
|
14
10
|
|
|
15
11
|
Deprecated Features
|
|
16
12
|
-------------------
|
|
@@ -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-200>
|
|
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-200>
|
|
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-200>
|
|
322
322
|
<Module test_backends.py>
|
|
323
323
|
<Function test_db_initialized[d1]>
|
|
324
324
|
<Function test_db_initialized[d2]>
|
|
@@ -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-201>
|
|
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-201>
|
|
219
219
|
<Dir CWD>
|
|
220
220
|
<Module pythoncollection.py>
|
|
221
221
|
<Function test_function>
|
|
@@ -18,7 +18,7 @@ System state
|
|
|
18
18
|
|
|
19
19
|
Broadly speaking, a flaky test indicates that the test relies on some system state that is not being appropriately controlled - the test environment is not sufficiently isolated. Higher level tests are more likely to be flaky as they rely on more state.
|
|
20
20
|
|
|
21
|
-
Flaky tests sometimes appear when a test suite is run in parallel (such as use of pytest-xdist). This can indicate a test is reliant on test ordering.
|
|
21
|
+
Flaky tests sometimes appear when a test suite is run in parallel (such as use of `pytest-xdist`_). This can indicate a test is reliant on test ordering.
|
|
22
22
|
|
|
23
23
|
- Perhaps a different test is failing to clean up after itself and leaving behind data which causes the flaky test to fail.
|
|
24
24
|
- The flaky test is reliant on data from a previous test that doesn't clean up after itself, and in parallel runs that previous test is not always present
|
|
@@ -30,9 +30,22 @@ Overly strict assertion
|
|
|
30
30
|
|
|
31
31
|
Overly strict assertions can cause problems with floating point comparison as well as timing issues. :func:`pytest.approx` is useful here.
|
|
32
32
|
|
|
33
|
+
Thread safety
|
|
34
|
+
~~~~~~~~~~~~~
|
|
33
35
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
+
pytest is single-threaded, executing its tests always in the same thread, sequentially, never spawning any threads itself.
|
|
37
|
+
|
|
38
|
+
Even in case of plugins which run tests in parallel, for example `pytest-xdist`_, usually work by spawning multiple *processes* and running tests in batches, without using multiple threads.
|
|
39
|
+
|
|
40
|
+
It is of course possible (and common) for tests and fixtures to spawn threads themselves as part of their testing workflow (for example, a fixture that starts a server thread in the background, or a test which executes production code that spawns threads), but some care must be taken:
|
|
41
|
+
|
|
42
|
+
* Make sure to eventually wait on any spawned threads -- for example at the end of a test, or during the teardown of a fixture.
|
|
43
|
+
* Avoid using primitives provided by pytest (:func:`pytest.warns`, :func:`pytest.raises`, etc) from multiple threads, as they are not thread-safe.
|
|
44
|
+
|
|
45
|
+
If your test suite uses threads and your are seeing flaky test results, do not discount the possibility that the test is implicitly using global state in pytest itself.
|
|
46
|
+
|
|
47
|
+
Related features
|
|
48
|
+
^^^^^^^^^^^^^^^^
|
|
36
49
|
|
|
37
50
|
Xfail strict
|
|
38
51
|
~~~~~~~~~~~~
|
|
@@ -123,3 +136,6 @@ Resources
|
|
|
123
136
|
|
|
124
137
|
* `Flaky Tests at Google and How We Mitigate Them <https://testing.googleblog.com/2016/05/flaky-tests-at-google-and-how-we.html>`_ by John Micco, 2016
|
|
125
138
|
* `Where do Google's flaky tests come from? <https://testing.googleblog.com/2017/04/where-do-our-flaky-tests-come-from.html>`_ by Jeff Listfield, 2017
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
.. _pytest-xdist: https://github.com/pytest-dev/pytest-xdist
|
|
@@ -1418,7 +1418,7 @@ Running the above tests results in the following test IDs being used:
|
|
|
1418
1418
|
rootdir: /home/sweet/project
|
|
1419
1419
|
collected 12 items
|
|
1420
1420
|
|
|
1421
|
-
<Dir fixtures.rst-
|
|
1421
|
+
<Dir fixtures.rst-219>
|
|
1422
1422
|
<Module test_anothersmtp.py>
|
|
1423
1423
|
<Function test_showhelo[smtp.gmail.com]>
|
|
1424
1424
|
<Function test_showhelo[mail.python.org]>
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
:orphan:
|
|
2
2
|
|
|
3
|
-
..
|
|
3
|
+
.. _features:
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
* **June 11th to 13th 2024**, Remote
|
|
7
|
-
* **March 4th to 6th 2025**, Leipzig, Germany / Remote
|
|
8
|
-
- `pytest development sprint <https://github.com/pytest-dev/sprint>`_, **June 17th -- 22nd 2024**
|
|
9
|
-
- pytest tips and tricks for a better testsuite, `Europython 2024 <https://ep2024.europython.eu/>`_, **July 8th -- 14th 2024** (3h), Prague
|
|
5
|
+
.. sidebar:: **Next Open Trainings and Events**
|
|
10
6
|
|
|
11
|
-
|
|
7
|
+
- `pytest development sprint <https://github.com/pytest-dev/sprint>`_, **June 17th -- 22nd 2024**, Klaus (AT) / Remote
|
|
8
|
+
- `pytest tips and tricks for a better testsuite <https://ep2024.europython.eu/session/pytest-tips-and-tricks-for-a-better-testsuite>`_, at `Europython 2024 <https://ep2024.europython.eu/>`_, **July 8th -- 14th 2024** (3h), Prague (CZ)
|
|
9
|
+
- `pytest: Professionelles Testen (nicht nur) für Python <https://pretalx.com/workshoptage-2024/talk/9VUHYB/>`_, at `CH Open Workshoptage <https://workshoptage.ch/>`_, **September 2nd 2024**, HSLU Rotkreuz (CH)
|
|
10
|
+
- `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 4th -- 6th 2025**, Leipzig (DE) / Remote
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
Also see :doc:`previous talks and blogposts <talks>`
|
|
14
13
|
|
|
15
14
|
pytest: helps you write better programs
|
|
16
15
|
=======================================
|
|
@@ -25,7 +24,6 @@ scale to support complex functional testing for applications and libraries.
|
|
|
25
24
|
|
|
26
25
|
**PyPI package name**: :pypi:`pytest`
|
|
27
26
|
|
|
28
|
-
|
|
29
27
|
A quick example
|
|
30
28
|
---------------
|
|
31
29
|
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
pallets-sphinx-themes
|
|
2
1
|
pluggy>=1.5.0
|
|
3
2
|
pygments-pytest>=2.3.0
|
|
4
3
|
sphinx-removed-in>=0.2.0
|
|
@@ -8,4 +7,5 @@ sphinxcontrib-svg2pdfconverter
|
|
|
8
7
|
# Pin packaging because it no longer handles 'latest' version, which
|
|
9
8
|
# is the version that is assigned to the docs.
|
|
10
9
|
# See https://github.com/pytest-dev/pytest/pull/10578#issuecomment-1348249045.
|
|
11
|
-
packaging
|
|
10
|
+
packaging
|
|
11
|
+
furo
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
# This plugin was not named "cache" to avoid conflicts with the external
|
|
5
5
|
# pytest-cache version.
|
|
6
6
|
import dataclasses
|
|
7
|
+
import errno
|
|
7
8
|
import json
|
|
8
9
|
import os
|
|
9
10
|
from pathlib import Path
|
|
@@ -227,14 +228,24 @@ class Cache:
|
|
|
227
228
|
with open(path.joinpath("CACHEDIR.TAG"), "xb") as f:
|
|
228
229
|
f.write(CACHEDIR_TAG_CONTENT)
|
|
229
230
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
231
|
+
try:
|
|
232
|
+
path.rename(self._cachedir)
|
|
233
|
+
except OSError as e:
|
|
234
|
+
# If 2 concurrent pytests both race to the rename, the loser
|
|
235
|
+
# gets "Directory not empty" from the rename. In this case,
|
|
236
|
+
# everything is handled so just continue (while letting the
|
|
237
|
+
# temporary directory be cleaned up).
|
|
238
|
+
if e.errno != errno.ENOTEMPTY:
|
|
239
|
+
raise
|
|
240
|
+
else:
|
|
241
|
+
# Create a directory in place of the one we just moved so that
|
|
242
|
+
# `TemporaryDirectory`'s cleanup doesn't complain.
|
|
243
|
+
#
|
|
244
|
+
# TODO: pass ignore_cleanup_errors=True when we no longer support python < 3.10.
|
|
245
|
+
# See https://github.com/python/cpython/issues/74168. Note that passing
|
|
246
|
+
# delete=False would do the wrong thing in case of errors and isn't supported
|
|
247
|
+
# until python 3.12.
|
|
248
|
+
path.mkdir()
|
|
238
249
|
|
|
239
250
|
|
|
240
251
|
class LFPluginCollWrapper:
|
|
@@ -23,6 +23,7 @@ from typing import List
|
|
|
23
23
|
from typing import MutableMapping
|
|
24
24
|
from typing import NoReturn
|
|
25
25
|
from typing import Optional
|
|
26
|
+
from typing import OrderedDict
|
|
26
27
|
from typing import overload
|
|
27
28
|
from typing import Sequence
|
|
28
29
|
from typing import Set
|
|
@@ -75,8 +76,6 @@ if sys.version_info < (3, 11):
|
|
|
75
76
|
|
|
76
77
|
|
|
77
78
|
if TYPE_CHECKING:
|
|
78
|
-
from typing import Deque
|
|
79
|
-
|
|
80
79
|
from _pytest.main import Session
|
|
81
80
|
from _pytest.python import CallSpec2
|
|
82
81
|
from _pytest.python import Function
|
|
@@ -207,16 +206,18 @@ def get_parametrized_fixture_keys(
|
|
|
207
206
|
|
|
208
207
|
def reorder_items(items: Sequence[nodes.Item]) -> List[nodes.Item]:
|
|
209
208
|
argkeys_cache: Dict[Scope, Dict[nodes.Item, Dict[FixtureArgKey, None]]] = {}
|
|
210
|
-
items_by_argkey: Dict[
|
|
209
|
+
items_by_argkey: Dict[
|
|
210
|
+
Scope, Dict[FixtureArgKey, OrderedDict[nodes.Item, None]]
|
|
211
|
+
] = {}
|
|
211
212
|
for scope in HIGH_SCOPES:
|
|
212
213
|
scoped_argkeys_cache = argkeys_cache[scope] = {}
|
|
213
|
-
scoped_items_by_argkey = items_by_argkey[scope] = defaultdict(
|
|
214
|
+
scoped_items_by_argkey = items_by_argkey[scope] = defaultdict(OrderedDict)
|
|
214
215
|
for item in items:
|
|
215
216
|
keys = dict.fromkeys(get_parametrized_fixture_keys(item, scope), None)
|
|
216
217
|
if keys:
|
|
217
218
|
scoped_argkeys_cache[item] = keys
|
|
218
219
|
for key in keys:
|
|
219
|
-
scoped_items_by_argkey[key]
|
|
220
|
+
scoped_items_by_argkey[key][item] = None
|
|
220
221
|
items_dict = dict.fromkeys(items, None)
|
|
221
222
|
return list(
|
|
222
223
|
reorder_items_atscope(items_dict, argkeys_cache, items_by_argkey, Scope.Session)
|
|
@@ -226,17 +227,19 @@ def reorder_items(items: Sequence[nodes.Item]) -> List[nodes.Item]:
|
|
|
226
227
|
def fix_cache_order(
|
|
227
228
|
item: nodes.Item,
|
|
228
229
|
argkeys_cache: Dict[Scope, Dict[nodes.Item, Dict[FixtureArgKey, None]]],
|
|
229
|
-
items_by_argkey: Dict[Scope, Dict[FixtureArgKey,
|
|
230
|
+
items_by_argkey: Dict[Scope, Dict[FixtureArgKey, OrderedDict[nodes.Item, None]]],
|
|
230
231
|
) -> None:
|
|
231
232
|
for scope in HIGH_SCOPES:
|
|
233
|
+
scoped_items_by_argkey = items_by_argkey[scope]
|
|
232
234
|
for key in argkeys_cache[scope].get(item, []):
|
|
233
|
-
|
|
235
|
+
scoped_items_by_argkey[key][item] = None
|
|
236
|
+
scoped_items_by_argkey[key].move_to_end(item, last=False)
|
|
234
237
|
|
|
235
238
|
|
|
236
239
|
def reorder_items_atscope(
|
|
237
240
|
items: Dict[nodes.Item, None],
|
|
238
241
|
argkeys_cache: Dict[Scope, Dict[nodes.Item, Dict[FixtureArgKey, None]]],
|
|
239
|
-
items_by_argkey: Dict[Scope, Dict[FixtureArgKey,
|
|
242
|
+
items_by_argkey: Dict[Scope, Dict[FixtureArgKey, OrderedDict[nodes.Item, None]]],
|
|
240
243
|
scope: Scope,
|
|
241
244
|
) -> Dict[nodes.Item, None]:
|
|
242
245
|
if scope is Scope.Function or len(items) < 3:
|
|
@@ -310,7 +310,12 @@ def pytest_collection_finish(session: "Session") -> None:
|
|
|
310
310
|
def pytest_ignore_collect(
|
|
311
311
|
collection_path: Path, path: "LEGACY_PATH", config: "Config"
|
|
312
312
|
) -> Optional[bool]:
|
|
313
|
-
"""Return True to
|
|
313
|
+
"""Return ``True`` to ignore this path for collection.
|
|
314
|
+
|
|
315
|
+
Return ``None`` to let other plugins ignore the path for collection.
|
|
316
|
+
|
|
317
|
+
Returning ``False`` will forcefully *not* ignore this path for collection,
|
|
318
|
+
without giving a chance for other plugins to ignore this path.
|
|
314
319
|
|
|
315
320
|
This hook is consulted for all files and directories prior to calling
|
|
316
321
|
more specific hooks.
|
|
@@ -212,11 +212,12 @@ class TestCaseFunction(Function):
|
|
|
212
212
|
super().setup()
|
|
213
213
|
|
|
214
214
|
def teardown(self) -> None:
|
|
215
|
-
super().teardown()
|
|
216
215
|
if self._explicit_tearDown is not None:
|
|
217
216
|
self._explicit_tearDown()
|
|
218
217
|
self._explicit_tearDown = None
|
|
219
218
|
self._obj = None
|
|
219
|
+
self._instance = None
|
|
220
|
+
super().teardown()
|
|
220
221
|
|
|
221
222
|
def startTest(self, testcase: "unittest.TestCase") -> None:
|
|
222
223
|
pass
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pytest
|
|
3
|
-
Version: 8.2.
|
|
3
|
+
Version: 8.2.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
|
|
@@ -67,12 +67,14 @@ doc/en/sponsor.rst
|
|
|
67
67
|
doc/en/talks.rst
|
|
68
68
|
doc/en/tidelift.rst
|
|
69
69
|
doc/en/yieldfixture.rst
|
|
70
|
+
doc/en/_static/pytest1.png
|
|
70
71
|
doc/en/_templates/globaltoc.html
|
|
71
72
|
doc/en/_templates/layout.html
|
|
72
73
|
doc/en/_templates/links.html
|
|
73
74
|
doc/en/_templates/relations.html
|
|
74
75
|
doc/en/_templates/sidebarintro.html
|
|
75
|
-
doc/en/_templates/
|
|
76
|
+
doc/en/_templates/style.html
|
|
77
|
+
doc/en/_templates/sidebar/brand.html
|
|
76
78
|
doc/en/announce/index.rst
|
|
77
79
|
doc/en/announce/release-2.0.0.rst
|
|
78
80
|
doc/en/announce/release-2.0.1.rst
|
|
@@ -244,6 +246,7 @@ doc/en/announce/release-8.1.1.rst
|
|
|
244
246
|
doc/en/announce/release-8.1.2.rst
|
|
245
247
|
doc/en/announce/release-8.2.0.rst
|
|
246
248
|
doc/en/announce/release-8.2.1.rst
|
|
249
|
+
doc/en/announce/release-8.2.2.rst
|
|
247
250
|
doc/en/announce/sprint2016.rst
|
|
248
251
|
doc/en/example/attic.rst
|
|
249
252
|
doc/en/example/conftest.py
|
|
@@ -326,7 +329,6 @@ doc/en/img/gaynor3.png
|
|
|
326
329
|
doc/en/img/keleshev.png
|
|
327
330
|
doc/en/img/pullrequest.png
|
|
328
331
|
doc/en/img/pylib.png
|
|
329
|
-
doc/en/img/pytest1.png
|
|
330
332
|
doc/en/img/pytest_logo_curves.svg
|
|
331
333
|
doc/en/img/theuni.png
|
|
332
334
|
doc/en/proposals/parametrize_with_fixtures.rst
|
|
@@ -2219,6 +2219,25 @@ class TestAutouseManagement:
|
|
|
2219
2219
|
reprec = pytester.inline_run("-s")
|
|
2220
2220
|
reprec.assertoutcome(passed=2)
|
|
2221
2221
|
|
|
2222
|
+
def test_reordering_catastrophic_performance(self, pytester: Pytester) -> None:
|
|
2223
|
+
"""Check that a certain high-scope parametrization pattern doesn't cause
|
|
2224
|
+
a catasrophic slowdown.
|
|
2225
|
+
|
|
2226
|
+
Regression test for #12355.
|
|
2227
|
+
"""
|
|
2228
|
+
pytester.makepyfile("""
|
|
2229
|
+
import pytest
|
|
2230
|
+
|
|
2231
|
+
params = tuple("abcdefghijklmnopqrstuvwxyz")
|
|
2232
|
+
@pytest.mark.parametrize(params, [range(len(params))] * 3, scope="module")
|
|
2233
|
+
def test_parametrize(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z):
|
|
2234
|
+
pass
|
|
2235
|
+
""")
|
|
2236
|
+
|
|
2237
|
+
result = pytester.runpytest()
|
|
2238
|
+
|
|
2239
|
+
result.assert_outcomes(passed=3)
|
|
2240
|
+
|
|
2222
2241
|
|
|
2223
2242
|
class TestFixtureMarker:
|
|
2224
2243
|
def test_parametrize(self, pytester: Pytester) -> None:
|