pytest 8.2.1__tar.gz → 8.2.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (605) hide show
  1. {pytest-8.2.1 → pytest-8.2.2}/AUTHORS +3 -0
  2. {pytest-8.2.1 → pytest-8.2.2}/CONTRIBUTING.rst +0 -4
  3. {pytest-8.2.1/src/pytest.egg-info → pytest-8.2.2}/PKG-INFO +1 -1
  4. pytest-8.2.2/doc/en/_templates/sidebar/brand.html +7 -0
  5. pytest-8.2.2/doc/en/_templates/style.html +7 -0
  6. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/index.rst +1 -0
  7. pytest-8.2.2/doc/en/announce/release-8.2.2.rst +19 -0
  8. {pytest-8.2.1 → pytest-8.2.2}/doc/en/builtin.rst +2 -2
  9. {pytest-8.2.1 → pytest-8.2.2}/doc/en/changelog.rst +30 -1
  10. {pytest-8.2.1 → pytest-8.2.2}/doc/en/conf.py +14 -19
  11. {pytest-8.2.1 → pytest-8.2.2}/doc/en/deprecations.rst +0 -4
  12. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/parametrize.rst +3 -3
  13. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/pythoncollection.rst +2 -2
  14. {pytest-8.2.1 → pytest-8.2.2}/doc/en/explanation/flaky.rst +19 -3
  15. {pytest-8.2.1 → pytest-8.2.2}/doc/en/getting-started.rst +1 -1
  16. {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/fixtures.rst +1 -1
  17. {pytest-8.2.1 → pytest-8.2.2}/doc/en/index.rst +7 -9
  18. {pytest-8.2.1 → pytest-8.2.2}/doc/en/reference/reference.rst +0 -3
  19. {pytest-8.2.1 → pytest-8.2.2}/doc/en/requirements.txt +2 -2
  20. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/_version.py +2 -2
  21. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/cacheprovider.py +19 -8
  22. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/fixtures.py +11 -8
  23. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/hookspec.py +6 -1
  24. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/unittest.py +2 -1
  25. {pytest-8.2.1 → pytest-8.2.2/src/pytest.egg-info}/PKG-INFO +1 -1
  26. {pytest-8.2.1 → pytest-8.2.2}/src/pytest.egg-info/SOURCES.txt +4 -2
  27. {pytest-8.2.1 → pytest-8.2.2}/testing/python/fixtures.py +19 -0
  28. {pytest-8.2.1 → pytest-8.2.2}/testing/test_unittest.py +20 -16
  29. pytest-8.2.1/doc/en/_templates/slim_searchbox.html +0 -14
  30. {pytest-8.2.1 → pytest-8.2.2}/.coveragerc +0 -0
  31. {pytest-8.2.1 → pytest-8.2.2}/.git-blame-ignore-revs +0 -0
  32. {pytest-8.2.1 → pytest-8.2.2}/.gitattributes +0 -0
  33. {pytest-8.2.1 → pytest-8.2.2}/.github/FUNDING.yml +0 -0
  34. {pytest-8.2.1 → pytest-8.2.2}/.github/ISSUE_TEMPLATE/1_bug_report.md +0 -0
  35. {pytest-8.2.1 → pytest-8.2.2}/.github/ISSUE_TEMPLATE/2_feature_request.md +0 -0
  36. {pytest-8.2.1 → pytest-8.2.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  37. {pytest-8.2.1 → pytest-8.2.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  38. {pytest-8.2.1 → pytest-8.2.2}/.github/config.yml +0 -0
  39. {pytest-8.2.1 → pytest-8.2.2}/.github/dependabot.yml +0 -0
  40. {pytest-8.2.1 → pytest-8.2.2}/.github/labels.toml +0 -0
  41. {pytest-8.2.1 → pytest-8.2.2}/.github/workflows/backport.yml +0 -0
  42. {pytest-8.2.1 → pytest-8.2.2}/.github/workflows/deploy.yml +0 -0
  43. {pytest-8.2.1 → pytest-8.2.2}/.github/workflows/prepare-release-pr.yml +0 -0
  44. {pytest-8.2.1 → pytest-8.2.2}/.github/workflows/stale.yml +0 -0
  45. {pytest-8.2.1 → pytest-8.2.2}/.github/workflows/test.yml +0 -0
  46. {pytest-8.2.1 → pytest-8.2.2}/.github/workflows/update-plugin-list.yml +0 -0
  47. {pytest-8.2.1 → pytest-8.2.2}/.gitignore +0 -0
  48. {pytest-8.2.1 → pytest-8.2.2}/.pre-commit-config.yaml +0 -0
  49. {pytest-8.2.1 → pytest-8.2.2}/.readthedocs.yml +0 -0
  50. {pytest-8.2.1 → pytest-8.2.2}/CHANGELOG.rst +0 -0
  51. {pytest-8.2.1 → pytest-8.2.2}/CITATION +0 -0
  52. {pytest-8.2.1 → pytest-8.2.2}/CODE_OF_CONDUCT.md +0 -0
  53. {pytest-8.2.1 → pytest-8.2.2}/LICENSE +0 -0
  54. {pytest-8.2.1 → pytest-8.2.2}/OPENCOLLECTIVE.rst +0 -0
  55. {pytest-8.2.1 → pytest-8.2.2}/README.rst +0 -0
  56. {pytest-8.2.1 → pytest-8.2.2}/RELEASING.rst +0 -0
  57. {pytest-8.2.1 → pytest-8.2.2}/TIDELIFT.rst +0 -0
  58. {pytest-8.2.1 → pytest-8.2.2}/bench/bench.py +0 -0
  59. {pytest-8.2.1 → pytest-8.2.2}/bench/bench_argcomplete.py +0 -0
  60. {pytest-8.2.1 → pytest-8.2.2}/bench/empty.py +0 -0
  61. {pytest-8.2.1 → pytest-8.2.2}/bench/manyparam.py +0 -0
  62. {pytest-8.2.1 → pytest-8.2.2}/bench/skip.py +0 -0
  63. {pytest-8.2.1 → pytest-8.2.2}/bench/unit_test.py +0 -0
  64. {pytest-8.2.1 → pytest-8.2.2}/bench/xunit.py +0 -0
  65. {pytest-8.2.1 → pytest-8.2.2}/changelog/README.rst +0 -0
  66. {pytest-8.2.1 → pytest-8.2.2}/changelog/_template.rst +0 -0
  67. {pytest-8.2.1 → pytest-8.2.2}/codecov.yml +0 -0
  68. {pytest-8.2.1 → pytest-8.2.2}/doc/en/Makefile +0 -0
  69. {pytest-8.2.1/doc/en/img → pytest-8.2.2/doc/en/_static}/pytest1.png +0 -0
  70. {pytest-8.2.1 → pytest-8.2.2}/doc/en/_templates/globaltoc.html +0 -0
  71. {pytest-8.2.1 → pytest-8.2.2}/doc/en/_templates/layout.html +0 -0
  72. {pytest-8.2.1 → pytest-8.2.2}/doc/en/_templates/links.html +0 -0
  73. {pytest-8.2.1 → pytest-8.2.2}/doc/en/_templates/relations.html +0 -0
  74. {pytest-8.2.1 → pytest-8.2.2}/doc/en/_templates/sidebarintro.html +0 -0
  75. {pytest-8.2.1 → pytest-8.2.2}/doc/en/adopt.rst +0 -0
  76. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.0.0.rst +0 -0
  77. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.0.1.rst +0 -0
  78. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.0.2.rst +0 -0
  79. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.0.3.rst +0 -0
  80. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.1.0.rst +0 -0
  81. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.1.1.rst +0 -0
  82. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.1.2.rst +0 -0
  83. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.1.3.rst +0 -0
  84. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.2.0.rst +0 -0
  85. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.2.1.rst +0 -0
  86. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.2.2.rst +0 -0
  87. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.2.4.rst +0 -0
  88. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.3.0.rst +0 -0
  89. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.3.1.rst +0 -0
  90. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.3.2.rst +0 -0
  91. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.3.3.rst +0 -0
  92. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.3.4.rst +0 -0
  93. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.3.5.rst +0 -0
  94. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.4.0.rst +0 -0
  95. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.4.1.rst +0 -0
  96. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.4.2.rst +0 -0
  97. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.5.0.rst +0 -0
  98. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.5.1.rst +0 -0
  99. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.5.2.rst +0 -0
  100. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.6.0.rst +0 -0
  101. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.6.1.rst +0 -0
  102. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.6.2.rst +0 -0
  103. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.6.3.rst +0 -0
  104. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.7.0.rst +0 -0
  105. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.7.1.rst +0 -0
  106. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.7.2.rst +0 -0
  107. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.8.2.rst +0 -0
  108. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.8.3.rst +0 -0
  109. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.8.4.rst +0 -0
  110. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.8.5.rst +0 -0
  111. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.8.6.rst +0 -0
  112. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.8.7.rst +0 -0
  113. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.9.0.rst +0 -0
  114. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.9.1.rst +0 -0
  115. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-2.9.2.rst +0 -0
  116. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.0.0.rst +0 -0
  117. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.0.1.rst +0 -0
  118. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.0.2.rst +0 -0
  119. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.0.3.rst +0 -0
  120. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.0.4.rst +0 -0
  121. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.0.5.rst +0 -0
  122. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.0.6.rst +0 -0
  123. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.0.7.rst +0 -0
  124. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.1.0.rst +0 -0
  125. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.1.1.rst +0 -0
  126. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.1.2.rst +0 -0
  127. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.1.3.rst +0 -0
  128. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.10.0.rst +0 -0
  129. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.10.1.rst +0 -0
  130. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.2.0.rst +0 -0
  131. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.2.1.rst +0 -0
  132. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.2.2.rst +0 -0
  133. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.2.3.rst +0 -0
  134. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.2.4.rst +0 -0
  135. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.2.5.rst +0 -0
  136. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.3.0.rst +0 -0
  137. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.3.1.rst +0 -0
  138. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.3.2.rst +0 -0
  139. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.4.0.rst +0 -0
  140. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.4.1.rst +0 -0
  141. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.4.2.rst +0 -0
  142. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.5.0.rst +0 -0
  143. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.5.1.rst +0 -0
  144. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.6.0.rst +0 -0
  145. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.6.1.rst +0 -0
  146. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.6.2.rst +0 -0
  147. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.6.3.rst +0 -0
  148. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.6.4.rst +0 -0
  149. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.7.0.rst +0 -0
  150. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.7.1.rst +0 -0
  151. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.7.2.rst +0 -0
  152. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.7.3.rst +0 -0
  153. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.7.4.rst +0 -0
  154. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.8.0.rst +0 -0
  155. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.8.1.rst +0 -0
  156. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.8.2.rst +0 -0
  157. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.9.0.rst +0 -0
  158. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.9.1.rst +0 -0
  159. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.9.2.rst +0 -0
  160. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-3.9.3.rst +0 -0
  161. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.0.0.rst +0 -0
  162. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.0.1.rst +0 -0
  163. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.0.2.rst +0 -0
  164. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.1.0.rst +0 -0
  165. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.1.1.rst +0 -0
  166. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.2.0.rst +0 -0
  167. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.2.1.rst +0 -0
  168. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.3.0.rst +0 -0
  169. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.3.1.rst +0 -0
  170. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.4.0.rst +0 -0
  171. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.4.1.rst +0 -0
  172. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.4.2.rst +0 -0
  173. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.5.0.rst +0 -0
  174. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.6.0.rst +0 -0
  175. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.6.1.rst +0 -0
  176. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.6.2.rst +0 -0
  177. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.6.3.rst +0 -0
  178. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.6.4.rst +0 -0
  179. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.6.5.rst +0 -0
  180. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.6.6.rst +0 -0
  181. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.6.7.rst +0 -0
  182. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.6.8.rst +0 -0
  183. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-4.6.9.rst +0 -0
  184. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.0.0.rst +0 -0
  185. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.0.1.rst +0 -0
  186. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.1.0.rst +0 -0
  187. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.1.1.rst +0 -0
  188. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.1.2.rst +0 -0
  189. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.1.3.rst +0 -0
  190. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.2.0.rst +0 -0
  191. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.2.1.rst +0 -0
  192. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.2.2.rst +0 -0
  193. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.2.3.rst +0 -0
  194. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.2.4.rst +0 -0
  195. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.3.0.rst +0 -0
  196. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.3.1.rst +0 -0
  197. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.3.2.rst +0 -0
  198. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.3.3.rst +0 -0
  199. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.3.4.rst +0 -0
  200. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.3.5.rst +0 -0
  201. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.4.0.rst +0 -0
  202. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.4.1.rst +0 -0
  203. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.4.2.rst +0 -0
  204. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-5.4.3.rst +0 -0
  205. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-6.0.0.rst +0 -0
  206. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-6.0.0rc1.rst +0 -0
  207. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-6.0.1.rst +0 -0
  208. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-6.0.2.rst +0 -0
  209. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-6.1.0.rst +0 -0
  210. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-6.1.1.rst +0 -0
  211. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-6.1.2.rst +0 -0
  212. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-6.2.0.rst +0 -0
  213. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-6.2.1.rst +0 -0
  214. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-6.2.2.rst +0 -0
  215. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-6.2.3.rst +0 -0
  216. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-6.2.4.rst +0 -0
  217. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-6.2.5.rst +0 -0
  218. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.0.0.rst +0 -0
  219. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.0.0rc1.rst +0 -0
  220. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.0.1.rst +0 -0
  221. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.1.0.rst +0 -0
  222. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.1.1.rst +0 -0
  223. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.1.2.rst +0 -0
  224. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.1.3.rst +0 -0
  225. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.2.0.rst +0 -0
  226. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.2.1.rst +0 -0
  227. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.2.2.rst +0 -0
  228. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.3.0.rst +0 -0
  229. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.3.1.rst +0 -0
  230. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.3.2.rst +0 -0
  231. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.4.0.rst +0 -0
  232. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.4.1.rst +0 -0
  233. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.4.2.rst +0 -0
  234. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.4.3.rst +0 -0
  235. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-7.4.4.rst +0 -0
  236. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-8.0.0.rst +0 -0
  237. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-8.0.0rc1.rst +0 -0
  238. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-8.0.0rc2.rst +0 -0
  239. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-8.0.1.rst +0 -0
  240. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-8.0.2.rst +0 -0
  241. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-8.1.0.rst +0 -0
  242. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-8.1.1.rst +0 -0
  243. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-8.1.2.rst +0 -0
  244. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-8.2.0.rst +0 -0
  245. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/release-8.2.1.rst +0 -0
  246. {pytest-8.2.1 → pytest-8.2.2}/doc/en/announce/sprint2016.rst +0 -0
  247. {pytest-8.2.1 → pytest-8.2.2}/doc/en/backwards-compatibility.rst +0 -0
  248. {pytest-8.2.1 → pytest-8.2.2}/doc/en/conftest.py +0 -0
  249. {pytest-8.2.1 → pytest-8.2.2}/doc/en/contact.rst +0 -0
  250. {pytest-8.2.1 → pytest-8.2.2}/doc/en/contents.rst +0 -0
  251. {pytest-8.2.1 → pytest-8.2.2}/doc/en/contributing.rst +0 -0
  252. {pytest-8.2.1 → pytest-8.2.2}/doc/en/development_guide.rst +0 -0
  253. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/assertion/failure_demo.py +0 -0
  254. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/assertion/global_testmodule_config/conftest.py +0 -0
  255. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/assertion/global_testmodule_config/test_hello_world.py +0 -0
  256. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/assertion/test_failures.py +0 -0
  257. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/assertion/test_setup_flow_example.py +0 -0
  258. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/attic.rst +0 -0
  259. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/conftest.py +0 -0
  260. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/customdirectory/conftest.py +0 -0
  261. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/customdirectory/pytest.ini +0 -0
  262. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/customdirectory/tests/manifest.json +0 -0
  263. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/customdirectory/tests/test_first.py +0 -0
  264. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/customdirectory/tests/test_second.py +0 -0
  265. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/customdirectory/tests/test_third.py +0 -0
  266. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/customdirectory.rst +0 -0
  267. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/fixture_availability.svg +0 -0
  268. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/fixture_availability_plugins.svg +0 -0
  269. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/test_fixtures_order_autouse.py +0 -0
  270. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/test_fixtures_order_autouse.svg +0 -0
  271. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/test_fixtures_order_autouse_flat.svg +0 -0
  272. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/test_fixtures_order_autouse_multiple_scopes.py +0 -0
  273. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/test_fixtures_order_autouse_multiple_scopes.svg +0 -0
  274. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/test_fixtures_order_autouse_temp_effects.py +0 -0
  275. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/test_fixtures_order_autouse_temp_effects.svg +0 -0
  276. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/test_fixtures_order_dependencies.py +0 -0
  277. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/test_fixtures_order_dependencies.svg +0 -0
  278. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/test_fixtures_order_dependencies_flat.svg +0 -0
  279. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/test_fixtures_order_dependencies_unclear.svg +0 -0
  280. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/test_fixtures_order_scope.py +0 -0
  281. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/test_fixtures_order_scope.svg +0 -0
  282. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/test_fixtures_request_different_scope.py +0 -0
  283. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/fixtures/test_fixtures_request_different_scope.svg +0 -0
  284. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/index.rst +0 -0
  285. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/markers.rst +0 -0
  286. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/multipython.py +0 -0
  287. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/nonpython/__init__.py +0 -0
  288. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/nonpython/conftest.py +0 -0
  289. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/nonpython/test_simple.yaml +0 -0
  290. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/nonpython.rst +0 -0
  291. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/pythoncollection.py +0 -0
  292. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/reportingdemo.rst +0 -0
  293. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/simple.rst +0 -0
  294. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/special.rst +0 -0
  295. {pytest-8.2.1 → pytest-8.2.2}/doc/en/example/xfail_demo.py +0 -0
  296. {pytest-8.2.1 → pytest-8.2.2}/doc/en/explanation/anatomy.rst +0 -0
  297. {pytest-8.2.1 → pytest-8.2.2}/doc/en/explanation/fixtures.rst +0 -0
  298. {pytest-8.2.1 → pytest-8.2.2}/doc/en/explanation/goodpractices.rst +0 -0
  299. {pytest-8.2.1 → pytest-8.2.2}/doc/en/explanation/index.rst +0 -0
  300. {pytest-8.2.1 → pytest-8.2.2}/doc/en/explanation/pythonpath.rst +0 -0
  301. {pytest-8.2.1 → pytest-8.2.2}/doc/en/funcarg_compare.rst +0 -0
  302. {pytest-8.2.1 → pytest-8.2.2}/doc/en/funcargs.rst +0 -0
  303. {pytest-8.2.1 → pytest-8.2.2}/doc/en/historical-notes.rst +0 -0
  304. {pytest-8.2.1 → pytest-8.2.2}/doc/en/history.rst +0 -0
  305. {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/assert.rst +0 -0
  306. {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/bash-completion.rst +0 -0
  307. {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/cache.rst +0 -0
  308. {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/capture-stdout-stderr.rst +0 -0
  309. {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/capture-warnings.rst +0 -0
  310. {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/doctest.rst +0 -0
  311. {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/existingtestsuite.rst +0 -0
  312. {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/failures.rst +0 -0
  313. {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/index.rst +0 -0
  314. {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/logging.rst +0 -0
  315. {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/mark.rst +0 -0
  316. {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/monkeypatch.rst +0 -0
  317. {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/output.rst +0 -0
  318. {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/parametrize.rst +0 -0
  319. {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/plugins.rst +0 -0
  320. {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/skipping.rst +0 -0
  321. {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/tmp_path.rst +0 -0
  322. {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/unittest.rst +0 -0
  323. {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/usage.rst +0 -0
  324. {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/writing_hook_functions.rst +0 -0
  325. {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/writing_plugins.rst +0 -0
  326. {pytest-8.2.1 → pytest-8.2.2}/doc/en/how-to/xunit_setup.rst +0 -0
  327. {pytest-8.2.1 → pytest-8.2.2}/doc/en/img/cramer2.png +0 -0
  328. {pytest-8.2.1 → pytest-8.2.2}/doc/en/img/favicon.png +0 -0
  329. {pytest-8.2.1 → pytest-8.2.2}/doc/en/img/freiburg2.jpg +0 -0
  330. {pytest-8.2.1 → pytest-8.2.2}/doc/en/img/gaynor3.png +0 -0
  331. {pytest-8.2.1 → pytest-8.2.2}/doc/en/img/keleshev.png +0 -0
  332. {pytest-8.2.1 → pytest-8.2.2}/doc/en/img/pullrequest.png +0 -0
  333. {pytest-8.2.1 → pytest-8.2.2}/doc/en/img/pylib.png +0 -0
  334. {pytest-8.2.1 → pytest-8.2.2}/doc/en/img/pytest_logo_curves.svg +0 -0
  335. {pytest-8.2.1 → pytest-8.2.2}/doc/en/img/theuni.png +0 -0
  336. {pytest-8.2.1 → pytest-8.2.2}/doc/en/license.rst +0 -0
  337. {pytest-8.2.1 → pytest-8.2.2}/doc/en/naming20.rst +0 -0
  338. {pytest-8.2.1 → pytest-8.2.2}/doc/en/proposals/parametrize_with_fixtures.rst +0 -0
  339. {pytest-8.2.1 → pytest-8.2.2}/doc/en/pytest.ini +0 -0
  340. {pytest-8.2.1 → pytest-8.2.2}/doc/en/recwarn.rst +0 -0
  341. {pytest-8.2.1 → pytest-8.2.2}/doc/en/reference/customize.rst +0 -0
  342. {pytest-8.2.1 → pytest-8.2.2}/doc/en/reference/exit-codes.rst +0 -0
  343. {pytest-8.2.1 → pytest-8.2.2}/doc/en/reference/fixtures.rst +0 -0
  344. {pytest-8.2.1 → pytest-8.2.2}/doc/en/reference/index.rst +0 -0
  345. {pytest-8.2.1 → pytest-8.2.2}/doc/en/reference/plugin_list.rst +0 -0
  346. {pytest-8.2.1 → pytest-8.2.2}/doc/en/sponsor.rst +0 -0
  347. {pytest-8.2.1 → pytest-8.2.2}/doc/en/talks.rst +0 -0
  348. {pytest-8.2.1 → pytest-8.2.2}/doc/en/tidelift.rst +0 -0
  349. {pytest-8.2.1 → pytest-8.2.2}/doc/en/yieldfixture.rst +0 -0
  350. {pytest-8.2.1 → pytest-8.2.2}/extra/get_issues.py +0 -0
  351. {pytest-8.2.1 → pytest-8.2.2}/pyproject.toml +0 -0
  352. {pytest-8.2.1 → pytest-8.2.2}/scripts/.gitignore +0 -0
  353. {pytest-8.2.1 → pytest-8.2.2}/scripts/generate-gh-release-notes.py +0 -0
  354. {pytest-8.2.1 → pytest-8.2.2}/scripts/prepare-release-pr.py +0 -0
  355. {pytest-8.2.1 → pytest-8.2.2}/scripts/release.major.rst +0 -0
  356. {pytest-8.2.1 → pytest-8.2.2}/scripts/release.minor.rst +0 -0
  357. {pytest-8.2.1 → pytest-8.2.2}/scripts/release.patch.rst +0 -0
  358. {pytest-8.2.1 → pytest-8.2.2}/scripts/release.pre.rst +0 -0
  359. {pytest-8.2.1 → pytest-8.2.2}/scripts/release.py +0 -0
  360. {pytest-8.2.1 → pytest-8.2.2}/scripts/towncrier-draft-to-file.py +0 -0
  361. {pytest-8.2.1 → pytest-8.2.2}/scripts/update-plugin-list.py +0 -0
  362. {pytest-8.2.1 → pytest-8.2.2}/setup.cfg +0 -0
  363. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/__init__.py +0 -0
  364. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/_argcomplete.py +0 -0
  365. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/_code/__init__.py +0 -0
  366. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/_code/code.py +0 -0
  367. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/_code/source.py +0 -0
  368. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/_io/__init__.py +0 -0
  369. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/_io/pprint.py +0 -0
  370. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/_io/saferepr.py +0 -0
  371. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/_io/terminalwriter.py +0 -0
  372. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/_io/wcwidth.py +0 -0
  373. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/_py/__init__.py +0 -0
  374. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/_py/error.py +0 -0
  375. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/_py/path.py +0 -0
  376. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/assertion/__init__.py +0 -0
  377. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/assertion/rewrite.py +0 -0
  378. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/assertion/truncate.py +0 -0
  379. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/assertion/util.py +0 -0
  380. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/capture.py +0 -0
  381. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/compat.py +0 -0
  382. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/config/__init__.py +0 -0
  383. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/config/argparsing.py +0 -0
  384. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/config/compat.py +0 -0
  385. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/config/exceptions.py +0 -0
  386. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/config/findpaths.py +0 -0
  387. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/debugging.py +0 -0
  388. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/deprecated.py +0 -0
  389. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/doctest.py +0 -0
  390. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/faulthandler.py +0 -0
  391. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/freeze_support.py +0 -0
  392. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/helpconfig.py +0 -0
  393. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/junitxml.py +0 -0
  394. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/legacypath.py +0 -0
  395. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/logging.py +0 -0
  396. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/main.py +0 -0
  397. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/mark/__init__.py +0 -0
  398. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/mark/expression.py +0 -0
  399. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/mark/structures.py +0 -0
  400. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/monkeypatch.py +0 -0
  401. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/nodes.py +0 -0
  402. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/outcomes.py +0 -0
  403. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/pastebin.py +0 -0
  404. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/pathlib.py +0 -0
  405. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/py.typed +0 -0
  406. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/pytester.py +0 -0
  407. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/pytester_assertions.py +0 -0
  408. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/python.py +0 -0
  409. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/python_api.py +0 -0
  410. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/python_path.py +0 -0
  411. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/recwarn.py +0 -0
  412. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/reports.py +0 -0
  413. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/runner.py +0 -0
  414. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/scope.py +0 -0
  415. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/setuponly.py +0 -0
  416. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/setupplan.py +0 -0
  417. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/skipping.py +0 -0
  418. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/stash.py +0 -0
  419. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/stepwise.py +0 -0
  420. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/terminal.py +0 -0
  421. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/threadexception.py +0 -0
  422. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/timing.py +0 -0
  423. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/tmpdir.py +0 -0
  424. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/unraisableexception.py +0 -0
  425. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/warning_types.py +0 -0
  426. {pytest-8.2.1 → pytest-8.2.2}/src/_pytest/warnings.py +0 -0
  427. {pytest-8.2.1 → pytest-8.2.2}/src/py.py +0 -0
  428. {pytest-8.2.1 → pytest-8.2.2}/src/pytest/__init__.py +0 -0
  429. {pytest-8.2.1 → pytest-8.2.2}/src/pytest/__main__.py +0 -0
  430. {pytest-8.2.1 → pytest-8.2.2}/src/pytest/py.typed +0 -0
  431. {pytest-8.2.1 → pytest-8.2.2}/src/pytest.egg-info/dependency_links.txt +0 -0
  432. {pytest-8.2.1 → pytest-8.2.2}/src/pytest.egg-info/entry_points.txt +0 -0
  433. {pytest-8.2.1 → pytest-8.2.2}/src/pytest.egg-info/requires.txt +0 -0
  434. {pytest-8.2.1 → pytest-8.2.2}/src/pytest.egg-info/top_level.txt +0 -0
  435. {pytest-8.2.1 → pytest-8.2.2}/testing/_py/test_local.py +0 -0
  436. {pytest-8.2.1 → pytest-8.2.2}/testing/acceptance_test.py +0 -0
  437. {pytest-8.2.1 → pytest-8.2.2}/testing/code/test_code.py +0 -0
  438. {pytest-8.2.1 → pytest-8.2.2}/testing/code/test_excinfo.py +0 -0
  439. {pytest-8.2.1 → pytest-8.2.2}/testing/code/test_source.py +0 -0
  440. {pytest-8.2.1 → pytest-8.2.2}/testing/conftest.py +0 -0
  441. {pytest-8.2.1 → pytest-8.2.2}/testing/deprecated_test.py +0 -0
  442. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/README.rst +0 -0
  443. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/__init__.py +0 -0
  444. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/acceptance/fixture_mock_integration.py +0 -0
  445. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/collect/collect_init_tests/pytest.ini +0 -0
  446. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/collect/collect_init_tests/tests/__init__.py +0 -0
  447. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/collect/collect_init_tests/tests/test_foo.py +0 -0
  448. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/collect/package_infinite_recursion/__init__.pyi +0 -0
  449. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/collect/package_infinite_recursion/conftest.py +0 -0
  450. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/collect/package_infinite_recursion/tests/__init__.py +0 -0
  451. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/collect/package_infinite_recursion/tests/test_basic.py +0 -0
  452. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/collect/package_init_given_as_arg/pkg/__init__.py +0 -0
  453. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/collect/package_init_given_as_arg/pkg/test_foo.py +0 -0
  454. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/config/collect_pytest_prefix/__init__.pyi +0 -0
  455. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/config/collect_pytest_prefix/conftest.py +0 -0
  456. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/config/collect_pytest_prefix/test_foo.py +0 -0
  457. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/conftest_usageerror/__init__.pyi +0 -0
  458. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/conftest_usageerror/conftest.py +0 -0
  459. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/customdirectory/conftest.py +0 -0
  460. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/customdirectory/pytest.ini +0 -0
  461. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/customdirectory/tests/manifest.json +0 -0
  462. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/customdirectory/tests/test_first.py +0 -0
  463. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/customdirectory/tests/test_second.py +0 -0
  464. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/customdirectory/tests/test_third.py +0 -0
  465. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/dataclasses/test_compare_dataclasses.py +0 -0
  466. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/dataclasses/test_compare_dataclasses_field_comparison_off.py +0 -0
  467. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/dataclasses/test_compare_dataclasses_verbose.py +0 -0
  468. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/dataclasses/test_compare_dataclasses_with_custom_eq.py +0 -0
  469. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/dataclasses/test_compare_initvar.py +0 -0
  470. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/dataclasses/test_compare_recursive_dataclasses.py +0 -0
  471. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/dataclasses/test_compare_two_different_dataclasses.py +0 -0
  472. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/doctest/main_py/__main__.py +0 -0
  473. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/doctest/main_py/test_normal_module.py +0 -0
  474. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/custom_item/__init__.pyi +0 -0
  475. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/custom_item/conftest.py +0 -0
  476. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/custom_item/foo/__init__.py +0 -0
  477. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/custom_item/foo/test_foo.py +0 -0
  478. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub1/__init__.py +0 -0
  479. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub1/conftest.py +0 -0
  480. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub1/test_in_sub1.py +0 -0
  481. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub2/__init__.py +0 -0
  482. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub2/conftest.py +0 -0
  483. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub2/test_in_sub2.py +0 -0
  484. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_detect_recursive_dependency_error.py +0 -0
  485. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/__init__.pyi +0 -0
  486. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/conftest.py +0 -0
  487. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/pkg/__init__.py +0 -0
  488. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/pkg/conftest.py +0 -0
  489. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/pkg/test_spam.py +0 -0
  490. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_module/__init__.pyi +0 -0
  491. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_module/conftest.py +0 -0
  492. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_module/test_extend_fixture_conftest_module.py +0 -0
  493. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_module_class.py +0 -0
  494. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_funcarg_basic.py +0 -0
  495. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_funcarg_lookup_classlevel.py +0 -0
  496. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_funcarg_lookup_modulelevel.py +0 -0
  497. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/fill_fixtures/test_funcarg_lookupfails.py +0 -0
  498. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/test_fixture_named_request.py +0 -0
  499. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/fixtures/test_getfixturevalue_dynamic.py +0 -0
  500. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/issue88_initial_file_multinodes/__init__.pyi +0 -0
  501. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/issue88_initial_file_multinodes/conftest.py +0 -0
  502. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/issue88_initial_file_multinodes/test_hello.py +0 -0
  503. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/issue_519.py +0 -0
  504. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/junit-10.xsd +0 -0
  505. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/marks/marks_considered_keywords/__init__.pyi +0 -0
  506. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/marks/marks_considered_keywords/conftest.py +0 -0
  507. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/marks/marks_considered_keywords/test_marks_as_keywords.py +0 -0
  508. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/perf_examples/collect_stats/.gitignore +0 -0
  509. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/perf_examples/collect_stats/generate_folders.py +0 -0
  510. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/perf_examples/collect_stats/template_test.py +0 -0
  511. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/pytest.ini +0 -0
  512. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/tmpdir/tmp_path_fixture.py +0 -0
  513. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/unittest/test_parametrized_fixture_error_message.py +0 -0
  514. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/unittest/test_setup_skip.py +0 -0
  515. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/unittest/test_setup_skip_class.py +0 -0
  516. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/unittest/test_setup_skip_module.py +0 -0
  517. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/unittest/test_unittest_asyncio.py +0 -0
  518. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/unittest/test_unittest_asynctest.py +0 -0
  519. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/unittest/test_unittest_plain_async.py +0 -0
  520. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/warnings/test_group_warnings_by_message.py +0 -0
  521. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/warnings/test_group_warnings_by_message_summary/test_1.py +0 -0
  522. {pytest-8.2.1 → pytest-8.2.2}/testing/example_scripts/warnings/test_group_warnings_by_message_summary/test_2.py +0 -0
  523. {pytest-8.2.1 → pytest-8.2.2}/testing/examples/test_issue519.py +0 -0
  524. {pytest-8.2.1 → pytest-8.2.2}/testing/freeze/.gitignore +0 -0
  525. {pytest-8.2.1 → pytest-8.2.2}/testing/freeze/create_executable.py +0 -0
  526. {pytest-8.2.1 → pytest-8.2.2}/testing/freeze/runtests_script.py +0 -0
  527. {pytest-8.2.1 → pytest-8.2.2}/testing/freeze/tests/test_doctest.txt +0 -0
  528. {pytest-8.2.1 → pytest-8.2.2}/testing/freeze/tests/test_trivial.py +0 -0
  529. {pytest-8.2.1 → pytest-8.2.2}/testing/freeze/tox_run.py +0 -0
  530. {pytest-8.2.1 → pytest-8.2.2}/testing/io/test_pprint.py +0 -0
  531. {pytest-8.2.1 → pytest-8.2.2}/testing/io/test_saferepr.py +0 -0
  532. {pytest-8.2.1 → pytest-8.2.2}/testing/io/test_terminalwriter.py +0 -0
  533. {pytest-8.2.1 → pytest-8.2.2}/testing/io/test_wcwidth.py +0 -0
  534. {pytest-8.2.1 → pytest-8.2.2}/testing/logging/test_fixture.py +0 -0
  535. {pytest-8.2.1 → pytest-8.2.2}/testing/logging/test_formatter.py +0 -0
  536. {pytest-8.2.1 → pytest-8.2.2}/testing/logging/test_reporting.py +0 -0
  537. {pytest-8.2.1 → pytest-8.2.2}/testing/plugins_integration/.gitignore +0 -0
  538. {pytest-8.2.1 → pytest-8.2.2}/testing/plugins_integration/README.rst +0 -0
  539. {pytest-8.2.1 → pytest-8.2.2}/testing/plugins_integration/bdd_wallet.feature +0 -0
  540. {pytest-8.2.1 → pytest-8.2.2}/testing/plugins_integration/bdd_wallet.py +0 -0
  541. {pytest-8.2.1 → pytest-8.2.2}/testing/plugins_integration/django_settings.py +0 -0
  542. {pytest-8.2.1 → pytest-8.2.2}/testing/plugins_integration/pytest.ini +0 -0
  543. {pytest-8.2.1 → pytest-8.2.2}/testing/plugins_integration/pytest_anyio_integration.py +0 -0
  544. {pytest-8.2.1 → pytest-8.2.2}/testing/plugins_integration/pytest_asyncio_integration.py +0 -0
  545. {pytest-8.2.1 → pytest-8.2.2}/testing/plugins_integration/pytest_mock_integration.py +0 -0
  546. {pytest-8.2.1 → pytest-8.2.2}/testing/plugins_integration/pytest_trio_integration.py +0 -0
  547. {pytest-8.2.1 → pytest-8.2.2}/testing/plugins_integration/pytest_twisted_integration.py +0 -0
  548. {pytest-8.2.1 → pytest-8.2.2}/testing/plugins_integration/requirements.txt +0 -0
  549. {pytest-8.2.1 → pytest-8.2.2}/testing/plugins_integration/simple_integration.py +0 -0
  550. {pytest-8.2.1 → pytest-8.2.2}/testing/python/approx.py +0 -0
  551. {pytest-8.2.1 → pytest-8.2.2}/testing/python/collect.py +0 -0
  552. {pytest-8.2.1 → pytest-8.2.2}/testing/python/integration.py +0 -0
  553. {pytest-8.2.1 → pytest-8.2.2}/testing/python/metafunc.py +0 -0
  554. {pytest-8.2.1 → pytest-8.2.2}/testing/python/raises.py +0 -0
  555. {pytest-8.2.1 → pytest-8.2.2}/testing/python/show_fixtures_per_test.py +0 -0
  556. {pytest-8.2.1 → pytest-8.2.2}/testing/test_argcomplete.py +0 -0
  557. {pytest-8.2.1 → pytest-8.2.2}/testing/test_assertion.py +0 -0
  558. {pytest-8.2.1 → pytest-8.2.2}/testing/test_assertrewrite.py +0 -0
  559. {pytest-8.2.1 → pytest-8.2.2}/testing/test_cacheprovider.py +0 -0
  560. {pytest-8.2.1 → pytest-8.2.2}/testing/test_capture.py +0 -0
  561. {pytest-8.2.1 → pytest-8.2.2}/testing/test_collection.py +0 -0
  562. {pytest-8.2.1 → pytest-8.2.2}/testing/test_compat.py +0 -0
  563. {pytest-8.2.1 → pytest-8.2.2}/testing/test_config.py +0 -0
  564. {pytest-8.2.1 → pytest-8.2.2}/testing/test_conftest.py +0 -0
  565. {pytest-8.2.1 → pytest-8.2.2}/testing/test_debugging.py +0 -0
  566. {pytest-8.2.1 → pytest-8.2.2}/testing/test_doctest.py +0 -0
  567. {pytest-8.2.1 → pytest-8.2.2}/testing/test_entry_points.py +0 -0
  568. {pytest-8.2.1 → pytest-8.2.2}/testing/test_error_diffs.py +0 -0
  569. {pytest-8.2.1 → pytest-8.2.2}/testing/test_faulthandler.py +0 -0
  570. {pytest-8.2.1 → pytest-8.2.2}/testing/test_findpaths.py +0 -0
  571. {pytest-8.2.1 → pytest-8.2.2}/testing/test_helpconfig.py +0 -0
  572. {pytest-8.2.1 → pytest-8.2.2}/testing/test_junitxml.py +0 -0
  573. {pytest-8.2.1 → pytest-8.2.2}/testing/test_legacypath.py +0 -0
  574. {pytest-8.2.1 → pytest-8.2.2}/testing/test_link_resolve.py +0 -0
  575. {pytest-8.2.1 → pytest-8.2.2}/testing/test_main.py +0 -0
  576. {pytest-8.2.1 → pytest-8.2.2}/testing/test_mark.py +0 -0
  577. {pytest-8.2.1 → pytest-8.2.2}/testing/test_mark_expression.py +0 -0
  578. {pytest-8.2.1 → pytest-8.2.2}/testing/test_meta.py +0 -0
  579. {pytest-8.2.1 → pytest-8.2.2}/testing/test_monkeypatch.py +0 -0
  580. {pytest-8.2.1 → pytest-8.2.2}/testing/test_nodes.py +0 -0
  581. {pytest-8.2.1 → pytest-8.2.2}/testing/test_parseopt.py +0 -0
  582. {pytest-8.2.1 → pytest-8.2.2}/testing/test_pastebin.py +0 -0
  583. {pytest-8.2.1 → pytest-8.2.2}/testing/test_pathlib.py +0 -0
  584. {pytest-8.2.1 → pytest-8.2.2}/testing/test_pluginmanager.py +0 -0
  585. {pytest-8.2.1 → pytest-8.2.2}/testing/test_pytester.py +0 -0
  586. {pytest-8.2.1 → pytest-8.2.2}/testing/test_python_path.py +0 -0
  587. {pytest-8.2.1 → pytest-8.2.2}/testing/test_recwarn.py +0 -0
  588. {pytest-8.2.1 → pytest-8.2.2}/testing/test_reports.py +0 -0
  589. {pytest-8.2.1 → pytest-8.2.2}/testing/test_runner.py +0 -0
  590. {pytest-8.2.1 → pytest-8.2.2}/testing/test_runner_xunit.py +0 -0
  591. {pytest-8.2.1 → pytest-8.2.2}/testing/test_scope.py +0 -0
  592. {pytest-8.2.1 → pytest-8.2.2}/testing/test_session.py +0 -0
  593. {pytest-8.2.1 → pytest-8.2.2}/testing/test_setuponly.py +0 -0
  594. {pytest-8.2.1 → pytest-8.2.2}/testing/test_setupplan.py +0 -0
  595. {pytest-8.2.1 → pytest-8.2.2}/testing/test_skipping.py +0 -0
  596. {pytest-8.2.1 → pytest-8.2.2}/testing/test_stash.py +0 -0
  597. {pytest-8.2.1 → pytest-8.2.2}/testing/test_stepwise.py +0 -0
  598. {pytest-8.2.1 → pytest-8.2.2}/testing/test_terminal.py +0 -0
  599. {pytest-8.2.1 → pytest-8.2.2}/testing/test_threadexception.py +0 -0
  600. {pytest-8.2.1 → pytest-8.2.2}/testing/test_tmpdir.py +0 -0
  601. {pytest-8.2.1 → pytest-8.2.2}/testing/test_unraisableexception.py +0 -0
  602. {pytest-8.2.1 → pytest-8.2.2}/testing/test_warning_types.py +0 -0
  603. {pytest-8.2.1 → pytest-8.2.2}/testing/test_warnings.py +0 -0
  604. {pytest-8.2.1 → pytest-8.2.2}/testing/typing_checks.py +0 -0
  605. {pytest-8.2.1 → pytest-8.2.2}/tox.ini +0 -0
@@ -192,6 +192,7 @@ Jake VanderPlas
192
192
  Jakob van Santen
193
193
  Jakub Mitoraj
194
194
  James Bourbeau
195
+ James Frost
195
196
  Jan Balster
196
197
  Janne Vanhala
197
198
  Jason R. Coombs
@@ -289,6 +290,7 @@ Mike Lundy
289
290
  Milan Lesnek
290
291
  Miro Hrončok
291
292
  mrbean-bremen
293
+ Nathan Goldbaum
292
294
  Nathaniel Compton
293
295
  Nathaniel Waisbrot
294
296
  Ned Batchelder
@@ -358,6 +360,7 @@ Sadra Barikbin
358
360
  Saiprasad Kale
359
361
  Samuel Colvin
360
362
  Samuel Dion-Girardeau
363
+ Samuel Jirovec
361
364
  Samuel Searles-Bryant
362
365
  Samuel Therrien (Avasam)
363
366
  Samuele Pedroni
@@ -5,10 +5,6 @@ Contribution getting started
5
5
  Contributions are highly welcomed and appreciated. Every little bit of help counts,
6
6
  so do not hesitate!
7
7
 
8
- .. contents::
9
- :depth: 2
10
- :backlinks: none
11
-
12
8
 
13
9
  .. _submitfeedback:
14
10
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pytest
3
- Version: 8.2.1
3
+ Version: 8.2.2
4
4
  Summary: pytest: simple powerful testing with Python
5
5
  Author: Holger Krekel, Bruno Oliveira, Ronny Pfannschmidt, Floris Bruynooghe, Brianna Laugher, Florian Bruhin, Others (See AUTHORS)
6
6
  License: MIT
@@ -0,0 +1,7 @@
1
+ <style>
2
+ .logo {text-align: center;}
3
+ </style>
4
+
5
+ <a class="logo" href="{{ pathto('contents') }}">
6
+ <img src="{{ pathto('_static/pytest1.png', 1) }}" width="70%" height="70%" text="Pytest Logo"/>
7
+ </a>
@@ -0,0 +1,7 @@
1
+ <style>
2
+ ul {list-style: none;}
3
+ li {margin: 0.4em 0;}
4
+ @media (min-width: 46em) {
5
+ #features {width: 50%;}
6
+ }
7
+ </style>
@@ -6,6 +6,7 @@ Release announcements
6
6
  :maxdepth: 2
7
7
 
8
8
 
9
+ release-8.2.2
9
10
  release-8.2.1
10
11
  release-8.2.0
11
12
  release-8.1.2
@@ -0,0 +1,19 @@
1
+ pytest-8.2.2
2
+ =======================================
3
+
4
+ pytest 8.2.2 has just been released to PyPI.
5
+
6
+ This is a bug-fix release, being a drop-in replacement. To upgrade::
7
+
8
+ pip install --upgrade pytest
9
+
10
+ The full changelog is available at https://docs.pytest.org/en/stable/changelog.html.
11
+
12
+ Thanks to all of the contributors to this release:
13
+
14
+ * Bruno Oliveira
15
+ * Ran Benita
16
+
17
+
18
+ Happy testing,
19
+ The pytest Development Team
@@ -22,7 +22,7 @@ For information about fixtures, see :ref:`fixtures`. To see a complete list of a
22
22
  cachedir: .pytest_cache
23
23
  rootdir: /home/sweet/project
24
24
  collected 0 items
25
- cache -- .../_pytest/cacheprovider.py:549
25
+ cache -- .../_pytest/cacheprovider.py:560
26
26
  Return a cache object that can persist state between testing sessions.
27
27
 
28
28
  cache.get(key, default)
@@ -115,7 +115,7 @@ For information about fixtures, see :ref:`fixtures`. To see a complete list of a
115
115
 
116
116
  For more details: :ref:`doctest_namespace`.
117
117
 
118
- pytestconfig [session scope] -- .../_pytest/fixtures.py:1335
118
+ pytestconfig [session scope] -- .../_pytest/fixtures.py:1338
119
119
  Session-scoped fixture that returns the session's :class:`pytest.Config`
120
120
  object.
121
121
 
@@ -28,6 +28,35 @@ with advance notice in the **Deprecations** section of releases.
28
28
 
29
29
  .. towncrier release notes start
30
30
 
31
+ pytest 8.2.2 (2024-06-04)
32
+ =========================
33
+
34
+ Bug Fixes
35
+ ---------
36
+
37
+ - `#12355 <https://github.com/pytest-dev/pytest/issues/12355>`_: Fix possible catastrophic performance slowdown on a certain parametrization pattern involving many higher-scoped parameters.
38
+
39
+
40
+ - `#12367 <https://github.com/pytest-dev/pytest/issues/12367>`_: Fix a regression in pytest 8.2.0 where unittest class instances (a fresh one is created for each test) were not released promptly on test teardown but only on session teardown.
41
+
42
+
43
+ - `#12381 <https://github.com/pytest-dev/pytest/issues/12381>`_: Fix possible "Directory not empty" crashes arising from concurent cache dir (``.pytest_cache``) creation. Regressed in pytest 8.2.0.
44
+
45
+
46
+
47
+ Improved Documentation
48
+ ----------------------
49
+
50
+ - `#12290 <https://github.com/pytest-dev/pytest/issues/12290>`_: Updated Sphinx theme to use Furo instead of Flask, enabling Dark mode theme.
51
+
52
+
53
+ - `#12356 <https://github.com/pytest-dev/pytest/issues/12356>`_: Added a subsection to the documentation for debugging flaky tests to mention
54
+ lack of thread safety in pytest as a possible source of flakyness.
55
+
56
+
57
+ - `#12363 <https://github.com/pytest-dev/pytest/issues/12363>`_: The documentation webpages now links to a canonical version to reduce outdated documentation in search engine results.
58
+
59
+
31
60
  pytest 8.2.1 (2024-05-19)
32
61
  =========================
33
62
 
@@ -57,7 +86,7 @@ Bug Fixes
57
86
  Trivial/Internal Changes
58
87
  ------------------------
59
88
 
60
- - `#12333 <https://github.com/pytest-dev/pytest/issues/12333>`_: pytest releases are now attested using the recent `Artifact Attestation <https://github.blog/2024-05-02-introducing-artifact-attestations-now-in-public-beta/>` support from GitHub, allowing users to verify the provenance of pytest's sdist and wheel artifacts.
89
+ - `#12333 <https://github.com/pytest-dev/pytest/issues/12333>`_: pytest releases are now attested using the recent `Artifact Attestation <https://github.blog/2024-05-02-introducing-artifact-attestations-now-in-public-beta/>`_ support from GitHub, allowing users to verify the provenance of pytest's sdist and wheel artifacts.
61
90
 
62
91
 
63
92
  pytest 8.2.0 (2024-04-27)
@@ -15,9 +15,7 @@
15
15
  #
16
16
  # The full version, including alpha/beta/rc tags.
17
17
  # The short X.Y version.
18
- import os
19
18
  import shutil
20
- import sys
21
19
  from textwrap import dedent
22
20
  from typing import TYPE_CHECKING
23
21
 
@@ -65,7 +63,6 @@ latex_elements = {
65
63
  # Add any Sphinx extension module names here, as strings. They can be extensions
66
64
  # coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
67
65
  extensions = [
68
- "pallets_sphinx_themes",
69
66
  "pygments_pytest",
70
67
  "sphinx.ext.autodoc",
71
68
  "sphinx.ext.autosummary",
@@ -140,10 +137,6 @@ add_module_names = False
140
137
  # output. They are ignored by default.
141
138
  # show_authors = False
142
139
 
143
- # The name of the Pygments (syntax highlighting) style to use.
144
- pygments_style = "sphinx"
145
-
146
-
147
140
  # A list of ignored prefixes for module index sorting.
148
141
  # modindex_common_prefix = []
149
142
 
@@ -216,12 +209,9 @@ nitpick_ignore = [
216
209
 
217
210
  # -- Options for HTML output ---------------------------------------------------
218
211
 
219
- sys.path.append(os.path.abspath("_themes"))
220
- html_theme_path = ["_themes"]
221
-
222
212
  # The theme to use for HTML and HTML Help pages. See the documentation for
223
213
  # a list of builtin themes.
224
- html_theme = "flask"
214
+ html_theme = "furo"
225
215
 
226
216
  # Theme options are theme-specific and customize the look and feel of a theme
227
217
  # further. For a list of options available for each theme, see the
@@ -266,18 +256,24 @@ html_favicon = "img/favicon.png"
266
256
 
267
257
  html_sidebars = {
268
258
  "index": [
269
- "slim_searchbox.html",
259
+ "sidebar/brand.html",
260
+ "sidebar/search.html",
261
+ "sidebar/scroll-start.html",
270
262
  "sidebarintro.html",
271
263
  "globaltoc.html",
272
264
  "links.html",
273
- "sourcelink.html",
265
+ "sidebar/scroll-end.html",
266
+ "style.html",
274
267
  ],
275
268
  "**": [
276
- "slim_searchbox.html",
269
+ "sidebar/brand.html",
270
+ "sidebar/search.html",
271
+ "sidebar/scroll-start.html",
277
272
  "globaltoc.html",
278
273
  "relations.html",
279
274
  "links.html",
280
- "sourcelink.html",
275
+ "sidebar/scroll-end.html",
276
+ "style.html",
281
277
  ],
282
278
  }
283
279
 
@@ -316,6 +312,9 @@ html_show_sourcelink = False
316
312
  # Output file base name for HTML help builder.
317
313
  htmlhelp_basename = "pytestdoc"
318
314
 
315
+ # The base URL which points to the root of the HTML documentation. It is used
316
+ # to indicate the location of document using the canonical link relation (#12363).
317
+ html_baseurl = "https://docs.pytest.org/en/stable/"
319
318
 
320
319
  # -- Options for LaTeX output --------------------------------------------------
321
320
 
@@ -337,10 +336,6 @@ latex_documents = [
337
336
  )
338
337
  ]
339
338
 
340
- # The name of an image file (relative to this directory) to place at the top of
341
- # the title page.
342
- latex_logo = "img/pytest1.png"
343
-
344
339
  # For "manual" documents, if this is true, then toplevel headings are parts,
345
340
  # not chapters.
346
341
  # latex_use_parts = False
@@ -7,10 +7,6 @@ This page lists all pytest features that are currently deprecated or have been r
7
7
  The objective is to give users a clear rationale why a certain feature has been removed, and what alternatives
8
8
  should be used instead.
9
9
 
10
- .. contents::
11
- :depth: 3
12
- :local:
13
-
14
10
 
15
11
  Deprecated Features
16
12
  -------------------
@@ -162,7 +162,7 @@ objects, they are still using the default pytest representation:
162
162
  rootdir: /home/sweet/project
163
163
  collected 8 items
164
164
 
165
- <Dir parametrize.rst-199>
165
+ <Dir parametrize.rst-200>
166
166
  <Module test_time.py>
167
167
  <Function test_timedistance_v0[a0-b0-expected0]>
168
168
  <Function test_timedistance_v0[a1-b1-expected1]>
@@ -239,7 +239,7 @@ If you just collect tests you'll also nicely see 'advanced' and 'basic' as varia
239
239
  rootdir: /home/sweet/project
240
240
  collected 4 items
241
241
 
242
- <Dir parametrize.rst-199>
242
+ <Dir parametrize.rst-200>
243
243
  <Module test_scenarios.py>
244
244
  <Class TestSampleWithScenarios>
245
245
  <Function test_demo1[basic]>
@@ -318,7 +318,7 @@ Let's first see how it looks like at collection time:
318
318
  rootdir: /home/sweet/project
319
319
  collected 2 items
320
320
 
321
- <Dir parametrize.rst-199>
321
+ <Dir parametrize.rst-200>
322
322
  <Module test_backends.py>
323
323
  <Function test_db_initialized[d1]>
324
324
  <Function test_db_initialized[d2]>
@@ -152,7 +152,7 @@ The test collection would look like this:
152
152
  configfile: pytest.ini
153
153
  collected 2 items
154
154
 
155
- <Dir pythoncollection.rst-200>
155
+ <Dir pythoncollection.rst-201>
156
156
  <Module check_myapp.py>
157
157
  <Class CheckMyApp>
158
158
  <Function simple_check>
@@ -215,7 +215,7 @@ You can always peek at the collection tree without running tests like this:
215
215
  configfile: pytest.ini
216
216
  collected 3 items
217
217
 
218
- <Dir pythoncollection.rst-200>
218
+ <Dir pythoncollection.rst-201>
219
219
  <Dir CWD>
220
220
  <Module pythoncollection.py>
221
221
  <Function test_function>
@@ -18,7 +18,7 @@ System state
18
18
 
19
19
  Broadly speaking, a flaky test indicates that the test relies on some system state that is not being appropriately controlled - the test environment is not sufficiently isolated. Higher level tests are more likely to be flaky as they rely on more state.
20
20
 
21
- Flaky tests sometimes appear when a test suite is run in parallel (such as use of pytest-xdist). This can indicate a test is reliant on test ordering.
21
+ Flaky tests sometimes appear when a test suite is run in parallel (such as use of `pytest-xdist`_). This can indicate a test is reliant on test ordering.
22
22
 
23
23
  - Perhaps a different test is failing to clean up after itself and leaving behind data which causes the flaky test to fail.
24
24
  - The flaky test is reliant on data from a previous test that doesn't clean up after itself, and in parallel runs that previous test is not always present
@@ -30,9 +30,22 @@ Overly strict assertion
30
30
 
31
31
  Overly strict assertions can cause problems with floating point comparison as well as timing issues. :func:`pytest.approx` is useful here.
32
32
 
33
+ Thread safety
34
+ ~~~~~~~~~~~~~
33
35
 
34
- Pytest features
35
- ^^^^^^^^^^^^^^^
36
+ pytest is single-threaded, executing its tests always in the same thread, sequentially, never spawning any threads itself.
37
+
38
+ Even in case of plugins which run tests in parallel, for example `pytest-xdist`_, usually work by spawning multiple *processes* and running tests in batches, without using multiple threads.
39
+
40
+ It is of course possible (and common) for tests and fixtures to spawn threads themselves as part of their testing workflow (for example, a fixture that starts a server thread in the background, or a test which executes production code that spawns threads), but some care must be taken:
41
+
42
+ * Make sure to eventually wait on any spawned threads -- for example at the end of a test, or during the teardown of a fixture.
43
+ * Avoid using primitives provided by pytest (:func:`pytest.warns`, :func:`pytest.raises`, etc) from multiple threads, as they are not thread-safe.
44
+
45
+ If your test suite uses threads and your are seeing flaky test results, do not discount the possibility that the test is implicitly using global state in pytest itself.
46
+
47
+ Related features
48
+ ^^^^^^^^^^^^^^^^
36
49
 
37
50
  Xfail strict
38
51
  ~~~~~~~~~~~~
@@ -123,3 +136,6 @@ Resources
123
136
 
124
137
  * `Flaky Tests at Google and How We Mitigate Them <https://testing.googleblog.com/2016/05/flaky-tests-at-google-and-how-we.html>`_ by John Micco, 2016
125
138
  * `Where do Google's flaky tests come from? <https://testing.googleblog.com/2017/04/where-do-our-flaky-tests-come-from.html>`_ by Jeff Listfield, 2017
139
+
140
+
141
+ .. _pytest-xdist: https://github.com/pytest-dev/pytest-xdist
@@ -22,7 +22,7 @@ Install ``pytest``
22
22
  .. code-block:: bash
23
23
 
24
24
  $ pytest --version
25
- pytest 8.2.1
25
+ pytest 8.2.2
26
26
 
27
27
  .. _`simpletest`:
28
28
 
@@ -1418,7 +1418,7 @@ Running the above tests results in the following test IDs being used:
1418
1418
  rootdir: /home/sweet/project
1419
1419
  collected 12 items
1420
1420
 
1421
- <Dir fixtures.rst-218>
1421
+ <Dir fixtures.rst-219>
1422
1422
  <Module test_anothersmtp.py>
1423
1423
  <Function test_showhelo[smtp.gmail.com]>
1424
1424
  <Function test_showhelo[mail.python.org]>
@@ -1,16 +1,15 @@
1
1
  :orphan:
2
2
 
3
- .. sidebar:: Next Open Trainings and Events
3
+ .. _features:
4
4
 
5
- - `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):
6
- * **June 11th to 13th 2024**, Remote
7
- * **March 4th to 6th 2025**, Leipzig, Germany / Remote
8
- - `pytest development sprint <https://github.com/pytest-dev/sprint>`_, **June 17th -- 22nd 2024**
9
- - pytest tips and tricks for a better testsuite, `Europython 2024 <https://ep2024.europython.eu/>`_, **July 8th -- 14th 2024** (3h), Prague
5
+ .. sidebar:: **Next Open Trainings and Events**
10
6
 
11
- Also see :doc:`previous talks and blogposts <talks>`.
7
+ - `pytest development sprint <https://github.com/pytest-dev/sprint>`_, **June 17th -- 22nd 2024**, Klaus (AT) / Remote
8
+ - `pytest tips and tricks for a better testsuite <https://ep2024.europython.eu/session/pytest-tips-and-tricks-for-a-better-testsuite>`_, at `Europython 2024 <https://ep2024.europython.eu/>`_, **July 8th -- 14th 2024** (3h), Prague (CZ)
9
+ - `pytest: Professionelles Testen (nicht nur) für Python <https://pretalx.com/workshoptage-2024/talk/9VUHYB/>`_, at `CH Open Workshoptage <https://workshoptage.ch/>`_, **September 2nd 2024**, HSLU Rotkreuz (CH)
10
+ - `Professional Testing with Python <https://python-academy.com/courses/python_course_testing.html>`_, via `Python Academy <https://www.python-academy.com/>`_ (3 day in-depth training), **March 4th -- 6th 2025**, Leipzig (DE) / Remote
12
11
 
13
- .. _features:
12
+ Also see :doc:`previous talks and blogposts <talks>`
14
13
 
15
14
  pytest: helps you write better programs
16
15
  =======================================
@@ -25,7 +24,6 @@ scale to support complex functional testing for applications and libraries.
25
24
 
26
25
  **PyPI package name**: :pypi:`pytest`
27
26
 
28
-
29
27
  A quick example
30
28
  ---------------
31
29
 
@@ -7,9 +7,6 @@ API Reference
7
7
 
8
8
  This page contains the full reference to pytest's API.
9
9
 
10
- .. contents::
11
- :depth: 3
12
- :local:
13
10
 
14
11
  Constants
15
12
  ---------
@@ -1,4 +1,3 @@
1
- pallets-sphinx-themes
2
1
  pluggy>=1.5.0
3
2
  pygments-pytest>=2.3.0
4
3
  sphinx-removed-in>=0.2.0
@@ -8,4 +7,5 @@ sphinxcontrib-svg2pdfconverter
8
7
  # Pin packaging because it no longer handles 'latest' version, which
9
8
  # is the version that is assigned to the docs.
10
9
  # See https://github.com/pytest-dev/pytest/pull/10578#issuecomment-1348249045.
11
- packaging <22
10
+ packaging
11
+ furo
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '8.2.1'
16
- __version_tuple__ = version_tuple = (8, 2, 1)
15
+ __version__ = version = '8.2.2'
16
+ __version_tuple__ = version_tuple = (8, 2, 2)
@@ -4,6 +4,7 @@
4
4
  # This plugin was not named "cache" to avoid conflicts with the external
5
5
  # pytest-cache version.
6
6
  import dataclasses
7
+ import errno
7
8
  import json
8
9
  import os
9
10
  from pathlib import Path
@@ -227,14 +228,24 @@ class Cache:
227
228
  with open(path.joinpath("CACHEDIR.TAG"), "xb") as f:
228
229
  f.write(CACHEDIR_TAG_CONTENT)
229
230
 
230
- path.rename(self._cachedir)
231
- # Create a directory in place of the one we just moved so that `TemporaryDirectory`'s
232
- # cleanup doesn't complain.
233
- #
234
- # TODO: pass ignore_cleanup_errors=True when we no longer support python < 3.10. See
235
- # https://github.com/python/cpython/issues/74168. Note that passing delete=False would
236
- # do the wrong thing in case of errors and isn't supported until python 3.12.
237
- path.mkdir()
231
+ try:
232
+ path.rename(self._cachedir)
233
+ except OSError as e:
234
+ # If 2 concurrent pytests both race to the rename, the loser
235
+ # gets "Directory not empty" from the rename. In this case,
236
+ # everything is handled so just continue (while letting the
237
+ # temporary directory be cleaned up).
238
+ if e.errno != errno.ENOTEMPTY:
239
+ raise
240
+ else:
241
+ # Create a directory in place of the one we just moved so that
242
+ # `TemporaryDirectory`'s cleanup doesn't complain.
243
+ #
244
+ # TODO: pass ignore_cleanup_errors=True when we no longer support python < 3.10.
245
+ # See https://github.com/python/cpython/issues/74168. Note that passing
246
+ # delete=False would do the wrong thing in case of errors and isn't supported
247
+ # until python 3.12.
248
+ path.mkdir()
238
249
 
239
250
 
240
251
  class LFPluginCollWrapper:
@@ -23,6 +23,7 @@ from typing import List
23
23
  from typing import MutableMapping
24
24
  from typing import NoReturn
25
25
  from typing import Optional
26
+ from typing import OrderedDict
26
27
  from typing import overload
27
28
  from typing import Sequence
28
29
  from typing import Set
@@ -75,8 +76,6 @@ if sys.version_info < (3, 11):
75
76
 
76
77
 
77
78
  if TYPE_CHECKING:
78
- from typing import Deque
79
-
80
79
  from _pytest.main import Session
81
80
  from _pytest.python import CallSpec2
82
81
  from _pytest.python import Function
@@ -207,16 +206,18 @@ def get_parametrized_fixture_keys(
207
206
 
208
207
  def reorder_items(items: Sequence[nodes.Item]) -> List[nodes.Item]:
209
208
  argkeys_cache: Dict[Scope, Dict[nodes.Item, Dict[FixtureArgKey, None]]] = {}
210
- items_by_argkey: Dict[Scope, Dict[FixtureArgKey, Deque[nodes.Item]]] = {}
209
+ items_by_argkey: Dict[
210
+ Scope, Dict[FixtureArgKey, OrderedDict[nodes.Item, None]]
211
+ ] = {}
211
212
  for scope in HIGH_SCOPES:
212
213
  scoped_argkeys_cache = argkeys_cache[scope] = {}
213
- scoped_items_by_argkey = items_by_argkey[scope] = defaultdict(deque)
214
+ scoped_items_by_argkey = items_by_argkey[scope] = defaultdict(OrderedDict)
214
215
  for item in items:
215
216
  keys = dict.fromkeys(get_parametrized_fixture_keys(item, scope), None)
216
217
  if keys:
217
218
  scoped_argkeys_cache[item] = keys
218
219
  for key in keys:
219
- scoped_items_by_argkey[key].append(item)
220
+ scoped_items_by_argkey[key][item] = None
220
221
  items_dict = dict.fromkeys(items, None)
221
222
  return list(
222
223
  reorder_items_atscope(items_dict, argkeys_cache, items_by_argkey, Scope.Session)
@@ -226,17 +227,19 @@ def reorder_items(items: Sequence[nodes.Item]) -> List[nodes.Item]:
226
227
  def fix_cache_order(
227
228
  item: nodes.Item,
228
229
  argkeys_cache: Dict[Scope, Dict[nodes.Item, Dict[FixtureArgKey, None]]],
229
- items_by_argkey: Dict[Scope, Dict[FixtureArgKey, "Deque[nodes.Item]"]],
230
+ items_by_argkey: Dict[Scope, Dict[FixtureArgKey, OrderedDict[nodes.Item, None]]],
230
231
  ) -> None:
231
232
  for scope in HIGH_SCOPES:
233
+ scoped_items_by_argkey = items_by_argkey[scope]
232
234
  for key in argkeys_cache[scope].get(item, []):
233
- items_by_argkey[scope][key].appendleft(item)
235
+ scoped_items_by_argkey[key][item] = None
236
+ scoped_items_by_argkey[key].move_to_end(item, last=False)
234
237
 
235
238
 
236
239
  def reorder_items_atscope(
237
240
  items: Dict[nodes.Item, None],
238
241
  argkeys_cache: Dict[Scope, Dict[nodes.Item, Dict[FixtureArgKey, None]]],
239
- items_by_argkey: Dict[Scope, Dict[FixtureArgKey, "Deque[nodes.Item]"]],
242
+ items_by_argkey: Dict[Scope, Dict[FixtureArgKey, OrderedDict[nodes.Item, None]]],
240
243
  scope: Scope,
241
244
  ) -> Dict[nodes.Item, None]:
242
245
  if scope is Scope.Function or len(items) < 3:
@@ -310,7 +310,12 @@ def pytest_collection_finish(session: "Session") -> None:
310
310
  def pytest_ignore_collect(
311
311
  collection_path: Path, path: "LEGACY_PATH", config: "Config"
312
312
  ) -> Optional[bool]:
313
- """Return True to prevent considering this path for collection.
313
+ """Return ``True`` to ignore this path for collection.
314
+
315
+ Return ``None`` to let other plugins ignore the path for collection.
316
+
317
+ Returning ``False`` will forcefully *not* ignore this path for collection,
318
+ without giving a chance for other plugins to ignore this path.
314
319
 
315
320
  This hook is consulted for all files and directories prior to calling
316
321
  more specific hooks.
@@ -212,11 +212,12 @@ class TestCaseFunction(Function):
212
212
  super().setup()
213
213
 
214
214
  def teardown(self) -> None:
215
- super().teardown()
216
215
  if self._explicit_tearDown is not None:
217
216
  self._explicit_tearDown()
218
217
  self._explicit_tearDown = None
219
218
  self._obj = None
219
+ self._instance = None
220
+ super().teardown()
220
221
 
221
222
  def startTest(self, testcase: "unittest.TestCase") -> None:
222
223
  pass
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pytest
3
- Version: 8.2.1
3
+ Version: 8.2.2
4
4
  Summary: pytest: simple powerful testing with Python
5
5
  Author: Holger Krekel, Bruno Oliveira, Ronny Pfannschmidt, Floris Bruynooghe, Brianna Laugher, Florian Bruhin, Others (See AUTHORS)
6
6
  License: MIT
@@ -67,12 +67,14 @@ doc/en/sponsor.rst
67
67
  doc/en/talks.rst
68
68
  doc/en/tidelift.rst
69
69
  doc/en/yieldfixture.rst
70
+ doc/en/_static/pytest1.png
70
71
  doc/en/_templates/globaltoc.html
71
72
  doc/en/_templates/layout.html
72
73
  doc/en/_templates/links.html
73
74
  doc/en/_templates/relations.html
74
75
  doc/en/_templates/sidebarintro.html
75
- doc/en/_templates/slim_searchbox.html
76
+ doc/en/_templates/style.html
77
+ doc/en/_templates/sidebar/brand.html
76
78
  doc/en/announce/index.rst
77
79
  doc/en/announce/release-2.0.0.rst
78
80
  doc/en/announce/release-2.0.1.rst
@@ -244,6 +246,7 @@ doc/en/announce/release-8.1.1.rst
244
246
  doc/en/announce/release-8.1.2.rst
245
247
  doc/en/announce/release-8.2.0.rst
246
248
  doc/en/announce/release-8.2.1.rst
249
+ doc/en/announce/release-8.2.2.rst
247
250
  doc/en/announce/sprint2016.rst
248
251
  doc/en/example/attic.rst
249
252
  doc/en/example/conftest.py
@@ -326,7 +329,6 @@ doc/en/img/gaynor3.png
326
329
  doc/en/img/keleshev.png
327
330
  doc/en/img/pullrequest.png
328
331
  doc/en/img/pylib.png
329
- doc/en/img/pytest1.png
330
332
  doc/en/img/pytest_logo_curves.svg
331
333
  doc/en/img/theuni.png
332
334
  doc/en/proposals/parametrize_with_fixtures.rst
@@ -2219,6 +2219,25 @@ class TestAutouseManagement:
2219
2219
  reprec = pytester.inline_run("-s")
2220
2220
  reprec.assertoutcome(passed=2)
2221
2221
 
2222
+ def test_reordering_catastrophic_performance(self, pytester: Pytester) -> None:
2223
+ """Check that a certain high-scope parametrization pattern doesn't cause
2224
+ a catasrophic slowdown.
2225
+
2226
+ Regression test for #12355.
2227
+ """
2228
+ pytester.makepyfile("""
2229
+ import pytest
2230
+
2231
+ params = tuple("abcdefghijklmnopqrstuvwxyz")
2232
+ @pytest.mark.parametrize(params, [range(len(params))] * 3, scope="module")
2233
+ def test_parametrize(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z):
2234
+ pass
2235
+ """)
2236
+
2237
+ result = pytester.runpytest()
2238
+
2239
+ result.assert_outcomes(passed=3)
2240
+
2222
2241
 
2223
2242
  class TestFixtureMarker:
2224
2243
  def test_parametrize(self, pytester: Pytester) -> None: