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.
Files changed (617) hide show
  1. {pytest-8.4.0 → pytest-8.4.2}/.github/workflows/deploy.yml +5 -5
  2. {pytest-8.4.0 → pytest-8.4.2}/.github/workflows/test.yml +40 -3
  3. {pytest-8.4.0 → pytest-8.4.2}/AUTHORS +1 -0
  4. {pytest-8.4.0/src/pytest.egg-info → pytest-8.4.2}/PKG-INFO +1 -1
  5. {pytest-8.4.0 → pytest-8.4.2}/RELEASING.rst +0 -1
  6. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/index.rst +2 -0
  7. pytest-8.4.2/doc/en/announce/release-8.4.1.rst +21 -0
  8. pytest-8.4.2/doc/en/announce/release-8.4.2.rst +27 -0
  9. {pytest-8.4.0 → pytest-8.4.2}/doc/en/builtin.rst +2 -2
  10. {pytest-8.4.0 → pytest-8.4.2}/doc/en/changelog.rst +71 -0
  11. {pytest-8.4.0 → pytest-8.4.2}/doc/en/deprecations.rst +0 -40
  12. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/parametrize.rst +4 -4
  13. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/pythoncollection.rst +2 -2
  14. {pytest-8.4.0 → pytest-8.4.2}/doc/en/getting-started.rst +1 -1
  15. {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/assert.rst +44 -0
  16. {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/failures.rst +1 -1
  17. {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/fixtures.rst +1 -1
  18. {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/parametrize.rst +7 -0
  19. {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/plugins.rst +4 -1
  20. {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/writing_hook_functions.rst +6 -0
  21. {pytest-8.4.0 → pytest-8.4.2}/doc/en/index.rst +1 -1
  22. {pytest-8.4.0 → pytest-8.4.2}/doc/en/reference/reference.rst +3 -0
  23. {pytest-8.4.0 → pytest-8.4.2}/pyproject.toml +3 -0
  24. {pytest-8.4.0 → pytest-8.4.2}/scripts/prepare-release-pr.py +1 -0
  25. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/_version.py +16 -3
  26. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/capture.py +1 -1
  27. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/compat.py +32 -1
  28. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/config/argparsing.py +3 -1
  29. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/fixtures.py +3 -2
  30. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/nodes.py +1 -1
  31. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/pytester.py +8 -2
  32. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/python.py +7 -6
  33. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/python_api.py +21 -5
  34. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/raises.py +2 -2
  35. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/terminal.py +10 -5
  36. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/unittest.py +119 -36
  37. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/unraisableexception.py +10 -5
  38. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/warning_types.py +11 -0
  39. {pytest-8.4.0 → pytest-8.4.2}/src/pytest/__init__.py +2 -0
  40. {pytest-8.4.0 → pytest-8.4.2/src/pytest.egg-info}/PKG-INFO +1 -1
  41. {pytest-8.4.0 → pytest-8.4.2}/src/pytest.egg-info/SOURCES.txt +2 -0
  42. {pytest-8.4.0 → pytest-8.4.2}/testing/acceptance_test.py +2 -2
  43. {pytest-8.4.0 → pytest-8.4.2}/testing/conftest.py +12 -0
  44. {pytest-8.4.0 → pytest-8.4.2}/testing/python/approx.py +8 -2
  45. {pytest-8.4.0 → pytest-8.4.2}/testing/python/raises_group.py +1 -1
  46. {pytest-8.4.0 → pytest-8.4.2}/testing/test_collection.py +40 -0
  47. {pytest-8.4.0 → pytest-8.4.2}/testing/test_config.py +2 -1
  48. {pytest-8.4.0 → pytest-8.4.2}/testing/test_doctest.py +6 -3
  49. {pytest-8.4.0 → pytest-8.4.2}/testing/test_faulthandler.py +1 -0
  50. {pytest-8.4.0 → pytest-8.4.2}/testing/test_terminal.py +35 -0
  51. {pytest-8.4.0 → pytest-8.4.2}/testing/test_threadexception.py +1 -1
  52. {pytest-8.4.0 → pytest-8.4.2}/testing/test_unraisableexception.py +23 -28
  53. {pytest-8.4.0 → pytest-8.4.2}/testing/test_warnings.py +1 -0
  54. {pytest-8.4.0 → pytest-8.4.2}/tox.ini +15 -5
  55. {pytest-8.4.0 → pytest-8.4.2}/.coveragerc +0 -0
  56. {pytest-8.4.0 → pytest-8.4.2}/.git-blame-ignore-revs +0 -0
  57. {pytest-8.4.0 → pytest-8.4.2}/.gitattributes +0 -0
  58. {pytest-8.4.0 → pytest-8.4.2}/.github/FUNDING.yml +0 -0
  59. {pytest-8.4.0 → pytest-8.4.2}/.github/ISSUE_TEMPLATE/1_bug_report.md +0 -0
  60. {pytest-8.4.0 → pytest-8.4.2}/.github/ISSUE_TEMPLATE/2_feature_request.md +0 -0
  61. {pytest-8.4.0 → pytest-8.4.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  62. {pytest-8.4.0 → pytest-8.4.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  63. {pytest-8.4.0 → pytest-8.4.2}/.github/chronographer.yml +0 -0
  64. {pytest-8.4.0 → pytest-8.4.2}/.github/config.yml +0 -0
  65. {pytest-8.4.0 → pytest-8.4.2}/.github/dependabot.yml +0 -0
  66. {pytest-8.4.0 → pytest-8.4.2}/.github/labels.toml +0 -0
  67. {pytest-8.4.0 → pytest-8.4.2}/.github/patchback.yml +0 -0
  68. {pytest-8.4.0 → pytest-8.4.2}/.github/workflows/prepare-release-pr.yml +0 -0
  69. {pytest-8.4.0 → pytest-8.4.2}/.github/workflows/stale.yml +0 -0
  70. {pytest-8.4.0 → pytest-8.4.2}/.github/workflows/update-plugin-list.yml +0 -0
  71. {pytest-8.4.0 → pytest-8.4.2}/.gitignore +0 -0
  72. {pytest-8.4.0 → pytest-8.4.2}/.pre-commit-config.yaml +0 -0
  73. {pytest-8.4.0 → pytest-8.4.2}/.readthedocs.yaml +0 -0
  74. {pytest-8.4.0 → pytest-8.4.2}/CHANGELOG.rst +0 -0
  75. {pytest-8.4.0 → pytest-8.4.2}/CITATION +0 -0
  76. {pytest-8.4.0 → pytest-8.4.2}/CODE_OF_CONDUCT.md +0 -0
  77. {pytest-8.4.0 → pytest-8.4.2}/CONTRIBUTING.rst +0 -0
  78. {pytest-8.4.0 → pytest-8.4.2}/LICENSE +0 -0
  79. {pytest-8.4.0 → pytest-8.4.2}/OPENCOLLECTIVE.rst +0 -0
  80. {pytest-8.4.0 → pytest-8.4.2}/README.rst +0 -0
  81. {pytest-8.4.0 → pytest-8.4.2}/TIDELIFT.rst +0 -0
  82. {pytest-8.4.0 → pytest-8.4.2}/bench/bench.py +0 -0
  83. {pytest-8.4.0 → pytest-8.4.2}/bench/bench_argcomplete.py +0 -0
  84. {pytest-8.4.0 → pytest-8.4.2}/bench/empty.py +0 -0
  85. {pytest-8.4.0 → pytest-8.4.2}/bench/manyparam.py +0 -0
  86. {pytest-8.4.0 → pytest-8.4.2}/bench/skip.py +0 -0
  87. {pytest-8.4.0 → pytest-8.4.2}/bench/unit_test.py +0 -0
  88. {pytest-8.4.0 → pytest-8.4.2}/bench/xunit.py +0 -0
  89. {pytest-8.4.0 → pytest-8.4.2}/changelog/.gitignore +0 -0
  90. {pytest-8.4.0 → pytest-8.4.2}/changelog/README.rst +0 -0
  91. {pytest-8.4.0 → pytest-8.4.2}/changelog/_template.rst +0 -0
  92. {pytest-8.4.0 → pytest-8.4.2}/codecov.yml +0 -0
  93. {pytest-8.4.0 → pytest-8.4.2}/doc/en/Makefile +0 -0
  94. {pytest-8.4.0 → pytest-8.4.2}/doc/en/_static/pytest-custom.css +0 -0
  95. {pytest-8.4.0 → pytest-8.4.2}/doc/en/_static/pytest1.png +0 -0
  96. {pytest-8.4.0 → pytest-8.4.2}/doc/en/_templates/links.html +0 -0
  97. {pytest-8.4.0 → pytest-8.4.2}/doc/en/adopt.rst +0 -0
  98. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.0.0.rst +0 -0
  99. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.0.1.rst +0 -0
  100. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.0.2.rst +0 -0
  101. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.0.3.rst +0 -0
  102. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.1.0.rst +0 -0
  103. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.1.1.rst +0 -0
  104. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.1.2.rst +0 -0
  105. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.1.3.rst +0 -0
  106. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.2.0.rst +0 -0
  107. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.2.1.rst +0 -0
  108. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.2.2.rst +0 -0
  109. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.2.4.rst +0 -0
  110. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.3.0.rst +0 -0
  111. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.3.1.rst +0 -0
  112. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.3.2.rst +0 -0
  113. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.3.3.rst +0 -0
  114. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.3.4.rst +0 -0
  115. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.3.5.rst +0 -0
  116. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.4.0.rst +0 -0
  117. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.4.1.rst +0 -0
  118. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.4.2.rst +0 -0
  119. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.5.0.rst +0 -0
  120. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.5.1.rst +0 -0
  121. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.5.2.rst +0 -0
  122. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.6.0.rst +0 -0
  123. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.6.1.rst +0 -0
  124. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.6.2.rst +0 -0
  125. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.6.3.rst +0 -0
  126. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.7.0.rst +0 -0
  127. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.7.1.rst +0 -0
  128. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.7.2.rst +0 -0
  129. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.8.2.rst +0 -0
  130. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.8.3.rst +0 -0
  131. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.8.4.rst +0 -0
  132. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.8.5.rst +0 -0
  133. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.8.6.rst +0 -0
  134. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.8.7.rst +0 -0
  135. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.9.0.rst +0 -0
  136. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.9.1.rst +0 -0
  137. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-2.9.2.rst +0 -0
  138. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.0.0.rst +0 -0
  139. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.0.1.rst +0 -0
  140. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.0.2.rst +0 -0
  141. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.0.3.rst +0 -0
  142. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.0.4.rst +0 -0
  143. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.0.5.rst +0 -0
  144. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.0.6.rst +0 -0
  145. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.0.7.rst +0 -0
  146. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.1.0.rst +0 -0
  147. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.1.1.rst +0 -0
  148. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.1.2.rst +0 -0
  149. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.1.3.rst +0 -0
  150. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.10.0.rst +0 -0
  151. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.10.1.rst +0 -0
  152. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.2.0.rst +0 -0
  153. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.2.1.rst +0 -0
  154. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.2.2.rst +0 -0
  155. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.2.3.rst +0 -0
  156. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.2.4.rst +0 -0
  157. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.2.5.rst +0 -0
  158. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.3.0.rst +0 -0
  159. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.3.1.rst +0 -0
  160. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.3.2.rst +0 -0
  161. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.4.0.rst +0 -0
  162. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.4.1.rst +0 -0
  163. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.4.2.rst +0 -0
  164. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.5.0.rst +0 -0
  165. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.5.1.rst +0 -0
  166. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.6.0.rst +0 -0
  167. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.6.1.rst +0 -0
  168. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.6.2.rst +0 -0
  169. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.6.3.rst +0 -0
  170. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.6.4.rst +0 -0
  171. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.7.0.rst +0 -0
  172. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.7.1.rst +0 -0
  173. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.7.2.rst +0 -0
  174. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.7.3.rst +0 -0
  175. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.7.4.rst +0 -0
  176. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.8.0.rst +0 -0
  177. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.8.1.rst +0 -0
  178. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.8.2.rst +0 -0
  179. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.9.0.rst +0 -0
  180. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.9.1.rst +0 -0
  181. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.9.2.rst +0 -0
  182. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-3.9.3.rst +0 -0
  183. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.0.0.rst +0 -0
  184. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.0.1.rst +0 -0
  185. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.0.2.rst +0 -0
  186. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.1.0.rst +0 -0
  187. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.1.1.rst +0 -0
  188. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.2.0.rst +0 -0
  189. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.2.1.rst +0 -0
  190. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.3.0.rst +0 -0
  191. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.3.1.rst +0 -0
  192. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.4.0.rst +0 -0
  193. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.4.1.rst +0 -0
  194. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.4.2.rst +0 -0
  195. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.5.0.rst +0 -0
  196. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.6.0.rst +0 -0
  197. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.6.1.rst +0 -0
  198. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.6.2.rst +0 -0
  199. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.6.3.rst +0 -0
  200. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.6.4.rst +0 -0
  201. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.6.5.rst +0 -0
  202. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.6.6.rst +0 -0
  203. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.6.7.rst +0 -0
  204. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.6.8.rst +0 -0
  205. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-4.6.9.rst +0 -0
  206. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.0.0.rst +0 -0
  207. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.0.1.rst +0 -0
  208. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.1.0.rst +0 -0
  209. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.1.1.rst +0 -0
  210. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.1.2.rst +0 -0
  211. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.1.3.rst +0 -0
  212. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.2.0.rst +0 -0
  213. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.2.1.rst +0 -0
  214. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.2.2.rst +0 -0
  215. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.2.3.rst +0 -0
  216. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.2.4.rst +0 -0
  217. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.3.0.rst +0 -0
  218. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.3.1.rst +0 -0
  219. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.3.2.rst +0 -0
  220. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.3.3.rst +0 -0
  221. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.3.4.rst +0 -0
  222. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.3.5.rst +0 -0
  223. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.4.0.rst +0 -0
  224. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.4.1.rst +0 -0
  225. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.4.2.rst +0 -0
  226. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-5.4.3.rst +0 -0
  227. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-6.0.0.rst +0 -0
  228. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-6.0.0rc1.rst +0 -0
  229. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-6.0.1.rst +0 -0
  230. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-6.0.2.rst +0 -0
  231. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-6.1.0.rst +0 -0
  232. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-6.1.1.rst +0 -0
  233. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-6.1.2.rst +0 -0
  234. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-6.2.0.rst +0 -0
  235. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-6.2.1.rst +0 -0
  236. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-6.2.2.rst +0 -0
  237. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-6.2.3.rst +0 -0
  238. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-6.2.4.rst +0 -0
  239. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-6.2.5.rst +0 -0
  240. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.0.0.rst +0 -0
  241. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.0.0rc1.rst +0 -0
  242. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.0.1.rst +0 -0
  243. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.1.0.rst +0 -0
  244. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.1.1.rst +0 -0
  245. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.1.2.rst +0 -0
  246. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.1.3.rst +0 -0
  247. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.2.0.rst +0 -0
  248. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.2.1.rst +0 -0
  249. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.2.2.rst +0 -0
  250. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.3.0.rst +0 -0
  251. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.3.1.rst +0 -0
  252. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.3.2.rst +0 -0
  253. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.4.0.rst +0 -0
  254. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.4.1.rst +0 -0
  255. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.4.2.rst +0 -0
  256. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.4.3.rst +0 -0
  257. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-7.4.4.rst +0 -0
  258. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.0.0.rst +0 -0
  259. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.0.0rc1.rst +0 -0
  260. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.0.0rc2.rst +0 -0
  261. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.0.1.rst +0 -0
  262. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.0.2.rst +0 -0
  263. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.1.0.rst +0 -0
  264. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.1.1.rst +0 -0
  265. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.1.2.rst +0 -0
  266. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.2.0.rst +0 -0
  267. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.2.1.rst +0 -0
  268. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.2.2.rst +0 -0
  269. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.3.0.rst +0 -0
  270. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.3.1.rst +0 -0
  271. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.3.2.rst +0 -0
  272. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.3.3.rst +0 -0
  273. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.3.4.rst +0 -0
  274. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.3.5.rst +0 -0
  275. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/release-8.4.0.rst +0 -0
  276. {pytest-8.4.0 → pytest-8.4.2}/doc/en/announce/sprint2016.rst +0 -0
  277. {pytest-8.4.0 → pytest-8.4.2}/doc/en/backwards-compatibility.rst +0 -0
  278. {pytest-8.4.0 → pytest-8.4.2}/doc/en/broken-dep-constraints.txt +0 -0
  279. {pytest-8.4.0 → pytest-8.4.2}/doc/en/conf.py +0 -0
  280. {pytest-8.4.0 → pytest-8.4.2}/doc/en/conftest.py +0 -0
  281. {pytest-8.4.0 → pytest-8.4.2}/doc/en/contact.rst +0 -0
  282. {pytest-8.4.0 → pytest-8.4.2}/doc/en/contents.rst +0 -0
  283. {pytest-8.4.0 → pytest-8.4.2}/doc/en/contributing.rst +0 -0
  284. {pytest-8.4.0 → pytest-8.4.2}/doc/en/development_guide.rst +0 -0
  285. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/assertion/failure_demo.py +0 -0
  286. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/assertion/global_testmodule_config/conftest.py +0 -0
  287. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/assertion/global_testmodule_config/test_hello_world.py +0 -0
  288. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/assertion/test_failures.py +0 -0
  289. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/assertion/test_setup_flow_example.py +0 -0
  290. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/attic.rst +0 -0
  291. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/conftest.py +0 -0
  292. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/customdirectory/conftest.py +0 -0
  293. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/customdirectory/pytest.ini +0 -0
  294. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/customdirectory/tests/manifest.json +0 -0
  295. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/customdirectory/tests/test_first.py +0 -0
  296. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/customdirectory/tests/test_second.py +0 -0
  297. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/customdirectory/tests/test_third.py +0 -0
  298. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/customdirectory.rst +0 -0
  299. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/fixture_availability.svg +0 -0
  300. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/fixture_availability_plugins.svg +0 -0
  301. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_autouse.py +0 -0
  302. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_autouse.svg +0 -0
  303. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_autouse_flat.svg +0 -0
  304. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_autouse_multiple_scopes.py +0 -0
  305. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_autouse_multiple_scopes.svg +0 -0
  306. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_autouse_temp_effects.py +0 -0
  307. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_autouse_temp_effects.svg +0 -0
  308. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_dependencies.py +0 -0
  309. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_dependencies.svg +0 -0
  310. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_dependencies_flat.svg +0 -0
  311. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_dependencies_unclear.svg +0 -0
  312. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_scope.py +0 -0
  313. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_scope.svg +0 -0
  314. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_request_different_scope.py +0 -0
  315. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_request_different_scope.svg +0 -0
  316. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/index.rst +0 -0
  317. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/markers.rst +0 -0
  318. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/multipython.py +0 -0
  319. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/nonpython/__init__.py +0 -0
  320. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/nonpython/conftest.py +0 -0
  321. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/nonpython/test_simple.yaml +0 -0
  322. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/nonpython.rst +0 -0
  323. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/pythoncollection.py +0 -0
  324. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/reportingdemo.rst +0 -0
  325. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/simple.rst +0 -0
  326. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/special.rst +0 -0
  327. {pytest-8.4.0 → pytest-8.4.2}/doc/en/example/xfail_demo.py +0 -0
  328. {pytest-8.4.0 → pytest-8.4.2}/doc/en/explanation/anatomy.rst +0 -0
  329. {pytest-8.4.0 → pytest-8.4.2}/doc/en/explanation/ci.rst +0 -0
  330. {pytest-8.4.0 → pytest-8.4.2}/doc/en/explanation/fixtures.rst +0 -0
  331. {pytest-8.4.0 → pytest-8.4.2}/doc/en/explanation/flaky.rst +0 -0
  332. {pytest-8.4.0 → pytest-8.4.2}/doc/en/explanation/goodpractices.rst +0 -0
  333. {pytest-8.4.0 → pytest-8.4.2}/doc/en/explanation/index.rst +0 -0
  334. {pytest-8.4.0 → pytest-8.4.2}/doc/en/explanation/pythonpath.rst +0 -0
  335. {pytest-8.4.0 → pytest-8.4.2}/doc/en/explanation/types.rst +0 -0
  336. {pytest-8.4.0 → pytest-8.4.2}/doc/en/funcarg_compare.rst +0 -0
  337. {pytest-8.4.0 → pytest-8.4.2}/doc/en/funcargs.rst +0 -0
  338. {pytest-8.4.0 → pytest-8.4.2}/doc/en/historical-notes.rst +0 -0
  339. {pytest-8.4.0 → pytest-8.4.2}/doc/en/history.rst +0 -0
  340. {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/bash-completion.rst +0 -0
  341. {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/cache.rst +0 -0
  342. {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/capture-stdout-stderr.rst +0 -0
  343. {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/capture-warnings.rst +0 -0
  344. {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/doctest.rst +0 -0
  345. {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/existingtestsuite.rst +0 -0
  346. {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/index.rst +0 -0
  347. {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/logging.rst +0 -0
  348. {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/mark.rst +0 -0
  349. {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/monkeypatch.rst +0 -0
  350. {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/output.rst +0 -0
  351. {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/skipping.rst +0 -0
  352. {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/tmp_path.rst +0 -0
  353. {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/unittest.rst +0 -0
  354. {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/usage.rst +0 -0
  355. {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/writing_plugins.rst +0 -0
  356. {pytest-8.4.0 → pytest-8.4.2}/doc/en/how-to/xunit_setup.rst +0 -0
  357. {pytest-8.4.0 → pytest-8.4.2}/doc/en/img/cramer2.png +0 -0
  358. {pytest-8.4.0 → pytest-8.4.2}/doc/en/img/favicon.png +0 -0
  359. {pytest-8.4.0 → pytest-8.4.2}/doc/en/img/freiburg2.jpg +0 -0
  360. {pytest-8.4.0 → pytest-8.4.2}/doc/en/img/gaynor3.png +0 -0
  361. {pytest-8.4.0 → pytest-8.4.2}/doc/en/img/keleshev.png +0 -0
  362. {pytest-8.4.0 → pytest-8.4.2}/doc/en/img/pullrequest.png +0 -0
  363. {pytest-8.4.0 → pytest-8.4.2}/doc/en/img/pylib.png +0 -0
  364. {pytest-8.4.0 → pytest-8.4.2}/doc/en/img/pytest_logo_curves.svg +0 -0
  365. {pytest-8.4.0 → pytest-8.4.2}/doc/en/img/theuni.png +0 -0
  366. {pytest-8.4.0 → pytest-8.4.2}/doc/en/license.rst +0 -0
  367. {pytest-8.4.0 → pytest-8.4.2}/doc/en/naming20.rst +0 -0
  368. {pytest-8.4.0 → pytest-8.4.2}/doc/en/proposals/parametrize_with_fixtures.rst +0 -0
  369. {pytest-8.4.0 → pytest-8.4.2}/doc/en/pytest.ini +0 -0
  370. {pytest-8.4.0 → pytest-8.4.2}/doc/en/recwarn.rst +0 -0
  371. {pytest-8.4.0 → pytest-8.4.2}/doc/en/reference/customize.rst +0 -0
  372. {pytest-8.4.0 → pytest-8.4.2}/doc/en/reference/exit-codes.rst +0 -0
  373. {pytest-8.4.0 → pytest-8.4.2}/doc/en/reference/fixtures.rst +0 -0
  374. {pytest-8.4.0 → pytest-8.4.2}/doc/en/reference/index.rst +0 -0
  375. {pytest-8.4.0 → pytest-8.4.2}/doc/en/reference/plugin_list.rst +0 -0
  376. {pytest-8.4.0 → pytest-8.4.2}/doc/en/requirements.txt +0 -0
  377. {pytest-8.4.0 → pytest-8.4.2}/doc/en/sponsor.rst +0 -0
  378. {pytest-8.4.0 → pytest-8.4.2}/doc/en/talks.rst +0 -0
  379. {pytest-8.4.0 → pytest-8.4.2}/doc/en/tidelift.rst +0 -0
  380. {pytest-8.4.0 → pytest-8.4.2}/doc/en/yieldfixture.rst +0 -0
  381. {pytest-8.4.0 → pytest-8.4.2}/extra/get_issues.py +0 -0
  382. {pytest-8.4.0 → pytest-8.4.2}/scripts/.gitignore +0 -0
  383. {pytest-8.4.0 → pytest-8.4.2}/scripts/generate-gh-release-notes.py +0 -0
  384. {pytest-8.4.0 → pytest-8.4.2}/scripts/release.major.rst +0 -0
  385. {pytest-8.4.0 → pytest-8.4.2}/scripts/release.minor.rst +0 -0
  386. {pytest-8.4.0 → pytest-8.4.2}/scripts/release.patch.rst +0 -0
  387. {pytest-8.4.0 → pytest-8.4.2}/scripts/release.pre.rst +0 -0
  388. {pytest-8.4.0 → pytest-8.4.2}/scripts/release.py +0 -0
  389. {pytest-8.4.0 → pytest-8.4.2}/scripts/update-plugin-list.py +0 -0
  390. {pytest-8.4.0 → pytest-8.4.2}/setup.cfg +0 -0
  391. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/__init__.py +0 -0
  392. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/_argcomplete.py +0 -0
  393. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/_code/__init__.py +0 -0
  394. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/_code/code.py +0 -0
  395. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/_code/source.py +0 -0
  396. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/_io/__init__.py +0 -0
  397. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/_io/pprint.py +0 -0
  398. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/_io/saferepr.py +0 -0
  399. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/_io/terminalwriter.py +0 -0
  400. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/_io/wcwidth.py +0 -0
  401. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/_py/__init__.py +0 -0
  402. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/_py/error.py +0 -0
  403. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/_py/path.py +0 -0
  404. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/assertion/__init__.py +0 -0
  405. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/assertion/rewrite.py +0 -0
  406. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/assertion/truncate.py +0 -0
  407. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/assertion/util.py +0 -0
  408. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/cacheprovider.py +0 -0
  409. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/config/__init__.py +0 -0
  410. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/config/compat.py +0 -0
  411. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/config/exceptions.py +0 -0
  412. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/config/findpaths.py +0 -0
  413. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/debugging.py +0 -0
  414. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/deprecated.py +0 -0
  415. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/doctest.py +0 -0
  416. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/faulthandler.py +0 -0
  417. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/freeze_support.py +0 -0
  418. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/helpconfig.py +0 -0
  419. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/hookspec.py +0 -0
  420. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/junitxml.py +0 -0
  421. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/legacypath.py +0 -0
  422. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/logging.py +0 -0
  423. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/main.py +0 -0
  424. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/mark/__init__.py +0 -0
  425. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/mark/expression.py +0 -0
  426. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/mark/structures.py +0 -0
  427. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/monkeypatch.py +0 -0
  428. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/outcomes.py +0 -0
  429. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/pastebin.py +0 -0
  430. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/pathlib.py +0 -0
  431. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/py.typed +0 -0
  432. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/pytester_assertions.py +0 -0
  433. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/recwarn.py +0 -0
  434. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/reports.py +0 -0
  435. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/runner.py +0 -0
  436. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/scope.py +0 -0
  437. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/setuponly.py +0 -0
  438. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/setupplan.py +0 -0
  439. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/skipping.py +0 -0
  440. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/stash.py +0 -0
  441. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/stepwise.py +0 -0
  442. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/threadexception.py +0 -0
  443. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/timing.py +0 -0
  444. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/tmpdir.py +0 -0
  445. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/tracemalloc.py +0 -0
  446. {pytest-8.4.0 → pytest-8.4.2}/src/_pytest/warnings.py +0 -0
  447. {pytest-8.4.0 → pytest-8.4.2}/src/py.py +0 -0
  448. {pytest-8.4.0 → pytest-8.4.2}/src/pytest/__main__.py +0 -0
  449. {pytest-8.4.0 → pytest-8.4.2}/src/pytest/py.typed +0 -0
  450. {pytest-8.4.0 → pytest-8.4.2}/src/pytest.egg-info/dependency_links.txt +0 -0
  451. {pytest-8.4.0 → pytest-8.4.2}/src/pytest.egg-info/entry_points.txt +0 -0
  452. {pytest-8.4.0 → pytest-8.4.2}/src/pytest.egg-info/requires.txt +0 -0
  453. {pytest-8.4.0 → pytest-8.4.2}/src/pytest.egg-info/top_level.txt +0 -0
  454. {pytest-8.4.0 → pytest-8.4.2}/testing/_py/test_local.py +0 -0
  455. {pytest-8.4.0 → pytest-8.4.2}/testing/code/test_code.py +0 -0
  456. {pytest-8.4.0 → pytest-8.4.2}/testing/code/test_excinfo.py +0 -0
  457. {pytest-8.4.0 → pytest-8.4.2}/testing/code/test_source.py +0 -0
  458. {pytest-8.4.0 → pytest-8.4.2}/testing/deprecated_test.py +0 -0
  459. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/README.rst +0 -0
  460. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/__init__.py +0 -0
  461. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/acceptance/fixture_mock_integration.py +0 -0
  462. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/collect/collect_init_tests/pytest.ini +0 -0
  463. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/collect/collect_init_tests/tests/__init__.py +0 -0
  464. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/collect/collect_init_tests/tests/test_foo.py +0 -0
  465. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/collect/package_infinite_recursion/__init__.pyi +0 -0
  466. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/collect/package_infinite_recursion/conftest.py +0 -0
  467. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/collect/package_infinite_recursion/tests/__init__.py +0 -0
  468. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/collect/package_infinite_recursion/tests/test_basic.py +0 -0
  469. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/collect/package_init_given_as_arg/pkg/__init__.py +0 -0
  470. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/collect/package_init_given_as_arg/pkg/test_foo.py +0 -0
  471. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/config/collect_pytest_prefix/__init__.pyi +0 -0
  472. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/config/collect_pytest_prefix/conftest.py +0 -0
  473. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/config/collect_pytest_prefix/test_foo.py +0 -0
  474. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/conftest_usageerror/__init__.pyi +0 -0
  475. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/conftest_usageerror/conftest.py +0 -0
  476. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/customdirectory/conftest.py +0 -0
  477. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/customdirectory/pytest.ini +0 -0
  478. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/customdirectory/tests/manifest.json +0 -0
  479. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/customdirectory/tests/test_first.py +0 -0
  480. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/customdirectory/tests/test_second.py +0 -0
  481. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/customdirectory/tests/test_third.py +0 -0
  482. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/dataclasses/test_compare_dataclasses.py +0 -0
  483. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/dataclasses/test_compare_dataclasses_field_comparison_off.py +0 -0
  484. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/dataclasses/test_compare_dataclasses_verbose.py +0 -0
  485. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/dataclasses/test_compare_dataclasses_with_custom_eq.py +0 -0
  486. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/dataclasses/test_compare_initvar.py +0 -0
  487. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/dataclasses/test_compare_recursive_dataclasses.py +0 -0
  488. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/dataclasses/test_compare_two_different_dataclasses.py +0 -0
  489. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/doctest/main_py/__main__.py +0 -0
  490. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/doctest/main_py/test_normal_module.py +0 -0
  491. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/custom_item/__init__.pyi +0 -0
  492. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/custom_item/conftest.py +0 -0
  493. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/custom_item/foo/__init__.py +0 -0
  494. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/custom_item/foo/test_foo.py +0 -0
  495. {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
  496. {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
  497. {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
  498. {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
  499. {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
  500. {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
  501. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_detect_recursive_dependency_error.py +0 -0
  502. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/__init__.pyi +0 -0
  503. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/conftest.py +0 -0
  504. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/pkg/__init__.py +0 -0
  505. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/pkg/conftest.py +0 -0
  506. {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
  507. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_module/__init__.pyi +0 -0
  508. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_module/conftest.py +0 -0
  509. {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
  510. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_module_class.py +0 -0
  511. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_funcarg_basic.py +0 -0
  512. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_funcarg_lookup_classlevel.py +0 -0
  513. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_funcarg_lookup_modulelevel.py +0 -0
  514. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_funcarg_lookupfails.py +0 -0
  515. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/test_fixture_named_request.py +0 -0
  516. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/fixtures/test_getfixturevalue_dynamic.py +0 -0
  517. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/issue88_initial_file_multinodes/__init__.pyi +0 -0
  518. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/issue88_initial_file_multinodes/conftest.py +0 -0
  519. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/issue88_initial_file_multinodes/test_hello.py +0 -0
  520. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/issue_519.py +0 -0
  521. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/junit-10.xsd +0 -0
  522. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/marks/marks_considered_keywords/__init__.pyi +0 -0
  523. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/marks/marks_considered_keywords/conftest.py +0 -0
  524. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/marks/marks_considered_keywords/test_marks_as_keywords.py +0 -0
  525. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/perf_examples/collect_stats/.gitignore +0 -0
  526. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/perf_examples/collect_stats/generate_folders.py +0 -0
  527. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/perf_examples/collect_stats/template_test.py +0 -0
  528. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/pytest.ini +0 -0
  529. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/tmpdir/tmp_path_fixture.py +0 -0
  530. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/unittest/test_parametrized_fixture_error_message.py +0 -0
  531. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/unittest/test_setup_skip.py +0 -0
  532. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/unittest/test_setup_skip_class.py +0 -0
  533. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/unittest/test_setup_skip_module.py +0 -0
  534. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/unittest/test_unittest_asyncio.py +0 -0
  535. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/unittest/test_unittest_asynctest.py +0 -0
  536. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/unittest/test_unittest_plain_async.py +0 -0
  537. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/warnings/test_group_warnings_by_message.py +0 -0
  538. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/warnings/test_group_warnings_by_message_summary/test_1.py +0 -0
  539. {pytest-8.4.0 → pytest-8.4.2}/testing/example_scripts/warnings/test_group_warnings_by_message_summary/test_2.py +0 -0
  540. {pytest-8.4.0 → pytest-8.4.2}/testing/examples/test_issue519.py +0 -0
  541. {pytest-8.4.0 → pytest-8.4.2}/testing/freeze/.gitignore +0 -0
  542. {pytest-8.4.0 → pytest-8.4.2}/testing/freeze/create_executable.py +0 -0
  543. {pytest-8.4.0 → pytest-8.4.2}/testing/freeze/runtests_script.py +0 -0
  544. {pytest-8.4.0 → pytest-8.4.2}/testing/freeze/tests/test_doctest.txt +0 -0
  545. {pytest-8.4.0 → pytest-8.4.2}/testing/freeze/tests/test_trivial.py +0 -0
  546. {pytest-8.4.0 → pytest-8.4.2}/testing/freeze/tox_run.py +0 -0
  547. {pytest-8.4.0 → pytest-8.4.2}/testing/io/test_pprint.py +0 -0
  548. {pytest-8.4.0 → pytest-8.4.2}/testing/io/test_saferepr.py +0 -0
  549. {pytest-8.4.0 → pytest-8.4.2}/testing/io/test_terminalwriter.py +0 -0
  550. {pytest-8.4.0 → pytest-8.4.2}/testing/io/test_wcwidth.py +0 -0
  551. {pytest-8.4.0 → pytest-8.4.2}/testing/logging/test_fixture.py +0 -0
  552. {pytest-8.4.0 → pytest-8.4.2}/testing/logging/test_formatter.py +0 -0
  553. {pytest-8.4.0 → pytest-8.4.2}/testing/logging/test_reporting.py +0 -0
  554. {pytest-8.4.0 → pytest-8.4.2}/testing/plugins_integration/.gitignore +0 -0
  555. {pytest-8.4.0 → pytest-8.4.2}/testing/plugins_integration/README.rst +0 -0
  556. {pytest-8.4.0 → pytest-8.4.2}/testing/plugins_integration/bdd_wallet.feature +0 -0
  557. {pytest-8.4.0 → pytest-8.4.2}/testing/plugins_integration/bdd_wallet.py +0 -0
  558. {pytest-8.4.0 → pytest-8.4.2}/testing/plugins_integration/django_settings.py +0 -0
  559. {pytest-8.4.0 → pytest-8.4.2}/testing/plugins_integration/pytest.ini +0 -0
  560. {pytest-8.4.0 → pytest-8.4.2}/testing/plugins_integration/pytest_anyio_integration.py +0 -0
  561. {pytest-8.4.0 → pytest-8.4.2}/testing/plugins_integration/pytest_asyncio_integration.py +0 -0
  562. {pytest-8.4.0 → pytest-8.4.2}/testing/plugins_integration/pytest_mock_integration.py +0 -0
  563. {pytest-8.4.0 → pytest-8.4.2}/testing/plugins_integration/pytest_rerunfailures_integration.py +0 -0
  564. {pytest-8.4.0 → pytest-8.4.2}/testing/plugins_integration/pytest_trio_integration.py +0 -0
  565. {pytest-8.4.0 → pytest-8.4.2}/testing/plugins_integration/pytest_twisted_integration.py +0 -0
  566. {pytest-8.4.0 → pytest-8.4.2}/testing/plugins_integration/requirements.txt +0 -0
  567. {pytest-8.4.0 → pytest-8.4.2}/testing/plugins_integration/simple_integration.py +0 -0
  568. {pytest-8.4.0 → pytest-8.4.2}/testing/python/collect.py +0 -0
  569. {pytest-8.4.0 → pytest-8.4.2}/testing/python/fixtures.py +0 -0
  570. {pytest-8.4.0 → pytest-8.4.2}/testing/python/integration.py +0 -0
  571. {pytest-8.4.0 → pytest-8.4.2}/testing/python/metafunc.py +0 -0
  572. {pytest-8.4.0 → pytest-8.4.2}/testing/python/raises.py +0 -0
  573. {pytest-8.4.0 → pytest-8.4.2}/testing/python/show_fixtures_per_test.py +0 -0
  574. {pytest-8.4.0 → pytest-8.4.2}/testing/test_argcomplete.py +0 -0
  575. {pytest-8.4.0 → pytest-8.4.2}/testing/test_assertion.py +0 -0
  576. {pytest-8.4.0 → pytest-8.4.2}/testing/test_assertrewrite.py +0 -0
  577. {pytest-8.4.0 → pytest-8.4.2}/testing/test_cacheprovider.py +0 -0
  578. {pytest-8.4.0 → pytest-8.4.2}/testing/test_capture.py +0 -0
  579. {pytest-8.4.0 → pytest-8.4.2}/testing/test_collect_imported_tests.py +0 -0
  580. {pytest-8.4.0 → pytest-8.4.2}/testing/test_compat.py +0 -0
  581. {pytest-8.4.0 → pytest-8.4.2}/testing/test_conftest.py +0 -0
  582. {pytest-8.4.0 → pytest-8.4.2}/testing/test_debugging.py +0 -0
  583. {pytest-8.4.0 → pytest-8.4.2}/testing/test_entry_points.py +0 -0
  584. {pytest-8.4.0 → pytest-8.4.2}/testing/test_error_diffs.py +0 -0
  585. {pytest-8.4.0 → pytest-8.4.2}/testing/test_findpaths.py +0 -0
  586. {pytest-8.4.0 → pytest-8.4.2}/testing/test_helpconfig.py +0 -0
  587. {pytest-8.4.0 → pytest-8.4.2}/testing/test_junitxml.py +0 -0
  588. {pytest-8.4.0 → pytest-8.4.2}/testing/test_legacypath.py +0 -0
  589. {pytest-8.4.0 → pytest-8.4.2}/testing/test_link_resolve.py +0 -0
  590. {pytest-8.4.0 → pytest-8.4.2}/testing/test_main.py +0 -0
  591. {pytest-8.4.0 → pytest-8.4.2}/testing/test_mark.py +0 -0
  592. {pytest-8.4.0 → pytest-8.4.2}/testing/test_mark_expression.py +0 -0
  593. {pytest-8.4.0 → pytest-8.4.2}/testing/test_meta.py +0 -0
  594. {pytest-8.4.0 → pytest-8.4.2}/testing/test_monkeypatch.py +0 -0
  595. {pytest-8.4.0 → pytest-8.4.2}/testing/test_nodes.py +0 -0
  596. {pytest-8.4.0 → pytest-8.4.2}/testing/test_parseopt.py +0 -0
  597. {pytest-8.4.0 → pytest-8.4.2}/testing/test_pastebin.py +0 -0
  598. {pytest-8.4.0 → pytest-8.4.2}/testing/test_pathlib.py +0 -0
  599. {pytest-8.4.0 → pytest-8.4.2}/testing/test_pluginmanager.py +0 -0
  600. {pytest-8.4.0 → pytest-8.4.2}/testing/test_pytester.py +0 -0
  601. {pytest-8.4.0 → pytest-8.4.2}/testing/test_python_path.py +0 -0
  602. {pytest-8.4.0 → pytest-8.4.2}/testing/test_recwarn.py +0 -0
  603. {pytest-8.4.0 → pytest-8.4.2}/testing/test_reports.py +0 -0
  604. {pytest-8.4.0 → pytest-8.4.2}/testing/test_runner.py +0 -0
  605. {pytest-8.4.0 → pytest-8.4.2}/testing/test_runner_xunit.py +0 -0
  606. {pytest-8.4.0 → pytest-8.4.2}/testing/test_scope.py +0 -0
  607. {pytest-8.4.0 → pytest-8.4.2}/testing/test_session.py +0 -0
  608. {pytest-8.4.0 → pytest-8.4.2}/testing/test_setuponly.py +0 -0
  609. {pytest-8.4.0 → pytest-8.4.2}/testing/test_setupplan.py +0 -0
  610. {pytest-8.4.0 → pytest-8.4.2}/testing/test_skipping.py +0 -0
  611. {pytest-8.4.0 → pytest-8.4.2}/testing/test_stash.py +0 -0
  612. {pytest-8.4.0 → pytest-8.4.2}/testing/test_stepwise.py +0 -0
  613. {pytest-8.4.0 → pytest-8.4.2}/testing/test_tmpdir.py +0 -0
  614. {pytest-8.4.0 → pytest-8.4.2}/testing/test_unittest.py +0 -0
  615. {pytest-8.4.0 → pytest-8.4.2}/testing/test_warning_types.py +0 -0
  616. {pytest-8.4.0 → pytest-8.4.2}/testing/typing_checks.py +0 -0
  617. {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
- uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631
113
- with:
114
- body_path: scripts/latest-release-notes.md
115
- files: dist/*
116
- tag_name: ${{ github.event.inputs.version }}
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-unittestextras",
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
- - name: "windows-py39-unittestextras"
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-unittestextras"
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
@@ -261,6 +261,7 @@ Leonardus Chen
261
261
  Lev Maximov
262
262
  Levon Saldamli
263
263
  Lewis Cowles
264
+ Liam DeVoe
264
265
  Llandy Riveron Del Risco
265
266
  Loic Esteve
266
267
  lovetheguitar
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pytest
3
- Version: 8.4.0
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
 
@@ -6,6 +6,8 @@ Release announcements
6
6
  :maxdepth: 2
7
7
 
8
8
 
9
+ release-8.4.2
10
+ release-8.4.1
9
11
  release-8.4.0
10
12
  release-8.3.5
11
13
  release-8.3.4
@@ -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(capsys):
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:1424
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-207>
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-207>
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-207>
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-208>
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-208>
218
+ <Dir pythoncollection.rst-210>
219
219
  <Dir CWD>
220
220
  <Module pythoncollection.py>
221
221
  <Function test_function>
@@ -22,7 +22,7 @@ Install ``pytest``
22
22
  .. code-block:: bash
23
23
 
24
24
  $ pytest --version
25
- pytest 8.4.0
25
+ pytest 8.4.2
26
26
 
27
27
  .. _`simpletest`:
28
28
 
@@ -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 (not available on Windows).
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-228>
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 = --disable-plugin-autoload -p NAME,NAME2
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
- - `pytest - simple, rapid and fun testing with Python <https://ep2025.europython.eu/session/pytest-simple-rapid-and-fun-testing-with-python/>`_, at `EuroPython 2025 <https://ep2025.europython.eu/>`_, **July 14th** (3h), Prague, Czech Republic
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]
@@ -135,6 +135,7 @@ def prepare_release_pr(base_branch: str, is_major: bool, prerelease: str) -> Non
135
135
  f"--head={release_branch}",
136
136
  f"--title=Release {version}",
137
137
  f"--body={body}",
138
+ "--draft",
138
139
  ],
139
140
  check=True,
140
141
  )
@@ -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__ = ["__version__", "__version_tuple__", "version", "version_tuple"]
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.0'
21
- __version_tuple__ = version_tuple = (8, 4, 0)
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(capsys):
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 signature
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["string", "paths", "pathlist", "args", "linelist", "bool"]
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: