pytest 8.4.1__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.1 → pytest-8.4.2}/.github/workflows/deploy.yml +5 -5
  2. {pytest-8.4.1 → pytest-8.4.2}/AUTHORS +1 -0
  3. {pytest-8.4.1/src/pytest.egg-info → pytest-8.4.2}/PKG-INFO +1 -1
  4. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/index.rst +1 -0
  5. pytest-8.4.2/doc/en/announce/release-8.4.2.rst +27 -0
  6. {pytest-8.4.1 → pytest-8.4.2}/doc/en/builtin.rst +1 -1
  7. {pytest-8.4.1 → pytest-8.4.2}/doc/en/changelog.rst +43 -0
  8. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/parametrize.rst +3 -3
  9. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/pythoncollection.rst +2 -2
  10. {pytest-8.4.1 → pytest-8.4.2}/doc/en/getting-started.rst +1 -1
  11. {pytest-8.4.1 → pytest-8.4.2}/doc/en/how-to/fixtures.rst +1 -1
  12. {pytest-8.4.1 → pytest-8.4.2}/doc/en/how-to/parametrize.rst +7 -0
  13. {pytest-8.4.1 → pytest-8.4.2}/doc/en/how-to/writing_hook_functions.rst +6 -0
  14. {pytest-8.4.1 → pytest-8.4.2}/doc/en/index.rst +1 -1
  15. {pytest-8.4.1 → pytest-8.4.2}/pyproject.toml +3 -0
  16. {pytest-8.4.1 → pytest-8.4.2}/scripts/prepare-release-pr.py +1 -0
  17. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/_version.py +16 -3
  18. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/compat.py +12 -1
  19. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/config/argparsing.py +3 -1
  20. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/fixtures.py +3 -2
  21. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/nodes.py +1 -1
  22. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/python_api.py +21 -5
  23. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/raises.py +2 -2
  24. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/terminal.py +3 -1
  25. {pytest-8.4.1 → pytest-8.4.2/src/pytest.egg-info}/PKG-INFO +1 -1
  26. {pytest-8.4.1 → pytest-8.4.2}/src/pytest.egg-info/SOURCES.txt +1 -0
  27. {pytest-8.4.1 → pytest-8.4.2}/testing/conftest.py +12 -0
  28. {pytest-8.4.1 → pytest-8.4.2}/testing/python/approx.py +8 -2
  29. {pytest-8.4.1 → pytest-8.4.2}/testing/python/raises_group.py +1 -1
  30. {pytest-8.4.1 → pytest-8.4.2}/testing/test_collection.py +40 -0
  31. {pytest-8.4.1 → pytest-8.4.2}/testing/test_doctest.py +6 -3
  32. {pytest-8.4.1 → pytest-8.4.2}/testing/test_faulthandler.py +1 -0
  33. {pytest-8.4.1 → pytest-8.4.2}/testing/test_terminal.py +25 -0
  34. {pytest-8.4.1 → pytest-8.4.2}/testing/test_threadexception.py +1 -1
  35. {pytest-8.4.1 → pytest-8.4.2}/testing/test_warnings.py +1 -0
  36. {pytest-8.4.1 → pytest-8.4.2}/tox.ini +1 -0
  37. {pytest-8.4.1 → pytest-8.4.2}/.coveragerc +0 -0
  38. {pytest-8.4.1 → pytest-8.4.2}/.git-blame-ignore-revs +0 -0
  39. {pytest-8.4.1 → pytest-8.4.2}/.gitattributes +0 -0
  40. {pytest-8.4.1 → pytest-8.4.2}/.github/FUNDING.yml +0 -0
  41. {pytest-8.4.1 → pytest-8.4.2}/.github/ISSUE_TEMPLATE/1_bug_report.md +0 -0
  42. {pytest-8.4.1 → pytest-8.4.2}/.github/ISSUE_TEMPLATE/2_feature_request.md +0 -0
  43. {pytest-8.4.1 → pytest-8.4.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  44. {pytest-8.4.1 → pytest-8.4.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  45. {pytest-8.4.1 → pytest-8.4.2}/.github/chronographer.yml +0 -0
  46. {pytest-8.4.1 → pytest-8.4.2}/.github/config.yml +0 -0
  47. {pytest-8.4.1 → pytest-8.4.2}/.github/dependabot.yml +0 -0
  48. {pytest-8.4.1 → pytest-8.4.2}/.github/labels.toml +0 -0
  49. {pytest-8.4.1 → pytest-8.4.2}/.github/patchback.yml +0 -0
  50. {pytest-8.4.1 → pytest-8.4.2}/.github/workflows/prepare-release-pr.yml +0 -0
  51. {pytest-8.4.1 → pytest-8.4.2}/.github/workflows/stale.yml +0 -0
  52. {pytest-8.4.1 → pytest-8.4.2}/.github/workflows/test.yml +0 -0
  53. {pytest-8.4.1 → pytest-8.4.2}/.github/workflows/update-plugin-list.yml +0 -0
  54. {pytest-8.4.1 → pytest-8.4.2}/.gitignore +0 -0
  55. {pytest-8.4.1 → pytest-8.4.2}/.pre-commit-config.yaml +0 -0
  56. {pytest-8.4.1 → pytest-8.4.2}/.readthedocs.yaml +0 -0
  57. {pytest-8.4.1 → pytest-8.4.2}/CHANGELOG.rst +0 -0
  58. {pytest-8.4.1 → pytest-8.4.2}/CITATION +0 -0
  59. {pytest-8.4.1 → pytest-8.4.2}/CODE_OF_CONDUCT.md +0 -0
  60. {pytest-8.4.1 → pytest-8.4.2}/CONTRIBUTING.rst +0 -0
  61. {pytest-8.4.1 → pytest-8.4.2}/LICENSE +0 -0
  62. {pytest-8.4.1 → pytest-8.4.2}/OPENCOLLECTIVE.rst +0 -0
  63. {pytest-8.4.1 → pytest-8.4.2}/README.rst +0 -0
  64. {pytest-8.4.1 → pytest-8.4.2}/RELEASING.rst +0 -0
  65. {pytest-8.4.1 → pytest-8.4.2}/TIDELIFT.rst +0 -0
  66. {pytest-8.4.1 → pytest-8.4.2}/bench/bench.py +0 -0
  67. {pytest-8.4.1 → pytest-8.4.2}/bench/bench_argcomplete.py +0 -0
  68. {pytest-8.4.1 → pytest-8.4.2}/bench/empty.py +0 -0
  69. {pytest-8.4.1 → pytest-8.4.2}/bench/manyparam.py +0 -0
  70. {pytest-8.4.1 → pytest-8.4.2}/bench/skip.py +0 -0
  71. {pytest-8.4.1 → pytest-8.4.2}/bench/unit_test.py +0 -0
  72. {pytest-8.4.1 → pytest-8.4.2}/bench/xunit.py +0 -0
  73. {pytest-8.4.1 → pytest-8.4.2}/changelog/.gitignore +0 -0
  74. {pytest-8.4.1 → pytest-8.4.2}/changelog/README.rst +0 -0
  75. {pytest-8.4.1 → pytest-8.4.2}/changelog/_template.rst +0 -0
  76. {pytest-8.4.1 → pytest-8.4.2}/codecov.yml +0 -0
  77. {pytest-8.4.1 → pytest-8.4.2}/doc/en/Makefile +0 -0
  78. {pytest-8.4.1 → pytest-8.4.2}/doc/en/_static/pytest-custom.css +0 -0
  79. {pytest-8.4.1 → pytest-8.4.2}/doc/en/_static/pytest1.png +0 -0
  80. {pytest-8.4.1 → pytest-8.4.2}/doc/en/_templates/links.html +0 -0
  81. {pytest-8.4.1 → pytest-8.4.2}/doc/en/adopt.rst +0 -0
  82. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.0.0.rst +0 -0
  83. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.0.1.rst +0 -0
  84. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.0.2.rst +0 -0
  85. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.0.3.rst +0 -0
  86. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.1.0.rst +0 -0
  87. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.1.1.rst +0 -0
  88. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.1.2.rst +0 -0
  89. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.1.3.rst +0 -0
  90. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.2.0.rst +0 -0
  91. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.2.1.rst +0 -0
  92. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.2.2.rst +0 -0
  93. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.2.4.rst +0 -0
  94. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.3.0.rst +0 -0
  95. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.3.1.rst +0 -0
  96. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.3.2.rst +0 -0
  97. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.3.3.rst +0 -0
  98. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.3.4.rst +0 -0
  99. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.3.5.rst +0 -0
  100. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.4.0.rst +0 -0
  101. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.4.1.rst +0 -0
  102. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.4.2.rst +0 -0
  103. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.5.0.rst +0 -0
  104. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.5.1.rst +0 -0
  105. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.5.2.rst +0 -0
  106. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.6.0.rst +0 -0
  107. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.6.1.rst +0 -0
  108. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.6.2.rst +0 -0
  109. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.6.3.rst +0 -0
  110. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.7.0.rst +0 -0
  111. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.7.1.rst +0 -0
  112. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.7.2.rst +0 -0
  113. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.8.2.rst +0 -0
  114. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.8.3.rst +0 -0
  115. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.8.4.rst +0 -0
  116. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.8.5.rst +0 -0
  117. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.8.6.rst +0 -0
  118. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.8.7.rst +0 -0
  119. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.9.0.rst +0 -0
  120. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.9.1.rst +0 -0
  121. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-2.9.2.rst +0 -0
  122. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.0.0.rst +0 -0
  123. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.0.1.rst +0 -0
  124. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.0.2.rst +0 -0
  125. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.0.3.rst +0 -0
  126. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.0.4.rst +0 -0
  127. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.0.5.rst +0 -0
  128. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.0.6.rst +0 -0
  129. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.0.7.rst +0 -0
  130. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.1.0.rst +0 -0
  131. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.1.1.rst +0 -0
  132. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.1.2.rst +0 -0
  133. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.1.3.rst +0 -0
  134. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.10.0.rst +0 -0
  135. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.10.1.rst +0 -0
  136. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.2.0.rst +0 -0
  137. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.2.1.rst +0 -0
  138. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.2.2.rst +0 -0
  139. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.2.3.rst +0 -0
  140. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.2.4.rst +0 -0
  141. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.2.5.rst +0 -0
  142. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.3.0.rst +0 -0
  143. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.3.1.rst +0 -0
  144. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.3.2.rst +0 -0
  145. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.4.0.rst +0 -0
  146. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.4.1.rst +0 -0
  147. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.4.2.rst +0 -0
  148. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.5.0.rst +0 -0
  149. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.5.1.rst +0 -0
  150. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.6.0.rst +0 -0
  151. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.6.1.rst +0 -0
  152. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.6.2.rst +0 -0
  153. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.6.3.rst +0 -0
  154. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.6.4.rst +0 -0
  155. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.7.0.rst +0 -0
  156. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.7.1.rst +0 -0
  157. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.7.2.rst +0 -0
  158. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.7.3.rst +0 -0
  159. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.7.4.rst +0 -0
  160. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.8.0.rst +0 -0
  161. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.8.1.rst +0 -0
  162. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.8.2.rst +0 -0
  163. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.9.0.rst +0 -0
  164. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.9.1.rst +0 -0
  165. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.9.2.rst +0 -0
  166. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-3.9.3.rst +0 -0
  167. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-4.0.0.rst +0 -0
  168. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-4.0.1.rst +0 -0
  169. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-4.0.2.rst +0 -0
  170. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-4.1.0.rst +0 -0
  171. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-4.1.1.rst +0 -0
  172. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-4.2.0.rst +0 -0
  173. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-4.2.1.rst +0 -0
  174. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-4.3.0.rst +0 -0
  175. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-4.3.1.rst +0 -0
  176. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-4.4.0.rst +0 -0
  177. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-4.4.1.rst +0 -0
  178. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-4.4.2.rst +0 -0
  179. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-4.5.0.rst +0 -0
  180. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-4.6.0.rst +0 -0
  181. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-4.6.1.rst +0 -0
  182. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-4.6.2.rst +0 -0
  183. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-4.6.3.rst +0 -0
  184. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-4.6.4.rst +0 -0
  185. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-4.6.5.rst +0 -0
  186. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-4.6.6.rst +0 -0
  187. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-4.6.7.rst +0 -0
  188. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-4.6.8.rst +0 -0
  189. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-4.6.9.rst +0 -0
  190. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-5.0.0.rst +0 -0
  191. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-5.0.1.rst +0 -0
  192. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-5.1.0.rst +0 -0
  193. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-5.1.1.rst +0 -0
  194. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-5.1.2.rst +0 -0
  195. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-5.1.3.rst +0 -0
  196. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-5.2.0.rst +0 -0
  197. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-5.2.1.rst +0 -0
  198. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-5.2.2.rst +0 -0
  199. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-5.2.3.rst +0 -0
  200. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-5.2.4.rst +0 -0
  201. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-5.3.0.rst +0 -0
  202. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-5.3.1.rst +0 -0
  203. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-5.3.2.rst +0 -0
  204. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-5.3.3.rst +0 -0
  205. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-5.3.4.rst +0 -0
  206. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-5.3.5.rst +0 -0
  207. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-5.4.0.rst +0 -0
  208. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-5.4.1.rst +0 -0
  209. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-5.4.2.rst +0 -0
  210. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-5.4.3.rst +0 -0
  211. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-6.0.0.rst +0 -0
  212. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-6.0.0rc1.rst +0 -0
  213. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-6.0.1.rst +0 -0
  214. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-6.0.2.rst +0 -0
  215. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-6.1.0.rst +0 -0
  216. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-6.1.1.rst +0 -0
  217. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-6.1.2.rst +0 -0
  218. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-6.2.0.rst +0 -0
  219. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-6.2.1.rst +0 -0
  220. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-6.2.2.rst +0 -0
  221. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-6.2.3.rst +0 -0
  222. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-6.2.4.rst +0 -0
  223. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-6.2.5.rst +0 -0
  224. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-7.0.0.rst +0 -0
  225. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-7.0.0rc1.rst +0 -0
  226. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-7.0.1.rst +0 -0
  227. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-7.1.0.rst +0 -0
  228. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-7.1.1.rst +0 -0
  229. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-7.1.2.rst +0 -0
  230. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-7.1.3.rst +0 -0
  231. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-7.2.0.rst +0 -0
  232. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-7.2.1.rst +0 -0
  233. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-7.2.2.rst +0 -0
  234. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-7.3.0.rst +0 -0
  235. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-7.3.1.rst +0 -0
  236. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-7.3.2.rst +0 -0
  237. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-7.4.0.rst +0 -0
  238. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-7.4.1.rst +0 -0
  239. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-7.4.2.rst +0 -0
  240. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-7.4.3.rst +0 -0
  241. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-7.4.4.rst +0 -0
  242. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-8.0.0.rst +0 -0
  243. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-8.0.0rc1.rst +0 -0
  244. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-8.0.0rc2.rst +0 -0
  245. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-8.0.1.rst +0 -0
  246. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-8.0.2.rst +0 -0
  247. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-8.1.0.rst +0 -0
  248. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-8.1.1.rst +0 -0
  249. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-8.1.2.rst +0 -0
  250. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-8.2.0.rst +0 -0
  251. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-8.2.1.rst +0 -0
  252. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-8.2.2.rst +0 -0
  253. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-8.3.0.rst +0 -0
  254. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-8.3.1.rst +0 -0
  255. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-8.3.2.rst +0 -0
  256. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-8.3.3.rst +0 -0
  257. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-8.3.4.rst +0 -0
  258. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-8.3.5.rst +0 -0
  259. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-8.4.0.rst +0 -0
  260. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/release-8.4.1.rst +0 -0
  261. {pytest-8.4.1 → pytest-8.4.2}/doc/en/announce/sprint2016.rst +0 -0
  262. {pytest-8.4.1 → pytest-8.4.2}/doc/en/backwards-compatibility.rst +0 -0
  263. {pytest-8.4.1 → pytest-8.4.2}/doc/en/broken-dep-constraints.txt +0 -0
  264. {pytest-8.4.1 → pytest-8.4.2}/doc/en/conf.py +0 -0
  265. {pytest-8.4.1 → pytest-8.4.2}/doc/en/conftest.py +0 -0
  266. {pytest-8.4.1 → pytest-8.4.2}/doc/en/contact.rst +0 -0
  267. {pytest-8.4.1 → pytest-8.4.2}/doc/en/contents.rst +0 -0
  268. {pytest-8.4.1 → pytest-8.4.2}/doc/en/contributing.rst +0 -0
  269. {pytest-8.4.1 → pytest-8.4.2}/doc/en/deprecations.rst +0 -0
  270. {pytest-8.4.1 → pytest-8.4.2}/doc/en/development_guide.rst +0 -0
  271. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/assertion/failure_demo.py +0 -0
  272. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/assertion/global_testmodule_config/conftest.py +0 -0
  273. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/assertion/global_testmodule_config/test_hello_world.py +0 -0
  274. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/assertion/test_failures.py +0 -0
  275. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/assertion/test_setup_flow_example.py +0 -0
  276. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/attic.rst +0 -0
  277. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/conftest.py +0 -0
  278. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/customdirectory/conftest.py +0 -0
  279. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/customdirectory/pytest.ini +0 -0
  280. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/customdirectory/tests/manifest.json +0 -0
  281. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/customdirectory/tests/test_first.py +0 -0
  282. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/customdirectory/tests/test_second.py +0 -0
  283. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/customdirectory/tests/test_third.py +0 -0
  284. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/customdirectory.rst +0 -0
  285. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/fixtures/fixture_availability.svg +0 -0
  286. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/fixtures/fixture_availability_plugins.svg +0 -0
  287. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_autouse.py +0 -0
  288. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_autouse.svg +0 -0
  289. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_autouse_flat.svg +0 -0
  290. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_autouse_multiple_scopes.py +0 -0
  291. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_autouse_multiple_scopes.svg +0 -0
  292. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_autouse_temp_effects.py +0 -0
  293. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_autouse_temp_effects.svg +0 -0
  294. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_dependencies.py +0 -0
  295. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_dependencies.svg +0 -0
  296. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_dependencies_flat.svg +0 -0
  297. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_dependencies_unclear.svg +0 -0
  298. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_scope.py +0 -0
  299. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_order_scope.svg +0 -0
  300. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_request_different_scope.py +0 -0
  301. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/fixtures/test_fixtures_request_different_scope.svg +0 -0
  302. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/index.rst +0 -0
  303. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/markers.rst +0 -0
  304. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/multipython.py +0 -0
  305. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/nonpython/__init__.py +0 -0
  306. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/nonpython/conftest.py +0 -0
  307. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/nonpython/test_simple.yaml +0 -0
  308. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/nonpython.rst +0 -0
  309. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/pythoncollection.py +0 -0
  310. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/reportingdemo.rst +0 -0
  311. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/simple.rst +0 -0
  312. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/special.rst +0 -0
  313. {pytest-8.4.1 → pytest-8.4.2}/doc/en/example/xfail_demo.py +0 -0
  314. {pytest-8.4.1 → pytest-8.4.2}/doc/en/explanation/anatomy.rst +0 -0
  315. {pytest-8.4.1 → pytest-8.4.2}/doc/en/explanation/ci.rst +0 -0
  316. {pytest-8.4.1 → pytest-8.4.2}/doc/en/explanation/fixtures.rst +0 -0
  317. {pytest-8.4.1 → pytest-8.4.2}/doc/en/explanation/flaky.rst +0 -0
  318. {pytest-8.4.1 → pytest-8.4.2}/doc/en/explanation/goodpractices.rst +0 -0
  319. {pytest-8.4.1 → pytest-8.4.2}/doc/en/explanation/index.rst +0 -0
  320. {pytest-8.4.1 → pytest-8.4.2}/doc/en/explanation/pythonpath.rst +0 -0
  321. {pytest-8.4.1 → pytest-8.4.2}/doc/en/explanation/types.rst +0 -0
  322. {pytest-8.4.1 → pytest-8.4.2}/doc/en/funcarg_compare.rst +0 -0
  323. {pytest-8.4.1 → pytest-8.4.2}/doc/en/funcargs.rst +0 -0
  324. {pytest-8.4.1 → pytest-8.4.2}/doc/en/historical-notes.rst +0 -0
  325. {pytest-8.4.1 → pytest-8.4.2}/doc/en/history.rst +0 -0
  326. {pytest-8.4.1 → pytest-8.4.2}/doc/en/how-to/assert.rst +0 -0
  327. {pytest-8.4.1 → pytest-8.4.2}/doc/en/how-to/bash-completion.rst +0 -0
  328. {pytest-8.4.1 → pytest-8.4.2}/doc/en/how-to/cache.rst +0 -0
  329. {pytest-8.4.1 → pytest-8.4.2}/doc/en/how-to/capture-stdout-stderr.rst +0 -0
  330. {pytest-8.4.1 → pytest-8.4.2}/doc/en/how-to/capture-warnings.rst +0 -0
  331. {pytest-8.4.1 → pytest-8.4.2}/doc/en/how-to/doctest.rst +0 -0
  332. {pytest-8.4.1 → pytest-8.4.2}/doc/en/how-to/existingtestsuite.rst +0 -0
  333. {pytest-8.4.1 → pytest-8.4.2}/doc/en/how-to/failures.rst +0 -0
  334. {pytest-8.4.1 → pytest-8.4.2}/doc/en/how-to/index.rst +0 -0
  335. {pytest-8.4.1 → pytest-8.4.2}/doc/en/how-to/logging.rst +0 -0
  336. {pytest-8.4.1 → pytest-8.4.2}/doc/en/how-to/mark.rst +0 -0
  337. {pytest-8.4.1 → pytest-8.4.2}/doc/en/how-to/monkeypatch.rst +0 -0
  338. {pytest-8.4.1 → pytest-8.4.2}/doc/en/how-to/output.rst +0 -0
  339. {pytest-8.4.1 → pytest-8.4.2}/doc/en/how-to/plugins.rst +0 -0
  340. {pytest-8.4.1 → pytest-8.4.2}/doc/en/how-to/skipping.rst +0 -0
  341. {pytest-8.4.1 → pytest-8.4.2}/doc/en/how-to/tmp_path.rst +0 -0
  342. {pytest-8.4.1 → pytest-8.4.2}/doc/en/how-to/unittest.rst +0 -0
  343. {pytest-8.4.1 → pytest-8.4.2}/doc/en/how-to/usage.rst +0 -0
  344. {pytest-8.4.1 → pytest-8.4.2}/doc/en/how-to/writing_plugins.rst +0 -0
  345. {pytest-8.4.1 → pytest-8.4.2}/doc/en/how-to/xunit_setup.rst +0 -0
  346. {pytest-8.4.1 → pytest-8.4.2}/doc/en/img/cramer2.png +0 -0
  347. {pytest-8.4.1 → pytest-8.4.2}/doc/en/img/favicon.png +0 -0
  348. {pytest-8.4.1 → pytest-8.4.2}/doc/en/img/freiburg2.jpg +0 -0
  349. {pytest-8.4.1 → pytest-8.4.2}/doc/en/img/gaynor3.png +0 -0
  350. {pytest-8.4.1 → pytest-8.4.2}/doc/en/img/keleshev.png +0 -0
  351. {pytest-8.4.1 → pytest-8.4.2}/doc/en/img/pullrequest.png +0 -0
  352. {pytest-8.4.1 → pytest-8.4.2}/doc/en/img/pylib.png +0 -0
  353. {pytest-8.4.1 → pytest-8.4.2}/doc/en/img/pytest_logo_curves.svg +0 -0
  354. {pytest-8.4.1 → pytest-8.4.2}/doc/en/img/theuni.png +0 -0
  355. {pytest-8.4.1 → pytest-8.4.2}/doc/en/license.rst +0 -0
  356. {pytest-8.4.1 → pytest-8.4.2}/doc/en/naming20.rst +0 -0
  357. {pytest-8.4.1 → pytest-8.4.2}/doc/en/proposals/parametrize_with_fixtures.rst +0 -0
  358. {pytest-8.4.1 → pytest-8.4.2}/doc/en/pytest.ini +0 -0
  359. {pytest-8.4.1 → pytest-8.4.2}/doc/en/recwarn.rst +0 -0
  360. {pytest-8.4.1 → pytest-8.4.2}/doc/en/reference/customize.rst +0 -0
  361. {pytest-8.4.1 → pytest-8.4.2}/doc/en/reference/exit-codes.rst +0 -0
  362. {pytest-8.4.1 → pytest-8.4.2}/doc/en/reference/fixtures.rst +0 -0
  363. {pytest-8.4.1 → pytest-8.4.2}/doc/en/reference/index.rst +0 -0
  364. {pytest-8.4.1 → pytest-8.4.2}/doc/en/reference/plugin_list.rst +0 -0
  365. {pytest-8.4.1 → pytest-8.4.2}/doc/en/reference/reference.rst +0 -0
  366. {pytest-8.4.1 → pytest-8.4.2}/doc/en/requirements.txt +0 -0
  367. {pytest-8.4.1 → pytest-8.4.2}/doc/en/sponsor.rst +0 -0
  368. {pytest-8.4.1 → pytest-8.4.2}/doc/en/talks.rst +0 -0
  369. {pytest-8.4.1 → pytest-8.4.2}/doc/en/tidelift.rst +0 -0
  370. {pytest-8.4.1 → pytest-8.4.2}/doc/en/yieldfixture.rst +0 -0
  371. {pytest-8.4.1 → pytest-8.4.2}/extra/get_issues.py +0 -0
  372. {pytest-8.4.1 → pytest-8.4.2}/scripts/.gitignore +0 -0
  373. {pytest-8.4.1 → pytest-8.4.2}/scripts/generate-gh-release-notes.py +0 -0
  374. {pytest-8.4.1 → pytest-8.4.2}/scripts/release.major.rst +0 -0
  375. {pytest-8.4.1 → pytest-8.4.2}/scripts/release.minor.rst +0 -0
  376. {pytest-8.4.1 → pytest-8.4.2}/scripts/release.patch.rst +0 -0
  377. {pytest-8.4.1 → pytest-8.4.2}/scripts/release.pre.rst +0 -0
  378. {pytest-8.4.1 → pytest-8.4.2}/scripts/release.py +0 -0
  379. {pytest-8.4.1 → pytest-8.4.2}/scripts/update-plugin-list.py +0 -0
  380. {pytest-8.4.1 → pytest-8.4.2}/setup.cfg +0 -0
  381. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/__init__.py +0 -0
  382. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/_argcomplete.py +0 -0
  383. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/_code/__init__.py +0 -0
  384. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/_code/code.py +0 -0
  385. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/_code/source.py +0 -0
  386. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/_io/__init__.py +0 -0
  387. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/_io/pprint.py +0 -0
  388. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/_io/saferepr.py +0 -0
  389. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/_io/terminalwriter.py +0 -0
  390. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/_io/wcwidth.py +0 -0
  391. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/_py/__init__.py +0 -0
  392. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/_py/error.py +0 -0
  393. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/_py/path.py +0 -0
  394. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/assertion/__init__.py +0 -0
  395. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/assertion/rewrite.py +0 -0
  396. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/assertion/truncate.py +0 -0
  397. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/assertion/util.py +0 -0
  398. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/cacheprovider.py +0 -0
  399. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/capture.py +0 -0
  400. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/config/__init__.py +0 -0
  401. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/config/compat.py +0 -0
  402. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/config/exceptions.py +0 -0
  403. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/config/findpaths.py +0 -0
  404. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/debugging.py +0 -0
  405. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/deprecated.py +0 -0
  406. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/doctest.py +0 -0
  407. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/faulthandler.py +0 -0
  408. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/freeze_support.py +0 -0
  409. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/helpconfig.py +0 -0
  410. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/hookspec.py +0 -0
  411. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/junitxml.py +0 -0
  412. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/legacypath.py +0 -0
  413. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/logging.py +0 -0
  414. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/main.py +0 -0
  415. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/mark/__init__.py +0 -0
  416. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/mark/expression.py +0 -0
  417. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/mark/structures.py +0 -0
  418. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/monkeypatch.py +0 -0
  419. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/outcomes.py +0 -0
  420. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/pastebin.py +0 -0
  421. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/pathlib.py +0 -0
  422. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/py.typed +0 -0
  423. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/pytester.py +0 -0
  424. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/pytester_assertions.py +0 -0
  425. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/python.py +0 -0
  426. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/recwarn.py +0 -0
  427. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/reports.py +0 -0
  428. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/runner.py +0 -0
  429. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/scope.py +0 -0
  430. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/setuponly.py +0 -0
  431. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/setupplan.py +0 -0
  432. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/skipping.py +0 -0
  433. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/stash.py +0 -0
  434. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/stepwise.py +0 -0
  435. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/threadexception.py +0 -0
  436. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/timing.py +0 -0
  437. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/tmpdir.py +0 -0
  438. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/tracemalloc.py +0 -0
  439. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/unittest.py +0 -0
  440. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/unraisableexception.py +0 -0
  441. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/warning_types.py +0 -0
  442. {pytest-8.4.1 → pytest-8.4.2}/src/_pytest/warnings.py +0 -0
  443. {pytest-8.4.1 → pytest-8.4.2}/src/py.py +0 -0
  444. {pytest-8.4.1 → pytest-8.4.2}/src/pytest/__init__.py +0 -0
  445. {pytest-8.4.1 → pytest-8.4.2}/src/pytest/__main__.py +0 -0
  446. {pytest-8.4.1 → pytest-8.4.2}/src/pytest/py.typed +0 -0
  447. {pytest-8.4.1 → pytest-8.4.2}/src/pytest.egg-info/dependency_links.txt +0 -0
  448. {pytest-8.4.1 → pytest-8.4.2}/src/pytest.egg-info/entry_points.txt +0 -0
  449. {pytest-8.4.1 → pytest-8.4.2}/src/pytest.egg-info/requires.txt +0 -0
  450. {pytest-8.4.1 → pytest-8.4.2}/src/pytest.egg-info/top_level.txt +0 -0
  451. {pytest-8.4.1 → pytest-8.4.2}/testing/_py/test_local.py +0 -0
  452. {pytest-8.4.1 → pytest-8.4.2}/testing/acceptance_test.py +0 -0
  453. {pytest-8.4.1 → pytest-8.4.2}/testing/code/test_code.py +0 -0
  454. {pytest-8.4.1 → pytest-8.4.2}/testing/code/test_excinfo.py +0 -0
  455. {pytest-8.4.1 → pytest-8.4.2}/testing/code/test_source.py +0 -0
  456. {pytest-8.4.1 → pytest-8.4.2}/testing/deprecated_test.py +0 -0
  457. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/README.rst +0 -0
  458. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/__init__.py +0 -0
  459. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/acceptance/fixture_mock_integration.py +0 -0
  460. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/collect/collect_init_tests/pytest.ini +0 -0
  461. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/collect/collect_init_tests/tests/__init__.py +0 -0
  462. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/collect/collect_init_tests/tests/test_foo.py +0 -0
  463. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/collect/package_infinite_recursion/__init__.pyi +0 -0
  464. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/collect/package_infinite_recursion/conftest.py +0 -0
  465. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/collect/package_infinite_recursion/tests/__init__.py +0 -0
  466. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/collect/package_infinite_recursion/tests/test_basic.py +0 -0
  467. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/collect/package_init_given_as_arg/pkg/__init__.py +0 -0
  468. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/collect/package_init_given_as_arg/pkg/test_foo.py +0 -0
  469. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/config/collect_pytest_prefix/__init__.pyi +0 -0
  470. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/config/collect_pytest_prefix/conftest.py +0 -0
  471. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/config/collect_pytest_prefix/test_foo.py +0 -0
  472. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/conftest_usageerror/__init__.pyi +0 -0
  473. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/conftest_usageerror/conftest.py +0 -0
  474. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/customdirectory/conftest.py +0 -0
  475. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/customdirectory/pytest.ini +0 -0
  476. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/customdirectory/tests/manifest.json +0 -0
  477. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/customdirectory/tests/test_first.py +0 -0
  478. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/customdirectory/tests/test_second.py +0 -0
  479. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/customdirectory/tests/test_third.py +0 -0
  480. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/dataclasses/test_compare_dataclasses.py +0 -0
  481. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/dataclasses/test_compare_dataclasses_field_comparison_off.py +0 -0
  482. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/dataclasses/test_compare_dataclasses_verbose.py +0 -0
  483. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/dataclasses/test_compare_dataclasses_with_custom_eq.py +0 -0
  484. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/dataclasses/test_compare_initvar.py +0 -0
  485. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/dataclasses/test_compare_recursive_dataclasses.py +0 -0
  486. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/dataclasses/test_compare_two_different_dataclasses.py +0 -0
  487. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/doctest/main_py/__main__.py +0 -0
  488. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/doctest/main_py/test_normal_module.py +0 -0
  489. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/fixtures/custom_item/__init__.pyi +0 -0
  490. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/fixtures/custom_item/conftest.py +0 -0
  491. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/fixtures/custom_item/foo/__init__.py +0 -0
  492. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/fixtures/custom_item/foo/test_foo.py +0 -0
  493. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub1/__init__.py +0 -0
  494. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub1/conftest.py +0 -0
  495. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub1/test_in_sub1.py +0 -0
  496. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub2/__init__.py +0 -0
  497. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub2/conftest.py +0 -0
  498. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub2/test_in_sub2.py +0 -0
  499. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_detect_recursive_dependency_error.py +0 -0
  500. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/__init__.pyi +0 -0
  501. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/conftest.py +0 -0
  502. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/pkg/__init__.py +0 -0
  503. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/pkg/conftest.py +0 -0
  504. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/pkg/test_spam.py +0 -0
  505. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_module/__init__.pyi +0 -0
  506. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_module/conftest.py +0 -0
  507. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_module/test_extend_fixture_conftest_module.py +0 -0
  508. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_module_class.py +0 -0
  509. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_funcarg_basic.py +0 -0
  510. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_funcarg_lookup_classlevel.py +0 -0
  511. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_funcarg_lookup_modulelevel.py +0 -0
  512. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/fixtures/fill_fixtures/test_funcarg_lookupfails.py +0 -0
  513. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/fixtures/test_fixture_named_request.py +0 -0
  514. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/fixtures/test_getfixturevalue_dynamic.py +0 -0
  515. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/issue88_initial_file_multinodes/__init__.pyi +0 -0
  516. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/issue88_initial_file_multinodes/conftest.py +0 -0
  517. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/issue88_initial_file_multinodes/test_hello.py +0 -0
  518. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/issue_519.py +0 -0
  519. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/junit-10.xsd +0 -0
  520. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/marks/marks_considered_keywords/__init__.pyi +0 -0
  521. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/marks/marks_considered_keywords/conftest.py +0 -0
  522. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/marks/marks_considered_keywords/test_marks_as_keywords.py +0 -0
  523. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/perf_examples/collect_stats/.gitignore +0 -0
  524. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/perf_examples/collect_stats/generate_folders.py +0 -0
  525. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/perf_examples/collect_stats/template_test.py +0 -0
  526. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/pytest.ini +0 -0
  527. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/tmpdir/tmp_path_fixture.py +0 -0
  528. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/unittest/test_parametrized_fixture_error_message.py +0 -0
  529. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/unittest/test_setup_skip.py +0 -0
  530. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/unittest/test_setup_skip_class.py +0 -0
  531. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/unittest/test_setup_skip_module.py +0 -0
  532. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/unittest/test_unittest_asyncio.py +0 -0
  533. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/unittest/test_unittest_asynctest.py +0 -0
  534. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/unittest/test_unittest_plain_async.py +0 -0
  535. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/warnings/test_group_warnings_by_message.py +0 -0
  536. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/warnings/test_group_warnings_by_message_summary/test_1.py +0 -0
  537. {pytest-8.4.1 → pytest-8.4.2}/testing/example_scripts/warnings/test_group_warnings_by_message_summary/test_2.py +0 -0
  538. {pytest-8.4.1 → pytest-8.4.2}/testing/examples/test_issue519.py +0 -0
  539. {pytest-8.4.1 → pytest-8.4.2}/testing/freeze/.gitignore +0 -0
  540. {pytest-8.4.1 → pytest-8.4.2}/testing/freeze/create_executable.py +0 -0
  541. {pytest-8.4.1 → pytest-8.4.2}/testing/freeze/runtests_script.py +0 -0
  542. {pytest-8.4.1 → pytest-8.4.2}/testing/freeze/tests/test_doctest.txt +0 -0
  543. {pytest-8.4.1 → pytest-8.4.2}/testing/freeze/tests/test_trivial.py +0 -0
  544. {pytest-8.4.1 → pytest-8.4.2}/testing/freeze/tox_run.py +0 -0
  545. {pytest-8.4.1 → pytest-8.4.2}/testing/io/test_pprint.py +0 -0
  546. {pytest-8.4.1 → pytest-8.4.2}/testing/io/test_saferepr.py +0 -0
  547. {pytest-8.4.1 → pytest-8.4.2}/testing/io/test_terminalwriter.py +0 -0
  548. {pytest-8.4.1 → pytest-8.4.2}/testing/io/test_wcwidth.py +0 -0
  549. {pytest-8.4.1 → pytest-8.4.2}/testing/logging/test_fixture.py +0 -0
  550. {pytest-8.4.1 → pytest-8.4.2}/testing/logging/test_formatter.py +0 -0
  551. {pytest-8.4.1 → pytest-8.4.2}/testing/logging/test_reporting.py +0 -0
  552. {pytest-8.4.1 → pytest-8.4.2}/testing/plugins_integration/.gitignore +0 -0
  553. {pytest-8.4.1 → pytest-8.4.2}/testing/plugins_integration/README.rst +0 -0
  554. {pytest-8.4.1 → pytest-8.4.2}/testing/plugins_integration/bdd_wallet.feature +0 -0
  555. {pytest-8.4.1 → pytest-8.4.2}/testing/plugins_integration/bdd_wallet.py +0 -0
  556. {pytest-8.4.1 → pytest-8.4.2}/testing/plugins_integration/django_settings.py +0 -0
  557. {pytest-8.4.1 → pytest-8.4.2}/testing/plugins_integration/pytest.ini +0 -0
  558. {pytest-8.4.1 → pytest-8.4.2}/testing/plugins_integration/pytest_anyio_integration.py +0 -0
  559. {pytest-8.4.1 → pytest-8.4.2}/testing/plugins_integration/pytest_asyncio_integration.py +0 -0
  560. {pytest-8.4.1 → pytest-8.4.2}/testing/plugins_integration/pytest_mock_integration.py +0 -0
  561. {pytest-8.4.1 → pytest-8.4.2}/testing/plugins_integration/pytest_rerunfailures_integration.py +0 -0
  562. {pytest-8.4.1 → pytest-8.4.2}/testing/plugins_integration/pytest_trio_integration.py +0 -0
  563. {pytest-8.4.1 → pytest-8.4.2}/testing/plugins_integration/pytest_twisted_integration.py +0 -0
  564. {pytest-8.4.1 → pytest-8.4.2}/testing/plugins_integration/requirements.txt +0 -0
  565. {pytest-8.4.1 → pytest-8.4.2}/testing/plugins_integration/simple_integration.py +0 -0
  566. {pytest-8.4.1 → pytest-8.4.2}/testing/python/collect.py +0 -0
  567. {pytest-8.4.1 → pytest-8.4.2}/testing/python/fixtures.py +0 -0
  568. {pytest-8.4.1 → pytest-8.4.2}/testing/python/integration.py +0 -0
  569. {pytest-8.4.1 → pytest-8.4.2}/testing/python/metafunc.py +0 -0
  570. {pytest-8.4.1 → pytest-8.4.2}/testing/python/raises.py +0 -0
  571. {pytest-8.4.1 → pytest-8.4.2}/testing/python/show_fixtures_per_test.py +0 -0
  572. {pytest-8.4.1 → pytest-8.4.2}/testing/test_argcomplete.py +0 -0
  573. {pytest-8.4.1 → pytest-8.4.2}/testing/test_assertion.py +0 -0
  574. {pytest-8.4.1 → pytest-8.4.2}/testing/test_assertrewrite.py +0 -0
  575. {pytest-8.4.1 → pytest-8.4.2}/testing/test_cacheprovider.py +0 -0
  576. {pytest-8.4.1 → pytest-8.4.2}/testing/test_capture.py +0 -0
  577. {pytest-8.4.1 → pytest-8.4.2}/testing/test_collect_imported_tests.py +0 -0
  578. {pytest-8.4.1 → pytest-8.4.2}/testing/test_compat.py +0 -0
  579. {pytest-8.4.1 → pytest-8.4.2}/testing/test_config.py +0 -0
  580. {pytest-8.4.1 → pytest-8.4.2}/testing/test_conftest.py +0 -0
  581. {pytest-8.4.1 → pytest-8.4.2}/testing/test_debugging.py +0 -0
  582. {pytest-8.4.1 → pytest-8.4.2}/testing/test_entry_points.py +0 -0
  583. {pytest-8.4.1 → pytest-8.4.2}/testing/test_error_diffs.py +0 -0
  584. {pytest-8.4.1 → pytest-8.4.2}/testing/test_findpaths.py +0 -0
  585. {pytest-8.4.1 → pytest-8.4.2}/testing/test_helpconfig.py +0 -0
  586. {pytest-8.4.1 → pytest-8.4.2}/testing/test_junitxml.py +0 -0
  587. {pytest-8.4.1 → pytest-8.4.2}/testing/test_legacypath.py +0 -0
  588. {pytest-8.4.1 → pytest-8.4.2}/testing/test_link_resolve.py +0 -0
  589. {pytest-8.4.1 → pytest-8.4.2}/testing/test_main.py +0 -0
  590. {pytest-8.4.1 → pytest-8.4.2}/testing/test_mark.py +0 -0
  591. {pytest-8.4.1 → pytest-8.4.2}/testing/test_mark_expression.py +0 -0
  592. {pytest-8.4.1 → pytest-8.4.2}/testing/test_meta.py +0 -0
  593. {pytest-8.4.1 → pytest-8.4.2}/testing/test_monkeypatch.py +0 -0
  594. {pytest-8.4.1 → pytest-8.4.2}/testing/test_nodes.py +0 -0
  595. {pytest-8.4.1 → pytest-8.4.2}/testing/test_parseopt.py +0 -0
  596. {pytest-8.4.1 → pytest-8.4.2}/testing/test_pastebin.py +0 -0
  597. {pytest-8.4.1 → pytest-8.4.2}/testing/test_pathlib.py +0 -0
  598. {pytest-8.4.1 → pytest-8.4.2}/testing/test_pluginmanager.py +0 -0
  599. {pytest-8.4.1 → pytest-8.4.2}/testing/test_pytester.py +0 -0
  600. {pytest-8.4.1 → pytest-8.4.2}/testing/test_python_path.py +0 -0
  601. {pytest-8.4.1 → pytest-8.4.2}/testing/test_recwarn.py +0 -0
  602. {pytest-8.4.1 → pytest-8.4.2}/testing/test_reports.py +0 -0
  603. {pytest-8.4.1 → pytest-8.4.2}/testing/test_runner.py +0 -0
  604. {pytest-8.4.1 → pytest-8.4.2}/testing/test_runner_xunit.py +0 -0
  605. {pytest-8.4.1 → pytest-8.4.2}/testing/test_scope.py +0 -0
  606. {pytest-8.4.1 → pytest-8.4.2}/testing/test_session.py +0 -0
  607. {pytest-8.4.1 → pytest-8.4.2}/testing/test_setuponly.py +0 -0
  608. {pytest-8.4.1 → pytest-8.4.2}/testing/test_setupplan.py +0 -0
  609. {pytest-8.4.1 → pytest-8.4.2}/testing/test_skipping.py +0 -0
  610. {pytest-8.4.1 → pytest-8.4.2}/testing/test_stash.py +0 -0
  611. {pytest-8.4.1 → pytest-8.4.2}/testing/test_stepwise.py +0 -0
  612. {pytest-8.4.1 → pytest-8.4.2}/testing/test_tmpdir.py +0 -0
  613. {pytest-8.4.1 → pytest-8.4.2}/testing/test_unittest.py +0 -0
  614. {pytest-8.4.1 → pytest-8.4.2}/testing/test_unraisableexception.py +0 -0
  615. {pytest-8.4.1 → pytest-8.4.2}/testing/test_warning_types.py +0 -0
  616. {pytest-8.4.1 → pytest-8.4.2}/testing/typing_checks.py +0 -0
  617. {pytest-8.4.1 → 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/*
@@ -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.1
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
@@ -6,6 +6,7 @@ Release announcements
6
6
  :maxdepth: 2
7
7
 
8
8
 
9
+ release-8.4.2
9
10
  release-8.4.1
10
11
  release-8.4.0
11
12
  release-8.3.5
@@ -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
@@ -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,49 @@ 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
+
34
77
  pytest 8.4.1 (2025-06-17)
35
78
  =========================
36
79
 
@@ -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-208>
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-208>
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-208>
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]>
@@ -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-209>
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-209>
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.1
25
+ pytest 8.4.2
26
26
 
27
27
  .. _`simpletest`:
28
28
 
@@ -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-229>
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
@@ -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>`
@@ -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.1'
21
- __version_tuple__ = version_tuple = (8, 4, 1)
31
+ __version__ = version = '8.4.2'
32
+ __version_tuple__ = version_tuple = (8, 4, 2)
33
+
34
+ __commit_id__ = commit_id = None
@@ -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))
@@ -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:
@@ -49,6 +49,7 @@ from _pytest.compat import NOTSET
49
49
  from _pytest.compat import NotSetType
50
50
  from _pytest.compat import safe_getattr
51
51
  from _pytest.compat import safe_isclass
52
+ from _pytest.compat import signature
52
53
  from _pytest.config import _PluggyPlugin
53
54
  from _pytest.config import Config
54
55
  from _pytest.config import ExitCode
@@ -804,8 +805,8 @@ class SubRequest(FixtureRequest):
804
805
  path, lineno = getfslineno(factory)
805
806
  if isinstance(path, Path):
806
807
  path = bestrelpath(self._pyfuncitem.session.path, path)
807
- signature = inspect.signature(factory)
808
- return f"{path}:{lineno + 1}: def {factory.__name__}{signature}"
808
+ sig = signature(factory)
809
+ return f"{path}:{lineno + 1}: def {factory.__name__}{sig}"
809
810
 
810
811
  def addfinalizer(self, finalizer: Callable[[], object]) -> None:
811
812
  self._fixturedef.addfinalizer(finalizer)
@@ -8,7 +8,6 @@ from collections.abc import Iterator
8
8
  from collections.abc import MutableMapping
9
9
  from functools import cached_property
10
10
  from functools import lru_cache
11
- from inspect import signature
12
11
  import os
13
12
  import pathlib
14
13
  from pathlib import Path
@@ -29,6 +28,7 @@ from _pytest._code.code import TerminalRepr
29
28
  from _pytest._code.code import Traceback
30
29
  from _pytest._code.code import TracebackStyle
31
30
  from _pytest.compat import LEGACY_PATH
31
+ from _pytest.compat import signature
32
32
  from _pytest.config import Config
33
33
  from _pytest.config import ConftestImportFailure
34
34
  from _pytest.config.compat import _check_path
@@ -426,12 +426,9 @@ class ApproxScalar(ApproxBase):
426
426
  # Check if `val` is a native bool or numpy bool.
427
427
  if isinstance(val, bool):
428
428
  return True
429
- try:
430
- import numpy as np
431
-
429
+ if np := sys.modules.get("numpy"):
432
430
  return isinstance(val, np.bool_)
433
- except ImportError:
434
- return False
431
+ return False
435
432
 
436
433
  asarray = _as_numpy_array(actual)
437
434
  if asarray is not None:
@@ -531,6 +528,25 @@ class ApproxDecimal(ApproxScalar):
531
528
  DEFAULT_ABSOLUTE_TOLERANCE = Decimal("1e-12")
532
529
  DEFAULT_RELATIVE_TOLERANCE = Decimal("1e-6")
533
530
 
531
+ def __repr__(self) -> str:
532
+ if isinstance(self.rel, float):
533
+ rel = Decimal.from_float(self.rel)
534
+ else:
535
+ rel = self.rel
536
+
537
+ if isinstance(self.abs, float):
538
+ abs_ = Decimal.from_float(self.abs)
539
+ else:
540
+ abs_ = self.abs
541
+
542
+ tol_str = "???"
543
+ if rel is not None and Decimal("1e-3") <= rel <= Decimal("1e3"):
544
+ tol_str = f"{rel:.1e}"
545
+ elif abs_ is not None:
546
+ tol_str = f"{abs_:.1e}"
547
+
548
+ return f"{self.expected} ± {tol_str}"
549
+
534
550
 
535
551
  def approx(expected, rel=None, abs=None, nan_ok: bool = False) -> ApproxBase:
536
552
  """Assert that two numbers (or two ordered sequences of numbers) are equal to each other
@@ -457,7 +457,7 @@ class AbstractRaises(ABC, Generic[BaseExcT_co]):
457
457
  return cast(type[BaseExcT_1], origin_exc)
458
458
  else:
459
459
  raise ValueError(
460
- f"Only `ExceptionGroup[Exception]` or `BaseExceptionGroup[BaseExeption]` "
460
+ f"Only `ExceptionGroup[Exception]` or `BaseExceptionGroup[BaseException]` "
461
461
  f"are accepted as generic types but got `{exc}`. "
462
462
  f"As `raises` will catch all instances of the specified group regardless of the "
463
463
  f"generic argument specific nested exceptions has to be checked "
@@ -559,7 +559,7 @@ class RaisesExc(AbstractRaises[BaseExcT_co_default]):
559
559
  The type is checked with :func:`isinstance`, and does not need to be an exact match.
560
560
  If that is wanted you can use the ``check`` parameter.
561
561
 
562
- :kwparam str | Pattern[str] match
562
+ :kwparam str | Pattern[str] match:
563
563
  A regex to match.
564
564
 
565
565
  :kwparam Callable[[BaseException], bool] check:
@@ -734,7 +734,9 @@ class TerminalReporter:
734
734
  last_in_module = tests_completed == tests_in_module
735
735
  if self.showlongtestinfo or last_in_module:
736
736
  self._timing_nodeids_reported.update(r.nodeid for r in not_reported)
737
- return format_node_duration(sum(r.duration for r in not_reported))
737
+ return format_node_duration(
738
+ sum(r.duration for r in not_reported if isinstance(r, TestReport))
739
+ )
738
740
  return ""
739
741
  if collected:
740
742
  return f" [{len(self._progress_nodeids_reported) * 100 // collected:3d}%]"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pytest
3
- Version: 8.4.1
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
@@ -253,6 +253,7 @@ doc/en/announce/release-8.3.4.rst
253
253
  doc/en/announce/release-8.3.5.rst
254
254
  doc/en/announce/release-8.4.0.rst
255
255
  doc/en/announce/release-8.4.1.rst
256
+ doc/en/announce/release-8.4.2.rst
256
257
  doc/en/announce/sprint2016.rst
257
258
  doc/en/example/attic.rst
258
259
  doc/en/example/conftest.py
@@ -237,3 +237,15 @@ def mock_timing(monkeypatch: MonkeyPatch):
237
237
  result = MockTiming()
238
238
  result.patch(monkeypatch)
239
239
  return result
240
+
241
+
242
+ @pytest.fixture(autouse=True)
243
+ def remove_ci_env_var(monkeypatch: MonkeyPatch, request: pytest.FixtureRequest) -> None:
244
+ """Make the test insensitive if it is running in CI or not.
245
+
246
+ Use `@pytest.mark.keep_ci_var` in a test to avoid applying this fixture, letting the test
247
+ see the real `CI` variable (if present).
248
+ """
249
+ has_keep_ci_mark = request.node.get_closest_marker("keep_ci_var") is not None
250
+ if not has_keep_ci_mark:
251
+ monkeypatch.delenv("CI", raising=False)
@@ -2,6 +2,7 @@
2
2
  from __future__ import annotations
3
3
 
4
4
  from contextlib import contextmanager
5
+ import decimal
5
6
  from decimal import Decimal
6
7
  from fractions import Fraction
7
8
  from math import sqrt
@@ -1015,6 +1016,11 @@ class TestApprox:
1015
1016
  expected_repr = "approx([1 ± 1.0e-06, 2 ± 2.0e-06, 3 ± 3.0e-06, 4 ± 4.0e-06])"
1016
1017
  assert repr(approx(expected)) == expected_repr
1017
1018
 
1019
+ def test_decimal_approx_repr(self, monkeypatch) -> None:
1020
+ monkeypatch.setitem(decimal.getcontext().traps, decimal.FloatOperation, True)
1021
+ approx_obj = pytest.approx(decimal.Decimal("2.60"))
1022
+ assert decimal.Decimal("2.600001") == approx_obj
1023
+
1018
1024
  def test_allow_ordered_sequences_only(self) -> None:
1019
1025
  """pytest.approx() should raise an error on unordered sequences (#9692)."""
1020
1026
  with pytest.raises(TypeError, match="only supports ordered sequences"):
@@ -1079,10 +1085,10 @@ class TestRecursiveSequenceMap:
1079
1085
  ]
1080
1086
 
1081
1087
  def test_map_over_mixed_sequence(self):
1082
- assert _recursive_sequence_map(sqrt, [4, (25, 64), [(49)]]) == [
1088
+ assert _recursive_sequence_map(sqrt, [4, (25, 64), [49]]) == [
1083
1089
  2,
1084
1090
  (5, 8),
1085
- [(7)],
1091
+ [7],
1086
1092
  ]
1087
1093
 
1088
1094
  def test_map_over_sequence_like(self):
@@ -1304,7 +1304,7 @@ def test_parametrizing_conditional_raisesgroup(
1304
1304
  def test_annotated_group() -> None:
1305
1305
  # repr depends on if exceptiongroup backport is being used or not
1306
1306
  t = repr(ExceptionGroup[ValueError])
1307
- msg = "Only `ExceptionGroup[Exception]` or `BaseExceptionGroup[BaseExeption]` are accepted as generic types but got `{}`. As `raises` will catch all instances of the specified group regardless of the generic argument specific nested exceptions has to be checked with `RaisesGroup`."
1307
+ msg = "Only `ExceptionGroup[Exception]` or `BaseExceptionGroup[BaseException]` are accepted as generic types but got `{}`. As `raises` will catch all instances of the specified group regardless of the generic argument specific nested exceptions has to be checked with `RaisesGroup`."
1308
1308
 
1309
1309
  fail_msg = wrap_escape(msg.format(t))
1310
1310
  with pytest.raises(ValueError, match=fail_msg):
@@ -1895,3 +1895,43 @@ def test_yield_disallowed_in_tests(pytester: Pytester):
1895
1895
  )
1896
1896
  # Assert that no tests were collected
1897
1897
  result.stdout.fnmatch_lines(["*collected 0 items*"])
1898
+
1899
+
1900
+ def test_annotations_deferred_future(pytester: Pytester):
1901
+ """Ensure stringified annotations don't raise any errors."""
1902
+ pytester.makepyfile(
1903
+ """
1904
+ from __future__ import annotations
1905
+ import pytest
1906
+
1907
+ @pytest.fixture
1908
+ def func() -> X: ... # X is undefined
1909
+
1910
+ def test_func():
1911
+ assert True
1912
+ """
1913
+ )
1914
+ result = pytester.runpytest()
1915
+ assert result.ret == 0
1916
+ result.stdout.fnmatch_lines(["*1 passed*"])
1917
+
1918
+
1919
+ @pytest.mark.skipif(
1920
+ sys.version_info < (3, 14), reason="Annotations are only skipped on 3.14+"
1921
+ )
1922
+ def test_annotations_deferred_314(pytester: Pytester):
1923
+ """Ensure annotation eval is deferred."""
1924
+ pytester.makepyfile(
1925
+ """
1926
+ import pytest
1927
+
1928
+ @pytest.fixture
1929
+ def func() -> X: ... # X is undefined
1930
+
1931
+ def test_func():
1932
+ assert True
1933
+ """
1934
+ )
1935
+ result = pytester.runpytest()
1936
+ assert result.ret == 0
1937
+ result.stdout.fnmatch_lines(["*1 passed*"])
@@ -223,9 +223,12 @@ class TestDoctests:
223
223
  "002 >>> 0 / i",
224
224
  "UNEXPECTED EXCEPTION: ZeroDivisionError*",
225
225
  "Traceback (most recent call last):",
226
- ' File "*/doctest.py", line *, in __run',
227
- " *",
228
- *((" *^^^^*", " *", " *") if sys.version_info >= (3, 13) else ()),
226
+ *(
227
+ (' File "*/doctest.py", line *, in __run', " *")
228
+ if sys.version_info <= (3, 14)
229
+ else ()
230
+ ),
231
+ *((" *^^^^*", " *", " *") if sys.version_info[:2] == (3, 13) else ()),
229
232
  ' File "<doctest test_doctest_unexpected_exception.txt[1]>", line 1, in <module>',
230
233
  "ZeroDivisionError: division by zero",
231
234
  "*/test_doctest_unexpected_exception.txt:2: UnexpectedException",
@@ -71,6 +71,7 @@ def test_disabled(pytester: Pytester) -> None:
71
71
  assert result.ret == 0
72
72
 
73
73
 
74
+ @pytest.mark.keep_ci_var
74
75
  @pytest.mark.parametrize(
75
76
  "enabled",
76
77
  [
@@ -112,6 +112,31 @@ class TestTerminal:
112
112
  [" def test_func():", "> assert 0", "E assert 0"]
113
113
  )
114
114
 
115
+ def test_console_output_style_times_with_skipped_and_passed(
116
+ self, pytester: Pytester
117
+ ) -> None:
118
+ pytester.makepyfile(
119
+ test_repro="""
120
+ def test_hello():
121
+ pass
122
+ """,
123
+ test_repro_skip="""
124
+ import pytest
125
+ pytest.importorskip("fakepackage_does_not_exist")
126
+ """,
127
+ )
128
+ result = pytester.runpytest(
129
+ "test_repro.py",
130
+ "test_repro_skip.py",
131
+ "-o",
132
+ "console_output_style=times",
133
+ )
134
+
135
+ result.stdout.fnmatch_lines("* 1 passed, 1 skipped in *")
136
+
137
+ combined = "\n".join(result.stdout.lines + result.stderr.lines)
138
+ assert "INTERNALERROR" not in combined
139
+
115
140
  def test_internalerror(self, pytester: Pytester, linecomp) -> None:
116
141
  modcol = pytester.getmodulecol("def test_one(): pass")
117
142
  rep = TerminalReporter(modcol.config, file=linecomp.stringio)
@@ -211,7 +211,7 @@ def test_unhandled_thread_exception_after_teardown(pytester: Pytester) -> None:
211
211
  """
212
212
  )
213
213
 
214
- result = pytester.runpytest()
214
+ result = pytester.runpytest("-Werror")
215
215
 
216
216
  # TODO: should be a test failure or error
217
217
  assert result.ret == pytest.ExitCode.INTERNAL_ERROR
@@ -149,6 +149,7 @@ def test_unicode(pytester: Pytester) -> None:
149
149
  )
150
150
 
151
151
 
152
+ @pytest.mark.skip("issue #13485")
152
153
  def test_works_with_filterwarnings(pytester: Pytester) -> None:
153
154
  """Ensure our warnings capture does not mess with pre-installed filters (#2430)."""
154
155
  pytester.makepyfile(