coverage 7.11.4a0.dev1__tar.gz → 7.12.1b1__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 (400) hide show
  1. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/.github/dependabot.yml +3 -0
  2. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/.github/workflows/coverage.yml +1 -1
  3. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/CHANGES.rst +22 -8
  4. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/Makefile +6 -3
  5. {coverage-7.11.4a0.dev1/coverage.egg-info → coverage-7.12.1b1}/PKG-INFO +8 -8
  6. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/__init__.py +0 -2
  7. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/control.py +49 -24
  8. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/ctracer/tracer.c +8 -6
  9. {coverage-7.11.4a0.dev1/tests/gold/html/styled → coverage-7.12.1b1/coverage/htmlfiles}/style.css +4 -0
  10. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/htmlfiles/style.scss +4 -2
  11. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/patch.py +3 -51
  12. coverage-7.12.1b1/coverage/pth_file.py +16 -0
  13. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/report.py +1 -1
  14. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/sysmon.py +7 -3
  15. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/version.py +2 -2
  16. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1/coverage.egg-info}/PKG-INFO +8 -8
  17. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage.egg-info/SOURCES.txt +3 -1
  18. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/conf.py +3 -3
  19. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/config.rst +3 -3
  20. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/index.rst +1 -1
  21. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/howto.txt +7 -4
  22. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/igor.py +6 -9
  23. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/metacov.ini +7 -3
  24. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/setup.py +30 -0
  25. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/conftest.py +0 -13
  26. {coverage-7.11.4a0.dev1/coverage/htmlfiles → coverage-7.12.1b1/tests/gold/html/styled}/style.css +4 -0
  27. coverage-7.11.4a0.dev1/tests/gold/html/support/style_cb_8432e98f.css → coverage-7.12.1b1/tests/gold/html/support/style_cb_a5a05ca4.css +4 -0
  28. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_process.py +10 -37
  29. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_report.py +1 -1
  30. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tox.ini +8 -8
  31. coverage-7.12.1b1/zzz_coverage.pth +1 -0
  32. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/.editorconfig +0 -0
  33. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/.git-blame-ignore-revs +0 -0
  34. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/.github/CODE_OF_CONDUCT.md +0 -0
  35. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/.github/FUNDING.yml +0 -0
  36. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  37. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  38. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  39. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/.github/ISSUE_TEMPLATE/support.md +0 -0
  40. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/.github/SECURITY.md +0 -0
  41. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/.github/workflows/codeql-analysis.yml +0 -0
  42. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/.github/workflows/dependency-review.yml +0 -0
  43. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/.github/workflows/kit.yml +0 -0
  44. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/.github/workflows/publish.yml +0 -0
  45. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/.github/workflows/python-nightly.yml +0 -0
  46. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/.github/workflows/quality.yml +0 -0
  47. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/.github/workflows/testsuite.yml +0 -0
  48. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/.github/zizmor.yml +0 -0
  49. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/.ignore +0 -0
  50. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/.pre-commit-config.yaml +0 -0
  51. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/.readthedocs.yaml +0 -0
  52. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/CITATION.cff +0 -0
  53. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/CONTRIBUTORS.txt +0 -0
  54. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/LICENSE.txt +0 -0
  55. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/MANIFEST.in +0 -0
  56. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/NOTICE.txt +0 -0
  57. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/README.rst +0 -0
  58. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/__main__.py +0 -0
  59. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/ci/README.txt +0 -0
  60. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/ci/comment_on_fixes.py +0 -0
  61. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/ci/session.py +0 -0
  62. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/ci/trigger_action.py +0 -0
  63. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/ci/update_rtfd.py +0 -0
  64. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/__main__.py +0 -0
  65. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/annotate.py +0 -0
  66. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/bytecode.py +0 -0
  67. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/cmdline.py +0 -0
  68. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/collector.py +0 -0
  69. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/config.py +0 -0
  70. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/context.py +0 -0
  71. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/core.py +0 -0
  72. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/ctracer/datastack.c +0 -0
  73. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/ctracer/datastack.h +0 -0
  74. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/ctracer/filedisp.c +0 -0
  75. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/ctracer/filedisp.h +0 -0
  76. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/ctracer/module.c +0 -0
  77. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/ctracer/stats.h +0 -0
  78. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/ctracer/tracer.h +0 -0
  79. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/ctracer/util.h +0 -0
  80. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/data.py +0 -0
  81. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/debug.py +0 -0
  82. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/disposition.py +0 -0
  83. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/env.py +0 -0
  84. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/exceptions.py +0 -0
  85. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/execfile.py +0 -0
  86. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/files.py +0 -0
  87. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/html.py +0 -0
  88. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/htmlfiles/coverage_html.js +0 -0
  89. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/htmlfiles/favicon_32.png +0 -0
  90. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/htmlfiles/index.html +0 -0
  91. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/htmlfiles/keybd_closed.png +0 -0
  92. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/htmlfiles/pyfile.html +0 -0
  93. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/inorout.py +0 -0
  94. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/jsonreport.py +0 -0
  95. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/lcovreport.py +0 -0
  96. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/misc.py +0 -0
  97. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/multiproc.py +0 -0
  98. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/numbits.py +0 -0
  99. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/parser.py +0 -0
  100. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/phystokens.py +0 -0
  101. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/plugin.py +0 -0
  102. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/plugin_support.py +0 -0
  103. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/py.typed +0 -0
  104. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/python.py +0 -0
  105. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/pytracer.py +0 -0
  106. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/regions.py +0 -0
  107. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/report_core.py +0 -0
  108. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/results.py +0 -0
  109. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/sqldata.py +0 -0
  110. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/sqlitedb.py +0 -0
  111. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/templite.py +0 -0
  112. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/tomlconfig.py +0 -0
  113. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/tracer.pyi +0 -0
  114. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/types.py +0 -0
  115. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage/xmlreport.py +0 -0
  116. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage.egg-info/dependency_links.txt +0 -0
  117. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage.egg-info/entry_points.txt +0 -0
  118. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage.egg-info/not-zip-safe +0 -0
  119. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage.egg-info/requires.txt +0 -0
  120. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/coverage.egg-info/top_level.txt +0 -0
  121. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/_static/coverage.css +0 -0
  122. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/api.rst +0 -0
  123. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/api_coverage.rst +0 -0
  124. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/api_coveragedata.rst +0 -0
  125. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/api_exceptions.rst +0 -0
  126. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/api_module.rst +0 -0
  127. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/api_plugin.rst +0 -0
  128. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/branch.rst +0 -0
  129. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/changes.rst +0 -0
  130. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/cog_helpers.py +0 -0
  131. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/commands/cmd_annotate.rst +0 -0
  132. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/commands/cmd_combine.rst +0 -0
  133. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/commands/cmd_debug.rst +0 -0
  134. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/commands/cmd_erase.rst +0 -0
  135. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/commands/cmd_html.rst +0 -0
  136. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/commands/cmd_json.rst +0 -0
  137. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/commands/cmd_lcov.rst +0 -0
  138. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/commands/cmd_report.rst +0 -0
  139. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/commands/cmd_reporting.rst +0 -0
  140. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/commands/cmd_run.rst +0 -0
  141. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/commands/cmd_xml.rst +0 -0
  142. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/commands/index.rst +0 -0
  143. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/contexts.rst +0 -0
  144. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/contributing.rst +0 -0
  145. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/dbschema.rst +0 -0
  146. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/dict.txt +0 -0
  147. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/excluding.rst +0 -0
  148. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/faq.rst +0 -0
  149. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/howitworks.rst +0 -0
  150. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/install.rst +0 -0
  151. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/media/Tidelift_Logos_RGB_Tidelift_Shorthand_On-White.png +0 -0
  152. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/media/Tidelift_Logos_RGB_Tidelift_Shorthand_On-White_small.png +0 -0
  153. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/media/sleepy-snake-600.png +0 -0
  154. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/media/sleepy-snake-circle-150.png +0 -0
  155. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/messages.rst +0 -0
  156. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/migrating.rst +0 -0
  157. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/other.rst +0 -0
  158. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/plugins.rst +0 -0
  159. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/python-coverage.1.txt +0 -0
  160. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/requirements.in +0 -0
  161. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/requirements.pip +0 -0
  162. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/sample_html/favicon_32_cb_58284776.png +0 -0
  163. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/sample_html/keybd_closed_cb_ce680311.png +0 -0
  164. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/sleepy.rst +0 -0
  165. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/source.rst +0 -0
  166. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/subprocess.rst +0 -0
  167. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/trouble.rst +0 -0
  168. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/doc/whatsnew5x.rst +0 -0
  169. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/lab/README.txt +0 -0
  170. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/lab/branches.py +0 -0
  171. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/lab/compare_times.sh +0 -0
  172. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/lab/coverage-04.dtd +0 -0
  173. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/lab/extract_code.py +0 -0
  174. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/lab/goals.py +0 -0
  175. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/lab/hack_pyc.py +0 -0
  176. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/lab/notes/arcs-to-branches.txt +0 -0
  177. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/lab/notes/bug1303.txt +0 -0
  178. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/lab/notes/pypy-738-decorated-functions.txt +0 -0
  179. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/lab/parse_all.py +0 -0
  180. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/lab/parser.py +0 -0
  181. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/lab/pick.py +0 -0
  182. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/lab/platform_info.py +0 -0
  183. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/lab/run_sysmon.py +0 -0
  184. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/lab/run_trace.py +0 -0
  185. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/lab/select_contexts.py +0 -0
  186. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/lab/show_platform.py +0 -0
  187. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/lab/show_pyc.py +0 -0
  188. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/lab/treetopy.sh +0 -0
  189. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/lab/warn_executed.py +0 -0
  190. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/lab/warn_executed.toml +0 -0
  191. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/pyproject.toml +0 -0
  192. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/requirements/dev.in +0 -0
  193. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/requirements/dev.pip +0 -0
  194. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/requirements/kit.in +0 -0
  195. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/requirements/kit.pip +0 -0
  196. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/requirements/light-threads.in +0 -0
  197. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/requirements/light-threads.pip +0 -0
  198. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/requirements/mypy.in +0 -0
  199. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/requirements/mypy.pip +0 -0
  200. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/requirements/pins.pip +0 -0
  201. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/requirements/pip.in +0 -0
  202. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/requirements/pip.pip +0 -0
  203. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/requirements/pytest.in +0 -0
  204. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/requirements/pytest.pip +0 -0
  205. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/requirements/tox.in +0 -0
  206. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/requirements/tox.pip +0 -0
  207. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/setup.cfg +0 -0
  208. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/__init__.py +0 -0
  209. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/coveragetest.py +0 -0
  210. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/covmodzip1.py +0 -0
  211. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/README.rst +0 -0
  212. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/annotate/anno_dir/multi.py,cover +0 -0
  213. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/annotate/anno_dir/z_80084bf2fba02475___init__.py,cover +0 -0
  214. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/annotate/anno_dir/z_80084bf2fba02475_a.py,cover +0 -0
  215. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/annotate/anno_dir/z_b039179a8a4ce2c2___init__.py,cover +0 -0
  216. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/annotate/anno_dir/z_b039179a8a4ce2c2_b.py,cover +0 -0
  217. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/annotate/encodings/utf8.py,cover +0 -0
  218. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/annotate/mae/mae.py,cover +0 -0
  219. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/annotate/multi/a/__init__.py,cover +0 -0
  220. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/annotate/multi/a/a.py,cover +0 -0
  221. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/annotate/multi/b/__init__.py,cover +0 -0
  222. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/annotate/multi/b/b.py,cover +0 -0
  223. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/annotate/multi/multi.py,cover +0 -0
  224. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/annotate/white/white.py,cover +0 -0
  225. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/Makefile +0 -0
  226. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/a/a_py.html +0 -0
  227. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/a/class_index.html +0 -0
  228. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/a/function_index.html +0 -0
  229. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/a/index.html +0 -0
  230. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/b_branch/b_py.html +0 -0
  231. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/b_branch/class_index.html +0 -0
  232. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/b_branch/function_index.html +0 -0
  233. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/b_branch/index.html +0 -0
  234. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/bom/bom_py.html +0 -0
  235. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/bom/class_index.html +0 -0
  236. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/bom/function_index.html +0 -0
  237. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/bom/index.html +0 -0
  238. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/contexts/class_index.html +0 -0
  239. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/contexts/function_index.html +0 -0
  240. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/contexts/index.html +0 -0
  241. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/contexts/two_tests_py.html +0 -0
  242. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/isolatin1/class_index.html +0 -0
  243. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/isolatin1/function_index.html +0 -0
  244. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/isolatin1/index.html +0 -0
  245. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/isolatin1/isolatin1_py.html +0 -0
  246. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/multiline/class_index.html +0 -0
  247. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/multiline/function_index.html +0 -0
  248. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/multiline/index.html +0 -0
  249. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/multiline/multiline_py.html +0 -0
  250. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/omit_1/class_index.html +0 -0
  251. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/omit_1/function_index.html +0 -0
  252. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/omit_1/index.html +0 -0
  253. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/omit_1/m1_py.html +0 -0
  254. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/omit_1/m2_py.html +0 -0
  255. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/omit_1/m3_py.html +0 -0
  256. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/omit_1/main_py.html +0 -0
  257. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/omit_2/class_index.html +0 -0
  258. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/omit_2/function_index.html +0 -0
  259. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/omit_2/index.html +0 -0
  260. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/omit_2/m2_py.html +0 -0
  261. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/omit_2/m3_py.html +0 -0
  262. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/omit_2/main_py.html +0 -0
  263. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/omit_3/class_index.html +0 -0
  264. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/omit_3/function_index.html +0 -0
  265. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/omit_3/index.html +0 -0
  266. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/omit_3/m3_py.html +0 -0
  267. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/omit_3/main_py.html +0 -0
  268. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/omit_4/class_index.html +0 -0
  269. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/omit_4/function_index.html +0 -0
  270. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/omit_4/index.html +0 -0
  271. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/omit_4/m1_py.html +0 -0
  272. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/omit_4/m3_py.html +0 -0
  273. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/omit_4/main_py.html +0 -0
  274. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/omit_5/class_index.html +0 -0
  275. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/omit_5/function_index.html +0 -0
  276. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/omit_5/index.html +0 -0
  277. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/omit_5/m1_py.html +0 -0
  278. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/omit_5/main_py.html +0 -0
  279. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/other/blah_blah_other_py.html +0 -0
  280. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/other/class_index.html +0 -0
  281. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/other/function_index.html +0 -0
  282. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/other/here_py.html +0 -0
  283. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/other/index.html +0 -0
  284. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/partial/class_index.html +0 -0
  285. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/partial/function_index.html +0 -0
  286. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/partial/index.html +0 -0
  287. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/partial/partial_py.html +0 -0
  288. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/styled/a_py.html +0 -0
  289. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/styled/class_index.html +0 -0
  290. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/styled/function_index.html +0 -0
  291. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/styled/index.html +0 -0
  292. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/styled/myextra.css +0 -0
  293. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/support/coverage_html_cb_bcae5fc4.js +0 -0
  294. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/support/favicon_32_cb_58284776.png +0 -0
  295. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/support/keybd_closed_cb_ce680311.png +0 -0
  296. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/unicode/class_index.html +0 -0
  297. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/unicode/function_index.html +0 -0
  298. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/unicode/index.html +0 -0
  299. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/html/unicode/unicode_py.html +0 -0
  300. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/testing/getty/gettysburg.txt +0 -0
  301. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/testing/xml/output.xml +0 -0
  302. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/xml/x_xml/coverage.xml +0 -0
  303. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/gold/xml/y_xml_branch/coverage.xml +0 -0
  304. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/goldtest.py +0 -0
  305. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/helpers.py +0 -0
  306. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/js/index.html +0 -0
  307. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/js/tests.js +0 -0
  308. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/mixins.py +0 -0
  309. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/aa/__init__.py +0 -0
  310. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/aa/afile.odd.py +0 -0
  311. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/aa/afile.py +0 -0
  312. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/aa/bb/__init__.py +0 -0
  313. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/aa/bb/bfile.odd.py +0 -0
  314. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/aa/bb/bfile.py +0 -0
  315. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/aa/bb/cc/__init__.py +0 -0
  316. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/aa/bb/cc/cfile.py +0 -0
  317. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/aa/bb.odd/bfile.py +0 -0
  318. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/aa/zfile.py +0 -0
  319. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/ambiguous/__init__.py +0 -0
  320. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/ambiguous/pkg1/__init__.py +0 -0
  321. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/ambiguous/pkg1/ambiguous.py +0 -0
  322. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/covmod1.py +0 -0
  323. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/namespace_420/sub1/__init__.py +0 -0
  324. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/pkg1/__init__.py +0 -0
  325. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/pkg1/__main__.py +0 -0
  326. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/pkg1/p1a.py +0 -0
  327. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/pkg1/p1b.py +0 -0
  328. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/pkg1/p1c.py +0 -0
  329. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/pkg1/runmod2.py +0 -0
  330. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/pkg1/sub/__init__.py +0 -0
  331. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/pkg1/sub/__main__.py +0 -0
  332. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/pkg1/sub/ps1a.py +0 -0
  333. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/pkg1/sub/runmod3.py +0 -0
  334. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/pkg2/__init__.py +0 -0
  335. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/pkg2/p2a.py +0 -0
  336. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/pkg2/p2b.py +0 -0
  337. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/plugins/__init__.py +0 -0
  338. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/plugins/a_plugin.py +0 -0
  339. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/plugins/another.py +0 -0
  340. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/process_test/__init__.py +0 -0
  341. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/process_test/try_execfile.py +0 -0
  342. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/runmod1.py +0 -0
  343. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/modules/usepkgs.py +0 -0
  344. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/moremodules/namespace_420/sub2/__init__.py +0 -0
  345. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/moremodules/othermods/__init__.py +0 -0
  346. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/moremodules/othermods/othera.py +0 -0
  347. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/moremodules/othermods/otherb.py +0 -0
  348. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/moremodules/othermods/sub/__init__.py +0 -0
  349. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/moremodules/othermods/sub/osa.py +0 -0
  350. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/moremodules/othermods/sub/osb.py +0 -0
  351. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/osinfo.py +0 -0
  352. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/plugin1.py +0 -0
  353. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/plugin2.py +0 -0
  354. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/plugin_config.py +0 -0
  355. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/qunit/jquery.tmpl.min.js +0 -0
  356. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/select_plugin.py +0 -0
  357. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/stress_phystoken.tok +0 -0
  358. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/stress_phystoken_dos.tok +0 -0
  359. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_annotate.py +0 -0
  360. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_api.py +0 -0
  361. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_arcs.py +0 -0
  362. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_bytecode.py +0 -0
  363. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_cmdline.py +0 -0
  364. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_collector.py +0 -0
  365. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_concurrency.py +0 -0
  366. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_config.py +0 -0
  367. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_context.py +0 -0
  368. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_core.py +0 -0
  369. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_coverage.py +0 -0
  370. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_data.py +0 -0
  371. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_debug.py +0 -0
  372. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_execfile.py +0 -0
  373. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_filereporter.py +0 -0
  374. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_files.py +0 -0
  375. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_goldtest.py +0 -0
  376. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_html.py +0 -0
  377. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_json.py +0 -0
  378. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_lcov.py +0 -0
  379. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_misc.py +0 -0
  380. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_mixins.py +0 -0
  381. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_numbits.py +0 -0
  382. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_oddball.py +0 -0
  383. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_parser.py +0 -0
  384. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_phystokens.py +0 -0
  385. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_plugins.py +0 -0
  386. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_python.py +0 -0
  387. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_regions.py +0 -0
  388. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_report_common.py +0 -0
  389. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_report_core.py +0 -0
  390. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_results.py +0 -0
  391. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_setup.py +0 -0
  392. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_sqlitedb.py +0 -0
  393. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_templite.py +0 -0
  394. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_testing.py +0 -0
  395. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_venv.py +0 -0
  396. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_version.py +0 -0
  397. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/test_xml.py +0 -0
  398. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/testenv.py +0 -0
  399. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/zipsrc/zip1/__init__.py +0 -0
  400. {coverage-7.11.4a0.dev1 → coverage-7.12.1b1}/tests/zipsrc/zip1/zip1.py +0 -0
@@ -10,6 +10,9 @@ updates:
10
10
  # Check for updates to GitHub Actions once a week
11
11
  interval: "weekly"
12
12
  day: "sunday"
13
+ cooldown:
14
+ # https://blog.yossarian.net/2025/11/21/We-should-all-be-using-dependency-cooldowns
15
+ default-days: 10
13
16
  groups:
14
17
  action-dependencies:
15
18
  patterns:
@@ -262,7 +262,7 @@ jobs:
262
262
  echo "sha10=$SHA10" >> $GITHUB_ENV
263
263
  echo "slug=$SLUG" >> $GITHUB_ENV
264
264
  echo "report_dir=reports/$SLUG/htmlcov" >> $GITHUB_ENV
265
- echo "url=https://htmlpreview.github.io/?https://github.com/coveragepy/metacov-reports/blob/main/reports/$SLUG/htmlcov/index.html" >> $GITHUB_ENV
265
+ echo "url=https://coveragepy.github.io/metacov-reports/reports/$SLUG/htmlcov" >> $GITHUB_ENV
266
266
  echo "branch=${REF#refs/heads/}" >> $GITHUB_ENV
267
267
 
268
268
  - name: "Checkout reports repo"
@@ -20,15 +20,31 @@ upgrading your version of coverage.py.
20
20
  .. Version 9.8.1 — 2027-07-27
21
21
  .. --------------------------
22
22
 
23
- Unreleased
24
- ----------
23
+ .. start-releases
24
+
25
+ .. _changes_7-12-1b1:
26
+
27
+ Version 7.12.1b1 — 2025-11-30
28
+ -----------------------------
29
+
30
+ - Fix: coverage.py now includes a permanent .pth file in the distribution which
31
+ is installed with the code. This fixes `issue 2084`_: failure to patch for
32
+ subprocess measurement when site-packages is not writable.
33
+
34
+ .. _issue 2084: https://github.com/coveragepy/coveragepy/issues/2084
35
+
36
+
37
+ .. _changes_7-12-0:
38
+
39
+ Version 7.12.0 — 2025-11-18
40
+ ---------------------------
25
41
 
26
42
  - The HTML report now shows separate coverage totals for statements and
27
43
  branches, as well as the usual combined coverage percentage. Thanks to Ryuta
28
44
  Otsuka for the `discussion <issue 2081_>`_ and the `implementation
29
45
  <pull 2085_>`_.
30
46
 
31
- - The JSON report now include separate coverage totals for statements and
47
+ - The JSON report now includes separate coverage totals for statements and
32
48
  branches, thanks to `Ryuta Otsuka <pull 2090_>`_.
33
49
 
34
50
  - Fix: ``except*`` clauses were not handled properly under the "sysmon"
@@ -38,14 +54,14 @@ Unreleased
38
54
  - Fix: we now defend against aggressive mocking of ``open()`` that could cause
39
55
  errors inside coverage.py. An example of a failure is in `issue 2083`_.
40
56
 
41
- - A small tweak to the HTML report: file paths now use thin spaces around
42
- slashes to make them easier to read.
43
-
44
57
  - Fix: in unusual cases where a test suite intentionally exhausts the system's
45
58
  file descriptors to test handling errors in ``open()``, coverage.py would
46
59
  fail when trying to open source files, as described in `issue 2091`_. This
47
60
  is now fixed.
48
61
 
62
+ - A small tweak to the HTML report: file paths now use thin spaces around
63
+ slashes to make them easier to read.
64
+
49
65
  .. _issue 2081: https://github.com/coveragepy/coveragepy/issues/2081
50
66
  .. _issue 2083: https://github.com/coveragepy/coveragepy/issues/2083
51
67
  .. _pull 2085: https://github.com/coveragepy/coveragepy/pull/2085
@@ -54,8 +70,6 @@ Unreleased
54
70
  .. _issue 2091: https://github.com/coveragepy/coveragepy/issues/2091
55
71
 
56
72
 
57
- .. start-releases
58
-
59
73
  .. _changes_7-11-3:
60
74
 
61
75
  Version 7.11.3 — 2025-11-09
@@ -42,6 +42,7 @@ clean: debug_clean _clean_platform ## Remove artifacts of test execution, instal
42
42
  @rm -f tests/covmain.zip tests/zipmods.zip tests/zip1.zip
43
43
  @rm -rf doc/_build doc/_spell doc/sample_html_beta
44
44
  @rm -rf tmp
45
+ @rm -rf zzz_coverage.pth
45
46
  @rm -rf .*cache */.*cache */*/.*cache */*/*/.*cache .hypothesis
46
47
  @rm -rf tests/actual
47
48
  @-make -C tests/gold/html clean
@@ -114,7 +115,9 @@ KITBIN = .tox/$(KITVER)/bin
114
115
  $(KITBIN):
115
116
  tox -q -e $(KITVER) --notest
116
117
 
117
- PIP_COMPILE = uv pip compile -q --universal ${COMPILE_OPTS}
118
+ # Limit to packages that were released more than 10 days ago.
119
+ # https://blog.yossarian.net/2025/11/21/We-should-all-be-using-dependency-cooldowns
120
+ PIP_COMPILE = uv pip compile -q --universal --exclude-newer=$$(date -v-10d +%Y-%m-%d) ${COMPILE_OPTS}
118
121
  upgrade: ## Update the *.pip files with the latest packages satisfying *.in files.
119
122
  $(MAKE) _upgrade COMPILE_OPTS="--upgrade"
120
123
 
@@ -213,7 +216,7 @@ relcommit2: #: Commit the latest sample HTML report (see howto.txt).
213
216
  git add doc/sample_html
214
217
  git commit -am "docs: sample HTML for $$(python setup.py --version)"
215
218
 
216
- kit: ## Make the source distribution.
219
+ kit: ## Make the source distribution and one wheel
217
220
  python -m build
218
221
 
219
222
  pypi_upload: ## Upload the built distributions to PyPI.
@@ -233,7 +236,7 @@ kit_local:
233
236
  # don't go crazy trying to figure out why our new code isn't installing.
234
237
  find ~/Library/Caches/pip/wheels -name 'coverage-*' -delete
235
238
 
236
- build_kits: ## Trigger GitHub to build kits.
239
+ build_kits: ## Trigger GitHub to build all the distributions.
237
240
  python ci/trigger_action.py $(REPO_OWNER) build-kits
238
241
 
239
242
  tag: #: Make a git tag with the version number (see howto.txt).
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: coverage
3
- Version: 7.11.4a0.dev1
3
+ Version: 7.12.1b1
4
4
  Summary: Code coverage measurement for Python
5
5
  Home-page: https://github.com/coveragepy/coveragepy
6
6
  Author: Ned Batchelder and 245 others
7
7
  Author-email: ned@nedbatchelder.com
8
8
  License: Apache-2.0
9
- Project-URL: Documentation, https://coverage.readthedocs.io/en/7.11.4a0.dev1
9
+ Project-URL: Documentation, https://coverage.readthedocs.io/en/7.12.1b1
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
@@ -28,7 +28,7 @@ Classifier: Programming Language :: Python :: Implementation :: CPython
28
28
  Classifier: Programming Language :: Python :: Implementation :: PyPy
29
29
  Classifier: Topic :: Software Development :: Quality Assurance
30
30
  Classifier: Topic :: Software Development :: Testing
31
- Classifier: Development Status :: 3 - Alpha
31
+ Classifier: Development Status :: 4 - Beta
32
32
  Requires-Python: >=3.10
33
33
  Description-Content-Type: text/x-rst
34
34
  License-File: LICENSE.txt
@@ -82,7 +82,7 @@ Coverage.py runs on these versions of Python:
82
82
  Documentation is on `Read the Docs`_. Code repository and issue tracker are on
83
83
  `GitHub`_.
84
84
 
85
- .. _Read the Docs: https://coverage.readthedocs.io/en/7.11.4a0.dev1/
85
+ .. _Read the Docs: https://coverage.readthedocs.io/en/7.12.1b1/
86
86
  .. _GitHub: https://github.com/coveragepy/coveragepy
87
87
 
88
88
  **New in 7.x:**
@@ -132,7 +132,7 @@ Getting Started
132
132
  Looking to run ``coverage`` on your test suite? See the `Quick Start section`_
133
133
  of the docs.
134
134
 
135
- .. _Quick Start section: https://coverage.readthedocs.io/en/7.11.4a0.dev1/#quick-start
135
+ .. _Quick Start section: https://coverage.readthedocs.io/en/7.12.1b1/#quick-start
136
136
 
137
137
 
138
138
  Change history
@@ -140,7 +140,7 @@ Change history
140
140
 
141
141
  The complete history of changes is on the `change history page`_.
142
142
 
143
- .. _change history page: https://coverage.readthedocs.io/en/7.11.4a0.dev1/changes.html
143
+ .. _change history page: https://coverage.readthedocs.io/en/7.12.1b1/changes.html
144
144
 
145
145
 
146
146
  Code of Conduct
@@ -159,7 +159,7 @@ Contributing
159
159
  Found a bug? Want to help improve the code or documentation? See the
160
160
  `Contributing section`_ of the docs.
161
161
 
162
- .. _Contributing section: https://coverage.readthedocs.io/en/7.11.4a0.dev1/contributing.html
162
+ .. _Contributing section: https://coverage.readthedocs.io/en/7.12.1b1/contributing.html
163
163
 
164
164
 
165
165
  Security
@@ -187,7 +187,7 @@ Licensed under the `Apache 2.0 License`_. For details, see `NOTICE.txt`_.
187
187
  :target: https://github.com/coveragepy/coveragepy/actions/workflows/quality.yml
188
188
  :alt: Quality check status
189
189
  .. |docs| image:: https://readthedocs.org/projects/coverage/badge/?version=latest&style=flat
190
- :target: https://coverage.readthedocs.io/en/7.11.4a0.dev1/
190
+ :target: https://coverage.readthedocs.io/en/7.12.1b1/
191
191
  :alt: Documentation
192
192
  .. |kit| image:: https://img.shields.io/pypi/v/coverage
193
193
  :target: https://pypi.org/project/coverage/
@@ -11,8 +11,6 @@ https://coverage.readthedocs.io
11
11
 
12
12
  from __future__ import annotations
13
13
 
14
- # isort: skip_file
15
-
16
14
  # mypy's convention is that "import as" names are public from the module.
17
15
  # We import names as themselves to indicate that. Pylint sees it as pointless,
18
16
  # so disable its warning.
@@ -288,9 +288,6 @@ class Coverage(TConfigurable):
288
288
  self._no_warn_slugs: set[str] = set()
289
289
  self._messages = messages
290
290
 
291
- # If we're invoked from a .pth file, we shouldn't try to make another one.
292
- self._make_pth_file = True
293
-
294
291
  # A record of all the warnings that have been issued.
295
292
  self._warnings: list[str] = []
296
293
 
@@ -354,6 +351,17 @@ class Coverage(TConfigurable):
354
351
  if not env.METACOV:
355
352
  _prevent_sub_process_measurement()
356
353
 
354
+ def __repr__(self) -> str:
355
+ core_name = self._core.tracer_class.__name__ if self._core is not None else "-none-"
356
+ data_file = repr(self._data._filename) if self._data is not None else "-none-"
357
+ return (
358
+ "<Coverage"
359
+ + f" @0x{id(self):x}"
360
+ + f" core={core_name}"
361
+ + f" data_file={data_file}"
362
+ + ">"
363
+ )
364
+
357
365
  def _init(self) -> None:
358
366
  """Set all the initial state.
359
367
 
@@ -708,7 +716,7 @@ class Coverage(TConfigurable):
708
716
  if self._auto_load:
709
717
  self.load()
710
718
 
711
- apply_patches(self, self.config, self._debug, make_pth_file=self._make_pth_file)
719
+ apply_patches(self, self.config, self._debug)
712
720
 
713
721
  self._collector.start()
714
722
  self._started = True
@@ -1418,12 +1426,21 @@ if int(os.getenv("COVERAGE_DEBUG_CALLS", 0)): # pragma: debugging
1418
1426
  )(Coverage)
1419
1427
 
1420
1428
 
1421
- def process_startup(*, force: bool = False) -> Coverage | None:
1429
+ def process_startup(
1430
+ *,
1431
+ force: bool = False,
1432
+ slug: str = "default", # pylint: disable=unused-argument
1433
+ ) -> Coverage | None:
1422
1434
  """Call this at Python start-up to perhaps measure coverage.
1423
1435
 
1424
- If the environment variable COVERAGE_PROCESS_START is defined, coverage
1425
- measurement is started. The value of the variable is the config file
1426
- to use.
1436
+ Coverage is started if one of these environment variables is defined:
1437
+
1438
+ - COVERAGE_PROCESS_START: the config file to use.
1439
+ - COVERAGE_PROCESS_CONFIG: the config data to use, a string produced by
1440
+ CoverageConfig.serialize, prefixed by ":data:".
1441
+
1442
+ If one of these is defined, it's used to get the coverage configuration,
1443
+ and coverage is started.
1427
1444
 
1428
1445
  For details, see https://coverage.readthedocs.io/en/latest/subprocess.html.
1429
1446
 
@@ -1431,6 +1448,29 @@ def process_startup(*, force: bool = False) -> Coverage | None:
1431
1448
  not started by this call.
1432
1449
 
1433
1450
  """
1451
+ # This function can be called more than once in a process, for a few
1452
+ # reasons.
1453
+ #
1454
+ # 1) We install a .pth file in multiple places reported by the site module,
1455
+ # so this function can be called more than once even in simple
1456
+ # situations.
1457
+ #
1458
+ # 2) In some virtualenv configurations the same directory is visible twice
1459
+ # in sys.path. This means that the .pth file will be found twice and
1460
+ # executed twice, executing this function twice.
1461
+ # https://github.com/coveragepy/coveragepy/issues/340 has more details.
1462
+ #
1463
+ # We set a global flag (an attribute on this function) to indicate that
1464
+ # coverage.py has already been started, so we can avoid starting it twice.
1465
+
1466
+ if not force and hasattr(process_startup, "coverage"):
1467
+ # We've annotated this function before, so we must have already
1468
+ # auto-started coverage.py in this process. Nothing to do.
1469
+ return None
1470
+
1471
+ # Now check for the environment variables that request coverage. If they
1472
+ # aren't set, do nothing.
1473
+
1434
1474
  config_data = os.getenv("COVERAGE_PROCESS_CONFIG")
1435
1475
  cps = os.getenv("COVERAGE_PROCESS_START")
1436
1476
  if config_data is not None:
@@ -1441,27 +1481,12 @@ def process_startup(*, force: bool = False) -> Coverage | None:
1441
1481
  # No request for coverage, nothing to do.
1442
1482
  return None
1443
1483
 
1444
- # This function can be called more than once in a process. This happens
1445
- # because some virtualenv configurations make the same directory visible
1446
- # twice in sys.path. This means that the .pth file will be found twice,
1447
- # and executed twice, executing this function twice. We set a global
1448
- # flag (an attribute on this function) to indicate that coverage.py has
1449
- # already been started, so we can avoid doing it twice.
1450
- #
1451
- # https://github.com/coveragepy/coveragepy/issues/340 has more details.
1452
-
1453
- if not force and hasattr(process_startup, "coverage"):
1454
- # We've annotated this function before, so we must have already
1455
- # auto-started coverage.py in this process. Nothing to do.
1456
- return None
1457
-
1458
1484
  cov = Coverage(config_file=config_file)
1459
1485
  process_startup.coverage = cov # type: ignore[attr-defined]
1460
1486
  cov._warn_no_data = False
1461
1487
  cov._warn_unimported_source = False
1462
1488
  cov._warn_preimported_source = False
1463
1489
  cov._auto_save = True
1464
- cov._make_pth_file = False
1465
1490
  cov.start()
1466
1491
 
1467
1492
  return cov
@@ -1471,7 +1496,7 @@ def _after_fork_in_child() -> None:
1471
1496
  """Used by patch=fork in the child process to restart coverage."""
1472
1497
  if cov := Coverage.current():
1473
1498
  cov.stop()
1474
- process_startup(force=True)
1499
+ process_startup(force=True, slug="fork")
1475
1500
 
1476
1501
 
1477
1502
  def _prevent_sub_process_measurement() -> None:
@@ -137,23 +137,25 @@ static void
137
137
  CTracer_showlog(CTracer * self, int lineno, PyObject * filename, const char * msg)
138
138
  {
139
139
  if (logging) {
140
+ FILE *flog = fopen("/tmp/debug_trace.txt", "a");
140
141
  int depth = self->pdata_stack->depth;
141
- printf("%x: %s%3d ", (int)self, indent(depth), depth);
142
+ fprintf(flog, "%p: %s%3d ", self, indent(depth), depth);
142
143
  if (lineno) {
143
- printf("%4d", lineno);
144
+ fprintf(flog, "%4d", lineno);
144
145
  }
145
146
  else {
146
- printf(" ");
147
+ fprintf(flog, " ");
147
148
  }
148
149
  if (filename) {
149
150
  PyObject *ascii = PyUnicode_AsASCIIString(filename);
150
- printf(" %s", PyBytes_AS_STRING(ascii));
151
+ fprintf(flog, " %s", PyBytes_AS_STRING(ascii));
151
152
  Py_DECREF(ascii);
152
153
  }
153
154
  if (msg) {
154
- printf(" %s", msg);
155
+ fprintf(flog, " %s", msg);
155
156
  }
156
- printf("\n");
157
+ fprintf(flog, "\n");
158
+ fclose(flog);
157
159
  }
158
160
  }
159
161
 
@@ -344,6 +344,8 @@ kbd { border: 1px solid black; border-color: #888 #333 #333 #888; padding: .1em
344
344
 
345
345
  @media (prefers-color-scheme: dark) { #index th { color: #ddd; } }
346
346
 
347
+ @media (prefers-color-scheme: dark) { #index th { border-color: #444; } }
348
+
347
349
  #index th:hover { background: #eee; }
348
350
 
349
351
  @media (prefers-color-scheme: dark) { #index th:hover { background: #333; } }
@@ -360,6 +362,8 @@ kbd { border: 1px solid black; border-color: #888 #333 #333 #888; padding: .1em
360
362
 
361
363
  #index tr.grouphead th { cursor: default; font-style: normal; border-color: #999; }
362
364
 
365
+ @media (prefers-color-scheme: dark) { #index tr.grouphead th { border-color: #777; } }
366
+
363
367
  #index td.name { font-size: 1.15em; }
364
368
 
365
369
  #index td.name a { text-decoration: none; color: inherit; }
@@ -759,7 +759,8 @@ $border-indicator-width: .2em;
759
759
  font-style: italic;
760
760
  color: $light-gray6;
761
761
  @include color-dark($dark-gray6);
762
- border-color: #ccc;
762
+ border-color: $light-gray3;
763
+ @include border-color-dark($dark-gray3);
763
764
  cursor: pointer;
764
765
  &:hover {
765
766
  background: $light-gray2;
@@ -789,7 +790,8 @@ $border-indicator-width: .2em;
789
790
  th {
790
791
  cursor: default;
791
792
  font-style: normal;
792
- border-color: #999;
793
+ border-color: $light-gray4;
794
+ @include border-color-dark($dark-gray4);
793
795
  }
794
796
  }
795
797
  td.name {
@@ -5,15 +5,12 @@
5
5
 
6
6
  from __future__ import annotations
7
7
 
8
- import atexit
9
8
  import contextlib
10
9
  import os
11
- import site
12
- from pathlib import Path
13
10
  from typing import TYPE_CHECKING, Any, NoReturn
14
11
 
15
12
  from coverage import env
16
- from coverage.debug import NoDebugging, DevNullDebug
13
+ from coverage.debug import DevNullDebug
17
14
  from coverage.exceptions import ConfigError, CoverageException
18
15
 
19
16
  if TYPE_CHECKING:
@@ -26,8 +23,6 @@ def apply_patches(
26
23
  cov: Coverage,
27
24
  config: CoverageConfig,
28
25
  debug: TDebugCtl,
29
- *,
30
- make_pth_file: bool = True,
31
26
  ) -> None:
32
27
  """Apply invasive patches requested by `[run] patch=`."""
33
28
  debug = debug if debug.should("patch") else DevNullDebug()
@@ -43,7 +38,7 @@ def apply_patches(
43
38
  _patch_fork(debug)
44
39
 
45
40
  case "subprocess":
46
- _patch_subprocess(config, debug, make_pth_file)
41
+ _patch_subprocess(config, debug)
47
42
 
48
43
  case _:
49
44
  raise ConfigError(f"Unknown patch {patch!r}")
@@ -116,51 +111,8 @@ def _patch_fork(debug: TDebugCtl) -> None:
116
111
  os.register_at_fork(after_in_child=_after_fork_in_child)
117
112
 
118
113
 
119
- def _patch_subprocess(config: CoverageConfig, debug: TDebugCtl, make_pth_file: bool) -> None:
114
+ def _patch_subprocess(config: CoverageConfig, debug: TDebugCtl) -> None:
120
115
  """Write .pth files and set environment vars to measure subprocesses."""
121
116
  debug.write("Patching subprocess")
122
-
123
- if make_pth_file:
124
- pth_files = create_pth_files(debug)
125
-
126
- def delete_pth_files() -> None:
127
- for p in pth_files:
128
- debug.write(f"Deleting subprocess .pth file: {str(p)!r}")
129
- p.unlink(missing_ok=True)
130
-
131
- atexit.register(delete_pth_files)
132
117
  assert config.config_file is not None
133
118
  os.environ["COVERAGE_PROCESS_CONFIG"] = config.serialize()
134
-
135
-
136
- # Writing .pth files is not obvious. On Windows, getsitepackages() returns two
137
- # directories. A .pth file in the first will be run, but coverage isn't
138
- # importable yet. We write into all the places we can, but with defensive
139
- # import code.
140
-
141
- PTH_CODE = """\
142
- try:
143
- import coverage
144
- except:
145
- pass
146
- else:
147
- coverage.process_startup()
148
- """
149
-
150
- PTH_TEXT = f"import sys; exec({PTH_CODE!r})\n"
151
-
152
-
153
- def create_pth_files(debug: TDebugCtl = NoDebugging()) -> list[Path]:
154
- """Create .pth files for measuring subprocesses."""
155
- pth_files = []
156
- for pth_dir in site.getsitepackages():
157
- pth_file = Path(pth_dir) / f"subcover_{os.getpid()}.pth"
158
- try:
159
- if debug.should("patch"):
160
- debug.write(f"Writing subprocess .pth file: {str(pth_file)!r}")
161
- pth_file.write_text(PTH_TEXT, encoding="utf-8")
162
- except OSError: # pragma: cant happen
163
- continue
164
- else:
165
- pth_files.append(pth_file)
166
- return pth_files
@@ -0,0 +1,16 @@
1
+ # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
2
+ # For details: https://github.com/coveragepy/coveragepy/blob/main/NOTICE.txt
3
+
4
+ # pylint: disable=missing-module-docstring
5
+ # pragma: exclude file from coverage
6
+ # This will become the .pth file for subprocesses.
7
+
8
+ import os
9
+
10
+ if os.getenv("COVERAGE_PROCESS_START") or os.getenv("COVERAGE_PROCESS_CONFIG"):
11
+ try:
12
+ import coverage
13
+ except: # pylint: disable=bare-except
14
+ pass
15
+ else:
16
+ coverage.process_startup(slug="pth")
@@ -169,7 +169,7 @@ class SummaryReporter:
169
169
  # Write the TOTAL line
170
170
  formats.update(
171
171
  dict(
172
- Name="|{:>{name_len}} |",
172
+ Name="|{:{name_len}} |",
173
173
  Cover="{:>{n}} |",
174
174
  ),
175
175
  )
@@ -265,7 +265,7 @@ class SysMonitor(Tracer):
265
265
  self.sysmon_branch_either,
266
266
  )
267
267
  register(
268
- events.BRANCH_LEFT, # type:ignore[attr-defined]
268
+ events.BRANCH_LEFT,
269
269
  self.sysmon_branch_either,
270
270
  )
271
271
  else:
@@ -326,6 +326,10 @@ class SysMonitor(Tracer):
326
326
  if self.stats is not None:
327
327
  self.stats["starts"] += 1
328
328
 
329
+ if code.co_name == "__annotate__":
330
+ # Type annotation code objects don't execute, ignore them.
331
+ return DISABLE
332
+
329
333
  # Entering a new frame. Decide if we should trace in this file.
330
334
  code_info = self.code_infos.get(id(code))
331
335
  tracing_code: bool | None = None
@@ -385,7 +389,7 @@ class SysMonitor(Tracer):
385
389
  assert env.PYBEHAVIOR.branch_right_left
386
390
  local_events |= (
387
391
  events.BRANCH_RIGHT # type:ignore[attr-defined]
388
- | events.BRANCH_LEFT # type:ignore[attr-defined]
392
+ | events.BRANCH_LEFT
389
393
  )
390
394
  sys_monitoring.set_local_events(self.myid, code, local_events)
391
395
 
@@ -495,7 +499,7 @@ class SysMonitor(Tracer):
495
499
  return DISABLE
496
500
 
497
501
 
498
- @functools.lru_cache(maxsize=5)
502
+ @functools.lru_cache(maxsize=20)
499
503
  def get_multiline_map(filename: str) -> dict[TLineNo, TLineNo]:
500
504
  """Get a PythonParser for the given filename, cached."""
501
505
  try:
@@ -8,8 +8,8 @@ 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, 11, 4, "alpha", 0)
12
- _dev = 1
11
+ version_info = (7, 12, 1, "beta", 1)
12
+ _dev = 0
13
13
 
14
14
 
15
15
  def _make_version(
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: coverage
3
- Version: 7.11.4a0.dev1
3
+ Version: 7.12.1b1
4
4
  Summary: Code coverage measurement for Python
5
5
  Home-page: https://github.com/coveragepy/coveragepy
6
6
  Author: Ned Batchelder and 245 others
7
7
  Author-email: ned@nedbatchelder.com
8
8
  License: Apache-2.0
9
- Project-URL: Documentation, https://coverage.readthedocs.io/en/7.11.4a0.dev1
9
+ Project-URL: Documentation, https://coverage.readthedocs.io/en/7.12.1b1
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
@@ -28,7 +28,7 @@ Classifier: Programming Language :: Python :: Implementation :: CPython
28
28
  Classifier: Programming Language :: Python :: Implementation :: PyPy
29
29
  Classifier: Topic :: Software Development :: Quality Assurance
30
30
  Classifier: Topic :: Software Development :: Testing
31
- Classifier: Development Status :: 3 - Alpha
31
+ Classifier: Development Status :: 4 - Beta
32
32
  Requires-Python: >=3.10
33
33
  Description-Content-Type: text/x-rst
34
34
  License-File: LICENSE.txt
@@ -82,7 +82,7 @@ Coverage.py runs on these versions of Python:
82
82
  Documentation is on `Read the Docs`_. Code repository and issue tracker are on
83
83
  `GitHub`_.
84
84
 
85
- .. _Read the Docs: https://coverage.readthedocs.io/en/7.11.4a0.dev1/
85
+ .. _Read the Docs: https://coverage.readthedocs.io/en/7.12.1b1/
86
86
  .. _GitHub: https://github.com/coveragepy/coveragepy
87
87
 
88
88
  **New in 7.x:**
@@ -132,7 +132,7 @@ Getting Started
132
132
  Looking to run ``coverage`` on your test suite? See the `Quick Start section`_
133
133
  of the docs.
134
134
 
135
- .. _Quick Start section: https://coverage.readthedocs.io/en/7.11.4a0.dev1/#quick-start
135
+ .. _Quick Start section: https://coverage.readthedocs.io/en/7.12.1b1/#quick-start
136
136
 
137
137
 
138
138
  Change history
@@ -140,7 +140,7 @@ Change history
140
140
 
141
141
  The complete history of changes is on the `change history page`_.
142
142
 
143
- .. _change history page: https://coverage.readthedocs.io/en/7.11.4a0.dev1/changes.html
143
+ .. _change history page: https://coverage.readthedocs.io/en/7.12.1b1/changes.html
144
144
 
145
145
 
146
146
  Code of Conduct
@@ -159,7 +159,7 @@ Contributing
159
159
  Found a bug? Want to help improve the code or documentation? See the
160
160
  `Contributing section`_ of the docs.
161
161
 
162
- .. _Contributing section: https://coverage.readthedocs.io/en/7.11.4a0.dev1/contributing.html
162
+ .. _Contributing section: https://coverage.readthedocs.io/en/7.12.1b1/contributing.html
163
163
 
164
164
 
165
165
  Security
@@ -187,7 +187,7 @@ Licensed under the `Apache 2.0 License`_. For details, see `NOTICE.txt`_.
187
187
  :target: https://github.com/coveragepy/coveragepy/actions/workflows/quality.yml
188
188
  :alt: Quality check status
189
189
  .. |docs| image:: https://readthedocs.org/projects/coverage/badge/?version=latest&style=flat
190
- :target: https://coverage.readthedocs.io/en/7.11.4a0.dev1/
190
+ :target: https://coverage.readthedocs.io/en/7.12.1b1/
191
191
  :alt: Documentation
192
192
  .. |kit| image:: https://img.shields.io/pypi/v/coverage
193
193
  :target: https://pypi.org/project/coverage/
@@ -18,6 +18,7 @@ metacov.ini
18
18
  pyproject.toml
19
19
  setup.py
20
20
  tox.ini
21
+ zzz_coverage.pth
21
22
  .github/CODE_OF_CONDUCT.md
22
23
  .github/FUNDING.yml
23
24
  .github/SECURITY.md
@@ -69,6 +70,7 @@ coverage/patch.py
69
70
  coverage/phystokens.py
70
71
  coverage/plugin.py
71
72
  coverage/plugin_support.py
73
+ coverage/pth_file.py
72
74
  coverage/py.typed
73
75
  coverage/python.py
74
76
  coverage/pytracer.py
@@ -338,7 +340,7 @@ tests/gold/html/styled/style.css
338
340
  tests/gold/html/support/coverage_html_cb_bcae5fc4.js
339
341
  tests/gold/html/support/favicon_32_cb_58284776.png
340
342
  tests/gold/html/support/keybd_closed_cb_ce680311.png
341
- tests/gold/html/support/style_cb_8432e98f.css
343
+ tests/gold/html/support/style_cb_a5a05ca4.css
342
344
  tests/gold/html/unicode/class_index.html
343
345
  tests/gold/html/unicode/function_index.html
344
346
  tests/gold/html/unicode/index.html