coverage 7.13.4__tar.gz → 7.14.0__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 (409) hide show
  1. {coverage-7.13.4 → coverage-7.14.0}/.github/workflows/codeql-analysis.yml +6 -6
  2. {coverage-7.13.4 → coverage-7.14.0}/.github/workflows/coverage.yml +44 -34
  3. {coverage-7.13.4 → coverage-7.14.0}/.github/workflows/dependency-review.yml +5 -4
  4. {coverage-7.13.4 → coverage-7.14.0}/.github/workflows/kit.yml +14 -17
  5. {coverage-7.13.4 → coverage-7.14.0}/.github/workflows/publish.yml +24 -18
  6. {coverage-7.13.4 → coverage-7.14.0}/.github/workflows/python-nightly.yml +3 -3
  7. {coverage-7.13.4 → coverage-7.14.0}/.github/workflows/quality.yml +6 -6
  8. {coverage-7.13.4 → coverage-7.14.0}/.github/workflows/testsuite.yml +10 -5
  9. {coverage-7.13.4 → coverage-7.14.0}/.pre-commit-config.yaml +1 -1
  10. {coverage-7.13.4 → coverage-7.14.0}/.readthedocs.yaml +1 -1
  11. {coverage-7.13.4 → coverage-7.14.0}/CHANGES.rst +60 -1
  12. {coverage-7.13.4 → coverage-7.14.0}/CONTRIBUTORS.txt +3 -0
  13. {coverage-7.13.4 → coverage-7.14.0}/Makefile +4 -6
  14. {coverage-7.13.4/coverage.egg-info → coverage-7.14.0}/PKG-INFO +9 -9
  15. {coverage-7.13.4 → coverage-7.14.0}/README.rst +1 -1
  16. {coverage-7.13.4 → coverage-7.14.0}/coverage/cmdline.py +13 -12
  17. {coverage-7.13.4 → coverage-7.14.0}/coverage/collector.py +20 -8
  18. {coverage-7.13.4 → coverage-7.14.0}/coverage/control.py +1 -1
  19. {coverage-7.13.4 → coverage-7.14.0}/coverage/ctracer/util.h +7 -0
  20. {coverage-7.13.4 → coverage-7.14.0}/coverage/data.py +18 -6
  21. {coverage-7.13.4 → coverage-7.14.0}/coverage/execfile.py +1 -1
  22. {coverage-7.13.4 → coverage-7.14.0}/coverage/misc.py +2 -2
  23. {coverage-7.13.4 → coverage-7.14.0}/coverage/phystokens.py +5 -0
  24. {coverage-7.13.4 → coverage-7.14.0}/coverage/plugin.py +1 -1
  25. {coverage-7.13.4 → coverage-7.14.0}/coverage/python.py +1 -1
  26. {coverage-7.13.4 → coverage-7.14.0}/coverage/report.py +13 -2
  27. {coverage-7.13.4 → coverage-7.14.0}/coverage/sqldata.py +1 -2
  28. {coverage-7.13.4 → coverage-7.14.0}/coverage/types.py +0 -10
  29. {coverage-7.13.4 → coverage-7.14.0}/coverage/version.py +1 -1
  30. {coverage-7.13.4 → coverage-7.14.0/coverage.egg-info}/PKG-INFO +9 -9
  31. {coverage-7.13.4 → coverage-7.14.0}/doc/commands/cmd_combine.rst +7 -4
  32. {coverage-7.13.4 → coverage-7.14.0}/doc/commands/cmd_debug.rst +3 -0
  33. {coverage-7.13.4 → coverage-7.14.0}/doc/commands/cmd_reporting.rst +3 -0
  34. {coverage-7.13.4 → coverage-7.14.0}/doc/conf.py +4 -3
  35. {coverage-7.13.4 → coverage-7.14.0}/doc/contributing.rst +78 -74
  36. {coverage-7.13.4 → coverage-7.14.0}/doc/faq.rst +2 -1
  37. {coverage-7.13.4 → coverage-7.14.0}/doc/index.rst +4 -2
  38. {coverage-7.13.4 → coverage-7.14.0}/doc/requirements.in +1 -0
  39. coverage-7.14.0/doc/requirements.pip +740 -0
  40. {coverage-7.13.4 → coverage-7.14.0}/howto.txt +1 -1
  41. {coverage-7.13.4 → coverage-7.14.0}/igor.py +0 -24
  42. {coverage-7.13.4 → coverage-7.14.0}/metacov.ini +3 -0
  43. {coverage-7.13.4 → coverage-7.14.0}/requirements/dev.in +1 -0
  44. coverage-7.14.0/requirements/dev.pip +858 -0
  45. coverage-7.14.0/requirements/kit.pip +501 -0
  46. {coverage-7.13.4 → coverage-7.14.0}/requirements/light-threads.in +0 -1
  47. coverage-7.14.0/requirements/light-threads.pip +231 -0
  48. coverage-7.14.0/requirements/mypy.pip +269 -0
  49. coverage-7.14.0/requirements/pip.pip +38 -0
  50. coverage-7.14.0/requirements/pytest.pip +111 -0
  51. coverage-7.14.0/requirements/tox.pip +125 -0
  52. {coverage-7.13.4 → coverage-7.14.0}/tests/coveragetest.py +12 -3
  53. {coverage-7.13.4 → coverage-7.14.0}/tests/helpers.py +3 -3
  54. {coverage-7.13.4 → coverage-7.14.0}/tests/strategies.py +1 -1
  55. {coverage-7.13.4 → coverage-7.14.0}/tests/test_api.py +4 -2
  56. {coverage-7.13.4 → coverage-7.14.0}/tests/test_arcs.py +2 -2
  57. {coverage-7.13.4 → coverage-7.14.0}/tests/test_cmdline.py +71 -0
  58. {coverage-7.13.4 → coverage-7.14.0}/tests/test_concurrency.py +30 -70
  59. {coverage-7.13.4 → coverage-7.14.0}/tests/test_config.py +2 -2
  60. {coverage-7.13.4 → coverage-7.14.0}/tests/test_data.py +35 -1
  61. {coverage-7.13.4 → coverage-7.14.0}/tests/test_phystokens.py +24 -9
  62. {coverage-7.13.4 → coverage-7.14.0}/tests/test_process.py +23 -27
  63. {coverage-7.13.4 → coverage-7.14.0}/tests/test_regions.py +44 -44
  64. {coverage-7.13.4 → coverage-7.14.0}/tests/test_report.py +55 -4
  65. {coverage-7.13.4 → coverage-7.14.0}/tox.ini +2 -2
  66. coverage-7.13.4/doc/requirements.pip +0 -149
  67. coverage-7.13.4/requirements/dev.pip +0 -211
  68. coverage-7.13.4/requirements/kit.pip +0 -120
  69. coverage-7.13.4/requirements/light-threads.pip +0 -23
  70. coverage-7.13.4/requirements/mypy.pip +0 -54
  71. coverage-7.13.4/requirements/pip.pip +0 -16
  72. coverage-7.13.4/requirements/pytest.pip +0 -38
  73. coverage-7.13.4/requirements/tox.pip +0 -44
  74. {coverage-7.13.4 → coverage-7.14.0}/.editorconfig +0 -0
  75. {coverage-7.13.4 → coverage-7.14.0}/.git-blame-ignore-revs +0 -0
  76. {coverage-7.13.4 → coverage-7.14.0}/.github/CODE_OF_CONDUCT.md +0 -0
  77. {coverage-7.13.4 → coverage-7.14.0}/.github/FUNDING.yml +0 -0
  78. {coverage-7.13.4 → coverage-7.14.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  79. {coverage-7.13.4 → coverage-7.14.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  80. {coverage-7.13.4 → coverage-7.14.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  81. {coverage-7.13.4 → coverage-7.14.0}/.github/ISSUE_TEMPLATE/support.md +0 -0
  82. {coverage-7.13.4 → coverage-7.14.0}/.github/SECURITY.md +0 -0
  83. {coverage-7.13.4 → coverage-7.14.0}/.github/dependabot.yml +0 -0
  84. {coverage-7.13.4 → coverage-7.14.0}/.github/zizmor.yml +0 -0
  85. {coverage-7.13.4 → coverage-7.14.0}/.ignore +0 -0
  86. {coverage-7.13.4 → coverage-7.14.0}/CITATION.cff +0 -0
  87. {coverage-7.13.4 → coverage-7.14.0}/LICENSE.txt +0 -0
  88. {coverage-7.13.4 → coverage-7.14.0}/MANIFEST.in +0 -0
  89. {coverage-7.13.4 → coverage-7.14.0}/NOTICE.txt +0 -0
  90. {coverage-7.13.4 → coverage-7.14.0}/__main__.py +0 -0
  91. {coverage-7.13.4 → coverage-7.14.0}/a1_coverage.pth +0 -0
  92. {coverage-7.13.4 → coverage-7.14.0}/ci/README.txt +0 -0
  93. {coverage-7.13.4 → coverage-7.14.0}/ci/comment_on_fixes.py +0 -0
  94. {coverage-7.13.4 → coverage-7.14.0}/ci/session.py +0 -0
  95. {coverage-7.13.4 → coverage-7.14.0}/ci/trigger_action.py +0 -0
  96. {coverage-7.13.4 → coverage-7.14.0}/ci/update_rtfd.py +0 -0
  97. {coverage-7.13.4 → coverage-7.14.0}/coverage/__init__.py +0 -0
  98. {coverage-7.13.4 → coverage-7.14.0}/coverage/__main__.py +0 -0
  99. {coverage-7.13.4 → coverage-7.14.0}/coverage/annotate.py +0 -0
  100. {coverage-7.13.4 → coverage-7.14.0}/coverage/bytecode.py +0 -0
  101. {coverage-7.13.4 → coverage-7.14.0}/coverage/config.py +0 -0
  102. {coverage-7.13.4 → coverage-7.14.0}/coverage/context.py +0 -0
  103. {coverage-7.13.4 → coverage-7.14.0}/coverage/core.py +0 -0
  104. {coverage-7.13.4 → coverage-7.14.0}/coverage/ctracer/datastack.c +0 -0
  105. {coverage-7.13.4 → coverage-7.14.0}/coverage/ctracer/datastack.h +0 -0
  106. {coverage-7.13.4 → coverage-7.14.0}/coverage/ctracer/filedisp.c +0 -0
  107. {coverage-7.13.4 → coverage-7.14.0}/coverage/ctracer/filedisp.h +0 -0
  108. {coverage-7.13.4 → coverage-7.14.0}/coverage/ctracer/module.c +0 -0
  109. {coverage-7.13.4 → coverage-7.14.0}/coverage/ctracer/stats.h +0 -0
  110. {coverage-7.13.4 → coverage-7.14.0}/coverage/ctracer/tracer.c +0 -0
  111. {coverage-7.13.4 → coverage-7.14.0}/coverage/ctracer/tracer.h +0 -0
  112. {coverage-7.13.4 → coverage-7.14.0}/coverage/debug.py +0 -0
  113. {coverage-7.13.4 → coverage-7.14.0}/coverage/disposition.py +0 -0
  114. {coverage-7.13.4 → coverage-7.14.0}/coverage/env.py +0 -0
  115. {coverage-7.13.4 → coverage-7.14.0}/coverage/exceptions.py +0 -0
  116. {coverage-7.13.4 → coverage-7.14.0}/coverage/files.py +0 -0
  117. {coverage-7.13.4 → coverage-7.14.0}/coverage/html.py +0 -0
  118. {coverage-7.13.4 → coverage-7.14.0}/coverage/htmlfiles/coverage_html.js +0 -0
  119. {coverage-7.13.4 → coverage-7.14.0}/coverage/htmlfiles/favicon_32.png +0 -0
  120. {coverage-7.13.4 → coverage-7.14.0}/coverage/htmlfiles/index.html +0 -0
  121. {coverage-7.13.4 → coverage-7.14.0}/coverage/htmlfiles/keybd_closed.png +0 -0
  122. {coverage-7.13.4 → coverage-7.14.0}/coverage/htmlfiles/pyfile.html +0 -0
  123. {coverage-7.13.4 → coverage-7.14.0}/coverage/htmlfiles/style.css +0 -0
  124. {coverage-7.13.4 → coverage-7.14.0}/coverage/htmlfiles/style.scss +0 -0
  125. {coverage-7.13.4 → coverage-7.14.0}/coverage/inorout.py +0 -0
  126. {coverage-7.13.4 → coverage-7.14.0}/coverage/jsonreport.py +0 -0
  127. {coverage-7.13.4 → coverage-7.14.0}/coverage/lcovreport.py +0 -0
  128. {coverage-7.13.4 → coverage-7.14.0}/coverage/multiproc.py +0 -0
  129. {coverage-7.13.4 → coverage-7.14.0}/coverage/numbits.py +0 -0
  130. {coverage-7.13.4 → coverage-7.14.0}/coverage/parser.py +0 -0
  131. {coverage-7.13.4 → coverage-7.14.0}/coverage/patch.py +0 -0
  132. {coverage-7.13.4 → coverage-7.14.0}/coverage/plugin_support.py +0 -0
  133. {coverage-7.13.4 → coverage-7.14.0}/coverage/pth_file.py +0 -0
  134. {coverage-7.13.4 → coverage-7.14.0}/coverage/py.typed +0 -0
  135. {coverage-7.13.4 → coverage-7.14.0}/coverage/pytracer.py +0 -0
  136. {coverage-7.13.4 → coverage-7.14.0}/coverage/regions.py +0 -0
  137. {coverage-7.13.4 → coverage-7.14.0}/coverage/report_core.py +0 -0
  138. {coverage-7.13.4 → coverage-7.14.0}/coverage/results.py +0 -0
  139. {coverage-7.13.4 → coverage-7.14.0}/coverage/sqlitedb.py +0 -0
  140. {coverage-7.13.4 → coverage-7.14.0}/coverage/sysmon.py +0 -0
  141. {coverage-7.13.4 → coverage-7.14.0}/coverage/templite.py +0 -0
  142. {coverage-7.13.4 → coverage-7.14.0}/coverage/tomlconfig.py +0 -0
  143. {coverage-7.13.4 → coverage-7.14.0}/coverage/tracer.pyi +0 -0
  144. {coverage-7.13.4 → coverage-7.14.0}/coverage/xmlreport.py +0 -0
  145. {coverage-7.13.4 → coverage-7.14.0}/coverage.egg-info/SOURCES.txt +0 -0
  146. {coverage-7.13.4 → coverage-7.14.0}/coverage.egg-info/dependency_links.txt +0 -0
  147. {coverage-7.13.4 → coverage-7.14.0}/coverage.egg-info/entry_points.txt +0 -0
  148. {coverage-7.13.4 → coverage-7.14.0}/coverage.egg-info/not-zip-safe +0 -0
  149. {coverage-7.13.4 → coverage-7.14.0}/coverage.egg-info/requires.txt +0 -0
  150. {coverage-7.13.4 → coverage-7.14.0}/coverage.egg-info/top_level.txt +0 -0
  151. {coverage-7.13.4 → coverage-7.14.0}/doc/_static/coverage.css +0 -0
  152. {coverage-7.13.4 → coverage-7.14.0}/doc/api.rst +0 -0
  153. {coverage-7.13.4 → coverage-7.14.0}/doc/api_coverage.rst +0 -0
  154. {coverage-7.13.4 → coverage-7.14.0}/doc/api_coveragedata.rst +0 -0
  155. {coverage-7.13.4 → coverage-7.14.0}/doc/api_exceptions.rst +0 -0
  156. {coverage-7.13.4 → coverage-7.14.0}/doc/api_module.rst +0 -0
  157. {coverage-7.13.4 → coverage-7.14.0}/doc/api_plugin.rst +0 -0
  158. {coverage-7.13.4 → coverage-7.14.0}/doc/branch.rst +0 -0
  159. {coverage-7.13.4 → coverage-7.14.0}/doc/changes.rst +0 -0
  160. {coverage-7.13.4 → coverage-7.14.0}/doc/cog_helpers.py +0 -0
  161. {coverage-7.13.4 → coverage-7.14.0}/doc/commands/cmd_annotate.rst +0 -0
  162. {coverage-7.13.4 → coverage-7.14.0}/doc/commands/cmd_erase.rst +0 -0
  163. {coverage-7.13.4 → coverage-7.14.0}/doc/commands/cmd_html.rst +0 -0
  164. {coverage-7.13.4 → coverage-7.14.0}/doc/commands/cmd_json.rst +0 -0
  165. {coverage-7.13.4 → coverage-7.14.0}/doc/commands/cmd_lcov.rst +0 -0
  166. {coverage-7.13.4 → coverage-7.14.0}/doc/commands/cmd_report.rst +0 -0
  167. {coverage-7.13.4 → coverage-7.14.0}/doc/commands/cmd_run.rst +0 -0
  168. {coverage-7.13.4 → coverage-7.14.0}/doc/commands/cmd_xml.rst +0 -0
  169. {coverage-7.13.4 → coverage-7.14.0}/doc/commands/index.rst +0 -0
  170. {coverage-7.13.4 → coverage-7.14.0}/doc/config.rst +0 -0
  171. {coverage-7.13.4 → coverage-7.14.0}/doc/contexts.rst +0 -0
  172. {coverage-7.13.4 → coverage-7.14.0}/doc/dbschema.rst +0 -0
  173. {coverage-7.13.4 → coverage-7.14.0}/doc/dict.txt +0 -0
  174. {coverage-7.13.4 → coverage-7.14.0}/doc/excluding.rst +0 -0
  175. {coverage-7.13.4 → coverage-7.14.0}/doc/howitworks.rst +0 -0
  176. {coverage-7.13.4 → coverage-7.14.0}/doc/install.rst +0 -0
  177. {coverage-7.13.4 → coverage-7.14.0}/doc/media/Tidelift_Logos_RGB_Tidelift_Shorthand_On-White.png +0 -0
  178. {coverage-7.13.4 → coverage-7.14.0}/doc/media/Tidelift_Logos_RGB_Tidelift_Shorthand_On-White_small.png +0 -0
  179. {coverage-7.13.4 → coverage-7.14.0}/doc/media/sleepy-snake-600.png +0 -0
  180. {coverage-7.13.4 → coverage-7.14.0}/doc/media/sleepy-snake-circle-150.png +0 -0
  181. {coverage-7.13.4 → coverage-7.14.0}/doc/messages.rst +0 -0
  182. {coverage-7.13.4 → coverage-7.14.0}/doc/migrating.rst +0 -0
  183. {coverage-7.13.4 → coverage-7.14.0}/doc/other.rst +0 -0
  184. {coverage-7.13.4 → coverage-7.14.0}/doc/plugins.rst +0 -0
  185. {coverage-7.13.4 → coverage-7.14.0}/doc/python-coverage.1.txt +0 -0
  186. {coverage-7.13.4 → coverage-7.14.0}/doc/sample_html/favicon_32_cb_c827f16f.png +0 -0
  187. {coverage-7.13.4 → coverage-7.14.0}/doc/sample_html/keybd_closed_cb_900cfef5.png +0 -0
  188. {coverage-7.13.4 → coverage-7.14.0}/doc/sleepy.rst +0 -0
  189. {coverage-7.13.4 → coverage-7.14.0}/doc/source.rst +0 -0
  190. {coverage-7.13.4 → coverage-7.14.0}/doc/subprocess.rst +0 -0
  191. {coverage-7.13.4 → coverage-7.14.0}/doc/trouble.rst +0 -0
  192. {coverage-7.13.4 → coverage-7.14.0}/doc/whatsnew5x.rst +0 -0
  193. {coverage-7.13.4 → coverage-7.14.0}/lab/README.txt +0 -0
  194. {coverage-7.13.4 → coverage-7.14.0}/lab/branches.py +0 -0
  195. {coverage-7.13.4 → coverage-7.14.0}/lab/compare_times.sh +0 -0
  196. {coverage-7.13.4 → coverage-7.14.0}/lab/coverage-04.dtd +0 -0
  197. {coverage-7.13.4 → coverage-7.14.0}/lab/extract_code.py +0 -0
  198. {coverage-7.13.4 → coverage-7.14.0}/lab/goals.py +0 -0
  199. {coverage-7.13.4 → coverage-7.14.0}/lab/hack_pyc.py +0 -0
  200. {coverage-7.13.4 → coverage-7.14.0}/lab/notes/arcs-to-branches.txt +0 -0
  201. {coverage-7.13.4 → coverage-7.14.0}/lab/notes/bug1303.txt +0 -0
  202. {coverage-7.13.4 → coverage-7.14.0}/lab/notes/pypy-738-decorated-functions.txt +0 -0
  203. {coverage-7.13.4 → coverage-7.14.0}/lab/parse_all.py +0 -0
  204. {coverage-7.13.4 → coverage-7.14.0}/lab/parser.py +0 -0
  205. {coverage-7.13.4 → coverage-7.14.0}/lab/pick.py +0 -0
  206. {coverage-7.13.4 → coverage-7.14.0}/lab/platform_info.py +0 -0
  207. {coverage-7.13.4 → coverage-7.14.0}/lab/run_sysmon.py +0 -0
  208. {coverage-7.13.4 → coverage-7.14.0}/lab/run_trace.py +0 -0
  209. {coverage-7.13.4 → coverage-7.14.0}/lab/select_contexts.py +0 -0
  210. {coverage-7.13.4 → coverage-7.14.0}/lab/show_platform.py +0 -0
  211. {coverage-7.13.4 → coverage-7.14.0}/lab/show_pyc.py +0 -0
  212. {coverage-7.13.4 → coverage-7.14.0}/lab/treetopy.sh +0 -0
  213. {coverage-7.13.4 → coverage-7.14.0}/lab/warn_executed.py +0 -0
  214. {coverage-7.13.4 → coverage-7.14.0}/lab/warn_executed.toml +0 -0
  215. {coverage-7.13.4 → coverage-7.14.0}/pyproject.toml +0 -0
  216. {coverage-7.13.4 → coverage-7.14.0}/requirements/kit.in +0 -0
  217. {coverage-7.13.4 → coverage-7.14.0}/requirements/mypy.in +0 -0
  218. {coverage-7.13.4 → coverage-7.14.0}/requirements/pins.pip +0 -0
  219. {coverage-7.13.4 → coverage-7.14.0}/requirements/pip.in +0 -0
  220. {coverage-7.13.4 → coverage-7.14.0}/requirements/pytest.in +0 -0
  221. {coverage-7.13.4 → coverage-7.14.0}/requirements/tox.in +0 -0
  222. {coverage-7.13.4 → coverage-7.14.0}/setup.cfg +0 -0
  223. {coverage-7.13.4 → coverage-7.14.0}/setup.py +0 -0
  224. {coverage-7.13.4 → coverage-7.14.0}/tests/__init__.py +0 -0
  225. {coverage-7.13.4 → coverage-7.14.0}/tests/conftest.py +0 -0
  226. {coverage-7.13.4 → coverage-7.14.0}/tests/covmodzip1.py +0 -0
  227. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/README.rst +0 -0
  228. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/annotate/anno_dir/multi.py,cover +0 -0
  229. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/annotate/anno_dir/z_80084bf2fba02475___init__.py,cover +0 -0
  230. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/annotate/anno_dir/z_80084bf2fba02475_a.py,cover +0 -0
  231. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/annotate/anno_dir/z_b039179a8a4ce2c2___init__.py,cover +0 -0
  232. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/annotate/anno_dir/z_b039179a8a4ce2c2_b.py,cover +0 -0
  233. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/annotate/encodings/utf8.py,cover +0 -0
  234. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/annotate/mae/mae.py,cover +0 -0
  235. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/annotate/multi/a/__init__.py,cover +0 -0
  236. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/annotate/multi/a/a.py,cover +0 -0
  237. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/annotate/multi/b/__init__.py,cover +0 -0
  238. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/annotate/multi/b/b.py,cover +0 -0
  239. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/annotate/multi/multi.py,cover +0 -0
  240. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/annotate/white/white.py,cover +0 -0
  241. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/Makefile +0 -0
  242. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/a/a_py.html +0 -0
  243. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/a/class_index.html +0 -0
  244. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/a/function_index.html +0 -0
  245. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/a/index.html +0 -0
  246. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/b_branch/b_py.html +0 -0
  247. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/b_branch/class_index.html +0 -0
  248. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/b_branch/function_index.html +0 -0
  249. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/b_branch/index.html +0 -0
  250. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/bom/bom_py.html +0 -0
  251. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/bom/class_index.html +0 -0
  252. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/bom/function_index.html +0 -0
  253. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/bom/index.html +0 -0
  254. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/contexts/class_index.html +0 -0
  255. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/contexts/function_index.html +0 -0
  256. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/contexts/index.html +0 -0
  257. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/contexts/two_tests_py.html +0 -0
  258. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/isolatin1/class_index.html +0 -0
  259. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/isolatin1/function_index.html +0 -0
  260. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/isolatin1/index.html +0 -0
  261. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/isolatin1/isolatin1_py.html +0 -0
  262. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/multiline/class_index.html +0 -0
  263. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/multiline/function_index.html +0 -0
  264. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/multiline/index.html +0 -0
  265. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/multiline/multiline_py.html +0 -0
  266. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/omit_1/class_index.html +0 -0
  267. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/omit_1/function_index.html +0 -0
  268. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/omit_1/index.html +0 -0
  269. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/omit_1/m1_py.html +0 -0
  270. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/omit_1/m2_py.html +0 -0
  271. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/omit_1/m3_py.html +0 -0
  272. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/omit_1/main_py.html +0 -0
  273. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/omit_2/class_index.html +0 -0
  274. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/omit_2/function_index.html +0 -0
  275. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/omit_2/index.html +0 -0
  276. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/omit_2/m2_py.html +0 -0
  277. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/omit_2/m3_py.html +0 -0
  278. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/omit_2/main_py.html +0 -0
  279. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/omit_3/class_index.html +0 -0
  280. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/omit_3/function_index.html +0 -0
  281. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/omit_3/index.html +0 -0
  282. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/omit_3/m3_py.html +0 -0
  283. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/omit_3/main_py.html +0 -0
  284. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/omit_4/class_index.html +0 -0
  285. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/omit_4/function_index.html +0 -0
  286. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/omit_4/index.html +0 -0
  287. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/omit_4/m1_py.html +0 -0
  288. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/omit_4/m3_py.html +0 -0
  289. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/omit_4/main_py.html +0 -0
  290. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/omit_5/class_index.html +0 -0
  291. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/omit_5/function_index.html +0 -0
  292. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/omit_5/index.html +0 -0
  293. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/omit_5/m1_py.html +0 -0
  294. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/omit_5/main_py.html +0 -0
  295. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/other/blah_blah_other_py.html +0 -0
  296. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/other/class_index.html +0 -0
  297. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/other/function_index.html +0 -0
  298. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/other/here_py.html +0 -0
  299. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/other/index.html +0 -0
  300. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/partial/class_index.html +0 -0
  301. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/partial/function_index.html +0 -0
  302. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/partial/index.html +0 -0
  303. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/partial/partial_py.html +0 -0
  304. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/styled/a_py.html +0 -0
  305. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/styled/class_index.html +0 -0
  306. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/styled/function_index.html +0 -0
  307. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/styled/index.html +0 -0
  308. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/styled/myextra.css +0 -0
  309. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/styled/style.css +0 -0
  310. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/support/coverage_html_cb_bcae5fc4.js +0 -0
  311. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/support/favicon_32_cb_58284776.png +0 -0
  312. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/support/keybd_closed_cb_ce680311.png +0 -0
  313. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/support/style_cb_a5a05ca4.css +0 -0
  314. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/unicode/class_index.html +0 -0
  315. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/unicode/function_index.html +0 -0
  316. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/unicode/index.html +0 -0
  317. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/html/unicode/unicode_py.html +0 -0
  318. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/testing/getty/gettysburg.txt +0 -0
  319. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/testing/xml/output.xml +0 -0
  320. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/xml/x_xml/coverage.xml +0 -0
  321. {coverage-7.13.4 → coverage-7.14.0}/tests/gold/xml/y_xml_branch/coverage.xml +0 -0
  322. {coverage-7.13.4 → coverage-7.14.0}/tests/goldtest.py +0 -0
  323. {coverage-7.13.4 → coverage-7.14.0}/tests/js/index.html +0 -0
  324. {coverage-7.13.4 → coverage-7.14.0}/tests/js/tests.js +0 -0
  325. {coverage-7.13.4 → coverage-7.14.0}/tests/mixins.py +0 -0
  326. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/aa/__init__.py +0 -0
  327. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/aa/afile.odd.py +0 -0
  328. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/aa/afile.py +0 -0
  329. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/aa/bb/__init__.py +0 -0
  330. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/aa/bb/bfile.odd.py +0 -0
  331. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/aa/bb/bfile.py +0 -0
  332. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/aa/bb/cc/__init__.py +0 -0
  333. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/aa/bb/cc/cfile.py +0 -0
  334. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/aa/bb.odd/bfile.py +0 -0
  335. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/aa/zfile.py +0 -0
  336. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/ambiguous/__init__.py +0 -0
  337. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/ambiguous/pkg1/__init__.py +0 -0
  338. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/ambiguous/pkg1/ambiguous.py +0 -0
  339. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/covmod1.py +0 -0
  340. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/namespace_420/sub1/__init__.py +0 -0
  341. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/pkg1/__init__.py +0 -0
  342. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/pkg1/__main__.py +0 -0
  343. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/pkg1/p1a.py +0 -0
  344. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/pkg1/p1b.py +0 -0
  345. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/pkg1/p1c.py +0 -0
  346. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/pkg1/runmod2.py +0 -0
  347. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/pkg1/sub/__init__.py +0 -0
  348. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/pkg1/sub/__main__.py +0 -0
  349. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/pkg1/sub/ps1a.py +0 -0
  350. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/pkg1/sub/runmod3.py +0 -0
  351. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/pkg2/__init__.py +0 -0
  352. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/pkg2/p2a.py +0 -0
  353. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/pkg2/p2b.py +0 -0
  354. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/plugins/__init__.py +0 -0
  355. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/plugins/a_plugin.py +0 -0
  356. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/plugins/another.py +0 -0
  357. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/process_test/__init__.py +0 -0
  358. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/process_test/try_execfile.py +0 -0
  359. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/runmod1.py +0 -0
  360. {coverage-7.13.4 → coverage-7.14.0}/tests/modules/usepkgs.py +0 -0
  361. {coverage-7.13.4 → coverage-7.14.0}/tests/moremodules/namespace_420/sub2/__init__.py +0 -0
  362. {coverage-7.13.4 → coverage-7.14.0}/tests/moremodules/othermods/__init__.py +0 -0
  363. {coverage-7.13.4 → coverage-7.14.0}/tests/moremodules/othermods/othera.py +0 -0
  364. {coverage-7.13.4 → coverage-7.14.0}/tests/moremodules/othermods/otherb.py +0 -0
  365. {coverage-7.13.4 → coverage-7.14.0}/tests/moremodules/othermods/sub/__init__.py +0 -0
  366. {coverage-7.13.4 → coverage-7.14.0}/tests/moremodules/othermods/sub/osa.py +0 -0
  367. {coverage-7.13.4 → coverage-7.14.0}/tests/moremodules/othermods/sub/osb.py +0 -0
  368. {coverage-7.13.4 → coverage-7.14.0}/tests/osinfo.py +0 -0
  369. {coverage-7.13.4 → coverage-7.14.0}/tests/plugin1.py +0 -0
  370. {coverage-7.13.4 → coverage-7.14.0}/tests/plugin2.py +0 -0
  371. {coverage-7.13.4 → coverage-7.14.0}/tests/plugin_config.py +0 -0
  372. {coverage-7.13.4 → coverage-7.14.0}/tests/qunit/jquery.tmpl.min.js +0 -0
  373. {coverage-7.13.4 → coverage-7.14.0}/tests/select_plugin.py +0 -0
  374. {coverage-7.13.4 → coverage-7.14.0}/tests/stress_phystoken.tok +0 -0
  375. {coverage-7.13.4 → coverage-7.14.0}/tests/stress_phystoken_dos.tok +0 -0
  376. {coverage-7.13.4 → coverage-7.14.0}/tests/test_annotate.py +0 -0
  377. {coverage-7.13.4 → coverage-7.14.0}/tests/test_bytecode.py +0 -0
  378. {coverage-7.13.4 → coverage-7.14.0}/tests/test_collector.py +0 -0
  379. {coverage-7.13.4 → coverage-7.14.0}/tests/test_context.py +0 -0
  380. {coverage-7.13.4 → coverage-7.14.0}/tests/test_core.py +0 -0
  381. {coverage-7.13.4 → coverage-7.14.0}/tests/test_coverage.py +0 -0
  382. {coverage-7.13.4 → coverage-7.14.0}/tests/test_debug.py +0 -0
  383. {coverage-7.13.4 → coverage-7.14.0}/tests/test_execfile.py +0 -0
  384. {coverage-7.13.4 → coverage-7.14.0}/tests/test_filereporter.py +0 -0
  385. {coverage-7.13.4 → coverage-7.14.0}/tests/test_files.py +0 -0
  386. {coverage-7.13.4 → coverage-7.14.0}/tests/test_goldtest.py +0 -0
  387. {coverage-7.13.4 → coverage-7.14.0}/tests/test_html.py +0 -0
  388. {coverage-7.13.4 → coverage-7.14.0}/tests/test_json.py +0 -0
  389. {coverage-7.13.4 → coverage-7.14.0}/tests/test_lcov.py +0 -0
  390. {coverage-7.13.4 → coverage-7.14.0}/tests/test_misc.py +0 -0
  391. {coverage-7.13.4 → coverage-7.14.0}/tests/test_mixins.py +0 -0
  392. {coverage-7.13.4 → coverage-7.14.0}/tests/test_numbits.py +0 -0
  393. {coverage-7.13.4 → coverage-7.14.0}/tests/test_oddball.py +0 -0
  394. {coverage-7.13.4 → coverage-7.14.0}/tests/test_parser.py +0 -0
  395. {coverage-7.13.4 → coverage-7.14.0}/tests/test_plugins.py +0 -0
  396. {coverage-7.13.4 → coverage-7.14.0}/tests/test_python.py +0 -0
  397. {coverage-7.13.4 → coverage-7.14.0}/tests/test_report_common.py +0 -0
  398. {coverage-7.13.4 → coverage-7.14.0}/tests/test_report_core.py +0 -0
  399. {coverage-7.13.4 → coverage-7.14.0}/tests/test_results.py +0 -0
  400. {coverage-7.13.4 → coverage-7.14.0}/tests/test_setup.py +0 -0
  401. {coverage-7.13.4 → coverage-7.14.0}/tests/test_sqlitedb.py +0 -0
  402. {coverage-7.13.4 → coverage-7.14.0}/tests/test_templite.py +0 -0
  403. {coverage-7.13.4 → coverage-7.14.0}/tests/test_testing.py +0 -0
  404. {coverage-7.13.4 → coverage-7.14.0}/tests/test_venv.py +0 -0
  405. {coverage-7.13.4 → coverage-7.14.0}/tests/test_version.py +0 -0
  406. {coverage-7.13.4 → coverage-7.14.0}/tests/test_xml.py +0 -0
  407. {coverage-7.13.4 → coverage-7.14.0}/tests/testenv.py +0 -0
  408. {coverage-7.13.4 → coverage-7.14.0}/tests/zipsrc/zip1/__init__.py +0 -0
  409. {coverage-7.13.4 → coverage-7.14.0}/tests/zipsrc/zip1/zip1.py +0 -0
@@ -20,7 +20,7 @@ on:
20
20
  branches:
21
21
  - main
22
22
  schedule:
23
- - cron: '30 20 * * 6'
23
+ - cron: "30 20 * * 6"
24
24
 
25
25
  permissions:
26
26
  contents: read
@@ -31,7 +31,7 @@ concurrency:
31
31
 
32
32
  jobs:
33
33
  analyze:
34
- name: Analyze
34
+ name: "Analyze"
35
35
  runs-on: ubuntu-latest
36
36
  permissions:
37
37
  actions: read # CodeQL wrote this action.
@@ -48,14 +48,14 @@ jobs:
48
48
  # Learn more about CodeQL language support at https://git.io/codeql-language-support
49
49
 
50
50
  steps:
51
- - name: Checkout repository
51
+ - name: "Check out the repo"
52
52
  uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
53
53
  with:
54
54
  persist-credentials: false
55
55
 
56
56
  # Initializes the CodeQL tools for scanning.
57
57
  - name: Initialize CodeQL
58
- uses: github/codeql-action/init@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9
58
+ uses: github/codeql-action/init@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2
59
59
  with:
60
60
  languages: ${{ matrix.language }}
61
61
  # If you wish to specify custom queries, you can do so here or in a config file.
@@ -66,7 +66,7 @@ jobs:
66
66
  # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
67
67
  # If this step fails, then you should remove it and run the build manually (see below)
68
68
  - name: Autobuild
69
- uses: github/codeql-action/autobuild@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9
69
+ uses: github/codeql-action/autobuild@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2
70
70
 
71
71
  # ℹ️ Command-line programs to run using the OS shell.
72
72
  # 📚 https://git.io/JvXDl
@@ -80,4 +80,4 @@ jobs:
80
80
  # make release
81
81
 
82
82
  - name: Perform CodeQL Analysis
83
- uses: github/codeql-action/analyze@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9
83
+ uses: github/codeql-action/analyze@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2
@@ -45,7 +45,7 @@ jobs:
45
45
  persist-credentials: false
46
46
 
47
47
  - name: "Examine changed files"
48
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
48
+ uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
49
49
  id: filter
50
50
  with:
51
51
  filters: |
@@ -110,6 +110,9 @@ jobs:
110
110
  # skip them for now.
111
111
  - os: windows
112
112
  python-version: "pypy-3.10"
113
+ # Windows 3.13t often fails during installation.
114
+ - os: windows
115
+ python-version: "3.13t"
113
116
  # If we need to tweak the os version we can do it with an include like
114
117
  # this:
115
118
  # include:
@@ -140,7 +143,7 @@ jobs:
140
143
  - name: "Show environment"
141
144
  run: |
142
145
  set -xe
143
- echo matrix id: $MATRIX_ID
146
+ echo matrix id: "$MATRIX_ID"
144
147
  python -VV
145
148
  python -m site
146
149
  env | sort
@@ -163,10 +166,10 @@ jobs:
163
166
  COVERAGE_RCFILE: "metacov.ini"
164
167
  run: |
165
168
  python -m coverage combine
166
- mv .metacov .metacov.$MATRIX_ID
169
+ mv .metacov ".metacov.$MATRIX_ID"
167
170
 
168
171
  - name: "Upload coverage data"
169
- uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
172
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
170
173
  with:
171
174
  name: metacov-${{ env.MATRIX_ID }}
172
175
  path: .metacov.*
@@ -211,7 +214,7 @@ jobs:
211
214
  python igor.py zip_mods
212
215
 
213
216
  - name: "Download coverage data"
214
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
217
+ uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
215
218
  with:
216
219
  pattern: metacov-*
217
220
  merge-multiple: true
@@ -224,17 +227,8 @@ jobs:
224
227
  set -xe
225
228
  python igor.py combine_html
226
229
 
227
- - name: "Check targets"
228
- run: |
229
- # Maybe someday goals will be a real feature
230
- python -m pip install wcmatch
231
- # Very crude check that nothing catastrophic has happened.
232
- python lab/goals.py --group 90 "coverage/*.py" "tests/*.py"
233
- # Absolutely all of our test code should be covered.
234
- python lab/goals.py --file 100 "tests/test_*.py"
235
-
236
230
  - name: "Upload HTML report"
237
- uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
231
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
238
232
  with:
239
233
  name: html_report
240
234
  path: htmlcov
@@ -243,20 +237,32 @@ jobs:
243
237
  - name: "Show text report"
244
238
  run: |
245
239
  set -xe
246
- echo "## Coverage: $(python -m coverage report --format=total)%" >> $GITHUB_STEP_SUMMARY
247
- echo '```' >> $GITHUB_STEP_SUMMARY
248
- python -m coverage report --skip-covered >> $GITHUB_STEP_SUMMARY
249
- echo '```' >> $GITHUB_STEP_SUMMARY
240
+ echo "## Coverage: $(python -m coverage report --format=total)%" >> "$GITHUB_STEP_SUMMARY"
241
+ echo '```' >> "$GITHUB_STEP_SUMMARY"
242
+ python -m coverage report --skip-covered >> "$GITHUB_STEP_SUMMARY"
243
+ echo '```' >> "$GITHUB_STEP_SUMMARY"
250
244
 
251
245
  - name: "Get total"
252
246
  id: total
253
247
  run: |
254
- echo "total=$(python -m coverage report --format=total)" >> $GITHUB_OUTPUT
248
+ echo "total=$(python -m coverage report --format=total)" >> "$GITHUB_OUTPUT"
249
+
250
+ - name: "Check targets"
251
+ run: |
252
+ # Maybe someday goals will be a real feature
253
+ python -m pip install wcmatch
254
+ # Very crude check that nothing catastrophic has happened.
255
+ python lab/goals.py --group 90 "coverage/*.py" "tests/*.py"
256
+ # Absolutely all of our test code should be covered.
257
+ python lab/goals.py --file 100 "tests/test_*.py"
255
258
 
256
259
  publish:
257
260
  name: "Publish coverage report"
258
261
  needs: combine
259
262
  runs-on: ubuntu-latest
263
+ environment:
264
+ name: "publish report"
265
+ deployment: false
260
266
 
261
267
  steps:
262
268
  - name: "Show environment"
@@ -270,21 +276,24 @@ jobs:
270
276
  REF: ${{ github.ref }}
271
277
  SHA: ${{ github.sha }}
272
278
  run: |
273
- export SHA10=$(echo $SHA | cut -c 1-10)
274
- export SLUG=$(date +'%Y%m%d')_$SHA10
275
- echo "sha10=$SHA10" >> $GITHUB_ENV
276
- echo "slug=$SLUG" >> $GITHUB_ENV
277
- echo "report_dir=reports/$SLUG/htmlcov" >> $GITHUB_ENV
278
- echo "url=https://coveragepy.github.io/metacov-reports/reports/$SLUG/htmlcov" >> $GITHUB_ENV
279
- echo "branch=${REF#refs/heads/}" >> $GITHUB_ENV
279
+ SHA10=$(echo "$SHA" | cut -c 1-10)
280
+ export SHA10
281
+ SLUG=$(date +'%Y%m%d')_$SHA10
282
+ export SLUG
283
+ echo "sha10=$SHA10" >> "$GITHUB_ENV"
284
+ echo "slug=$SLUG" >> "$GITHUB_ENV"
285
+ echo "report_dir=reports/$SLUG/htmlcov" >> "$GITHUB_ENV"
286
+ echo "url=https://coveragepy.github.io/metacov-reports/reports/$SLUG/htmlcov" >> "$GITHUB_ENV"
287
+ echo "branch=${REF#refs/heads/}" >> "$GITHUB_ENV"
280
288
 
281
289
  - name: "Checkout reports repo"
282
290
  if: ${{ github.ref == 'refs/heads/main' }}
283
291
  env:
292
+ # Fine-grained, with write access to coveragepy/metacov-reports
284
293
  TOKEN: ${{ secrets.COVERAGE_REPORTS_TOKEN }}
285
294
  run: |
286
295
  set -xe
287
- git clone --depth=1 --no-checkout https://${TOKEN}@github.com/coveragepy/metacov-reports reports_repo
296
+ git clone --depth=1 --no-checkout "https://$TOKEN@github.com/coveragepy/metacov-reports" reports_repo
288
297
  cd reports_repo
289
298
  git sparse-checkout init --cone
290
299
  git sparse-checkout set --skip-checks '/*' '!/reports'
@@ -294,7 +303,7 @@ jobs:
294
303
 
295
304
  - name: "Download coverage HTML report"
296
305
  if: ${{ github.ref == 'refs/heads/main' }}
297
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
306
+ uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
298
307
  with:
299
308
  name: html_report
300
309
  path: reports_repo/${{ env.report_dir }}
@@ -319,20 +328,21 @@ jobs:
319
328
  echo "${sha10}: ${branch}" >> commit.txt
320
329
  # Commit.
321
330
  cd ./reports_repo
322
- git sparse-checkout set --skip-checks '/*' ${report_dir}
323
- rm ${report_dir}/.gitignore
324
- git add ${report_dir} latest.html
331
+ git sparse-checkout set --skip-checks '/*' "$report_dir"
332
+ rm "$report_dir/.gitignore"
333
+ git add "$report_dir" latest.html
325
334
  git commit --file=../commit.txt
326
335
  git push
327
- echo "[${url}](${url})" >> $GITHUB_STEP_SUMMARY
336
+ echo "[${url}](${url})" >> "$GITHUB_STEP_SUMMARY"
328
337
 
329
338
  - name: "Create badge"
330
339
  if: |
331
340
  github.repository_owner == 'coveragepy'
332
341
  && github.ref == 'refs/heads/main'
333
342
  # https://gist.githubusercontent.com/nedbat/8c6980f77988a327348f9b02bbaf67f5
334
- uses: schneegans/dynamic-badges-action@e9a478b16159b4d31420099ba146cdc50f134483 # v1.7.0
343
+ uses: schneegans/dynamic-badges-action@0e50b8bad39e7e1afd3e4e9c2b7dd145fad07501 # v1.8.0
335
344
  with:
345
+ # Personal access token: gist access
336
346
  auth: ${{ secrets.METACOV_GIST_SECRET }}
337
347
  gistID: 8c6980f77988a327348f9b02bbaf67f5
338
348
  filename: metacov.json
@@ -5,7 +5,8 @@
5
5
  # Source repository: https://github.com/actions/dependency-review-action
6
6
  # Public documentation: https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review#dependency-review-enforcement
7
7
 
8
- name: 'Dependency Review'
8
+ name: "Dependency Review"
9
+
9
10
  on:
10
11
  push:
11
12
  branches:
@@ -27,13 +28,13 @@ jobs:
27
28
  if: github.repository_owner == 'coveragepy'
28
29
  runs-on: ubuntu-latest
29
30
  steps:
30
- - name: 'Checkout Repository'
31
+ - name: "Check out the repo"
31
32
  uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
32
33
  with:
33
34
  persist-credentials: false
34
35
 
35
- - name: 'Dependency Review'
36
- uses: actions/dependency-review-action@3c4e3dcb1aa7874d2c16be7d79418e9b7efd6261 # v4.8.2
36
+ - name: "Dependency Review"
37
+ uses: actions/dependency-review-action@2031cfc080254a8a887f58cffee85186f0e49e48 # v4.9.0
37
38
  with:
38
39
  base-ref: ${{ github.event.pull_request.base.sha || 'main' }}
39
40
  head-ref: ${{ github.event.pull_request.head.sha || github.ref }}
@@ -68,9 +68,6 @@ jobs:
68
68
  # [[[cog
69
69
  # #----- vvv Choices for the matrix vvv -----
70
70
  #
71
- # # Operating systems:
72
- # oss = ["ubuntu", "macos", "windows"]
73
- #
74
71
  # # For each OS, what arch to use with cibuildwheel:
75
72
  # os_archs = {
76
73
  # "ubuntu": ["x86_64", "i686", "aarch64", "riscv64", "ppc64le"],
@@ -94,8 +91,8 @@ jobs:
94
91
  # #----- ^^^ ---------------------- ^^^ -----
95
92
  #
96
93
  # import json
97
- # for the_os in oss:
98
- # for the_arch in os_archs[the_os]:
94
+ # for the_os, archs in os_archs.items():
95
+ # for the_arch in archs:
99
96
  # for the_py in os_arch_pys.get((the_os, the_arch), pys):
100
97
  # them = {
101
98
  # "os": the_os,
@@ -179,8 +176,8 @@ jobs:
179
176
  with:
180
177
  persist-credentials: false
181
178
 
182
- - if: ${{ matrix.arch != 'ppc64le' }}
183
- name: "Install Python"
179
+ - name: "Install Python"
180
+ if: ${{ matrix.arch != 'ppc64le' }}
184
181
  uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
185
182
  with:
186
183
  python-version: "${{ matrix.cipy }}"
@@ -190,8 +187,8 @@ jobs:
190
187
  # Rust toolchain is not currently installed on windows arm64 images.
191
188
  # We need it for nh3, needed by readme-renderer, needed by twine.
192
189
  # https://github.com/actions/partner-runner-images/issues/77
193
- - if: ${{ matrix.os-version == '11-arm' }}
194
- name: Setup rust
190
+ - name: "Setup Rust"
191
+ if: ${{ matrix.os-version == '11-arm' }}
195
192
  id: setup-rust
196
193
  shell: pwsh
197
194
  run: |
@@ -205,7 +202,7 @@ jobs:
205
202
 
206
203
  - name: "Set up QEMU"
207
204
  if: ${{ matrix.arch == 'riscv64' }}
208
- uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3.7.0
205
+ uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4.0.0
209
206
 
210
207
  - name: "Build binary wheels"
211
208
  env:
@@ -226,7 +223,7 @@ jobs:
226
223
  python -m twine check wheelhouse/*
227
224
 
228
225
  - name: "Upload binary wheels"
229
- uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
226
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
230
227
  with:
231
228
  name: dist-${{ env.MATRIX_ID }}
232
229
  path: wheelhouse/*.whl
@@ -267,7 +264,7 @@ jobs:
267
264
  python -m twine check dist/*
268
265
 
269
266
  - name: "Upload non-binary artifacts"
270
- uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
267
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
271
268
  with:
272
269
  name: dist-non-binary
273
270
  path: dist/*
@@ -285,7 +282,7 @@ jobs:
285
282
  id-token: write # Needed for signing artifacts
286
283
  steps:
287
284
  - name: "Download artifacts"
288
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
285
+ uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
289
286
  with:
290
287
  pattern: dist-*
291
288
  merge-multiple: true
@@ -294,11 +291,11 @@ jobs:
294
291
  run: |
295
292
  ls -alR
296
293
  echo "Number of dists, there should be $EXPECTED:"
297
- ls -1 coverage-* | wc -l
298
- files=$(ls coverage-* 2>/dev/null | wc -l) && [ "$files" -eq $EXPECTED ] || exit 1
294
+ find coverage-* | wc -l
295
+ files=$(find coverage-* 2>/dev/null | wc -l) && [ "$files" -eq "$EXPECTED" ] || exit 1
299
296
 
300
297
  - name: "Sign artifacts"
301
- uses: sigstore/gh-action-sigstore-python@a5caf349bc536fbef3668a10ed7f5cd309a4b53d # v3.2.0
298
+ uses: sigstore/gh-action-sigstore-python@04cffa1d795717b140764e8b640de88853c92acc # v3.3.0
302
299
  with:
303
300
  inputs: coverage-*.*
304
301
 
@@ -307,7 +304,7 @@ jobs:
307
304
  ls -alR
308
305
 
309
306
  - name: "Upload signatures"
310
- uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
307
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
311
308
  with:
312
309
  name: signatures
313
310
  path: "*.sigstore.json"
@@ -29,26 +29,30 @@ concurrency:
29
29
  jobs:
30
30
  find-run:
31
31
  name: "Find latest kit.yml run"
32
- runs-on: "ubuntu-latest"
32
+ runs-on: ubuntu-latest
33
33
  outputs:
34
34
  run-id: ${{ steps.run-id.outputs.run-id }}
35
35
 
36
36
  steps:
37
37
  - name: "Find latest kit.yml run"
38
38
  id: runs
39
- uses: octokit/request-action@dad4362715b7fb2ddedf9772c8670824af564f0d # v2.4.0
39
+ uses: octokit/request-action@b91aabaa861c777dcdb14e2387e30eddf04619ae # v3.0.0
40
40
  with:
41
41
  route: GET /repos/coveragepy/coveragepy/actions/workflows/kit.yml/runs
42
42
  env:
43
43
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
44
44
 
45
- - name: "Record run id" # zizmor: ignore[template-injection]
45
+ - name: "Record run id"
46
46
  id: run-id
47
+ env:
48
+ RUN_STATUS: ${{ fromJson(steps.runs.outputs.data).workflow_runs[0].status }}
49
+ RUN_CONCLUSION: ${{ fromJson(steps.runs.outputs.data).workflow_runs[0].conclusion }}
50
+ RUN_ID: ${{ fromJson(steps.runs.outputs.data).workflow_runs[0].id }}
47
51
  run: |
48
52
  # There must be a shorter way to write this...
49
- [ "${{ fromJson(steps.runs.outputs.data).workflow_runs[0].status}}" = "completed" ] || exit 1
50
- [ "${{ fromJson(steps.runs.outputs.data).workflow_runs[0].conclusion}}" = "success" ] || exit 1
51
- echo "run-id=${{ fromJson(steps.runs.outputs.data).workflow_runs[0].id }}" >> "$GITHUB_OUTPUT"
53
+ [ "$RUN_STATUS" = "completed" ] || exit 1
54
+ [ "$RUN_CONCLUSION" = "success" ] || exit 1
55
+ echo "run-id=$RUN_ID" >> "$GITHUB_OUTPUT"
52
56
 
53
57
  publish-to-test-pypi:
54
58
  name: "Publish to Test PyPI"
@@ -56,15 +60,16 @@ jobs:
56
60
  permissions:
57
61
  id-token: write # needed for actions/attest-build-provenance
58
62
  attestations: write # needed for actions/attest-build-provenance
59
- runs-on: "ubuntu-latest"
63
+ runs-on: ubuntu-latest
60
64
  environment:
61
65
  name: "testpypi"
66
+ deployment: false
62
67
  needs:
63
68
  - find-run
64
69
 
65
70
  steps:
66
71
  - name: "Download dists"
67
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
72
+ uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
68
73
  with:
69
74
  repository: "coveragepy/coveragepy"
70
75
  run-id: ${{ needs.find-run.outputs.run-id }}
@@ -77,16 +82,16 @@ jobs:
77
82
  run: |
78
83
  ls -alR
79
84
  echo "Number of dists, should be $EXPECTED:"
80
- ls -1 dist | wc -l
81
- files=$(ls dist 2>/dev/null | wc -l) && [ "$files" -eq $EXPECTED ] || exit 1
85
+ find dist/* | wc -l
86
+ files=$(find dist/* 2>/dev/null | wc -l) && [ "$files" -eq "$EXPECTED" ] || exit 1
82
87
 
83
88
  - name: "Generate attestations"
84
- uses: actions/attest-build-provenance@96278af6caaf10aea03fd8d33a09a777ca52d62f # v3.2.0
89
+ uses: actions/attest-build-provenance@a2bbfa25375fe432b6a289bc6b6cd05ecd0c4c32 # v4.1.0
85
90
  with:
86
91
  subject-path: "dist/*"
87
92
 
88
93
  - name: "Publish dists to Test PyPI"
89
- uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
94
+ uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0
90
95
  with:
91
96
  repository-url: https://test.pypi.org/legacy/
92
97
 
@@ -96,15 +101,16 @@ jobs:
96
101
  permissions:
97
102
  id-token: write # needed for actions/attest-build-provenance
98
103
  attestations: write # needed for actions/attest-build-provenance
99
- runs-on: "ubuntu-latest"
104
+ runs-on: ubuntu-latest
100
105
  environment:
101
106
  name: "pypi"
107
+ deployment: false
102
108
  needs:
103
109
  - find-run
104
110
 
105
111
  steps:
106
112
  - name: "Download dists"
107
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
113
+ uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
108
114
  with:
109
115
  repository: "coveragepy/coveragepy"
110
116
  run-id: ${{ needs.find-run.outputs.run-id }}
@@ -117,13 +123,13 @@ jobs:
117
123
  run: |
118
124
  ls -alR
119
125
  echo "Number of dists, should be $EXPECTED:"
120
- ls -1 dist | wc -l
121
- files=$(ls dist 2>/dev/null | wc -l) && [ "$files" -eq $EXPECTED ] || exit 1
126
+ find dist/* | wc -l
127
+ files=$(find dist/* 2>/dev/null | wc -l) && [ "$files" -eq "$EXPECTED" ] || exit 1
122
128
 
123
129
  - name: "Generate attestations"
124
- uses: actions/attest-build-provenance@96278af6caaf10aea03fd8d33a09a777ca52d62f # v3.2.0
130
+ uses: actions/attest-build-provenance@a2bbfa25375fe432b6a289bc6b6cd05ecd0c4c32 # v4.1.0
125
131
  with:
126
132
  subject-path: "dist/*"
127
133
 
128
134
  - name: "Publish dists to PyPI"
129
- uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
135
+ uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0
@@ -79,9 +79,9 @@ jobs:
79
79
  set -xe
80
80
  export PYENV_ROOT="$HOME/.pyenv"
81
81
  export PATH="$PYENV_ROOT/bin:$PATH"
82
- echo "$PYENV_ROOT/shims:$PYENV_ROOT/bin" >> $GITHUB_PATH
83
- pyenv install $PYVER -v
84
- pyenv global $PYVER
82
+ echo "$PYENV_ROOT/shims:$PYENV_ROOT/bin" >> "$GITHUB_PATH"
83
+ pyenv install "$PYVER" -v
84
+ pyenv global "$PYVER"
85
85
 
86
86
  - name: "Show diagnostic info"
87
87
  run: |
@@ -43,7 +43,7 @@ jobs:
43
43
  persist-credentials: false
44
44
 
45
45
  - name: "Examine changed files"
46
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
46
+ uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
47
47
  id: filter
48
48
  with:
49
49
  filters: |
@@ -146,7 +146,7 @@ jobs:
146
146
  - name: "Install Python"
147
147
  uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
148
148
  with:
149
- python-version: "3.11" # Doc version from PYVERSIONS
149
+ python-version: "3.12" # Doc version from PYVERSIONS
150
150
  cache: pip
151
151
  cache-dependency-path: 'requirements/*.pip'
152
152
 
@@ -178,17 +178,17 @@ jobs:
178
178
  || needs.changed.outputs.workflow == 'true'
179
179
 
180
180
  steps:
181
- - name: Checkout repository
181
+ - name: "Check out the repo"
182
182
  uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
183
183
  with:
184
184
  persist-credentials: false
185
185
 
186
- - name: Install the latest version of uv
187
- uses: astral-sh/setup-uv@61cb8a9741eeb8a550a1b8544337180c0fc8476b #v7.2.0
186
+ - name: "Install uv"
187
+ uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
188
188
  with:
189
189
  enable-cache: false
190
190
 
191
- - name: Run zizmor
191
+ - name: "Run zizmor"
192
192
  env:
193
193
  GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
194
194
  run: uvx zizmor --pedantic .github/workflows
@@ -43,7 +43,7 @@ jobs:
43
43
  persist-credentials: false
44
44
 
45
45
  - name: "Examine changed files"
46
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
46
+ uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
47
47
  id: filter
48
48
  with:
49
49
  filters: |
@@ -98,6 +98,11 @@ jobs:
98
98
  - "3.15t"
99
99
  - "pypy-3.10"
100
100
  - "pypy-3.11"
101
+ exclude:
102
+ # Windows 3.13t often fails during installation.
103
+ - os: windows
104
+ python-version: "3.13t"
105
+
101
106
  #
102
107
  # If we need to exclude any combinations, do it like this:
103
108
  # exclude:
@@ -142,8 +147,8 @@ jobs:
142
147
  # Ideally, the system Python wouldn't have writable sitepackages so
143
148
  # try to make it not writable. We can't always always change the
144
149
  # permissions (Ubuntu & Windows yes, Mac no), so be ready for it to fail.
145
- chmod u-w $(python -c "import site; print(site.getsitepackages()[0])") || echo "Couldn't lock down site-packages"
146
- ls -ld $(python -c "import site; print(site.getsitepackages()[0])")
150
+ chmod u-w "$(python -c "import site; print(site.getsitepackages()[0])")" || echo "Couldn't lock down site-packages"
151
+ ls -ld "$(python -c "import site; print(site.getsitepackages()[0])")"
147
152
  whoami
148
153
 
149
154
  - name: "Install dependencies"
@@ -165,12 +170,12 @@ jobs:
165
170
  # https://github.com/marketplace/actions/alls-green#why
166
171
  # https://github.com/orgs/community/discussions/33579
167
172
  success:
168
- name: Tests successful
173
+ name: "Tests successful"
169
174
  needs:
170
175
  - tests
171
176
  runs-on: ubuntu-latest
172
177
  steps:
173
- - name: Decide whether the needed jobs succeeded or failed
178
+ - name: "Decide success or failure"
174
179
  uses: re-actors/alls-green@05ac9388f0aebcb5727afa17fcccfecd6f8ec5fe # v1.2.2
175
180
  with:
176
181
  jobs: ${{ toJSON(needs) }}
@@ -16,7 +16,7 @@ repos:
16
16
  exclude: "stress_phystoken|\\.py,cover$"
17
17
 
18
18
  - repo: https://github.com/astral-sh/ruff-pre-commit
19
- rev: v0.14.14
19
+ rev: v0.15.12
20
20
  hooks:
21
21
  - id: ruff-format
22
22
 
@@ -10,7 +10,7 @@ build:
10
10
  os: ubuntu-22.04
11
11
  tools:
12
12
  # PYVERSIONS: the version we use for building docs. Check tox.ini[doc] also.
13
- python: "3.11"
13
+ python: "3.12"
14
14
 
15
15
  sphinx:
16
16
  builder: html
@@ -22,6 +22,65 @@ upgrading your version of coverage.py.
22
22
 
23
23
  .. start-releases
24
24
 
25
+ .. _changes_7-14-0:
26
+
27
+ Version 7.14.0 — 2026-05-10
28
+ ---------------------------
29
+
30
+ - Feature: now when running one of the reporting commands, if there are
31
+ parallel data files that need combining, they will be implicitly combined
32
+ before creating the report. There is no option to avoid the combination; let
33
+ us know if you have a use case that requires it. Thanks, `Tim Hatch
34
+ <pull 2162_>`_. Closes `issue 1781`_.
35
+
36
+ - Fix: the output from ``combine`` was too verbose, listing each file
37
+ considered. Now it shows a single line with the counts of files combined,
38
+ files skipped, and files with errors. The ``-q`` flag suppresses this line.
39
+ The old detailed lines are available with the new ``--debug=combine`` option.
40
+
41
+ - Fix: running a Python file through a symlink now sets the sys.path correctly,
42
+ matching regular Python behavior. Fixes `issue 2157`_.
43
+
44
+ - Fix: ``Collector.flush_data`` could fail with "RuntimeError: Set changed
45
+ size during iteration" when a tracer in another thread added a line to the
46
+ per-file set that ``add_lines`` (or ``add_arcs``) was iterating. The values
47
+ passed to ``CoverageData`` are now snapshotted via ``dict.copy()`` and
48
+ ``set.copy()``, which are atomic under the GIL. Thanks, `Alex Vandiver <pull
49
+ 2165_>`_.
50
+
51
+ - Fix: the soft keyword ``lazy`` is now bolded in HTML reports.
52
+
53
+ - We are no longer testing eventlet support. Eventlet started issuing stern
54
+ deprecation warnings that break our tests. Our support code is still there.
55
+
56
+ .. _issue 1781: https://github.com/coveragepy/coveragepy/issues/1781
57
+ .. _issue 2157: https://github.com/coveragepy/coveragepy/issues/2157
58
+ .. _pull 2162: https://github.com/coveragepy/coveragepy/pull/2162
59
+ .. _pull 2165: https://github.com/coveragepy/coveragepy/pull/2165
60
+
61
+
62
+ .. _changes_7-13-5:
63
+
64
+ Version 7.13.5 — 2026-03-17
65
+ ---------------------------
66
+
67
+ - Fix: `issue 2138`_ describes a memory leak that happened when repeatedly
68
+ using the Coverage API with in-memory data. This is now fixed.
69
+
70
+ - Fix: the markdown-formatted coverage report didn't fully escape special
71
+ characters in file paths (`issue 2141`_). This would be very unlikely to
72
+ cause a problem, but now it's done properly, thanks to `Ellie Ayla
73
+ <pull 2142_>`_.
74
+
75
+ - Fix: the C extension wouldn't build on VS2019, but now it does (`issue
76
+ 2145`_).
77
+
78
+ .. _issue 2138: https://github.com/coveragepy/coveragepy/issues/2138
79
+ .. _issue 2141: https://github.com/coveragepy/coveragepy/issues/2141
80
+ .. _pull 2142: https://github.com/coveragepy/coveragepy/pull/2142
81
+ .. _issue 2145: https://github.com/coveragepy/coveragepy/issues/2145
82
+
83
+
25
84
  .. _changes_7-13-4:
26
85
 
27
86
  Version 7.13.4 — 2026-02-09
@@ -232,7 +291,7 @@ Version 7.11.1 — 2025-11-07
232
291
 
233
292
  - Fix: some chanages to details of how the measurement core is chosen, and how
234
293
  conflicting settings are handled. The "sysmon" core cannot be used with some
235
- conurrency settings, with dynamic context, and in Python 3.12/3.13, with
294
+ concurrency settings, with dynamic context, and in Python 3.12/3.13, with
236
295
  branch measurement.
237
296
 
238
297
  - If the core is not specified and defaults to "sysmon" (Python 3.14+), but