coverage 7.15.2__tar.gz → 7.15.3__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 (408) hide show
  1. {coverage-7.15.2 → coverage-7.15.3}/.github/workflows/codeql-analysis.yml +4 -4
  2. {coverage-7.15.2 → coverage-7.15.3}/.github/workflows/coverage.yml +16 -10
  3. {coverage-7.15.2 → coverage-7.15.3}/.github/workflows/dependency-review.yml +1 -1
  4. {coverage-7.15.2 → coverage-7.15.3}/.github/workflows/kit.yml +4 -4
  5. {coverage-7.15.2 → coverage-7.15.3}/.github/workflows/publish.yml +2 -2
  6. {coverage-7.15.2 → coverage-7.15.3}/.github/workflows/python-nightly.yml +1 -1
  7. {coverage-7.15.2 → coverage-7.15.3}/.github/workflows/quality.yml +9 -9
  8. {coverage-7.15.2 → coverage-7.15.3}/.github/workflows/testsuite.yml +3 -3
  9. {coverage-7.15.2 → coverage-7.15.3}/.pre-commit-config.yaml +1 -1
  10. {coverage-7.15.2 → coverage-7.15.3}/CHANGES.rst +23 -0
  11. {coverage-7.15.2 → coverage-7.15.3}/CONTRIBUTORS.txt +2 -0
  12. {coverage-7.15.2 → coverage-7.15.3}/PKG-INFO +9 -8
  13. {coverage-7.15.2 → coverage-7.15.3}/coverage/control.py +8 -0
  14. {coverage-7.15.2 → coverage-7.15.3}/coverage/core.py +4 -0
  15. {coverage-7.15.2 → coverage-7.15.3}/coverage/numbits.py +18 -0
  16. {coverage-7.15.2 → coverage-7.15.3}/coverage/parser.py +2 -4
  17. {coverage-7.15.2 → coverage-7.15.3}/coverage/phystokens.py +7 -0
  18. {coverage-7.15.2 → coverage-7.15.3}/coverage/sqldata.py +8 -23
  19. {coverage-7.15.2 → coverage-7.15.3}/coverage/version.py +1 -1
  20. {coverage-7.15.2 → coverage-7.15.3}/coverage.egg-info/PKG-INFO +9 -8
  21. {coverage-7.15.2 → coverage-7.15.3}/coverage.egg-info/SOURCES.txt +1 -0
  22. {coverage-7.15.2 → coverage-7.15.3}/doc/conf.py +3 -3
  23. {coverage-7.15.2 → coverage-7.15.3}/doc/messages.rst +8 -1
  24. coverage-7.15.3/doc/requirements.pip +750 -0
  25. {coverage-7.15.2 → coverage-7.15.3}/howto.txt +12 -1
  26. {coverage-7.15.2 → coverage-7.15.3}/requirements/dev.pip +298 -262
  27. coverage-7.15.3/requirements/kit.pip +463 -0
  28. {coverage-7.15.2 → coverage-7.15.3}/requirements/light-threads.pip +101 -85
  29. coverage-7.15.3/requirements/mypy.pip +364 -0
  30. coverage-7.15.3/requirements/pip.pip +38 -0
  31. {coverage-7.15.2 → coverage-7.15.3}/requirements/pytest.in +1 -1
  32. {coverage-7.15.2 → coverage-7.15.3}/requirements/pytest.pip +63 -7
  33. {coverage-7.15.2 → coverage-7.15.3}/requirements/tox.pip +15 -15
  34. {coverage-7.15.2 → coverage-7.15.3}/setup.py +1 -1
  35. {coverage-7.15.2 → coverage-7.15.3}/tests/conftest.py +10 -8
  36. coverage-7.15.3/tests/hypo.py +39 -0
  37. {coverage-7.15.2 → coverage-7.15.3}/tests/strategies.py +7 -0
  38. {coverage-7.15.2 → coverage-7.15.3}/tests/test_api.py +13 -0
  39. {coverage-7.15.2 → coverage-7.15.3}/tests/test_misc.py +33 -20
  40. {coverage-7.15.2 → coverage-7.15.3}/tests/test_numbits.py +11 -3
  41. {coverage-7.15.2 → coverage-7.15.3}/tests/test_setup.py +2 -0
  42. {coverage-7.15.2 → coverage-7.15.3}/tests/testenv.py +4 -0
  43. coverage-7.15.2/doc/requirements.pip +0 -738
  44. coverage-7.15.2/requirements/kit.pip +0 -483
  45. coverage-7.15.2/requirements/mypy.pip +0 -304
  46. coverage-7.15.2/requirements/pip.pip +0 -38
  47. {coverage-7.15.2 → coverage-7.15.3}/.editorconfig +0 -0
  48. {coverage-7.15.2 → coverage-7.15.3}/.git-blame-ignore-revs +0 -0
  49. {coverage-7.15.2 → coverage-7.15.3}/.github/CODE_OF_CONDUCT.md +0 -0
  50. {coverage-7.15.2 → coverage-7.15.3}/.github/FUNDING.yml +0 -0
  51. {coverage-7.15.2 → coverage-7.15.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  52. {coverage-7.15.2 → coverage-7.15.3}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  53. {coverage-7.15.2 → coverage-7.15.3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  54. {coverage-7.15.2 → coverage-7.15.3}/.github/ISSUE_TEMPLATE/support.md +0 -0
  55. {coverage-7.15.2 → coverage-7.15.3}/.github/SECURITY.md +0 -0
  56. {coverage-7.15.2 → coverage-7.15.3}/.github/dependabot.yml +0 -0
  57. {coverage-7.15.2 → coverage-7.15.3}/.github/zizmor.yml +0 -0
  58. {coverage-7.15.2 → coverage-7.15.3}/.ignore +0 -0
  59. {coverage-7.15.2 → coverage-7.15.3}/.readthedocs.yaml +0 -0
  60. {coverage-7.15.2 → coverage-7.15.3}/CITATION.cff +0 -0
  61. {coverage-7.15.2 → coverage-7.15.3}/LICENSE.txt +0 -0
  62. {coverage-7.15.2 → coverage-7.15.3}/MANIFEST.in +0 -0
  63. {coverage-7.15.2 → coverage-7.15.3}/Makefile +0 -0
  64. {coverage-7.15.2 → coverage-7.15.3}/NOTICE.txt +0 -0
  65. {coverage-7.15.2 → coverage-7.15.3}/README.rst +0 -0
  66. {coverage-7.15.2 → coverage-7.15.3}/__main__.py +0 -0
  67. {coverage-7.15.2 → coverage-7.15.3}/a1_coverage.pth +0 -0
  68. {coverage-7.15.2 → coverage-7.15.3}/ci/README.txt +0 -0
  69. {coverage-7.15.2 → coverage-7.15.3}/ci/comment_on_fixes.py +0 -0
  70. {coverage-7.15.2 → coverage-7.15.3}/ci/session.py +0 -0
  71. {coverage-7.15.2 → coverage-7.15.3}/ci/trigger_action.py +0 -0
  72. {coverage-7.15.2 → coverage-7.15.3}/ci/update_rtfd.py +0 -0
  73. {coverage-7.15.2 → coverage-7.15.3}/coverage/__init__.py +0 -0
  74. {coverage-7.15.2 → coverage-7.15.3}/coverage/__main__.py +0 -0
  75. {coverage-7.15.2 → coverage-7.15.3}/coverage/annotate.py +0 -0
  76. {coverage-7.15.2 → coverage-7.15.3}/coverage/bytecode.py +0 -0
  77. {coverage-7.15.2 → coverage-7.15.3}/coverage/cmdline.py +0 -0
  78. {coverage-7.15.2 → coverage-7.15.3}/coverage/collector.py +0 -0
  79. {coverage-7.15.2 → coverage-7.15.3}/coverage/config.py +0 -0
  80. {coverage-7.15.2 → coverage-7.15.3}/coverage/context.py +0 -0
  81. {coverage-7.15.2 → coverage-7.15.3}/coverage/ctracer/datastack.c +0 -0
  82. {coverage-7.15.2 → coverage-7.15.3}/coverage/ctracer/datastack.h +0 -0
  83. {coverage-7.15.2 → coverage-7.15.3}/coverage/ctracer/filedisp.c +0 -0
  84. {coverage-7.15.2 → coverage-7.15.3}/coverage/ctracer/filedisp.h +0 -0
  85. {coverage-7.15.2 → coverage-7.15.3}/coverage/ctracer/module.c +0 -0
  86. {coverage-7.15.2 → coverage-7.15.3}/coverage/ctracer/stats.h +0 -0
  87. {coverage-7.15.2 → coverage-7.15.3}/coverage/ctracer/tracer.c +0 -0
  88. {coverage-7.15.2 → coverage-7.15.3}/coverage/ctracer/tracer.h +0 -0
  89. {coverage-7.15.2 → coverage-7.15.3}/coverage/ctracer/util.h +0 -0
  90. {coverage-7.15.2 → coverage-7.15.3}/coverage/data.py +0 -0
  91. {coverage-7.15.2 → coverage-7.15.3}/coverage/debug.py +0 -0
  92. {coverage-7.15.2 → coverage-7.15.3}/coverage/disposition.py +0 -0
  93. {coverage-7.15.2 → coverage-7.15.3}/coverage/env.py +0 -0
  94. {coverage-7.15.2 → coverage-7.15.3}/coverage/exceptions.py +0 -0
  95. {coverage-7.15.2 → coverage-7.15.3}/coverage/execfile.py +0 -0
  96. {coverage-7.15.2 → coverage-7.15.3}/coverage/files.py +0 -0
  97. {coverage-7.15.2 → coverage-7.15.3}/coverage/html.py +0 -0
  98. {coverage-7.15.2 → coverage-7.15.3}/coverage/htmlfiles/coverage_html.js +0 -0
  99. {coverage-7.15.2 → coverage-7.15.3}/coverage/htmlfiles/favicon_32.png +0 -0
  100. {coverage-7.15.2 → coverage-7.15.3}/coverage/htmlfiles/index.html +0 -0
  101. {coverage-7.15.2 → coverage-7.15.3}/coverage/htmlfiles/keybd_closed.png +0 -0
  102. {coverage-7.15.2 → coverage-7.15.3}/coverage/htmlfiles/pyfile.html +0 -0
  103. {coverage-7.15.2 → coverage-7.15.3}/coverage/htmlfiles/style.css +0 -0
  104. {coverage-7.15.2 → coverage-7.15.3}/coverage/htmlfiles/style.scss +0 -0
  105. {coverage-7.15.2 → coverage-7.15.3}/coverage/inorout.py +0 -0
  106. {coverage-7.15.2 → coverage-7.15.3}/coverage/jsonreport.py +0 -0
  107. {coverage-7.15.2 → coverage-7.15.3}/coverage/lcovreport.py +0 -0
  108. {coverage-7.15.2 → coverage-7.15.3}/coverage/misc.py +0 -0
  109. {coverage-7.15.2 → coverage-7.15.3}/coverage/multiproc.py +0 -0
  110. {coverage-7.15.2 → coverage-7.15.3}/coverage/patch.py +0 -0
  111. {coverage-7.15.2 → coverage-7.15.3}/coverage/plugin.py +0 -0
  112. {coverage-7.15.2 → coverage-7.15.3}/coverage/plugin_support.py +0 -0
  113. {coverage-7.15.2 → coverage-7.15.3}/coverage/pth_file.py +0 -0
  114. {coverage-7.15.2 → coverage-7.15.3}/coverage/py.typed +0 -0
  115. {coverage-7.15.2 → coverage-7.15.3}/coverage/python.py +0 -0
  116. {coverage-7.15.2 → coverage-7.15.3}/coverage/pytracer.py +0 -0
  117. {coverage-7.15.2 → coverage-7.15.3}/coverage/regions.py +0 -0
  118. {coverage-7.15.2 → coverage-7.15.3}/coverage/report.py +0 -0
  119. {coverage-7.15.2 → coverage-7.15.3}/coverage/report_core.py +0 -0
  120. {coverage-7.15.2 → coverage-7.15.3}/coverage/results.py +0 -0
  121. {coverage-7.15.2 → coverage-7.15.3}/coverage/sqlitedb.py +0 -0
  122. {coverage-7.15.2 → coverage-7.15.3}/coverage/sysmon.py +0 -0
  123. {coverage-7.15.2 → coverage-7.15.3}/coverage/templite.py +0 -0
  124. {coverage-7.15.2 → coverage-7.15.3}/coverage/tomlconfig.py +0 -0
  125. {coverage-7.15.2 → coverage-7.15.3}/coverage/tracer.pyi +0 -0
  126. {coverage-7.15.2 → coverage-7.15.3}/coverage/types.py +0 -0
  127. {coverage-7.15.2 → coverage-7.15.3}/coverage/xmlreport.py +0 -0
  128. {coverage-7.15.2 → coverage-7.15.3}/coverage.egg-info/dependency_links.txt +0 -0
  129. {coverage-7.15.2 → coverage-7.15.3}/coverage.egg-info/entry_points.txt +0 -0
  130. {coverage-7.15.2 → coverage-7.15.3}/coverage.egg-info/not-zip-safe +0 -0
  131. {coverage-7.15.2 → coverage-7.15.3}/coverage.egg-info/requires.txt +0 -0
  132. {coverage-7.15.2 → coverage-7.15.3}/coverage.egg-info/top_level.txt +0 -0
  133. {coverage-7.15.2 → coverage-7.15.3}/doc/_static/coverage.css +0 -0
  134. {coverage-7.15.2 → coverage-7.15.3}/doc/api.rst +0 -0
  135. {coverage-7.15.2 → coverage-7.15.3}/doc/api_coverage.rst +0 -0
  136. {coverage-7.15.2 → coverage-7.15.3}/doc/api_coveragedata.rst +0 -0
  137. {coverage-7.15.2 → coverage-7.15.3}/doc/api_exceptions.rst +0 -0
  138. {coverage-7.15.2 → coverage-7.15.3}/doc/api_module.rst +0 -0
  139. {coverage-7.15.2 → coverage-7.15.3}/doc/api_plugin.rst +0 -0
  140. {coverage-7.15.2 → coverage-7.15.3}/doc/branch.rst +0 -0
  141. {coverage-7.15.2 → coverage-7.15.3}/doc/changes.rst +0 -0
  142. {coverage-7.15.2 → coverage-7.15.3}/doc/cog_helpers.py +0 -0
  143. {coverage-7.15.2 → coverage-7.15.3}/doc/commands/cmd_annotate.rst +0 -0
  144. {coverage-7.15.2 → coverage-7.15.3}/doc/commands/cmd_combine.rst +0 -0
  145. {coverage-7.15.2 → coverage-7.15.3}/doc/commands/cmd_debug.rst +0 -0
  146. {coverage-7.15.2 → coverage-7.15.3}/doc/commands/cmd_erase.rst +0 -0
  147. {coverage-7.15.2 → coverage-7.15.3}/doc/commands/cmd_html.rst +0 -0
  148. {coverage-7.15.2 → coverage-7.15.3}/doc/commands/cmd_json.rst +0 -0
  149. {coverage-7.15.2 → coverage-7.15.3}/doc/commands/cmd_lcov.rst +0 -0
  150. {coverage-7.15.2 → coverage-7.15.3}/doc/commands/cmd_report.rst +0 -0
  151. {coverage-7.15.2 → coverage-7.15.3}/doc/commands/cmd_reporting.rst +0 -0
  152. {coverage-7.15.2 → coverage-7.15.3}/doc/commands/cmd_run.rst +0 -0
  153. {coverage-7.15.2 → coverage-7.15.3}/doc/commands/cmd_xml.rst +0 -0
  154. {coverage-7.15.2 → coverage-7.15.3}/doc/commands/index.rst +0 -0
  155. {coverage-7.15.2 → coverage-7.15.3}/doc/config.rst +0 -0
  156. {coverage-7.15.2 → coverage-7.15.3}/doc/contexts.rst +0 -0
  157. {coverage-7.15.2 → coverage-7.15.3}/doc/contributing.rst +0 -0
  158. {coverage-7.15.2 → coverage-7.15.3}/doc/dbschema.rst +0 -0
  159. {coverage-7.15.2 → coverage-7.15.3}/doc/dict.txt +0 -0
  160. {coverage-7.15.2 → coverage-7.15.3}/doc/excluding.rst +0 -0
  161. {coverage-7.15.2 → coverage-7.15.3}/doc/faq.rst +0 -0
  162. {coverage-7.15.2 → coverage-7.15.3}/doc/howitworks.rst +0 -0
  163. {coverage-7.15.2 → coverage-7.15.3}/doc/index.rst +0 -0
  164. {coverage-7.15.2 → coverage-7.15.3}/doc/install.rst +0 -0
  165. {coverage-7.15.2 → coverage-7.15.3}/doc/media/Tidelift_Logos_RGB_Tidelift_Shorthand_On-White.png +0 -0
  166. {coverage-7.15.2 → coverage-7.15.3}/doc/media/Tidelift_Logos_RGB_Tidelift_Shorthand_On-White_small.png +0 -0
  167. {coverage-7.15.2 → coverage-7.15.3}/doc/media/sleepy-snake-600.png +0 -0
  168. {coverage-7.15.2 → coverage-7.15.3}/doc/media/sleepy-snake-circle-150.png +0 -0
  169. {coverage-7.15.2 → coverage-7.15.3}/doc/migrating.rst +0 -0
  170. {coverage-7.15.2 → coverage-7.15.3}/doc/other.rst +0 -0
  171. {coverage-7.15.2 → coverage-7.15.3}/doc/plugins.rst +0 -0
  172. {coverage-7.15.2 → coverage-7.15.3}/doc/python-coverage.1.txt +0 -0
  173. {coverage-7.15.2 → coverage-7.15.3}/doc/requirements.in +0 -0
  174. {coverage-7.15.2 → coverage-7.15.3}/doc/sample_html/favicon_32_cb_c827f16f.png +0 -0
  175. {coverage-7.15.2 → coverage-7.15.3}/doc/sample_html/keybd_closed_cb_900cfef5.png +0 -0
  176. {coverage-7.15.2 → coverage-7.15.3}/doc/sleepy.rst +0 -0
  177. {coverage-7.15.2 → coverage-7.15.3}/doc/source.rst +0 -0
  178. {coverage-7.15.2 → coverage-7.15.3}/doc/subprocess.rst +0 -0
  179. {coverage-7.15.2 → coverage-7.15.3}/doc/trouble.rst +0 -0
  180. {coverage-7.15.2 → coverage-7.15.3}/doc/whatsnew5x.rst +0 -0
  181. {coverage-7.15.2 → coverage-7.15.3}/igor.py +0 -0
  182. {coverage-7.15.2 → coverage-7.15.3}/lab/README.txt +0 -0
  183. {coverage-7.15.2 → coverage-7.15.3}/lab/branches.py +0 -0
  184. {coverage-7.15.2 → coverage-7.15.3}/lab/compare_times.sh +0 -0
  185. {coverage-7.15.2 → coverage-7.15.3}/lab/coverage-04.dtd +0 -0
  186. {coverage-7.15.2 → coverage-7.15.3}/lab/extract_code.py +0 -0
  187. {coverage-7.15.2 → coverage-7.15.3}/lab/goals.py +0 -0
  188. {coverage-7.15.2 → coverage-7.15.3}/lab/hack_pyc.py +0 -0
  189. {coverage-7.15.2 → coverage-7.15.3}/lab/notes/arcs-to-branches.txt +0 -0
  190. {coverage-7.15.2 → coverage-7.15.3}/lab/notes/bug1303.txt +0 -0
  191. {coverage-7.15.2 → coverage-7.15.3}/lab/notes/pypy-738-decorated-functions.txt +0 -0
  192. {coverage-7.15.2 → coverage-7.15.3}/lab/parse_all.py +0 -0
  193. {coverage-7.15.2 → coverage-7.15.3}/lab/parser.py +0 -0
  194. {coverage-7.15.2 → coverage-7.15.3}/lab/pick.py +0 -0
  195. {coverage-7.15.2 → coverage-7.15.3}/lab/platform_info.py +0 -0
  196. {coverage-7.15.2 → coverage-7.15.3}/lab/run_sysmon.py +0 -0
  197. {coverage-7.15.2 → coverage-7.15.3}/lab/run_trace.py +0 -0
  198. {coverage-7.15.2 → coverage-7.15.3}/lab/select_contexts.py +0 -0
  199. {coverage-7.15.2 → coverage-7.15.3}/lab/show_platform.py +0 -0
  200. {coverage-7.15.2 → coverage-7.15.3}/lab/show_pyc.py +0 -0
  201. {coverage-7.15.2 → coverage-7.15.3}/lab/treetopy.sh +0 -0
  202. {coverage-7.15.2 → coverage-7.15.3}/lab/warn_executed.py +0 -0
  203. {coverage-7.15.2 → coverage-7.15.3}/lab/warn_executed.toml +0 -0
  204. {coverage-7.15.2 → coverage-7.15.3}/metacov.ini +0 -0
  205. {coverage-7.15.2 → coverage-7.15.3}/pyproject.toml +0 -0
  206. {coverage-7.15.2 → coverage-7.15.3}/requirements/dev.in +0 -0
  207. {coverage-7.15.2 → coverage-7.15.3}/requirements/kit.in +0 -0
  208. {coverage-7.15.2 → coverage-7.15.3}/requirements/light-threads.in +0 -0
  209. {coverage-7.15.2 → coverage-7.15.3}/requirements/mypy.in +0 -0
  210. {coverage-7.15.2 → coverage-7.15.3}/requirements/pins.pip +0 -0
  211. {coverage-7.15.2 → coverage-7.15.3}/requirements/pip.in +0 -0
  212. {coverage-7.15.2 → coverage-7.15.3}/requirements/tox.in +0 -0
  213. {coverage-7.15.2 → coverage-7.15.3}/setup.cfg +0 -0
  214. {coverage-7.15.2 → coverage-7.15.3}/tests/__init__.py +0 -0
  215. {coverage-7.15.2 → coverage-7.15.3}/tests/coveragetest.py +0 -0
  216. {coverage-7.15.2 → coverage-7.15.3}/tests/covmodzip1.py +0 -0
  217. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/README.rst +0 -0
  218. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/annotate/anno_dir/multi.py,cover +0 -0
  219. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/annotate/anno_dir/z_80084bf2fba02475___init__.py,cover +0 -0
  220. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/annotate/anno_dir/z_80084bf2fba02475_a.py,cover +0 -0
  221. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/annotate/anno_dir/z_b039179a8a4ce2c2___init__.py,cover +0 -0
  222. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/annotate/anno_dir/z_b039179a8a4ce2c2_b.py,cover +0 -0
  223. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/annotate/encodings/utf8.py,cover +0 -0
  224. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/annotate/mae/mae.py,cover +0 -0
  225. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/annotate/multi/a/__init__.py,cover +0 -0
  226. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/annotate/multi/a/a.py,cover +0 -0
  227. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/annotate/multi/b/__init__.py,cover +0 -0
  228. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/annotate/multi/b/b.py,cover +0 -0
  229. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/annotate/multi/multi.py,cover +0 -0
  230. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/annotate/white/white.py,cover +0 -0
  231. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/Makefile +0 -0
  232. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/a/a_py.html +0 -0
  233. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/a/class_index.html +0 -0
  234. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/a/function_index.html +0 -0
  235. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/a/index.html +0 -0
  236. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/b_branch/b_py.html +0 -0
  237. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/b_branch/class_index.html +0 -0
  238. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/b_branch/function_index.html +0 -0
  239. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/b_branch/index.html +0 -0
  240. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/bom/bom_py.html +0 -0
  241. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/bom/class_index.html +0 -0
  242. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/bom/function_index.html +0 -0
  243. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/bom/index.html +0 -0
  244. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/contexts/class_index.html +0 -0
  245. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/contexts/function_index.html +0 -0
  246. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/contexts/index.html +0 -0
  247. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/contexts/two_tests_py.html +0 -0
  248. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/isolatin1/class_index.html +0 -0
  249. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/isolatin1/function_index.html +0 -0
  250. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/isolatin1/index.html +0 -0
  251. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/isolatin1/isolatin1_py.html +0 -0
  252. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/multiline/class_index.html +0 -0
  253. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/multiline/function_index.html +0 -0
  254. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/multiline/index.html +0 -0
  255. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/multiline/multiline_py.html +0 -0
  256. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/omit_1/class_index.html +0 -0
  257. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/omit_1/function_index.html +0 -0
  258. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/omit_1/index.html +0 -0
  259. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/omit_1/m1_py.html +0 -0
  260. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/omit_1/m2_py.html +0 -0
  261. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/omit_1/m3_py.html +0 -0
  262. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/omit_1/main_py.html +0 -0
  263. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/omit_2/class_index.html +0 -0
  264. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/omit_2/function_index.html +0 -0
  265. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/omit_2/index.html +0 -0
  266. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/omit_2/m2_py.html +0 -0
  267. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/omit_2/m3_py.html +0 -0
  268. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/omit_2/main_py.html +0 -0
  269. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/omit_3/class_index.html +0 -0
  270. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/omit_3/function_index.html +0 -0
  271. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/omit_3/index.html +0 -0
  272. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/omit_3/m3_py.html +0 -0
  273. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/omit_3/main_py.html +0 -0
  274. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/omit_4/class_index.html +0 -0
  275. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/omit_4/function_index.html +0 -0
  276. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/omit_4/index.html +0 -0
  277. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/omit_4/m1_py.html +0 -0
  278. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/omit_4/m3_py.html +0 -0
  279. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/omit_4/main_py.html +0 -0
  280. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/omit_5/class_index.html +0 -0
  281. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/omit_5/function_index.html +0 -0
  282. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/omit_5/index.html +0 -0
  283. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/omit_5/m1_py.html +0 -0
  284. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/omit_5/main_py.html +0 -0
  285. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/other/blah_blah_other_py.html +0 -0
  286. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/other/class_index.html +0 -0
  287. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/other/function_index.html +0 -0
  288. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/other/here_py.html +0 -0
  289. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/other/index.html +0 -0
  290. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/partial/class_index.html +0 -0
  291. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/partial/function_index.html +0 -0
  292. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/partial/index.html +0 -0
  293. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/partial/partial_py.html +0 -0
  294. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/styled/a_py.html +0 -0
  295. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/styled/class_index.html +0 -0
  296. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/styled/function_index.html +0 -0
  297. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/styled/index.html +0 -0
  298. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/styled/myextra.css +0 -0
  299. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/styled/style.css +0 -0
  300. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/support/coverage_html_cb_dd2e7eb5.js +0 -0
  301. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/support/favicon_32_cb_c827f16f.png +0 -0
  302. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/support/keybd_closed_cb_900cfef5.png +0 -0
  303. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/support/style_cb_a90a112a.css +0 -0
  304. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/unicode/class_index.html +0 -0
  305. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/unicode/function_index.html +0 -0
  306. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/unicode/index.html +0 -0
  307. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/html/unicode/unicode_py.html +0 -0
  308. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/testing/getty/gettysburg.txt +0 -0
  309. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/testing/xml/output.xml +0 -0
  310. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/xml/x_xml/coverage.xml +0 -0
  311. {coverage-7.15.2 → coverage-7.15.3}/tests/gold/xml/y_xml_branch/coverage.xml +0 -0
  312. {coverage-7.15.2 → coverage-7.15.3}/tests/goldtest.py +0 -0
  313. {coverage-7.15.2 → coverage-7.15.3}/tests/helpers.py +0 -0
  314. {coverage-7.15.2 → coverage-7.15.3}/tests/js/index.html +0 -0
  315. {coverage-7.15.2 → coverage-7.15.3}/tests/js/tests.js +0 -0
  316. {coverage-7.15.2 → coverage-7.15.3}/tests/mixins.py +0 -0
  317. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/aa/__init__.py +0 -0
  318. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/aa/afile.odd.py +0 -0
  319. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/aa/afile.py +0 -0
  320. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/aa/bb/__init__.py +0 -0
  321. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/aa/bb/bfile.odd.py +0 -0
  322. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/aa/bb/bfile.py +0 -0
  323. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/aa/bb/cc/__init__.py +0 -0
  324. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/aa/bb/cc/cfile.py +0 -0
  325. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/aa/bb.odd/bfile.py +0 -0
  326. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/aa/zfile.py +0 -0
  327. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/ambiguous/__init__.py +0 -0
  328. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/ambiguous/pkg1/__init__.py +0 -0
  329. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/ambiguous/pkg1/ambiguous.py +0 -0
  330. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/checkspec.py +0 -0
  331. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/covmod1.py +0 -0
  332. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/namespace_420/sub1/__init__.py +0 -0
  333. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/pkg1/__init__.py +0 -0
  334. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/pkg1/__main__.py +0 -0
  335. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/pkg1/p1a.py +0 -0
  336. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/pkg1/p1b.py +0 -0
  337. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/pkg1/p1c.py +0 -0
  338. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/pkg1/runmod2.py +0 -0
  339. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/pkg1/sub/__init__.py +0 -0
  340. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/pkg1/sub/__main__.py +0 -0
  341. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/pkg1/sub/ps1a.py +0 -0
  342. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/pkg1/sub/runmod3.py +0 -0
  343. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/pkg2/__init__.py +0 -0
  344. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/pkg2/p2a.py +0 -0
  345. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/pkg2/p2b.py +0 -0
  346. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/plugins/__init__.py +0 -0
  347. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/plugins/a_plugin.py +0 -0
  348. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/plugins/another.py +0 -0
  349. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/process_test/__init__.py +0 -0
  350. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/process_test/try_execfile.py +0 -0
  351. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/runmod1.py +0 -0
  352. {coverage-7.15.2 → coverage-7.15.3}/tests/modules/usepkgs.py +0 -0
  353. {coverage-7.15.2 → coverage-7.15.3}/tests/moremodules/namespace_420/sub2/__init__.py +0 -0
  354. {coverage-7.15.2 → coverage-7.15.3}/tests/moremodules/othermods/__init__.py +0 -0
  355. {coverage-7.15.2 → coverage-7.15.3}/tests/moremodules/othermods/othera.py +0 -0
  356. {coverage-7.15.2 → coverage-7.15.3}/tests/moremodules/othermods/otherb.py +0 -0
  357. {coverage-7.15.2 → coverage-7.15.3}/tests/moremodules/othermods/sub/__init__.py +0 -0
  358. {coverage-7.15.2 → coverage-7.15.3}/tests/moremodules/othermods/sub/osa.py +0 -0
  359. {coverage-7.15.2 → coverage-7.15.3}/tests/moremodules/othermods/sub/osb.py +0 -0
  360. {coverage-7.15.2 → coverage-7.15.3}/tests/osinfo.py +0 -0
  361. {coverage-7.15.2 → coverage-7.15.3}/tests/plugin1.py +0 -0
  362. {coverage-7.15.2 → coverage-7.15.3}/tests/plugin2.py +0 -0
  363. {coverage-7.15.2 → coverage-7.15.3}/tests/plugin_config.py +0 -0
  364. {coverage-7.15.2 → coverage-7.15.3}/tests/qunit/jquery.tmpl.min.js +0 -0
  365. {coverage-7.15.2 → coverage-7.15.3}/tests/select_plugin.py +0 -0
  366. {coverage-7.15.2 → coverage-7.15.3}/tests/stress_phystoken.tok +0 -0
  367. {coverage-7.15.2 → coverage-7.15.3}/tests/stress_phystoken_dos.tok +0 -0
  368. {coverage-7.15.2 → coverage-7.15.3}/tests/test_annotate.py +0 -0
  369. {coverage-7.15.2 → coverage-7.15.3}/tests/test_arcs.py +0 -0
  370. {coverage-7.15.2 → coverage-7.15.3}/tests/test_bytecode.py +0 -0
  371. {coverage-7.15.2 → coverage-7.15.3}/tests/test_cmdline.py +0 -0
  372. {coverage-7.15.2 → coverage-7.15.3}/tests/test_collector.py +0 -0
  373. {coverage-7.15.2 → coverage-7.15.3}/tests/test_concurrency.py +0 -0
  374. {coverage-7.15.2 → coverage-7.15.3}/tests/test_config.py +0 -0
  375. {coverage-7.15.2 → coverage-7.15.3}/tests/test_context.py +0 -0
  376. {coverage-7.15.2 → coverage-7.15.3}/tests/test_core.py +0 -0
  377. {coverage-7.15.2 → coverage-7.15.3}/tests/test_coverage.py +0 -0
  378. {coverage-7.15.2 → coverage-7.15.3}/tests/test_data.py +0 -0
  379. {coverage-7.15.2 → coverage-7.15.3}/tests/test_debug.py +0 -0
  380. {coverage-7.15.2 → coverage-7.15.3}/tests/test_execfile.py +0 -0
  381. {coverage-7.15.2 → coverage-7.15.3}/tests/test_filereporter.py +0 -0
  382. {coverage-7.15.2 → coverage-7.15.3}/tests/test_files.py +0 -0
  383. {coverage-7.15.2 → coverage-7.15.3}/tests/test_goldtest.py +0 -0
  384. {coverage-7.15.2 → coverage-7.15.3}/tests/test_html.py +0 -0
  385. {coverage-7.15.2 → coverage-7.15.3}/tests/test_json.py +0 -0
  386. {coverage-7.15.2 → coverage-7.15.3}/tests/test_lcov.py +0 -0
  387. {coverage-7.15.2 → coverage-7.15.3}/tests/test_mixins.py +0 -0
  388. {coverage-7.15.2 → coverage-7.15.3}/tests/test_oddball.py +0 -0
  389. {coverage-7.15.2 → coverage-7.15.3}/tests/test_parser.py +0 -0
  390. {coverage-7.15.2 → coverage-7.15.3}/tests/test_phystokens.py +0 -0
  391. {coverage-7.15.2 → coverage-7.15.3}/tests/test_plugins.py +0 -0
  392. {coverage-7.15.2 → coverage-7.15.3}/tests/test_process.py +0 -0
  393. {coverage-7.15.2 → coverage-7.15.3}/tests/test_python.py +0 -0
  394. {coverage-7.15.2 → coverage-7.15.3}/tests/test_regions.py +0 -0
  395. {coverage-7.15.2 → coverage-7.15.3}/tests/test_report.py +0 -0
  396. {coverage-7.15.2 → coverage-7.15.3}/tests/test_report_common.py +0 -0
  397. {coverage-7.15.2 → coverage-7.15.3}/tests/test_report_core.py +0 -0
  398. {coverage-7.15.2 → coverage-7.15.3}/tests/test_results.py +0 -0
  399. {coverage-7.15.2 → coverage-7.15.3}/tests/test_sqlitedb.py +0 -0
  400. {coverage-7.15.2 → coverage-7.15.3}/tests/test_sysmon.py +0 -0
  401. {coverage-7.15.2 → coverage-7.15.3}/tests/test_templite.py +0 -0
  402. {coverage-7.15.2 → coverage-7.15.3}/tests/test_testing.py +0 -0
  403. {coverage-7.15.2 → coverage-7.15.3}/tests/test_venv.py +0 -0
  404. {coverage-7.15.2 → coverage-7.15.3}/tests/test_version.py +0 -0
  405. {coverage-7.15.2 → coverage-7.15.3}/tests/test_xml.py +0 -0
  406. {coverage-7.15.2 → coverage-7.15.3}/tests/zipsrc/zip1/__init__.py +0 -0
  407. {coverage-7.15.2 → coverage-7.15.3}/tests/zipsrc/zip1/zip1.py +0 -0
  408. {coverage-7.15.2 → coverage-7.15.3}/tox.ini +0 -0
@@ -49,13 +49,13 @@ jobs:
49
49
 
50
50
  steps:
51
51
  - name: "Check out the repo"
52
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
52
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
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@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # v4.36.3
58
+ uses: github/codeql-action/init@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4.37.3
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@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # v4.36.3
69
+ uses: github/codeql-action/autobuild@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4.37.3
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@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # v4.36.3
83
+ uses: github/codeql-action/analyze@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4.37.3
@@ -4,8 +4,7 @@
4
4
  name: "Coverage"
5
5
 
6
6
  on:
7
- # As currently structured, this adds too many jobs (checks?), so don't run it
8
- # on pull requests yet.
7
+ pull_request:
9
8
  push:
10
9
  branches:
11
10
  - main
@@ -40,7 +39,7 @@ jobs:
40
39
  workflow: ${{ steps.filter.outputs.workflow }}
41
40
  steps:
42
41
  - name: "Check out the repo"
43
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
42
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
44
43
  with:
45
44
  persist-credentials: false
46
45
 
@@ -121,12 +120,12 @@ jobs:
121
120
 
122
121
  steps:
123
122
  - name: "Check out the repo"
124
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
123
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
125
124
  with:
126
125
  persist-credentials: false
127
126
 
128
127
  - name: "Set up Python"
129
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
128
+ uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
130
129
  with:
131
130
  python-version: "${{ matrix.python-version }}"
132
131
  allow-prereleases: true
@@ -182,12 +181,12 @@ jobs:
182
181
 
183
182
  steps:
184
183
  - name: "Check out the repo"
185
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
184
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
186
185
  with:
187
186
  persist-credentials: false
188
187
 
189
188
  - name: "Set up Python"
190
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
189
+ uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
191
190
  with:
192
191
  python-version: "3.10" # Minimum of PYVERSIONS
193
192
  # At a certain point, installing dependencies failed on pypy 3.9 and
@@ -245,6 +244,7 @@ jobs:
245
244
  echo '```' >> "$GITHUB_STEP_SUMMARY"
246
245
  python -m coverage report -m --skip-covered >> "$GITHUB_STEP_SUMMARY"
247
246
  echo '```' >> "$GITHUB_STEP_SUMMARY"
247
+ cat "$GITHUB_STEP_SUMMARY"
248
248
 
249
249
  - name: "Get total"
250
250
  id: total
@@ -256,9 +256,15 @@ jobs:
256
256
  # Maybe someday goals will be a real feature
257
257
  python -m pip install wcmatch
258
258
  # Very crude check that nothing catastrophic has happened.
259
- python lab/goals.py --group 90 "coverage/*.py" "tests/*.py"
259
+ if ! python lab/goals.py --group 90 "coverage/*.py" "tests/*.py"; then
260
+ echo '***** Total coverage is less than 90%!'
261
+ exit 1
262
+ fi
260
263
  # Absolutely all of our test code should be covered.
261
- python lab/goals.py --file 100 "tests/test_*.py"
264
+ if ! python lab/goals.py --file 100 "tests/test_*.py"; then
265
+ echo '***** Coverage of test files must be 100%!'
266
+ exit 1
267
+ fi
262
268
 
263
269
  publish:
264
270
  name: "Publish coverage report"
@@ -344,7 +350,7 @@ jobs:
344
350
  github.repository_owner == 'coveragepy'
345
351
  && github.ref == 'refs/heads/main'
346
352
  # https://gist.githubusercontent.com/nedbat/8c6980f77988a327348f9b02bbaf67f5
347
- uses: schneegans/dynamic-badges-action@0e50b8bad39e7e1afd3e4e9c2b7dd145fad07501 # v1.8.0
353
+ uses: schneegans/dynamic-badges-action@28b0fa8bdeb46170ac397105ece0c1fe58f68910 # v1.9.0
348
354
  with:
349
355
  # Personal access token: gist access
350
356
  auth: ${{ secrets.METACOV_GIST_SECRET }}
@@ -29,7 +29,7 @@ jobs:
29
29
  runs-on: ubuntu-latest
30
30
  steps:
31
31
  - name: "Check out the repo"
32
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
32
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
33
33
  with:
34
34
  persist-credentials: false
35
35
 
@@ -172,13 +172,13 @@ jobs:
172
172
 
173
173
  steps:
174
174
  - name: "Check out the repo"
175
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
175
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
176
176
  with:
177
177
  persist-credentials: false
178
178
 
179
179
  - name: "Install Python"
180
180
  if: ${{ matrix.arch != 'ppc64le' }}
181
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
181
+ uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
182
182
  with:
183
183
  python-version: "${{ matrix.cipy }}"
184
184
  cache: pip
@@ -234,12 +234,12 @@ jobs:
234
234
  runs-on: ubuntu-latest
235
235
  steps:
236
236
  - name: "Check out the repo"
237
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
237
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
238
238
  with:
239
239
  persist-credentials: false
240
240
 
241
241
  - name: "Install Python"
242
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
242
+ uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
243
243
  with:
244
244
  python-version: "3.11" # PYVERSIONS: the kit-building version
245
245
  cache: pip
@@ -91,7 +91,7 @@ jobs:
91
91
  subject-path: "dist/*"
92
92
 
93
93
  - name: "Publish dists to Test PyPI"
94
- uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0
94
+ uses: pypa/gh-action-pypi-publish@ba38be9e461d3875417946c167d0b5f3d385a247 # v1.14.1
95
95
  with:
96
96
  repository-url: https://test.pypi.org/legacy/
97
97
 
@@ -132,4 +132,4 @@ jobs:
132
132
  subject-path: "dist/*"
133
133
 
134
134
  - name: "Publish dists to PyPI"
135
- uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0
135
+ uses: pypa/gh-action-pypi-publish@ba38be9e461d3875417946c167d0b5f3d385a247 # v1.14.1
@@ -59,7 +59,7 @@ jobs:
59
59
 
60
60
  steps:
61
61
  - name: "Check out the repo"
62
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
62
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
63
63
  with:
64
64
  persist-credentials: false
65
65
 
@@ -38,7 +38,7 @@ jobs:
38
38
  workflow: ${{ steps.filter.outputs.workflow }}
39
39
  steps:
40
40
  - name: "Check out the repo"
41
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
41
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
42
42
  with:
43
43
  persist-credentials: false
44
44
 
@@ -74,12 +74,12 @@ jobs:
74
74
 
75
75
  steps:
76
76
  - name: "Check out the repo"
77
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
77
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
78
78
  with:
79
79
  persist-credentials: false
80
80
 
81
81
  - name: "Install Python"
82
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
82
+ uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
83
83
  with:
84
84
  python-version: "3.10" # Minimum of PYVERSIONS
85
85
  cache: pip
@@ -104,12 +104,12 @@ jobs:
104
104
 
105
105
  steps:
106
106
  - name: "Check out the repo"
107
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
107
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
108
108
  with:
109
109
  persist-credentials: false
110
110
 
111
111
  - name: "Install Python"
112
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
112
+ uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
113
113
  with:
114
114
  python-version: "3.10" # Minimum of PYVERSIONS
115
115
  cache: pip
@@ -134,7 +134,7 @@ jobs:
134
134
 
135
135
  steps:
136
136
  - name: "Check out the repo"
137
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
137
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
138
138
  with:
139
139
  persist-credentials: false
140
140
 
@@ -144,7 +144,7 @@ jobs:
144
144
  git fetch origin main --depth=1
145
145
 
146
146
  - name: "Install Python"
147
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
147
+ uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
148
148
  with:
149
149
  python-version: "3.12" # Doc version from PYVERSIONS
150
150
  cache: pip
@@ -179,12 +179,12 @@ jobs:
179
179
 
180
180
  steps:
181
181
  - name: "Check out the repo"
182
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
182
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
183
183
  with:
184
184
  persist-credentials: false
185
185
 
186
186
  - name: "Install uv"
187
- uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
187
+ uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
188
188
  with:
189
189
  enable-cache: false
190
190
 
@@ -38,7 +38,7 @@ jobs:
38
38
  run_tests: ${{ steps.filter.outputs.run_tests }}
39
39
  steps:
40
40
  - name: "Check out the repo"
41
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
41
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
42
42
  with:
43
43
  persist-credentials: false
44
44
 
@@ -116,12 +116,12 @@ jobs:
116
116
 
117
117
  steps:
118
118
  - name: "Check out the repo"
119
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
119
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
120
120
  with:
121
121
  persist-credentials: false
122
122
 
123
123
  - name: "Set up Python"
124
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
124
+ uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
125
125
  with:
126
126
  python-version: "${{ matrix.python-version }}"
127
127
  allow-prereleases: true
@@ -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.15.20
19
+ rev: v0.16.0
20
20
  hooks:
21
21
  - id: ruff-format
22
22
 
@@ -22,6 +22,29 @@ upgrading your version of coverage.py.
22
22
 
23
23
  .. start-releases
24
24
 
25
+ .. _changes_7-15-3:
26
+
27
+ Version 7.15.3 — 2026-08-02
28
+ ---------------------------
29
+
30
+ - Fix: the sysmon core is incompatible with dynamic contexts. Previously, the
31
+ combination would be prevented when read from the coverage.py configuration.
32
+ But using the context API as pytest-cov does, contexts would be silently
33
+ dropped. Now a warning is issued, thanks to `Jisang Han <pull 2234_>`_.
34
+ Closes `issue 2200`_.
35
+
36
+ - A performance improvement in the low-level line number bookkeeping when
37
+ combining data files, thanks to `Kevin Turcios <pull 2239_>`_.
38
+
39
+ - Performance improvement in HTML reporting by reducing the number of times
40
+ files have to be parsed, thanks to `Kevin Turcios <pull 2240_>`_.
41
+
42
+ .. _issue 2200: https://github.com/coveragepy/coveragepy/issues/2200
43
+ .. _pull 2234: https://github.com/coveragepy/coveragepy/pull/2234
44
+ .. _pull 2239: https://github.com/coveragepy/coveragepy/pull/2239
45
+ .. _pull 2240: https://github.com/coveragepy/coveragepy/pull/2240
46
+
47
+
25
48
  .. _changes_7-15-2:
26
49
 
27
50
  Version 7.15.2 — 2026-07-15
@@ -123,6 +123,7 @@ Jeremy Fleischman
123
123
  Jerin Peter George
124
124
  Jessamyn Smith
125
125
  Jianrong Zhao
126
+ Jisang Han
126
127
  Joanna Ejzel
127
128
  Joe Doherty
128
129
  Joe Jevnik
@@ -139,6 +140,7 @@ Karthikeyan Singaravelan
139
140
  Kassandra Keeton
140
141
  Ken Schackart
141
142
  Kevin Brown-Silva
143
+ Kevin Turcios
142
144
  Kjell Braden
143
145
  Krystian Kichewko
144
146
  Kumar Aditya
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: coverage
3
- Version: 7.15.2
3
+ Version: 7.15.3
4
4
  Summary: Code coverage measurement for Python
5
5
  Home-page: https://github.com/coveragepy/coveragepy
6
- Author: Ned Batchelder and 261 others
6
+ Author: Ned Batchelder and 263 others
7
7
  Author-email: ned@nedbatchelder.com
8
8
  License: Apache-2.0
9
- Project-URL: Documentation, https://coverage.readthedocs.io/en/7.15.2
9
+ Project-URL: Documentation, https://coverage.readthedocs.io/en/7.15.3
10
10
  Project-URL: Funding, https://tidelift.com/subscription/pkg/pypi-coverage?utm_source=pypi-coverage&utm_medium=referral&utm_campaign=pypi
11
11
  Project-URL: Issues, https://github.com/coveragepy/coveragepy/issues
12
12
  Project-URL: Mastodon, https://hachyderm.io/@coveragepy
@@ -33,6 +33,7 @@ Classifier: Topic :: Software Development :: Testing
33
33
  Requires-Python: >=3.10
34
34
  Description-Content-Type: text/x-rst
35
35
  License-File: LICENSE.txt
36
+ License-File: NOTICE.txt
36
37
  Provides-Extra: toml
37
38
  Requires-Dist: tomli; python_full_version <= "3.11.0a6" and extra == "toml"
38
39
  Dynamic: author
@@ -83,7 +84,7 @@ Coverage.py runs on these versions of Python:
83
84
  Documentation is on `Read the Docs`_. Code repository and issue tracker are on
84
85
  `GitHub`_.
85
86
 
86
- .. _Read the Docs: https://coverage.readthedocs.io/en/7.15.2/
87
+ .. _Read the Docs: https://coverage.readthedocs.io/en/7.15.3/
87
88
  .. _GitHub: https://github.com/coveragepy/coveragepy
88
89
 
89
90
 
@@ -112,7 +113,7 @@ Getting Started
112
113
  Looking to run ``coverage`` on your test suite? See the `Quick Start section`_
113
114
  of the docs.
114
115
 
115
- .. _Quick Start section: https://coverage.readthedocs.io/en/7.15.2/#quick-start
116
+ .. _Quick Start section: https://coverage.readthedocs.io/en/7.15.3/#quick-start
116
117
 
117
118
 
118
119
  Change history
@@ -120,7 +121,7 @@ Change history
120
121
 
121
122
  The complete history of changes is on the `change history page`_.
122
123
 
123
- .. _change history page: https://coverage.readthedocs.io/en/7.15.2/changes.html
124
+ .. _change history page: https://coverage.readthedocs.io/en/7.15.3/changes.html
124
125
 
125
126
 
126
127
  Code of Conduct
@@ -139,7 +140,7 @@ Contributing
139
140
  Found a bug? Want to help improve the code or documentation? See the
140
141
  `Contributing section`_ of the docs.
141
142
 
142
- .. _Contributing section: https://coverage.readthedocs.io/en/7.15.2/contributing.html
143
+ .. _Contributing section: https://coverage.readthedocs.io/en/7.15.3/contributing.html
143
144
 
144
145
 
145
146
  Security
@@ -167,7 +168,7 @@ Licensed under the `Apache 2.0 License`_. For details, see `NOTICE.txt`_.
167
168
  :target: https://github.com/coveragepy/coveragepy/actions/workflows/quality.yml
168
169
  :alt: Quality check status
169
170
  .. |docs| image:: https://readthedocs.org/projects/coverage/badge/?version=latest&style=flat
170
- :target: https://coverage.readthedocs.io/en/7.15.2/
171
+ :target: https://coverage.readthedocs.io/en/7.15.3/
171
172
  :alt: Documentation
172
173
  .. |kit| image:: https://img.shields.io/pypi/v/coverage
173
174
  :target: https://pypi.org/project/coverage/
@@ -794,6 +794,14 @@ class Coverage(TConfigurable):
794
794
  if not self._started: # pragma: part started
795
795
  raise CoverageException("Cannot switch context, coverage is not started")
796
796
 
797
+ assert self._core is not None
798
+ if not self._core.supports_dynamic_contexts:
799
+ self._warn(
800
+ "Dynamic contexts aren't supported with core=sysmon; "
801
+ + "context data may be incomplete",
802
+ slug="no-sysmon-context",
803
+ once=True,
804
+ )
797
805
  assert self._collector is not None
798
806
  if self._collector.should_start_context:
799
807
  self._warn("Conflicting dynamic contexts", slug="dynamic-conflict", once=True)
@@ -51,6 +51,7 @@ class Core:
51
51
  tracer_kwargs: dict[str, Any]
52
52
  file_disposition_class: type[TFileDisposition]
53
53
  supports_plugins: bool
54
+ supports_dynamic_contexts: bool
54
55
  packed_arcs: bool
55
56
  systrace: bool
56
57
 
@@ -116,18 +117,21 @@ class Core:
116
117
  self.tracer_class = SysMonitor
117
118
  self.file_disposition_class = FileDisposition
118
119
  self.supports_plugins = False
120
+ self.supports_dynamic_contexts = False
119
121
  self.packed_arcs = False
120
122
  self.systrace = False
121
123
  elif core_name == "ctrace":
122
124
  self.tracer_class = coverage.tracer.CTracer
123
125
  self.file_disposition_class = coverage.tracer.CFileDisposition
124
126
  self.supports_plugins = True
127
+ self.supports_dynamic_contexts = True
125
128
  self.packed_arcs = True
126
129
  self.systrace = True
127
130
  elif core_name == "pytrace":
128
131
  self.tracer_class = PyTracer
129
132
  self.file_disposition_class = FileDisposition
130
133
  self.supports_plugins = False
134
+ self.supports_dynamic_contexts = True
131
135
  self.packed_arcs = False
132
136
  self.systrace = True
133
137
  else:
@@ -109,6 +109,23 @@ def num_in_numbits(num: int, numbits: bytes) -> bool:
109
109
  return bool(numbits[nbyte] & (1 << nbit))
110
110
 
111
111
 
112
+ class NumbitsUnionAgg:
113
+ """SQLite aggregate function for computing union of numbits."""
114
+
115
+ def __init__(self) -> None:
116
+ self.result = 0
117
+ self.result_nbytes = 0
118
+
119
+ def step(self, value: bytes) -> None:
120
+ """Process one value in the aggregation."""
121
+ self.result |= int.from_bytes(value, "little")
122
+ self.result_nbytes = max(self.result_nbytes, len(value))
123
+
124
+ def finalize(self) -> bytes:
125
+ """Return the final aggregated result."""
126
+ return self.result.to_bytes(self.result_nbytes, "little")
127
+
128
+
112
129
  def register_sqlite_functions(connection: sqlite3.Connection) -> None:
113
130
  """
114
131
  Define numbits functions in a SQLite connection.
@@ -144,3 +161,4 @@ def register_sqlite_functions(connection: sqlite3.Connection) -> None:
144
161
  connection.create_function("numbits_any_intersection", 2, numbits_any_intersection)
145
162
  connection.create_function("num_in_numbits", 2, num_in_numbits)
146
163
  connection.create_function("numbits_to_nums", 1, lambda b: json.dumps(numbits_to_nums(b)))
164
+ connection.create_aggregate("numbits_union_agg", 1, NumbitsUnionAgg) # type: ignore[arg-type]
@@ -336,10 +336,8 @@ class PythonParser:
336
336
  `_all_arcs` is the set of arcs in the code.
337
337
 
338
338
  """
339
- ast_root = self._ast_root
340
- if ast_root is None:
341
- ast_root = ast.parse(self.text)
342
- aaa = AstArcAnalyzer(self.filename, ast_root, self.raw_statements, self.multiline_map)
339
+ assert self._ast_root is not None
340
+ aaa = AstArcAnalyzer(self.filename, self._ast_root, self.raw_statements, self.multiline_map)
343
341
  aaa.analyze()
344
342
  arcs = aaa.arcs
345
343
  self._with_jump_fixers = aaa.with_jump_fixers()
@@ -92,6 +92,13 @@ def _phys_tokens(toks: TokenInfos) -> TokenInfos:
92
92
 
93
93
  def find_soft_key_lines(source: str) -> set[TLineNo]:
94
94
  """Helper for finding lines with soft keywords, like match/case lines."""
95
+ # Do a quick check first, to eliminate files with no possibility of soft keywords.
96
+ # match/case is only a soft keyword if both words are in the source.
97
+ if "match" not in source or "case" not in source:
98
+ if sys.version_info < (3, 12) or "type" not in source:
99
+ if sys.version_info < (3, 15) or "lazy" not in source:
100
+ return set()
101
+
95
102
  soft_key_lines: set[TLineNo] = set()
96
103
 
97
104
  for node in ast.walk(ast.parse(source)):
@@ -28,7 +28,12 @@ from typing import Any, cast
28
28
  from coverage.debug import NoDebugging, auto_repr, file_summary
29
29
  from coverage.exceptions import CoverageException, DataError
30
30
  from coverage.misc import Hasher, file_be_gone, isolate_module
31
- from coverage.numbits import numbits_to_nums, numbits_union, nums_to_numbits
31
+ from coverage.numbits import (
32
+ numbits_to_nums,
33
+ numbits_union,
34
+ nums_to_numbits,
35
+ register_sqlite_functions,
36
+ )
32
37
  from coverage.sqlitedb import SqliteDb
33
38
  from coverage.types import AnyCallable, FilePath, TArc, TDebugCtl, TLineNo, TWarnFn
34
39
  from coverage.version import __version__
@@ -128,21 +133,6 @@ def _locked(method: AnyCallable) -> AnyCallable:
128
133
  return _wrapped
129
134
 
130
135
 
131
- class NumbitsUnionAgg:
132
- """SQLite aggregate function for computing union of numbits."""
133
-
134
- def __init__(self) -> None:
135
- self.result = b""
136
-
137
- def step(self, value: bytes) -> None:
138
- """Process one value in the aggregation."""
139
- self.result = numbits_union(self.result, value)
140
-
141
- def finalize(self) -> bytes:
142
- """Return the final aggregated result."""
143
- return self.result
144
-
145
-
146
136
  class CoverageData:
147
137
  """Manages collected coverage data, including file storage.
148
138
 
@@ -388,7 +378,7 @@ class CoverageData:
388
378
  self._debug.write(f"Reaping dead thread's data file: {db!r}")
389
379
  try:
390
380
  db.close(force=True)
391
- except Exception:
381
+ except Exception: # pragma: cant happen
392
382
  # Closing is best-effort; a failure here must not break
393
383
  # collection. The entry has already been dropped.
394
384
  pass
@@ -746,13 +736,8 @@ class CoverageData:
746
736
  con.con.isolation_level = "IMMEDIATE"
747
737
 
748
738
  # Register functions for SQLite
749
- con.con.create_function("numbits_union", 2, numbits_union)
739
+ register_sqlite_functions(con.con)
750
740
  con.con.create_function("map_path", 1, map_path)
751
- con.con.create_aggregate(
752
- "numbits_union_agg",
753
- 1,
754
- NumbitsUnionAgg, # type: ignore[arg-type]
755
- )
756
741
 
757
742
  # Attach the other database
758
743
  con.execute_void("ATTACH DATABASE ? AS other_db", (other_data.data_filename(),))
@@ -8,7 +8,7 @@ from __future__ import annotations
8
8
 
9
9
  # version_info: same semantics as sys.version_info.
10
10
  # _dev: the .devN suffix if any.
11
- version_info = (7, 15, 2, "final", 0)
11
+ version_info = (7, 15, 3, "final", 0)
12
12
  _dev = 0
13
13
 
14
14
 
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: coverage
3
- Version: 7.15.2
3
+ Version: 7.15.3
4
4
  Summary: Code coverage measurement for Python
5
5
  Home-page: https://github.com/coveragepy/coveragepy
6
- Author: Ned Batchelder and 261 others
6
+ Author: Ned Batchelder and 263 others
7
7
  Author-email: ned@nedbatchelder.com
8
8
  License: Apache-2.0
9
- Project-URL: Documentation, https://coverage.readthedocs.io/en/7.15.2
9
+ Project-URL: Documentation, https://coverage.readthedocs.io/en/7.15.3
10
10
  Project-URL: Funding, https://tidelift.com/subscription/pkg/pypi-coverage?utm_source=pypi-coverage&utm_medium=referral&utm_campaign=pypi
11
11
  Project-URL: Issues, https://github.com/coveragepy/coveragepy/issues
12
12
  Project-URL: Mastodon, https://hachyderm.io/@coveragepy
@@ -33,6 +33,7 @@ Classifier: Topic :: Software Development :: Testing
33
33
  Requires-Python: >=3.10
34
34
  Description-Content-Type: text/x-rst
35
35
  License-File: LICENSE.txt
36
+ License-File: NOTICE.txt
36
37
  Provides-Extra: toml
37
38
  Requires-Dist: tomli; python_full_version <= "3.11.0a6" and extra == "toml"
38
39
  Dynamic: author
@@ -83,7 +84,7 @@ Coverage.py runs on these versions of Python:
83
84
  Documentation is on `Read the Docs`_. Code repository and issue tracker are on
84
85
  `GitHub`_.
85
86
 
86
- .. _Read the Docs: https://coverage.readthedocs.io/en/7.15.2/
87
+ .. _Read the Docs: https://coverage.readthedocs.io/en/7.15.3/
87
88
  .. _GitHub: https://github.com/coveragepy/coveragepy
88
89
 
89
90
 
@@ -112,7 +113,7 @@ Getting Started
112
113
  Looking to run ``coverage`` on your test suite? See the `Quick Start section`_
113
114
  of the docs.
114
115
 
115
- .. _Quick Start section: https://coverage.readthedocs.io/en/7.15.2/#quick-start
116
+ .. _Quick Start section: https://coverage.readthedocs.io/en/7.15.3/#quick-start
116
117
 
117
118
 
118
119
  Change history
@@ -120,7 +121,7 @@ Change history
120
121
 
121
122
  The complete history of changes is on the `change history page`_.
122
123
 
123
- .. _change history page: https://coverage.readthedocs.io/en/7.15.2/changes.html
124
+ .. _change history page: https://coverage.readthedocs.io/en/7.15.3/changes.html
124
125
 
125
126
 
126
127
  Code of Conduct
@@ -139,7 +140,7 @@ Contributing
139
140
  Found a bug? Want to help improve the code or documentation? See the
140
141
  `Contributing section`_ of the docs.
141
142
 
142
- .. _Contributing section: https://coverage.readthedocs.io/en/7.15.2/contributing.html
143
+ .. _Contributing section: https://coverage.readthedocs.io/en/7.15.3/contributing.html
143
144
 
144
145
 
145
146
  Security
@@ -167,7 +168,7 @@ Licensed under the `Apache 2.0 License`_. For details, see `NOTICE.txt`_.
167
168
  :target: https://github.com/coveragepy/coveragepy/actions/workflows/quality.yml
168
169
  :alt: Quality check status
169
170
  .. |docs| image:: https://readthedocs.org/projects/coverage/badge/?version=latest&style=flat
170
- :target: https://coverage.readthedocs.io/en/7.15.2/
171
+ :target: https://coverage.readthedocs.io/en/7.15.3/
171
172
  :alt: Documentation
172
173
  .. |kit| image:: https://img.shields.io/pypi/v/coverage
173
174
  :target: https://pypi.org/project/coverage/
@@ -204,6 +204,7 @@ tests/coveragetest.py
204
204
  tests/covmodzip1.py
205
205
  tests/goldtest.py
206
206
  tests/helpers.py
207
+ tests/hypo.py
207
208
  tests/mixins.py
208
209
  tests/osinfo.py
209
210
  tests/plugin1.py