pytest 7.4.2__tar.gz → 7.4.4__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 (582) hide show
  1. {pytest-7.4.2 → pytest-7.4.4}/.github/workflows/deploy.yml +5 -3
  2. {pytest-7.4.2 → pytest-7.4.4}/.github/workflows/test.yml +1 -1
  3. {pytest-7.4.2 → pytest-7.4.4}/.readthedocs.yml +4 -0
  4. {pytest-7.4.2 → pytest-7.4.4}/AUTHORS +5 -0
  5. {pytest-7.4.2/src/pytest.egg-info → pytest-7.4.4}/PKG-INFO +1 -1
  6. {pytest-7.4.2 → pytest-7.4.4}/RELEASING.rst +2 -1
  7. {pytest-7.4.2 → pytest-7.4.4}/changelog/README.rst +1 -1
  8. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/index.rst +2 -0
  9. pytest-7.4.4/doc/en/announce/release-7.4.3.rst +19 -0
  10. pytest-7.4.4/doc/en/announce/release-7.4.4.rst +20 -0
  11. {pytest-7.4.2 → pytest-7.4.4}/doc/en/changelog.rst +40 -0
  12. {pytest-7.4.2 → pytest-7.4.4}/doc/en/deprecations.rst +1 -1
  13. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/markers.rst +1 -1
  14. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/simple.rst +1 -1
  15. {pytest-7.4.2 → pytest-7.4.4}/doc/en/getting-started.rst +1 -1
  16. {pytest-7.4.2 → pytest-7.4.4}/doc/en/how-to/output.rst +1 -1
  17. {pytest-7.4.2 → pytest-7.4.4}/doc/en/reference/customize.rst +1 -1
  18. {pytest-7.4.2 → pytest-7.4.4}/doc/en/reference/reference.rst +3 -1
  19. {pytest-7.4.2 → pytest-7.4.4}/scripts/prepare-release-pr.py +15 -3
  20. pytest-7.4.4/src/_pytest/_version.py +16 -0
  21. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/assertion/rewrite.py +50 -18
  22. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/assertion/util.py +1 -1
  23. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/compat.py +17 -8
  24. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/faulthandler.py +15 -8
  25. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/junitxml.py +1 -1
  26. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/mark/structures.py +3 -1
  27. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/nodes.py +1 -1
  28. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/outcomes.py +1 -1
  29. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/pathlib.py +3 -2
  30. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/pytester.py +1 -1
  31. {pytest-7.4.2 → pytest-7.4.4/src/pytest.egg-info}/PKG-INFO +1 -1
  32. {pytest-7.4.2 → pytest-7.4.4}/src/pytest.egg-info/SOURCES.txt +2 -0
  33. {pytest-7.4.2 → pytest-7.4.4}/testing/_py/test_local.py +3 -0
  34. {pytest-7.4.2 → pytest-7.4.4}/testing/conftest.py +9 -0
  35. {pytest-7.4.2 → pytest-7.4.4}/testing/logging/test_fixture.py +33 -23
  36. {pytest-7.4.2 → pytest-7.4.4}/testing/python/metafunc.py +1 -1
  37. {pytest-7.4.2 → pytest-7.4.4}/testing/test_assertrewrite.py +55 -0
  38. {pytest-7.4.2 → pytest-7.4.4}/testing/test_collection.py +23 -0
  39. {pytest-7.4.2 → pytest-7.4.4}/testing/test_mark.py +36 -1
  40. {pytest-7.4.2 → pytest-7.4.4}/testing/test_parseopt.py +2 -1
  41. {pytest-7.4.2 → pytest-7.4.4}/testing/test_pathlib.py +21 -0
  42. pytest-7.4.2/src/_pytest/_version.py +0 -4
  43. {pytest-7.4.2 → pytest-7.4.4}/.coveragerc +0 -0
  44. {pytest-7.4.2 → pytest-7.4.4}/.gitattributes +0 -0
  45. {pytest-7.4.2 → pytest-7.4.4}/.gitblameignore +0 -0
  46. {pytest-7.4.2 → pytest-7.4.4}/.github/FUNDING.yml +0 -0
  47. {pytest-7.4.2 → pytest-7.4.4}/.github/ISSUE_TEMPLATE/1_bug_report.md +0 -0
  48. {pytest-7.4.2 → pytest-7.4.4}/.github/ISSUE_TEMPLATE/2_feature_request.md +0 -0
  49. {pytest-7.4.2 → pytest-7.4.4}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  50. {pytest-7.4.2 → pytest-7.4.4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  51. {pytest-7.4.2 → pytest-7.4.4}/.github/config.yml +0 -0
  52. {pytest-7.4.2 → pytest-7.4.4}/.github/dependabot.yml +0 -0
  53. {pytest-7.4.2 → pytest-7.4.4}/.github/labels.toml +0 -0
  54. {pytest-7.4.2 → pytest-7.4.4}/.github/workflows/backport.yml +0 -0
  55. {pytest-7.4.2 → pytest-7.4.4}/.github/workflows/prepare-release-pr.yml +0 -0
  56. {pytest-7.4.2 → pytest-7.4.4}/.github/workflows/stale.yml +0 -0
  57. {pytest-7.4.2 → pytest-7.4.4}/.github/workflows/update-plugin-list.yml +0 -0
  58. {pytest-7.4.2 → pytest-7.4.4}/.gitignore +0 -0
  59. {pytest-7.4.2 → pytest-7.4.4}/.pre-commit-config.yaml +0 -0
  60. {pytest-7.4.2 → pytest-7.4.4}/CHANGELOG.rst +0 -0
  61. {pytest-7.4.2 → pytest-7.4.4}/CITATION +0 -0
  62. {pytest-7.4.2 → pytest-7.4.4}/CODE_OF_CONDUCT.md +0 -0
  63. {pytest-7.4.2 → pytest-7.4.4}/CONTRIBUTING.rst +0 -0
  64. {pytest-7.4.2 → pytest-7.4.4}/LICENSE +0 -0
  65. {pytest-7.4.2 → pytest-7.4.4}/OPENCOLLECTIVE.rst +0 -0
  66. {pytest-7.4.2 → pytest-7.4.4}/README.rst +0 -0
  67. {pytest-7.4.2 → pytest-7.4.4}/TIDELIFT.rst +0 -0
  68. {pytest-7.4.2 → pytest-7.4.4}/bench/bench.py +0 -0
  69. {pytest-7.4.2 → pytest-7.4.4}/bench/bench_argcomplete.py +0 -0
  70. {pytest-7.4.2 → pytest-7.4.4}/bench/empty.py +0 -0
  71. {pytest-7.4.2 → pytest-7.4.4}/bench/manyparam.py +0 -0
  72. {pytest-7.4.2 → pytest-7.4.4}/bench/skip.py +0 -0
  73. {pytest-7.4.2 → pytest-7.4.4}/bench/unit_test.py +0 -0
  74. {pytest-7.4.2 → pytest-7.4.4}/bench/xunit.py +0 -0
  75. {pytest-7.4.2 → pytest-7.4.4}/changelog/_template.rst +0 -0
  76. {pytest-7.4.2 → pytest-7.4.4}/codecov.yml +0 -0
  77. {pytest-7.4.2 → pytest-7.4.4}/doc/en/Makefile +0 -0
  78. {pytest-7.4.2 → pytest-7.4.4}/doc/en/_templates/globaltoc.html +0 -0
  79. {pytest-7.4.2 → pytest-7.4.4}/doc/en/_templates/layout.html +0 -0
  80. {pytest-7.4.2 → pytest-7.4.4}/doc/en/_templates/links.html +0 -0
  81. {pytest-7.4.2 → pytest-7.4.4}/doc/en/_templates/relations.html +0 -0
  82. {pytest-7.4.2 → pytest-7.4.4}/doc/en/_templates/sidebarintro.html +0 -0
  83. {pytest-7.4.2 → pytest-7.4.4}/doc/en/_templates/slim_searchbox.html +0 -0
  84. {pytest-7.4.2 → pytest-7.4.4}/doc/en/adopt.rst +0 -0
  85. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.0.0.rst +0 -0
  86. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.0.1.rst +0 -0
  87. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.0.2.rst +0 -0
  88. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.0.3.rst +0 -0
  89. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.1.0.rst +0 -0
  90. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.1.1.rst +0 -0
  91. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.1.2.rst +0 -0
  92. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.1.3.rst +0 -0
  93. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.2.0.rst +0 -0
  94. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.2.1.rst +0 -0
  95. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.2.2.rst +0 -0
  96. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.2.4.rst +0 -0
  97. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.3.0.rst +0 -0
  98. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.3.1.rst +0 -0
  99. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.3.2.rst +0 -0
  100. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.3.3.rst +0 -0
  101. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.3.4.rst +0 -0
  102. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.3.5.rst +0 -0
  103. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.4.0.rst +0 -0
  104. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.4.1.rst +0 -0
  105. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.4.2.rst +0 -0
  106. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.5.0.rst +0 -0
  107. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.5.1.rst +0 -0
  108. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.5.2.rst +0 -0
  109. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.6.0.rst +0 -0
  110. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.6.1.rst +0 -0
  111. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.6.2.rst +0 -0
  112. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.6.3.rst +0 -0
  113. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.7.0.rst +0 -0
  114. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.7.1.rst +0 -0
  115. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.7.2.rst +0 -0
  116. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.8.2.rst +0 -0
  117. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.8.3.rst +0 -0
  118. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.8.4.rst +0 -0
  119. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.8.5.rst +0 -0
  120. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.8.6.rst +0 -0
  121. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.8.7.rst +0 -0
  122. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.9.0.rst +0 -0
  123. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.9.1.rst +0 -0
  124. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-2.9.2.rst +0 -0
  125. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.0.0.rst +0 -0
  126. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.0.1.rst +0 -0
  127. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.0.2.rst +0 -0
  128. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.0.3.rst +0 -0
  129. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.0.4.rst +0 -0
  130. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.0.5.rst +0 -0
  131. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.0.6.rst +0 -0
  132. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.0.7.rst +0 -0
  133. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.1.0.rst +0 -0
  134. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.1.1.rst +0 -0
  135. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.1.2.rst +0 -0
  136. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.1.3.rst +0 -0
  137. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.10.0.rst +0 -0
  138. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.10.1.rst +0 -0
  139. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.2.0.rst +0 -0
  140. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.2.1.rst +0 -0
  141. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.2.2.rst +0 -0
  142. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.2.3.rst +0 -0
  143. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.2.4.rst +0 -0
  144. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.2.5.rst +0 -0
  145. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.3.0.rst +0 -0
  146. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.3.1.rst +0 -0
  147. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.3.2.rst +0 -0
  148. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.4.0.rst +0 -0
  149. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.4.1.rst +0 -0
  150. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.4.2.rst +0 -0
  151. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.5.0.rst +0 -0
  152. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.5.1.rst +0 -0
  153. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.6.0.rst +0 -0
  154. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.6.1.rst +0 -0
  155. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.6.2.rst +0 -0
  156. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.6.3.rst +0 -0
  157. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.6.4.rst +0 -0
  158. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.7.0.rst +0 -0
  159. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.7.1.rst +0 -0
  160. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.7.2.rst +0 -0
  161. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.7.3.rst +0 -0
  162. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.7.4.rst +0 -0
  163. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.8.0.rst +0 -0
  164. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.8.1.rst +0 -0
  165. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.8.2.rst +0 -0
  166. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.9.0.rst +0 -0
  167. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.9.1.rst +0 -0
  168. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.9.2.rst +0 -0
  169. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-3.9.3.rst +0 -0
  170. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-4.0.0.rst +0 -0
  171. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-4.0.1.rst +0 -0
  172. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-4.0.2.rst +0 -0
  173. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-4.1.0.rst +0 -0
  174. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-4.1.1.rst +0 -0
  175. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-4.2.0.rst +0 -0
  176. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-4.2.1.rst +0 -0
  177. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-4.3.0.rst +0 -0
  178. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-4.3.1.rst +0 -0
  179. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-4.4.0.rst +0 -0
  180. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-4.4.1.rst +0 -0
  181. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-4.4.2.rst +0 -0
  182. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-4.5.0.rst +0 -0
  183. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-4.6.0.rst +0 -0
  184. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-4.6.1.rst +0 -0
  185. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-4.6.2.rst +0 -0
  186. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-4.6.3.rst +0 -0
  187. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-4.6.4.rst +0 -0
  188. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-4.6.5.rst +0 -0
  189. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-4.6.6.rst +0 -0
  190. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-4.6.7.rst +0 -0
  191. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-4.6.8.rst +0 -0
  192. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-4.6.9.rst +0 -0
  193. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-5.0.0.rst +0 -0
  194. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-5.0.1.rst +0 -0
  195. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-5.1.0.rst +0 -0
  196. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-5.1.1.rst +0 -0
  197. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-5.1.2.rst +0 -0
  198. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-5.1.3.rst +0 -0
  199. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-5.2.0.rst +0 -0
  200. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-5.2.1.rst +0 -0
  201. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-5.2.2.rst +0 -0
  202. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-5.2.3.rst +0 -0
  203. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-5.2.4.rst +0 -0
  204. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-5.3.0.rst +0 -0
  205. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-5.3.1.rst +0 -0
  206. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-5.3.2.rst +0 -0
  207. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-5.3.3.rst +0 -0
  208. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-5.3.4.rst +0 -0
  209. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-5.3.5.rst +0 -0
  210. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-5.4.0.rst +0 -0
  211. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-5.4.1.rst +0 -0
  212. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-5.4.2.rst +0 -0
  213. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-5.4.3.rst +0 -0
  214. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-6.0.0.rst +0 -0
  215. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-6.0.0rc1.rst +0 -0
  216. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-6.0.1.rst +0 -0
  217. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-6.0.2.rst +0 -0
  218. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-6.1.0.rst +0 -0
  219. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-6.1.1.rst +0 -0
  220. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-6.1.2.rst +0 -0
  221. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-6.2.0.rst +0 -0
  222. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-6.2.1.rst +0 -0
  223. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-6.2.2.rst +0 -0
  224. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-6.2.3.rst +0 -0
  225. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-6.2.4.rst +0 -0
  226. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-6.2.5.rst +0 -0
  227. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-7.0.0.rst +0 -0
  228. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-7.0.0rc1.rst +0 -0
  229. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-7.0.1.rst +0 -0
  230. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-7.1.0.rst +0 -0
  231. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-7.1.1.rst +0 -0
  232. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-7.1.2.rst +0 -0
  233. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-7.1.3.rst +0 -0
  234. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-7.2.0.rst +0 -0
  235. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-7.2.1.rst +0 -0
  236. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-7.2.2.rst +0 -0
  237. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-7.3.0.rst +0 -0
  238. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-7.3.1.rst +0 -0
  239. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-7.3.2.rst +0 -0
  240. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-7.4.0.rst +0 -0
  241. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-7.4.1.rst +0 -0
  242. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/release-7.4.2.rst +0 -0
  243. {pytest-7.4.2 → pytest-7.4.4}/doc/en/announce/sprint2016.rst +0 -0
  244. {pytest-7.4.2 → pytest-7.4.4}/doc/en/backwards-compatibility.rst +0 -0
  245. {pytest-7.4.2 → pytest-7.4.4}/doc/en/builtin.rst +0 -0
  246. {pytest-7.4.2 → pytest-7.4.4}/doc/en/conf.py +0 -0
  247. {pytest-7.4.2 → pytest-7.4.4}/doc/en/conftest.py +0 -0
  248. {pytest-7.4.2 → pytest-7.4.4}/doc/en/contact.rst +0 -0
  249. {pytest-7.4.2 → pytest-7.4.4}/doc/en/contents.rst +0 -0
  250. {pytest-7.4.2 → pytest-7.4.4}/doc/en/contributing.rst +0 -0
  251. {pytest-7.4.2 → pytest-7.4.4}/doc/en/development_guide.rst +0 -0
  252. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/assertion/failure_demo.py +0 -0
  253. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/assertion/global_testmodule_config/conftest.py +0 -0
  254. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/assertion/global_testmodule_config/test_hello_world.py +0 -0
  255. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/assertion/test_failures.py +0 -0
  256. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/assertion/test_setup_flow_example.py +0 -0
  257. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/attic.rst +0 -0
  258. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/conftest.py +0 -0
  259. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/fixtures/fixture_availability.svg +0 -0
  260. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/fixtures/fixture_availability_plugins.svg +0 -0
  261. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/fixtures/test_fixtures_order_autouse.py +0 -0
  262. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/fixtures/test_fixtures_order_autouse.svg +0 -0
  263. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/fixtures/test_fixtures_order_autouse_flat.svg +0 -0
  264. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/fixtures/test_fixtures_order_autouse_multiple_scopes.py +0 -0
  265. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/fixtures/test_fixtures_order_autouse_multiple_scopes.svg +0 -0
  266. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/fixtures/test_fixtures_order_autouse_temp_effects.py +0 -0
  267. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/fixtures/test_fixtures_order_autouse_temp_effects.svg +0 -0
  268. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/fixtures/test_fixtures_order_dependencies.py +0 -0
  269. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/fixtures/test_fixtures_order_dependencies.svg +0 -0
  270. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/fixtures/test_fixtures_order_dependencies_flat.svg +0 -0
  271. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/fixtures/test_fixtures_order_dependencies_unclear.svg +0 -0
  272. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/fixtures/test_fixtures_order_scope.py +0 -0
  273. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/fixtures/test_fixtures_order_scope.svg +0 -0
  274. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/fixtures/test_fixtures_request_different_scope.py +0 -0
  275. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/fixtures/test_fixtures_request_different_scope.svg +0 -0
  276. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/index.rst +0 -0
  277. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/multipython.py +0 -0
  278. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/nonpython/__init__.py +0 -0
  279. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/nonpython/conftest.py +0 -0
  280. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/nonpython/test_simple.yaml +0 -0
  281. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/nonpython.rst +0 -0
  282. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/parametrize.rst +0 -0
  283. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/pythoncollection.py +0 -0
  284. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/pythoncollection.rst +0 -0
  285. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/reportingdemo.rst +0 -0
  286. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/special.rst +0 -0
  287. {pytest-7.4.2 → pytest-7.4.4}/doc/en/example/xfail_demo.py +0 -0
  288. {pytest-7.4.2 → pytest-7.4.4}/doc/en/explanation/anatomy.rst +0 -0
  289. {pytest-7.4.2 → pytest-7.4.4}/doc/en/explanation/fixtures.rst +0 -0
  290. {pytest-7.4.2 → pytest-7.4.4}/doc/en/explanation/flaky.rst +0 -0
  291. {pytest-7.4.2 → pytest-7.4.4}/doc/en/explanation/goodpractices.rst +0 -0
  292. {pytest-7.4.2 → pytest-7.4.4}/doc/en/explanation/index.rst +0 -0
  293. {pytest-7.4.2 → pytest-7.4.4}/doc/en/explanation/pythonpath.rst +0 -0
  294. {pytest-7.4.2 → pytest-7.4.4}/doc/en/funcarg_compare.rst +0 -0
  295. {pytest-7.4.2 → pytest-7.4.4}/doc/en/funcargs.rst +0 -0
  296. {pytest-7.4.2 → pytest-7.4.4}/doc/en/historical-notes.rst +0 -0
  297. {pytest-7.4.2 → pytest-7.4.4}/doc/en/history.rst +0 -0
  298. {pytest-7.4.2 → pytest-7.4.4}/doc/en/how-to/assert.rst +0 -0
  299. {pytest-7.4.2 → pytest-7.4.4}/doc/en/how-to/bash-completion.rst +0 -0
  300. {pytest-7.4.2 → pytest-7.4.4}/doc/en/how-to/cache.rst +0 -0
  301. {pytest-7.4.2 → pytest-7.4.4}/doc/en/how-to/capture-stdout-stderr.rst +0 -0
  302. {pytest-7.4.2 → pytest-7.4.4}/doc/en/how-to/capture-warnings.rst +0 -0
  303. {pytest-7.4.2 → pytest-7.4.4}/doc/en/how-to/doctest.rst +0 -0
  304. {pytest-7.4.2 → pytest-7.4.4}/doc/en/how-to/existingtestsuite.rst +0 -0
  305. {pytest-7.4.2 → pytest-7.4.4}/doc/en/how-to/failures.rst +0 -0
  306. {pytest-7.4.2 → pytest-7.4.4}/doc/en/how-to/fixtures.rst +0 -0
  307. {pytest-7.4.2 → pytest-7.4.4}/doc/en/how-to/index.rst +0 -0
  308. {pytest-7.4.2 → pytest-7.4.4}/doc/en/how-to/logging.rst +0 -0
  309. {pytest-7.4.2 → pytest-7.4.4}/doc/en/how-to/mark.rst +0 -0
  310. {pytest-7.4.2 → pytest-7.4.4}/doc/en/how-to/monkeypatch.rst +0 -0
  311. {pytest-7.4.2 → pytest-7.4.4}/doc/en/how-to/nose.rst +0 -0
  312. {pytest-7.4.2 → pytest-7.4.4}/doc/en/how-to/parametrize.rst +0 -0
  313. {pytest-7.4.2 → pytest-7.4.4}/doc/en/how-to/plugins.rst +0 -0
  314. {pytest-7.4.2 → pytest-7.4.4}/doc/en/how-to/skipping.rst +0 -0
  315. {pytest-7.4.2 → pytest-7.4.4}/doc/en/how-to/tmp_path.rst +0 -0
  316. {pytest-7.4.2 → pytest-7.4.4}/doc/en/how-to/unittest.rst +0 -0
  317. {pytest-7.4.2 → pytest-7.4.4}/doc/en/how-to/usage.rst +0 -0
  318. {pytest-7.4.2 → pytest-7.4.4}/doc/en/how-to/writing_hook_functions.rst +0 -0
  319. {pytest-7.4.2 → pytest-7.4.4}/doc/en/how-to/writing_plugins.rst +0 -0
  320. {pytest-7.4.2 → pytest-7.4.4}/doc/en/how-to/xunit_setup.rst +0 -0
  321. {pytest-7.4.2 → pytest-7.4.4}/doc/en/img/cramer2.png +0 -0
  322. {pytest-7.4.2 → pytest-7.4.4}/doc/en/img/favicon.png +0 -0
  323. {pytest-7.4.2 → pytest-7.4.4}/doc/en/img/freiburg2.jpg +0 -0
  324. {pytest-7.4.2 → pytest-7.4.4}/doc/en/img/gaynor3.png +0 -0
  325. {pytest-7.4.2 → pytest-7.4.4}/doc/en/img/keleshev.png +0 -0
  326. {pytest-7.4.2 → pytest-7.4.4}/doc/en/img/pullrequest.png +0 -0
  327. {pytest-7.4.2 → pytest-7.4.4}/doc/en/img/pylib.png +0 -0
  328. {pytest-7.4.2 → pytest-7.4.4}/doc/en/img/pytest1.png +0 -0
  329. {pytest-7.4.2 → pytest-7.4.4}/doc/en/img/pytest_logo_curves.svg +0 -0
  330. {pytest-7.4.2 → pytest-7.4.4}/doc/en/img/theuni.png +0 -0
  331. {pytest-7.4.2 → pytest-7.4.4}/doc/en/index.rst +0 -0
  332. {pytest-7.4.2 → pytest-7.4.4}/doc/en/license.rst +0 -0
  333. {pytest-7.4.2 → pytest-7.4.4}/doc/en/naming20.rst +0 -0
  334. {pytest-7.4.2 → pytest-7.4.4}/doc/en/proposals/parametrize_with_fixtures.rst +0 -0
  335. {pytest-7.4.2 → pytest-7.4.4}/doc/en/pytest.ini +0 -0
  336. {pytest-7.4.2 → pytest-7.4.4}/doc/en/recwarn.rst +0 -0
  337. {pytest-7.4.2 → pytest-7.4.4}/doc/en/reference/exit-codes.rst +0 -0
  338. {pytest-7.4.2 → pytest-7.4.4}/doc/en/reference/fixtures.rst +0 -0
  339. {pytest-7.4.2 → pytest-7.4.4}/doc/en/reference/index.rst +0 -0
  340. {pytest-7.4.2 → pytest-7.4.4}/doc/en/reference/plugin_list.rst +0 -0
  341. {pytest-7.4.2 → pytest-7.4.4}/doc/en/requirements.txt +0 -0
  342. {pytest-7.4.2 → pytest-7.4.4}/doc/en/sponsor.rst +0 -0
  343. {pytest-7.4.2 → pytest-7.4.4}/doc/en/talks.rst +0 -0
  344. {pytest-7.4.2 → pytest-7.4.4}/doc/en/tidelift.rst +0 -0
  345. {pytest-7.4.2 → pytest-7.4.4}/doc/en/yieldfixture.rst +0 -0
  346. {pytest-7.4.2 → pytest-7.4.4}/extra/get_issues.py +0 -0
  347. {pytest-7.4.2 → pytest-7.4.4}/pyproject.toml +0 -0
  348. {pytest-7.4.2 → pytest-7.4.4}/scripts/publish-gh-release-notes.py +0 -0
  349. {pytest-7.4.2 → pytest-7.4.4}/scripts/release.major.rst +0 -0
  350. {pytest-7.4.2 → pytest-7.4.4}/scripts/release.minor.rst +0 -0
  351. {pytest-7.4.2 → pytest-7.4.4}/scripts/release.patch.rst +0 -0
  352. {pytest-7.4.2 → pytest-7.4.4}/scripts/release.pre.rst +0 -0
  353. {pytest-7.4.2 → pytest-7.4.4}/scripts/release.py +0 -0
  354. {pytest-7.4.2 → pytest-7.4.4}/scripts/towncrier-draft-to-file.py +0 -0
  355. {pytest-7.4.2 → pytest-7.4.4}/scripts/update-plugin-list.py +0 -0
  356. {pytest-7.4.2 → pytest-7.4.4}/setup.cfg +0 -0
  357. {pytest-7.4.2 → pytest-7.4.4}/setup.py +0 -0
  358. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/__init__.py +0 -0
  359. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/_argcomplete.py +0 -0
  360. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/_code/__init__.py +0 -0
  361. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/_code/code.py +0 -0
  362. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/_code/source.py +0 -0
  363. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/_io/__init__.py +0 -0
  364. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/_io/saferepr.py +0 -0
  365. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/_io/terminalwriter.py +0 -0
  366. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/_io/wcwidth.py +0 -0
  367. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/_py/__init__.py +0 -0
  368. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/_py/error.py +0 -0
  369. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/_py/path.py +0 -0
  370. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/assertion/__init__.py +0 -0
  371. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/assertion/truncate.py +0 -0
  372. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/cacheprovider.py +0 -0
  373. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/capture.py +0 -0
  374. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/config/__init__.py +0 -0
  375. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/config/argparsing.py +0 -0
  376. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/config/compat.py +0 -0
  377. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/config/exceptions.py +0 -0
  378. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/config/findpaths.py +0 -0
  379. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/debugging.py +0 -0
  380. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/deprecated.py +0 -0
  381. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/doctest.py +0 -0
  382. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/fixtures.py +0 -0
  383. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/freeze_support.py +0 -0
  384. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/helpconfig.py +0 -0
  385. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/hookspec.py +0 -0
  386. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/legacypath.py +0 -0
  387. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/logging.py +0 -0
  388. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/main.py +0 -0
  389. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/mark/__init__.py +0 -0
  390. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/mark/expression.py +0 -0
  391. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/monkeypatch.py +0 -0
  392. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/nose.py +0 -0
  393. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/pastebin.py +0 -0
  394. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/py.typed +0 -0
  395. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/pytester_assertions.py +0 -0
  396. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/python.py +0 -0
  397. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/python_api.py +0 -0
  398. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/python_path.py +0 -0
  399. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/recwarn.py +0 -0
  400. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/reports.py +0 -0
  401. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/runner.py +0 -0
  402. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/scope.py +0 -0
  403. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/setuponly.py +0 -0
  404. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/setupplan.py +0 -0
  405. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/skipping.py +0 -0
  406. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/stash.py +0 -0
  407. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/stepwise.py +0 -0
  408. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/terminal.py +0 -0
  409. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/threadexception.py +0 -0
  410. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/timing.py +0 -0
  411. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/tmpdir.py +0 -0
  412. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/unittest.py +0 -0
  413. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/unraisableexception.py +0 -0
  414. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/warning_types.py +0 -0
  415. {pytest-7.4.2 → pytest-7.4.4}/src/_pytest/warnings.py +0 -0
  416. {pytest-7.4.2 → pytest-7.4.4}/src/py.py +0 -0
  417. {pytest-7.4.2 → pytest-7.4.4}/src/pytest/__init__.py +0 -0
  418. {pytest-7.4.2 → pytest-7.4.4}/src/pytest/__main__.py +0 -0
  419. {pytest-7.4.2 → pytest-7.4.4}/src/pytest/py.typed +0 -0
  420. {pytest-7.4.2 → pytest-7.4.4}/src/pytest.egg-info/dependency_links.txt +0 -0
  421. {pytest-7.4.2 → pytest-7.4.4}/src/pytest.egg-info/entry_points.txt +0 -0
  422. {pytest-7.4.2 → pytest-7.4.4}/src/pytest.egg-info/not-zip-safe +0 -0
  423. {pytest-7.4.2 → pytest-7.4.4}/src/pytest.egg-info/requires.txt +0 -0
  424. {pytest-7.4.2 → pytest-7.4.4}/src/pytest.egg-info/top_level.txt +0 -0
  425. {pytest-7.4.2 → pytest-7.4.4}/testing/acceptance_test.py +0 -0
  426. {pytest-7.4.2 → pytest-7.4.4}/testing/code/test_code.py +0 -0
  427. {pytest-7.4.2 → pytest-7.4.4}/testing/code/test_excinfo.py +0 -0
  428. {pytest-7.4.2 → pytest-7.4.4}/testing/code/test_source.py +0 -0
  429. {pytest-7.4.2 → pytest-7.4.4}/testing/deprecated_test.py +0 -0
  430. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/README.rst +0 -0
  431. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/__init__.py +0 -0
  432. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/acceptance/fixture_mock_integration.py +0 -0
  433. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/collect/collect_init_tests/pytest.ini +0 -0
  434. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/collect/collect_init_tests/tests/__init__.py +0 -0
  435. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/collect/collect_init_tests/tests/test_foo.py +0 -0
  436. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/collect/package_infinite_recursion/__init__.pyi +0 -0
  437. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/collect/package_infinite_recursion/conftest.py +0 -0
  438. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/collect/package_infinite_recursion/tests/__init__.py +0 -0
  439. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/collect/package_infinite_recursion/tests/test_basic.py +0 -0
  440. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/collect/package_init_given_as_arg/pkg/__init__.py +0 -0
  441. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/collect/package_init_given_as_arg/pkg/test_foo.py +0 -0
  442. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/config/collect_pytest_prefix/__init__.pyi +0 -0
  443. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/config/collect_pytest_prefix/conftest.py +0 -0
  444. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/config/collect_pytest_prefix/test_foo.py +0 -0
  445. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/conftest_usageerror/__init__.pyi +0 -0
  446. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/conftest_usageerror/conftest.py +0 -0
  447. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/dataclasses/test_compare_dataclasses.py +0 -0
  448. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/dataclasses/test_compare_dataclasses_field_comparison_off.py +0 -0
  449. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/dataclasses/test_compare_dataclasses_verbose.py +0 -0
  450. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/dataclasses/test_compare_dataclasses_with_custom_eq.py +0 -0
  451. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/dataclasses/test_compare_initvar.py +0 -0
  452. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/dataclasses/test_compare_recursive_dataclasses.py +0 -0
  453. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/dataclasses/test_compare_two_different_dataclasses.py +0 -0
  454. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/doctest/main_py/__main__.py +0 -0
  455. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/doctest/main_py/test_normal_module.py +0 -0
  456. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/fixtures/custom_item/__init__.pyi +0 -0
  457. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/fixtures/custom_item/conftest.py +0 -0
  458. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/fixtures/custom_item/foo/__init__.py +0 -0
  459. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/fixtures/custom_item/foo/test_foo.py +0 -0
  460. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub1/__init__.py +0 -0
  461. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub1/conftest.py +0 -0
  462. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub1/test_in_sub1.py +0 -0
  463. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub2/__init__.py +0 -0
  464. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub2/conftest.py +0 -0
  465. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub2/test_in_sub2.py +0 -0
  466. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/fixtures/fill_fixtures/test_detect_recursive_dependency_error.py +0 -0
  467. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/__init__.pyi +0 -0
  468. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/conftest.py +0 -0
  469. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/pkg/__init__.py +0 -0
  470. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/pkg/conftest.py +0 -0
  471. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/pkg/test_spam.py +0 -0
  472. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_module/__init__.pyi +0 -0
  473. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_module/conftest.py +0 -0
  474. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_module/test_extend_fixture_conftest_module.py +0 -0
  475. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_module_class.py +0 -0
  476. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/fixtures/fill_fixtures/test_funcarg_basic.py +0 -0
  477. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/fixtures/fill_fixtures/test_funcarg_lookup_classlevel.py +0 -0
  478. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/fixtures/fill_fixtures/test_funcarg_lookup_modulelevel.py +0 -0
  479. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/fixtures/fill_fixtures/test_funcarg_lookupfails.py +0 -0
  480. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/fixtures/test_fixture_named_request.py +0 -0
  481. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/fixtures/test_getfixturevalue_dynamic.py +0 -0
  482. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/issue88_initial_file_multinodes/__init__.pyi +0 -0
  483. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/issue88_initial_file_multinodes/conftest.py +0 -0
  484. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/issue88_initial_file_multinodes/test_hello.py +0 -0
  485. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/issue_519.py +0 -0
  486. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/junit-10.xsd +0 -0
  487. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/marks/marks_considered_keywords/__init__.pyi +0 -0
  488. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/marks/marks_considered_keywords/conftest.py +0 -0
  489. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/marks/marks_considered_keywords/test_marks_as_keywords.py +0 -0
  490. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/perf_examples/collect_stats/.gitignore +0 -0
  491. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/perf_examples/collect_stats/generate_folders.py +0 -0
  492. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/perf_examples/collect_stats/template_test.py +0 -0
  493. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/pytest.ini +0 -0
  494. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/tmpdir/tmp_path_fixture.py +0 -0
  495. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/unittest/test_parametrized_fixture_error_message.py +0 -0
  496. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/unittest/test_setup_skip.py +0 -0
  497. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/unittest/test_setup_skip_class.py +0 -0
  498. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/unittest/test_setup_skip_module.py +0 -0
  499. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/unittest/test_unittest_asyncio.py +0 -0
  500. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/unittest/test_unittest_asynctest.py +0 -0
  501. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/unittest/test_unittest_plain_async.py +0 -0
  502. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/warnings/test_group_warnings_by_message.py +0 -0
  503. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/warnings/test_group_warnings_by_message_summary/test_1.py +0 -0
  504. {pytest-7.4.2 → pytest-7.4.4}/testing/example_scripts/warnings/test_group_warnings_by_message_summary/test_2.py +0 -0
  505. {pytest-7.4.2 → pytest-7.4.4}/testing/examples/test_issue519.py +0 -0
  506. {pytest-7.4.2 → pytest-7.4.4}/testing/freeze/.gitignore +0 -0
  507. {pytest-7.4.2 → pytest-7.4.4}/testing/freeze/create_executable.py +0 -0
  508. {pytest-7.4.2 → pytest-7.4.4}/testing/freeze/runtests_script.py +0 -0
  509. {pytest-7.4.2 → pytest-7.4.4}/testing/freeze/tests/test_doctest.txt +0 -0
  510. {pytest-7.4.2 → pytest-7.4.4}/testing/freeze/tests/test_trivial.py +0 -0
  511. {pytest-7.4.2 → pytest-7.4.4}/testing/freeze/tox_run.py +0 -0
  512. {pytest-7.4.2 → pytest-7.4.4}/testing/io/test_saferepr.py +0 -0
  513. {pytest-7.4.2 → pytest-7.4.4}/testing/io/test_terminalwriter.py +0 -0
  514. {pytest-7.4.2 → pytest-7.4.4}/testing/io/test_wcwidth.py +0 -0
  515. {pytest-7.4.2 → pytest-7.4.4}/testing/logging/test_formatter.py +0 -0
  516. {pytest-7.4.2 → pytest-7.4.4}/testing/logging/test_reporting.py +0 -0
  517. {pytest-7.4.2 → pytest-7.4.4}/testing/plugins_integration/.gitignore +0 -0
  518. {pytest-7.4.2 → pytest-7.4.4}/testing/plugins_integration/README.rst +0 -0
  519. {pytest-7.4.2 → pytest-7.4.4}/testing/plugins_integration/bdd_wallet.feature +0 -0
  520. {pytest-7.4.2 → pytest-7.4.4}/testing/plugins_integration/bdd_wallet.py +0 -0
  521. {pytest-7.4.2 → pytest-7.4.4}/testing/plugins_integration/django_settings.py +0 -0
  522. {pytest-7.4.2 → pytest-7.4.4}/testing/plugins_integration/pytest.ini +0 -0
  523. {pytest-7.4.2 → pytest-7.4.4}/testing/plugins_integration/pytest_anyio_integration.py +0 -0
  524. {pytest-7.4.2 → pytest-7.4.4}/testing/plugins_integration/pytest_asyncio_integration.py +0 -0
  525. {pytest-7.4.2 → pytest-7.4.4}/testing/plugins_integration/pytest_mock_integration.py +0 -0
  526. {pytest-7.4.2 → pytest-7.4.4}/testing/plugins_integration/pytest_trio_integration.py +0 -0
  527. {pytest-7.4.2 → pytest-7.4.4}/testing/plugins_integration/pytest_twisted_integration.py +0 -0
  528. {pytest-7.4.2 → pytest-7.4.4}/testing/plugins_integration/requirements.txt +0 -0
  529. {pytest-7.4.2 → pytest-7.4.4}/testing/plugins_integration/simple_integration.py +0 -0
  530. {pytest-7.4.2 → pytest-7.4.4}/testing/python/approx.py +0 -0
  531. {pytest-7.4.2 → pytest-7.4.4}/testing/python/collect.py +0 -0
  532. {pytest-7.4.2 → pytest-7.4.4}/testing/python/fixtures.py +0 -0
  533. {pytest-7.4.2 → pytest-7.4.4}/testing/python/integration.py +0 -0
  534. {pytest-7.4.2 → pytest-7.4.4}/testing/python/raises.py +0 -0
  535. {pytest-7.4.2 → pytest-7.4.4}/testing/python/show_fixtures_per_test.py +0 -0
  536. {pytest-7.4.2 → pytest-7.4.4}/testing/test_argcomplete.py +0 -0
  537. {pytest-7.4.2 → pytest-7.4.4}/testing/test_assertion.py +0 -0
  538. {pytest-7.4.2 → pytest-7.4.4}/testing/test_cacheprovider.py +0 -0
  539. {pytest-7.4.2 → pytest-7.4.4}/testing/test_capture.py +0 -0
  540. {pytest-7.4.2 → pytest-7.4.4}/testing/test_compat.py +0 -0
  541. {pytest-7.4.2 → pytest-7.4.4}/testing/test_config.py +0 -0
  542. {pytest-7.4.2 → pytest-7.4.4}/testing/test_conftest.py +0 -0
  543. {pytest-7.4.2 → pytest-7.4.4}/testing/test_debugging.py +0 -0
  544. {pytest-7.4.2 → pytest-7.4.4}/testing/test_doctest.py +0 -0
  545. {pytest-7.4.2 → pytest-7.4.4}/testing/test_entry_points.py +0 -0
  546. {pytest-7.4.2 → pytest-7.4.4}/testing/test_error_diffs.py +0 -0
  547. {pytest-7.4.2 → pytest-7.4.4}/testing/test_faulthandler.py +0 -0
  548. {pytest-7.4.2 → pytest-7.4.4}/testing/test_findpaths.py +0 -0
  549. {pytest-7.4.2 → pytest-7.4.4}/testing/test_helpconfig.py +0 -0
  550. {pytest-7.4.2 → pytest-7.4.4}/testing/test_junitxml.py +0 -0
  551. {pytest-7.4.2 → pytest-7.4.4}/testing/test_legacypath.py +0 -0
  552. {pytest-7.4.2 → pytest-7.4.4}/testing/test_link_resolve.py +0 -0
  553. {pytest-7.4.2 → pytest-7.4.4}/testing/test_main.py +0 -0
  554. {pytest-7.4.2 → pytest-7.4.4}/testing/test_mark_expression.py +0 -0
  555. {pytest-7.4.2 → pytest-7.4.4}/testing/test_meta.py +0 -0
  556. {pytest-7.4.2 → pytest-7.4.4}/testing/test_monkeypatch.py +0 -0
  557. {pytest-7.4.2 → pytest-7.4.4}/testing/test_nodes.py +0 -0
  558. {pytest-7.4.2 → pytest-7.4.4}/testing/test_nose.py +0 -0
  559. {pytest-7.4.2 → pytest-7.4.4}/testing/test_pastebin.py +0 -0
  560. {pytest-7.4.2 → pytest-7.4.4}/testing/test_pluginmanager.py +0 -0
  561. {pytest-7.4.2 → pytest-7.4.4}/testing/test_pytester.py +0 -0
  562. {pytest-7.4.2 → pytest-7.4.4}/testing/test_python_path.py +0 -0
  563. {pytest-7.4.2 → pytest-7.4.4}/testing/test_recwarn.py +0 -0
  564. {pytest-7.4.2 → pytest-7.4.4}/testing/test_reports.py +0 -0
  565. {pytest-7.4.2 → pytest-7.4.4}/testing/test_runner.py +0 -0
  566. {pytest-7.4.2 → pytest-7.4.4}/testing/test_runner_xunit.py +0 -0
  567. {pytest-7.4.2 → pytest-7.4.4}/testing/test_scope.py +0 -0
  568. {pytest-7.4.2 → pytest-7.4.4}/testing/test_session.py +0 -0
  569. {pytest-7.4.2 → pytest-7.4.4}/testing/test_setuponly.py +0 -0
  570. {pytest-7.4.2 → pytest-7.4.4}/testing/test_setupplan.py +0 -0
  571. {pytest-7.4.2 → pytest-7.4.4}/testing/test_skipping.py +0 -0
  572. {pytest-7.4.2 → pytest-7.4.4}/testing/test_stash.py +0 -0
  573. {pytest-7.4.2 → pytest-7.4.4}/testing/test_stepwise.py +0 -0
  574. {pytest-7.4.2 → pytest-7.4.4}/testing/test_terminal.py +0 -0
  575. {pytest-7.4.2 → pytest-7.4.4}/testing/test_threadexception.py +0 -0
  576. {pytest-7.4.2 → pytest-7.4.4}/testing/test_tmpdir.py +0 -0
  577. {pytest-7.4.2 → pytest-7.4.4}/testing/test_unittest.py +0 -0
  578. {pytest-7.4.2 → pytest-7.4.4}/testing/test_unraisableexception.py +0 -0
  579. {pytest-7.4.2 → pytest-7.4.4}/testing/test_warning_types.py +0 -0
  580. {pytest-7.4.2 → pytest-7.4.4}/testing/test_warnings.py +0 -0
  581. {pytest-7.4.2 → pytest-7.4.4}/testing/typing_checks.py +0 -0
  582. {pytest-7.4.2 → pytest-7.4.4}/tox.ini +0 -0
@@ -26,7 +26,7 @@ jobs:
26
26
  persist-credentials: false
27
27
 
28
28
  - name: Build and Check Package
29
- uses: hynek/build-and-inspect-python-package@v1.5
29
+ uses: hynek/build-and-inspect-python-package@v1.5.3
30
30
 
31
31
  deploy:
32
32
  if: github.repository == 'pytest-dev/pytest'
@@ -36,8 +36,10 @@ jobs:
36
36
  timeout-minutes: 30
37
37
  permissions:
38
38
  id-token: write
39
+ contents: write
39
40
  steps:
40
41
  - uses: actions/checkout@v3
42
+
41
43
  - name: Download Package
42
44
  uses: actions/download-artifact@v3
43
45
  with:
@@ -51,8 +53,8 @@ jobs:
51
53
  run: |
52
54
  git config user.name "pytest bot"
53
55
  git config user.email "pytestbot@gmail.com"
54
- git tag --annotate --message=v${{ github.event.inputs.version }} v${{ github.event.inputs.version }} ${{ github.sha }}
55
- git push origin v${{ github.event.inputs.version }}
56
+ git tag --annotate --message=v${{ github.event.inputs.version }} ${{ github.event.inputs.version }} ${{ github.sha }}
57
+ git push origin ${{ github.event.inputs.version }}
56
58
 
57
59
  release-notes:
58
60
 
@@ -35,7 +35,7 @@ jobs:
35
35
  fetch-depth: 0
36
36
  persist-credentials: false
37
37
  - name: Build and Check Package
38
- uses: hynek/build-and-inspect-python-package@v1.5
38
+ uses: hynek/build-and-inspect-python-package@v1.5.3
39
39
 
40
40
  build:
41
41
  needs: [package]
@@ -9,6 +9,10 @@ python:
9
9
  path: .
10
10
  - requirements: doc/en/requirements.txt
11
11
 
12
+ sphinx:
13
+ configuration: doc/en/conf.py
14
+ fail_on_warning: true
15
+
12
16
  build:
13
17
  os: ubuntu-20.04
14
18
  tools:
@@ -47,6 +47,7 @@ Ariel Pillemer
47
47
  Armin Rigo
48
48
  Aron Coyle
49
49
  Aron Curzon
50
+ Arthur Richard
50
51
  Ashish Kurmi
51
52
  Aviral Verma
52
53
  Aviv Palivoda
@@ -231,6 +232,7 @@ Maho
231
232
  Maik Figura
232
233
  Mandeep Bhutani
233
234
  Manuel Krebber
235
+ Marc Mueller
234
236
  Marc Schlaich
235
237
  Marcelo Duarte Trevisani
236
238
  Marcin Bachry
@@ -322,6 +324,7 @@ Ronny Pfannschmidt
322
324
  Ross Lawley
323
325
  Ruaridh Williamson
324
326
  Russel Winder
327
+ Ryan Puddephatt
325
328
  Ryan Wooden
326
329
  Saiprasad Kale
327
330
  Samuel Colvin
@@ -336,6 +339,7 @@ Serhii Mozghovyi
336
339
  Seth Junot
337
340
  Shantanu Jain
338
341
  Shubham Adep
342
+ Simon Blanchard
339
343
  Simon Gomizelj
340
344
  Simon Holesch
341
345
  Simon Kerr
@@ -373,6 +377,7 @@ Tomer Keren
373
377
  Tony Narlock
374
378
  Tor Colvin
375
379
  Trevor Bekolay
380
+ Tushar Sadhwani
376
381
  Tyler Goodlet
377
382
  Tyler Smart
378
383
  Tzu-ping Chung
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pytest
3
- Version: 7.4.2
3
+ Version: 7.4.4
4
4
  Summary: pytest: simple powerful testing with Python
5
5
  Home-page: https://docs.pytest.org/en/latest/
6
6
  Author: Holger Krekel, Bruno Oliveira, Ronny Pfannschmidt, Floris Bruynooghe, Brianna Laugher, Florian Bruhin and others
@@ -134,7 +134,8 @@ Releasing
134
134
  Both automatic and manual processes described above follow the same steps from this point onward.
135
135
 
136
136
  #. After all tests pass and the PR has been approved, trigger the ``deploy`` job
137
- in https://github.com/pytest-dev/pytest/actions/workflows/deploy.yml.
137
+ in https://github.com/pytest-dev/pytest/actions/workflows/deploy.yml, using the ``release-MAJOR.MINOR.PATCH`` branch
138
+ as source.
138
139
 
139
140
  This job will require approval from ``pytest-dev/core``, after which it will publish to PyPI
140
141
  and tag the repository.
@@ -14,7 +14,7 @@ Each file should be named like ``<ISSUE>.<TYPE>.rst``, where
14
14
  ``<ISSUE>`` is an issue number, and ``<TYPE>`` is one of:
15
15
 
16
16
  * ``feature``: new user facing features, like new command-line options and new behavior.
17
- * ``improvement``: improvement of existing functionality, usually without requiring user intervention (for example, new fields being written in ``--junitxml``, improved colors in terminal, etc).
17
+ * ``improvement``: improvement of existing functionality, usually without requiring user intervention (for example, new fields being written in ``--junit-xml``, improved colors in terminal, etc).
18
18
  * ``bugfix``: fixes a bug.
19
19
  * ``doc``: documentation improvement, like rewording an entire session or adding missing docs.
20
20
  * ``deprecation``: feature deprecation.
@@ -6,6 +6,8 @@ Release announcements
6
6
  :maxdepth: 2
7
7
 
8
8
 
9
+ release-7.4.4
10
+ release-7.4.3
9
11
  release-7.4.2
10
12
  release-7.4.1
11
13
  release-7.4.0
@@ -0,0 +1,19 @@
1
+ pytest-7.4.3
2
+ =======================================
3
+
4
+ pytest 7.4.3 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
+ * Marc Mueller
16
+
17
+
18
+ Happy testing,
19
+ The pytest Development Team
@@ -0,0 +1,20 @@
1
+ pytest-7.4.4
2
+ =======================================
3
+
4
+ pytest 7.4.4 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
+ * Zac Hatfield-Dodds
17
+
18
+
19
+ Happy testing,
20
+ The pytest Development Team
@@ -28,6 +28,46 @@ with advance notice in the **Deprecations** section of releases.
28
28
 
29
29
  .. towncrier release notes start
30
30
 
31
+ pytest 7.4.4 (2023-12-31)
32
+ =========================
33
+
34
+ Bug Fixes
35
+ ---------
36
+
37
+ - `#11140 <https://github.com/pytest-dev/pytest/issues/11140>`_: Fix non-string constants at the top of file being detected as docstrings on Python>=3.8.
38
+
39
+
40
+ - `#11572 <https://github.com/pytest-dev/pytest/issues/11572>`_: Handle an edge case where :data:`sys.stderr` and :data:`sys.__stderr__` might already be closed when :ref:`faulthandler` is tearing down.
41
+
42
+
43
+ - `#11710 <https://github.com/pytest-dev/pytest/issues/11710>`_: Fixed tracebacks from collection errors not getting pruned.
44
+
45
+
46
+ - `#7966 <https://github.com/pytest-dev/pytest/issues/7966>`_: Removed unhelpful error message from assertion rewrite mechanism when exceptions are raised in ``__iter__`` methods. Now they are treated un-iterable instead.
47
+
48
+
49
+
50
+ Improved Documentation
51
+ ----------------------
52
+
53
+ - `#11091 <https://github.com/pytest-dev/pytest/issues/11091>`_: Updated documentation to refer to hyphenated options: replaced ``--junitxml`` with ``--junit-xml`` and ``--collectonly`` with ``--collect-only``.
54
+
55
+
56
+ pytest 7.4.3 (2023-10-24)
57
+ =========================
58
+
59
+ Bug Fixes
60
+ ---------
61
+
62
+ - `#10447 <https://github.com/pytest-dev/pytest/issues/10447>`_: Markers are now considered in the reverse mro order to ensure base class markers are considered first -- this resolves a regression.
63
+
64
+
65
+ - `#11239 <https://github.com/pytest-dev/pytest/issues/11239>`_: Fixed ``:=`` in asserts impacting unrelated test cases.
66
+
67
+
68
+ - `#11439 <https://github.com/pytest-dev/pytest/issues/11439>`_: Handled an edge case where :data:`sys.stderr` might already be closed when :ref:`faulthandler` is tearing down.
69
+
70
+
31
71
  pytest 7.4.2 (2023-09-07)
32
72
  =========================
33
73
 
@@ -596,7 +596,7 @@ By using ``legacy`` you will keep using the legacy/xunit1 format when upgrading
596
596
  pytest 6.0, where the default format will be ``xunit2``.
597
597
 
598
598
  In order to let users know about the transition, pytest will issue a warning in case
599
- the ``--junitxml`` option is given in the command line but ``junit_family`` is not explicitly
599
+ the ``--junit-xml`` option is given in the command line but ``junit_family`` is not explicitly
600
600
  configured in ``pytest.ini``.
601
601
 
602
602
  Services known to support the ``xunit2`` format:
@@ -136,7 +136,7 @@ Or select multiple nodes:
136
136
 
137
137
  Node IDs for failing tests are displayed in the test summary info
138
138
  when running pytest with the ``-rf`` option. You can also
139
- construct Node IDs from the output of ``pytest --collectonly``.
139
+ construct Node IDs from the output of ``pytest --collect-only``.
140
140
 
141
141
  Using ``-k expr`` to select tests based on their name
142
142
  -------------------------------------------------------
@@ -1088,4 +1088,4 @@ application with standard ``pytest`` command-line options:
1088
1088
 
1089
1089
  .. code-block:: bash
1090
1090
 
1091
- ./app_main --pytest --verbose --tb=long --junitxml=results.xml test-suite/
1091
+ ./app_main --pytest --verbose --tb=long --junit=xml=results.xml test-suite/
@@ -22,7 +22,7 @@ Install ``pytest``
22
22
  .. code-block:: bash
23
23
 
24
24
  $ pytest --version
25
- pytest 7.4.2
25
+ pytest 7.4.4
26
26
 
27
27
  .. _`simpletest`:
28
28
 
@@ -478,7 +478,7 @@ integration servers, use this invocation:
478
478
 
479
479
  .. code-block:: bash
480
480
 
481
- pytest --junitxml=path
481
+ pytest --junit-xml=path
482
482
 
483
483
  to create an XML file at ``path``.
484
484
 
@@ -90,7 +90,7 @@ and can also be used to hold pytest configuration if they have a ``[pytest]`` se
90
90
  setup.cfg
91
91
  ~~~~~~~~~
92
92
 
93
- ``setup.cfg`` files are general purpose configuration files, used originally by :doc:`distutils <python:distutils/configfile>`, and can also be used to hold pytest configuration
93
+ ``setup.cfg`` files are general purpose configuration files, used originally by ``distutils`` (now deprecated) and `setuptools <https://setuptools.pypa.io/en/latest/userguide/declarative_config.html>`__, and can also be used to hold pytest configuration
94
94
  if they have a ``[tool:pytest]`` section.
95
95
 
96
96
  .. code-block:: ini
@@ -1,3 +1,5 @@
1
+ :tocdepth: 3
2
+
1
3
  .. _`api-reference`:
2
4
 
3
5
  API Reference
@@ -77,7 +79,7 @@ pytest.xfail
77
79
  pytest.exit
78
80
  ~~~~~~~~~~~
79
81
 
80
- .. autofunction:: pytest.exit(reason, [returncode=False, msg=None])
82
+ .. autofunction:: pytest.exit(reason, [returncode=None, msg=None])
81
83
 
82
84
  pytest.main
83
85
  ~~~~~~~~~~~
@@ -31,10 +31,22 @@ class InvalidFeatureRelease(Exception):
31
31
  SLUG = "pytest-dev/pytest"
32
32
 
33
33
  PR_BODY = """\
34
- Created automatically from manual trigger.
34
+ Created by the [prepare release pr]\
35
+ (https://github.com/pytest-dev/pytest/actions/workflows/prepare-release-pr.yml) workflow.
35
36
 
36
- Once all builds pass and it has been **approved** by one or more maintainers, the build
37
- can be released by pushing a tag `{version}` to this repository.
37
+ Once all builds pass and it has been **approved** by one or more maintainers, start the \
38
+ [deploy](https://github.com/pytest-dev/pytest/actions/workflows/deploy.yml) workflow, using these parameters:
39
+
40
+ * `Use workflow from`: `release-{version}`.
41
+ * `Release version`: `{version}`.
42
+
43
+ Or execute on the command line:
44
+
45
+ ```console
46
+ gh workflow run deploy.yml -r release-{version} -f version={version}
47
+ ```
48
+
49
+ After the workflow has been approved by a core maintainer, the package will be uploaded to PyPI automatically.
38
50
  """
39
51
 
40
52
 
@@ -0,0 +1,16 @@
1
+ # file generated by setuptools_scm
2
+ # don't change, don't track in version control
3
+ TYPE_CHECKING = False
4
+ if TYPE_CHECKING:
5
+ from typing import Tuple, Union
6
+ VERSION_TUPLE = Tuple[Union[int, str], ...]
7
+ else:
8
+ VERSION_TUPLE = object
9
+
10
+ version: str
11
+ __version__: str
12
+ __version_tuple__: VERSION_TUPLE
13
+ version_tuple: VERSION_TUPLE
14
+
15
+ __version__ = version = '7.4.4'
16
+ __version_tuple__ = version_tuple = (7, 4, 4)
@@ -13,6 +13,7 @@ import struct
13
13
  import sys
14
14
  import tokenize
15
15
  import types
16
+ from collections import defaultdict
16
17
  from pathlib import Path
17
18
  from pathlib import PurePath
18
19
  from typing import Callable
@@ -56,6 +57,10 @@ else:
56
57
  astNum = ast.Num
57
58
 
58
59
 
60
+ class Sentinel:
61
+ pass
62
+
63
+
59
64
  assertstate_key = StashKey["AssertionState"]()
60
65
 
61
66
  # pytest caches rewritten pycs in pycache dirs
@@ -63,6 +68,9 @@ PYTEST_TAG = f"{sys.implementation.cache_tag}-pytest-{version}"
63
68
  PYC_EXT = ".py" + (__debug__ and "c" or "o")
64
69
  PYC_TAIL = "." + PYTEST_TAG + PYC_EXT
65
70
 
71
+ # Special marker that denotes we have just left a scope definition
72
+ _SCOPE_END_MARKER = Sentinel()
73
+
66
74
 
67
75
  class AssertionRewritingHook(importlib.abc.MetaPathFinder, importlib.abc.Loader):
68
76
  """PEP302/PEP451 import hook which rewrites asserts."""
@@ -596,6 +604,13 @@ def _get_assertion_exprs(src: bytes) -> Dict[int, str]:
596
604
  return ret
597
605
 
598
606
 
607
+ def _get_ast_constant_value(value: astStr) -> object:
608
+ if sys.version_info >= (3, 8):
609
+ return value.value
610
+ else:
611
+ return value.s
612
+
613
+
599
614
  class AssertionRewriter(ast.NodeVisitor):
600
615
  """Assertion rewriting implementation.
601
616
 
@@ -645,6 +660,8 @@ class AssertionRewriter(ast.NodeVisitor):
645
660
  .push_format_context() and .pop_format_context() which allows
646
661
  to build another %-formatted string while already building one.
647
662
 
663
+ :scope: A tuple containing the current scope used for variables_overwrite.
664
+
648
665
  :variables_overwrite: A dict filled with references to variables
649
666
  that change value within an assert. This happens when a variable is
650
667
  reassigned with the walrus operator
@@ -666,7 +683,10 @@ class AssertionRewriter(ast.NodeVisitor):
666
683
  else:
667
684
  self.enable_assertion_pass_hook = False
668
685
  self.source = source
669
- self.variables_overwrite: Dict[str, str] = {}
686
+ self.scope: tuple[ast.AST, ...] = ()
687
+ self.variables_overwrite: defaultdict[
688
+ tuple[ast.AST, ...], Dict[str, str]
689
+ ] = defaultdict(dict)
670
690
 
671
691
  def run(self, mod: ast.Module) -> None:
672
692
  """Find all assert statements in *mod* and rewrite them."""
@@ -687,11 +707,10 @@ class AssertionRewriter(ast.NodeVisitor):
687
707
  expect_docstring
688
708
  and isinstance(item, ast.Expr)
689
709
  and isinstance(item.value, astStr)
710
+ and isinstance(_get_ast_constant_value(item.value), str)
690
711
  ):
691
- if sys.version_info >= (3, 8):
692
- doc = item.value.value
693
- else:
694
- doc = item.value.s
712
+ doc = _get_ast_constant_value(item.value)
713
+ assert isinstance(doc, str)
695
714
  if self.is_rewrite_disabled(doc):
696
715
  return
697
716
  expect_docstring = False
@@ -732,9 +751,17 @@ class AssertionRewriter(ast.NodeVisitor):
732
751
  mod.body[pos:pos] = imports
733
752
 
734
753
  # Collect asserts.
735
- nodes: List[ast.AST] = [mod]
754
+ self.scope = (mod,)
755
+ nodes: List[Union[ast.AST, Sentinel]] = [mod]
736
756
  while nodes:
737
757
  node = nodes.pop()
758
+ if isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef, ast.ClassDef)):
759
+ self.scope = tuple((*self.scope, node))
760
+ nodes.append(_SCOPE_END_MARKER)
761
+ if node == _SCOPE_END_MARKER:
762
+ self.scope = self.scope[:-1]
763
+ continue
764
+ assert isinstance(node, ast.AST)
738
765
  for name, field in ast.iter_fields(node):
739
766
  if isinstance(field, list):
740
767
  new: List[ast.AST] = []
@@ -1005,7 +1032,7 @@ class AssertionRewriter(ast.NodeVisitor):
1005
1032
  ]
1006
1033
  ):
1007
1034
  pytest_temp = self.variable()
1008
- self.variables_overwrite[
1035
+ self.variables_overwrite[self.scope][
1009
1036
  v.left.target.id
1010
1037
  ] = v.left # type:ignore[assignment]
1011
1038
  v.left.target.id = pytest_temp
@@ -1048,17 +1075,20 @@ class AssertionRewriter(ast.NodeVisitor):
1048
1075
  new_args = []
1049
1076
  new_kwargs = []
1050
1077
  for arg in call.args:
1051
- if isinstance(arg, ast.Name) and arg.id in self.variables_overwrite:
1052
- arg = self.variables_overwrite[arg.id] # type:ignore[assignment]
1078
+ if isinstance(arg, ast.Name) and arg.id in self.variables_overwrite.get(
1079
+ self.scope, {}
1080
+ ):
1081
+ arg = self.variables_overwrite[self.scope][
1082
+ arg.id
1083
+ ] # type:ignore[assignment]
1053
1084
  res, expl = self.visit(arg)
1054
1085
  arg_expls.append(expl)
1055
1086
  new_args.append(res)
1056
1087
  for keyword in call.keywords:
1057
- if (
1058
- isinstance(keyword.value, ast.Name)
1059
- and keyword.value.id in self.variables_overwrite
1060
- ):
1061
- keyword.value = self.variables_overwrite[
1088
+ if isinstance(
1089
+ keyword.value, ast.Name
1090
+ ) and keyword.value.id in self.variables_overwrite.get(self.scope, {}):
1091
+ keyword.value = self.variables_overwrite[self.scope][
1062
1092
  keyword.value.id
1063
1093
  ] # type:ignore[assignment]
1064
1094
  res, expl = self.visit(keyword.value)
@@ -1094,12 +1124,14 @@ class AssertionRewriter(ast.NodeVisitor):
1094
1124
  def visit_Compare(self, comp: ast.Compare) -> Tuple[ast.expr, str]:
1095
1125
  self.push_format_context()
1096
1126
  # We first check if we have overwritten a variable in the previous assert
1097
- if isinstance(comp.left, ast.Name) and comp.left.id in self.variables_overwrite:
1098
- comp.left = self.variables_overwrite[
1127
+ if isinstance(
1128
+ comp.left, ast.Name
1129
+ ) and comp.left.id in self.variables_overwrite.get(self.scope, {}):
1130
+ comp.left = self.variables_overwrite[self.scope][
1099
1131
  comp.left.id
1100
1132
  ] # type:ignore[assignment]
1101
1133
  if isinstance(comp.left, namedExpr):
1102
- self.variables_overwrite[
1134
+ self.variables_overwrite[self.scope][
1103
1135
  comp.left.target.id
1104
1136
  ] = comp.left # type:ignore[assignment]
1105
1137
  left_res, left_expl = self.visit(comp.left)
@@ -1119,7 +1151,7 @@ class AssertionRewriter(ast.NodeVisitor):
1119
1151
  and next_operand.target.id == left_res.id
1120
1152
  ):
1121
1153
  next_operand.target.id = self.variable()
1122
- self.variables_overwrite[
1154
+ self.variables_overwrite[self.scope][
1123
1155
  left_res.id
1124
1156
  ] = next_operand # type:ignore[assignment]
1125
1157
  next_res, next_expl = self.visit(next_operand)
@@ -132,7 +132,7 @@ def isiterable(obj: Any) -> bool:
132
132
  try:
133
133
  iter(obj)
134
134
  return not istext(obj)
135
- except TypeError:
135
+ except Exception:
136
136
  return False
137
137
 
138
138
 
@@ -380,15 +380,24 @@ else:
380
380
 
381
381
 
382
382
  def get_user_id() -> int | None:
383
- """Return the current user id, or None if we cannot get it reliably on the current platform."""
384
- # win32 does not have a getuid() function.
385
- # On Emscripten, getuid() is a stub that always returns 0.
386
- if sys.platform in ("win32", "emscripten"):
383
+ """Return the current process's real user id or None if it could not be
384
+ determined.
385
+
386
+ :return: The user id or None if it could not be determined.
387
+ """
388
+ # mypy follows the version and platform checking expectation of PEP 484:
389
+ # https://mypy.readthedocs.io/en/stable/common_issues.html?highlight=platform#python-version-and-system-platform-checks
390
+ # Containment checks are too complex for mypy v1.5.0 and cause failure.
391
+ if sys.platform == "win32" or sys.platform == "emscripten":
392
+ # win32 does not have a getuid() function.
393
+ # Emscripten has a return 0 stub.
387
394
  return None
388
- # getuid shouldn't fail, but cpython defines such a case.
389
- # Let's hope for the best.
390
- uid = os.getuid()
391
- return uid if uid != -1 else None
395
+ else:
396
+ # On other platforms, a return value of -1 is assumed to indicate that
397
+ # the current process's real user id could not be determined.
398
+ ERROR = -1
399
+ uid = os.getuid()
400
+ return uid if uid != ERROR else None
392
401
 
393
402
 
394
403
  # Perform exhaustiveness checking.
@@ -1,4 +1,3 @@
1
- import io
2
1
  import os
3
2
  import sys
4
3
  from typing import Generator
@@ -10,8 +9,8 @@ from _pytest.nodes import Item
10
9
  from _pytest.stash import StashKey
11
10
 
12
11
 
12
+ fault_handler_original_stderr_fd_key = StashKey[int]()
13
13
  fault_handler_stderr_fd_key = StashKey[int]()
14
- fault_handler_originally_enabled_key = StashKey[bool]()
15
14
 
16
15
 
17
16
  def pytest_addoption(parser: Parser) -> None:
@@ -25,8 +24,15 @@ def pytest_addoption(parser: Parser) -> None:
25
24
  def pytest_configure(config: Config) -> None:
26
25
  import faulthandler
27
26
 
28
- config.stash[fault_handler_stderr_fd_key] = os.dup(get_stderr_fileno())
29
- config.stash[fault_handler_originally_enabled_key] = faulthandler.is_enabled()
27
+ # at teardown we want to restore the original faulthandler fileno
28
+ # but faulthandler has no api to return the original fileno
29
+ # so here we stash the stderr fileno to be used at teardown
30
+ # sys.stderr and sys.__stderr__ may be closed or patched during the session
31
+ # so we can't rely on their values being good at that point (#11572).
32
+ stderr_fileno = get_stderr_fileno()
33
+ if faulthandler.is_enabled():
34
+ config.stash[fault_handler_original_stderr_fd_key] = stderr_fileno
35
+ config.stash[fault_handler_stderr_fd_key] = os.dup(stderr_fileno)
30
36
  faulthandler.enable(file=config.stash[fault_handler_stderr_fd_key])
31
37
 
32
38
 
@@ -38,9 +44,10 @@ def pytest_unconfigure(config: Config) -> None:
38
44
  if fault_handler_stderr_fd_key in config.stash:
39
45
  os.close(config.stash[fault_handler_stderr_fd_key])
40
46
  del config.stash[fault_handler_stderr_fd_key]
41
- if config.stash.get(fault_handler_originally_enabled_key, False):
42
- # Re-enable the faulthandler if it was originally enabled.
43
- faulthandler.enable(file=get_stderr_fileno())
47
+ # Re-enable the faulthandler if it was originally enabled.
48
+ if fault_handler_original_stderr_fd_key in config.stash:
49
+ faulthandler.enable(config.stash[fault_handler_original_stderr_fd_key])
50
+ del config.stash[fault_handler_original_stderr_fd_key]
44
51
 
45
52
 
46
53
  def get_stderr_fileno() -> int:
@@ -51,7 +58,7 @@ def get_stderr_fileno() -> int:
51
58
  if fileno == -1:
52
59
  raise AttributeError()
53
60
  return fileno
54
- except (AttributeError, io.UnsupportedOperation):
61
+ except (AttributeError, ValueError):
55
62
  # pytest-xdist monkeypatches sys.stderr with an object that is not an actual file.
56
63
  # https://docs.python.org/3/library/faulthandler.html#issue-with-file-descriptors
57
64
  # This is potentially dangerous, but the best we can do.
@@ -369,7 +369,7 @@ def record_testsuite_property(request: FixtureRequest) -> Callable[[str, object]
369
369
  __tracebackhide__ = True
370
370
 
371
371
  def record_func(name: str, value: object) -> None:
372
- """No-op function in case --junitxml was not passed in the command-line."""
372
+ """No-op function in case --junit-xml was not passed in the command-line."""
373
373
  __tracebackhide__ = True
374
374
  _check_record_param_type("name", name)
375
375
 
@@ -373,7 +373,9 @@ def get_unpacked_marks(
373
373
  if not consider_mro:
374
374
  mark_lists = [obj.__dict__.get("pytestmark", [])]
375
375
  else:
376
- mark_lists = [x.__dict__.get("pytestmark", []) for x in obj.__mro__]
376
+ mark_lists = [
377
+ x.__dict__.get("pytestmark", []) for x in reversed(obj.__mro__)
378
+ ]
377
379
  mark_list = []
378
380
  for item in mark_lists:
379
381
  if isinstance(item, list):
@@ -567,7 +567,7 @@ class Collector(Node):
567
567
  ntraceback = traceback.cut(path=self.path)
568
568
  if ntraceback == traceback:
569
569
  ntraceback = ntraceback.cut(excludepath=tracebackcutdir)
570
- return excinfo.traceback.filter(excinfo)
570
+ return ntraceback.filter(excinfo)
571
571
  return excinfo.traceback
572
572
 
573
573
 
@@ -123,7 +123,7 @@ def exit(
123
123
  only because `msg` is deprecated.
124
124
 
125
125
  :param returncode:
126
- Return code to be used when exiting pytest.
126
+ Return code to be used when exiting pytest. None means the same as ``0`` (no error), same as :func:`sys.exit`.
127
127
 
128
128
  :param msg:
129
129
  Same as ``reason``, but deprecated. Will be removed in a future version, use ``reason`` instead.
@@ -623,8 +623,9 @@ def module_name_from_path(path: Path, root: Path) -> str:
623
623
  # Use the parts for the relative path to the root path.
624
624
  path_parts = relative_path.parts
625
625
 
626
- # Module name for packages do not contain the __init__ file.
627
- if path_parts[-1] == "__init__":
626
+ # Module name for packages do not contain the __init__ file, unless
627
+ # the `__init__.py` file is at the root.
628
+ if len(path_parts) >= 2 and path_parts[-1] == "__init__":
628
629
  path_parts = path_parts[:-1]
629
630
 
630
631
  return ".".join(path_parts)