coverage 7.16.0__tar.gz → 7.16.1__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.
- {coverage-7.16.0 → coverage-7.16.1}/.github/workflows/codeql-analysis.yml +3 -3
- {coverage-7.16.0 → coverage-7.16.1}/.github/workflows/coverage.yml +22 -4
- {coverage-7.16.0 → coverage-7.16.1}/.github/workflows/kit.yml +5 -5
- {coverage-7.16.0 → coverage-7.16.1}/.github/workflows/python-nightly.yml +1 -1
- {coverage-7.16.0 → coverage-7.16.1}/.github/workflows/quality.yml +8 -8
- {coverage-7.16.0 → coverage-7.16.1}/.github/workflows/testsuite.yml +4 -4
- {coverage-7.16.0 → coverage-7.16.1}/.pre-commit-config.yaml +1 -1
- {coverage-7.16.0 → coverage-7.16.1}/.readthedocs.yaml +1 -1
- {coverage-7.16.0 → coverage-7.16.1}/CHANGES.rst +17 -0
- {coverage-7.16.0 → coverage-7.16.1}/MANIFEST.in +2 -2
- {coverage-7.16.0 → coverage-7.16.1}/Makefile +14 -14
- {coverage-7.16.0 → coverage-7.16.1}/PKG-INFO +8 -12
- {coverage-7.16.0 → coverage-7.16.1}/README.rst +1 -5
- {coverage-7.16.0 → coverage-7.16.1}/coverage/htmlfiles/coverage_html.js +11 -8
- {coverage-7.16.0 → coverage-7.16.1}/coverage/parser.py +29 -8
- {coverage-7.16.0 → coverage-7.16.1}/coverage/sqldata.py +7 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/version.py +1 -1
- {coverage-7.16.0 → coverage-7.16.1}/coverage.egg-info/PKG-INFO +8 -12
- {coverage-7.16.0 → coverage-7.16.1}/coverage.egg-info/SOURCES.txt +9 -9
- {coverage-7.16.0 → coverage-7.16.1}/doc/conf.py +3 -3
- {coverage-7.16.0 → coverage-7.16.1}/doc/contributing.rst +25 -8
- {coverage-7.16.0 → coverage-7.16.1}/doc/index.rst +1 -1
- {coverage-7.16.0 → coverage-7.16.1}/doc/requirements.in +2 -2
- coverage-7.16.1/doc/requirements.txt +883 -0
- {coverage-7.16.0 → coverage-7.16.1}/pyproject.toml +6 -0
- {coverage-7.16.0 → coverage-7.16.1}/requirements/dev.in +3 -2
- coverage-7.16.0/requirements/dev.pip → coverage-7.16.1/requirements/dev.txt +494 -374
- {coverage-7.16.0 → coverage-7.16.1}/requirements/kit.in +2 -2
- coverage-7.16.1/requirements/kit.txt +542 -0
- {coverage-7.16.0 → coverage-7.16.1}/requirements/light-threads.in +1 -1
- coverage-7.16.0/requirements/light-threads.pip → coverage-7.16.1/requirements/light-threads.txt +42 -42
- {coverage-7.16.0 → coverage-7.16.1}/requirements/mypy.in +1 -1
- coverage-7.16.1/requirements/mypy.txt +612 -0
- {coverage-7.16.0 → coverage-7.16.1}/requirements/pip.in +2 -2
- coverage-7.16.0/requirements/pip.pip → coverage-7.16.1/requirements/pip.txt +12 -12
- {coverage-7.16.0 → coverage-7.16.1}/requirements/pytest.in +3 -2
- coverage-7.16.1/requirements/pytest.txt +340 -0
- {coverage-7.16.0 → coverage-7.16.1}/requirements/tox.in +2 -2
- coverage-7.16.0/requirements/tox.pip → coverage-7.16.1/requirements/tox.txt +18 -18
- coverage-7.16.1/tests/js/index.html +25 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/js/tests.js +36 -19
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_coverage.py +31 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_data.py +18 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_parser.py +63 -0
- {coverage-7.16.0 → coverage-7.16.1}/tox.ini +7 -7
- coverage-7.16.0/doc/requirements.pip +0 -828
- coverage-7.16.0/requirements/kit.pip +0 -542
- coverage-7.16.0/requirements/mypy.pip +0 -436
- coverage-7.16.0/requirements/pytest.pip +0 -171
- coverage-7.16.0/tests/js/index.html +0 -43
- {coverage-7.16.0 → coverage-7.16.1}/.editorconfig +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/.git-blame-ignore-revs +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/.github/CODE_OF_CONDUCT.md +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/.github/FUNDING.yml +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/.github/ISSUE_TEMPLATE/support.md +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/.github/SECURITY.md +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/.github/dependabot.yml +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/.github/workflows/dependency-review.yml +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/.github/workflows/publish.yml +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/.github/zizmor.yml +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/.gitignore +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/.ignore +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/CITATION.cff +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/CONTRIBUTORS.txt +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/LICENSE.txt +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/NOTICE.txt +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/__main__.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/a1_coverage.pth +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/ci/README.txt +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/ci/comment_on_fixes.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/ci/session.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/ci/trigger_action.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/ci/update_rtfd.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/__init__.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/__main__.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/annotate.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/bytecode.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/cmdline.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/collector.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/config.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/context.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/control.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/core.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/ctracer/datastack.c +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/ctracer/datastack.h +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/ctracer/filedisp.c +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/ctracer/filedisp.h +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/ctracer/module.c +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/ctracer/stats.h +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/ctracer/tracer.c +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/ctracer/tracer.h +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/ctracer/util.h +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/data.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/debug.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/disposition.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/env.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/exceptions.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/execfile.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/files.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/html.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/htmlfiles/favicon_32.png +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/htmlfiles/index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/htmlfiles/keybd_closed.png +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/htmlfiles/pyfile.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/htmlfiles/style.css +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/htmlfiles/style.scss +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/inorout.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/jsonreport.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/lcovreport.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/misc.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/multiproc.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/numbits.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/patch.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/phystokens.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/plugin.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/plugin_support.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/pth_file.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/py.typed +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/python.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/pytracer.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/regions.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/report.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/report_core.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/results.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/sqlitedb.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/sysmon.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/templite.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/tomlconfig.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/tracer.pyi +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/types.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage/xmlreport.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage.egg-info/dependency_links.txt +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage.egg-info/entry_points.txt +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage.egg-info/not-zip-safe +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage.egg-info/requires.txt +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/coverage.egg-info/top_level.txt +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/_static/coverage.css +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/api.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/api_coverage.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/api_coveragedata.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/api_exceptions.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/api_module.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/api_plugin.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/branch.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/changes.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/cog_helpers.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/commands/cmd_annotate.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/commands/cmd_combine.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/commands/cmd_debug.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/commands/cmd_erase.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/commands/cmd_html.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/commands/cmd_json.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/commands/cmd_lcov.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/commands/cmd_report.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/commands/cmd_reporting.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/commands/cmd_run.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/commands/cmd_xml.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/commands/index.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/config.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/contexts.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/dbschema.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/dict.txt +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/excluding.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/faq.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/howitworks.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/install.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/media/Tidelift_Logos_RGB_Tidelift_Shorthand_On-White.png +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/media/Tidelift_Logos_RGB_Tidelift_Shorthand_On-White_small.png +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/media/sleepy-snake-600.png +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/media/sleepy-snake-circle-150.png +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/messages.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/migrating.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/other.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/plugins.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/python-coverage.1.txt +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/sleepy.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/source.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/subprocess.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/trouble.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/doc/whatsnew5x.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/howto.txt +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/igor.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/lab/README.txt +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/lab/branches.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/lab/compare_times.sh +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/lab/coverage-04.dtd +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/lab/extract_code.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/lab/goals.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/lab/hack_pyc.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/lab/notes/arcs-to-branches.txt +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/lab/notes/bug1303.txt +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/lab/notes/pypy-738-decorated-functions.txt +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/lab/parse_all.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/lab/parser.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/lab/pick.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/lab/platform_info.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/lab/run_sysmon.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/lab/run_trace.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/lab/select_contexts.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/lab/show_platform.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/lab/show_pyc.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/lab/treetopy.sh +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/lab/warn_executed.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/lab/warn_executed.toml +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/metacov.ini +0 -0
- /coverage-7.16.0/requirements/pins.pip → /coverage-7.16.1/requirements/pins.txt +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/setup.cfg +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/setup.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/__init__.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/conftest.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/coveragetest.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/covmodzip1.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/README.rst +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/annotate/anno_dir/multi.py,cover +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/annotate/anno_dir/z_80084bf2fba02475___init__.py,cover +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/annotate/anno_dir/z_80084bf2fba02475_a.py,cover +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/annotate/anno_dir/z_b039179a8a4ce2c2___init__.py,cover +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/annotate/anno_dir/z_b039179a8a4ce2c2_b.py,cover +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/annotate/encodings/utf8.py,cover +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/annotate/mae/mae.py,cover +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/annotate/multi/a/__init__.py,cover +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/annotate/multi/a/a.py,cover +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/annotate/multi/b/__init__.py,cover +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/annotate/multi/b/b.py,cover +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/annotate/multi/multi.py,cover +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/annotate/white/white.py,cover +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/Makefile +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/a/a_py.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/a/class_index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/a/function_index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/a/index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/b_branch/b_py.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/b_branch/class_index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/b_branch/function_index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/b_branch/index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/bom/bom_py.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/bom/class_index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/bom/function_index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/bom/index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/contexts/class_index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/contexts/function_index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/contexts/index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/contexts/two_tests_py.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/isolatin1/class_index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/isolatin1/function_index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/isolatin1/index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/isolatin1/isolatin1_py.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/multiline/class_index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/multiline/function_index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/multiline/index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/multiline/multiline_py.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/omit_1/class_index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/omit_1/function_index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/omit_1/index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/omit_1/m1_py.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/omit_1/m2_py.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/omit_1/m3_py.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/omit_1/main_py.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/omit_2/class_index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/omit_2/function_index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/omit_2/index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/omit_2/m2_py.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/omit_2/m3_py.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/omit_2/main_py.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/omit_3/class_index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/omit_3/function_index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/omit_3/index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/omit_3/m3_py.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/omit_3/main_py.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/omit_4/class_index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/omit_4/function_index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/omit_4/index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/omit_4/m1_py.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/omit_4/m3_py.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/omit_4/main_py.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/omit_5/class_index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/omit_5/function_index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/omit_5/index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/omit_5/m1_py.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/omit_5/main_py.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/other/blah_blah_other_py.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/other/class_index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/other/function_index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/other/here_py.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/other/index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/partial/class_index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/partial/function_index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/partial/index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/partial/partial_py.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/styled/a_py.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/styled/class_index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/styled/function_index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/styled/index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/styled/myextra.css +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/styled/style.css +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/support/coverage_html_cb_dd2e7eb5.js +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/support/favicon_32_cb_c827f16f.png +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/support/keybd_closed_cb_900cfef5.png +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/support/style_cb_a90a112a.css +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/unicode/class_index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/unicode/function_index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/unicode/index.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/html/unicode/unicode_py.html +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/testing/getty/gettysburg.txt +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/testing/xml/output.xml +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/xml/x_xml/coverage.xml +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/gold/xml/y_xml_branch/coverage.xml +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/goldtest.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/helpers.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/hypo.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/mixins.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/aa/__init__.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/aa/afile.odd.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/aa/afile.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/aa/bb/__init__.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/aa/bb/bfile.odd.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/aa/bb/bfile.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/aa/bb/cc/__init__.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/aa/bb/cc/cfile.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/aa/bb.odd/bfile.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/aa/zfile.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/ambiguous/__init__.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/ambiguous/pkg1/__init__.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/ambiguous/pkg1/ambiguous.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/checkspec.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/covmod1.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/namespace_420/sub1/__init__.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/pkg1/__init__.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/pkg1/__main__.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/pkg1/p1a.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/pkg1/p1b.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/pkg1/p1c.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/pkg1/runmod2.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/pkg1/sub/__init__.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/pkg1/sub/__main__.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/pkg1/sub/ps1a.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/pkg1/sub/runmod3.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/pkg2/__init__.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/pkg2/p2a.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/pkg2/p2b.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/plugins/__init__.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/plugins/a_plugin.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/plugins/another.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/process_test/__init__.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/process_test/try_execfile.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/runmod1.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/modules/usepkgs.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/moremodules/namespace_420/sub2/__init__.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/moremodules/othermods/__init__.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/moremodules/othermods/othera.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/moremodules/othermods/otherb.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/moremodules/othermods/sub/__init__.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/moremodules/othermods/sub/osa.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/moremodules/othermods/sub/osb.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/osinfo.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/plugin1.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/plugin2.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/plugin_config.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/qunit/jquery.tmpl.min.js +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/select_plugin.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/strategies.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/stress_phystoken.tok +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/stress_phystoken_dos.tok +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_annotate.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_api.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_arcs.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_bytecode.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_cmdline.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_collector.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_concurrency.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_config.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_context.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_core.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_debug.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_execfile.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_filereporter.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_files.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_goldtest.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_html.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_json.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_lcov.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_misc.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_mixins.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_numbits.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_oddball.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_phystokens.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_plugins.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_process.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_python.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_regions.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_report.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_report_common.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_report_core.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_results.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_setup.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_sqlitedb.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_sysmon.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_templite.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_testing.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_venv.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_version.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/test_xml.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/testenv.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/zipsrc/zip1/__init__.py +0 -0
- {coverage-7.16.0 → coverage-7.16.1}/tests/zipsrc/zip1/zip1.py +0 -0
|
@@ -55,7 +55,7 @@ jobs:
|
|
|
55
55
|
|
|
56
56
|
# Initializes the CodeQL tools for scanning.
|
|
57
57
|
- name: Initialize CodeQL
|
|
58
|
-
uses: github/codeql-action/init@
|
|
58
|
+
uses: github/codeql-action/init@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9
|
|
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@
|
|
69
|
+
uses: github/codeql-action/autobuild@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9
|
|
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@
|
|
83
|
+
uses: github/codeql-action/analyze@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9
|
|
@@ -57,7 +57,7 @@ jobs:
|
|
|
57
57
|
- ".github/workflows/coverage.yml"
|
|
58
58
|
- "tox.ini"
|
|
59
59
|
- "metacov.ini"
|
|
60
|
-
- "requirements/*.
|
|
60
|
+
- "requirements/*.txt"
|
|
61
61
|
- "tests/gold/**"
|
|
62
62
|
|
|
63
63
|
coverage:
|
|
@@ -133,7 +133,7 @@ jobs:
|
|
|
133
133
|
# 3.10 on Windows. Commenting out the cache here fixed it. Someday
|
|
134
134
|
# try using the cache again.
|
|
135
135
|
#cache: pip
|
|
136
|
-
#cache-dependency-path: 'requirements/*.
|
|
136
|
+
#cache-dependency-path: 'requirements/*.txt'
|
|
137
137
|
|
|
138
138
|
- name: "Show environment"
|
|
139
139
|
run: |
|
|
@@ -146,7 +146,7 @@ jobs:
|
|
|
146
146
|
- name: "Install dependencies"
|
|
147
147
|
run: |
|
|
148
148
|
set -xe
|
|
149
|
-
python -m pip install -r requirements/tox.
|
|
149
|
+
python -m pip install -r requirements/tox.txt
|
|
150
150
|
|
|
151
151
|
- name: "Run tox coverage for ${{ matrix.python-version }}"
|
|
152
152
|
env:
|
|
@@ -184,6 +184,7 @@ jobs:
|
|
|
184
184
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
185
185
|
with:
|
|
186
186
|
persist-credentials: false
|
|
187
|
+
fetch-depth: 200
|
|
187
188
|
|
|
188
189
|
- name: "Set up Python"
|
|
189
190
|
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
@@ -193,7 +194,7 @@ jobs:
|
|
|
193
194
|
# 3.10 on Windows. Commenting out the cache here fixed it. Someday
|
|
194
195
|
# try using the cache again.
|
|
195
196
|
#cache: pip
|
|
196
|
-
#cache-dependency-path: 'requirements/*.
|
|
197
|
+
#cache-dependency-path: 'requirements/*.txt'
|
|
197
198
|
|
|
198
199
|
- name: "Show environment"
|
|
199
200
|
run: |
|
|
@@ -206,6 +207,7 @@ jobs:
|
|
|
206
207
|
run: |
|
|
207
208
|
set -xe
|
|
208
209
|
python -m pip install -e .
|
|
210
|
+
python -m pip install -r requirements/pytest.txt
|
|
209
211
|
python igor.py zip_mods
|
|
210
212
|
|
|
211
213
|
- name: "Download coverage data"
|
|
@@ -266,6 +268,22 @@ jobs:
|
|
|
266
268
|
exit 1
|
|
267
269
|
fi
|
|
268
270
|
|
|
271
|
+
- name: "Check coverage on changed lines"
|
|
272
|
+
# Changed code must be fully covered, unless the PR is labeled with "missing-coverage-ok".
|
|
273
|
+
if: github.event_name == 'pull_request'
|
|
274
|
+
env:
|
|
275
|
+
BASE_REF: ${{ github.event.pull_request.base.ref }}
|
|
276
|
+
FAIL_UNDER: ${{ contains(github.event.pull_request.labels.*.name, 'missing-coverage-ok') && '0' || '100' }}
|
|
277
|
+
run: |
|
|
278
|
+
git fetch origin "${BASE_REF}"
|
|
279
|
+
diff-cover coverage.xml \
|
|
280
|
+
--compare-branch "origin/${BASE_REF}" \
|
|
281
|
+
--fail-under="${FAIL_UNDER}" \
|
|
282
|
+
--format markdown:report.md \
|
|
283
|
+
|| status=$?
|
|
284
|
+
cat report.md >> "$GITHUB_STEP_SUMMARY"
|
|
285
|
+
exit "${status:-0}"
|
|
286
|
+
|
|
269
287
|
publish:
|
|
270
288
|
name: "Publish coverage report"
|
|
271
289
|
needs: combine
|
|
@@ -192,7 +192,7 @@ jobs:
|
|
|
192
192
|
with:
|
|
193
193
|
python-version: "${{ matrix.cipy }}"
|
|
194
194
|
cache: pip
|
|
195
|
-
cache-dependency-path: 'requirements/*.
|
|
195
|
+
cache-dependency-path: 'requirements/*.txt'
|
|
196
196
|
|
|
197
197
|
# Rust toolchain is not currently installed on windows arm64 images.
|
|
198
198
|
# We need it for nh3, needed by readme-renderer, needed by twine.
|
|
@@ -208,11 +208,11 @@ jobs:
|
|
|
208
208
|
|
|
209
209
|
- name: "Install tools"
|
|
210
210
|
run: |
|
|
211
|
-
python -m pip install -r requirements/kit.
|
|
211
|
+
python -m pip install -r requirements/kit.txt
|
|
212
212
|
|
|
213
213
|
- name: "Set up QEMU"
|
|
214
214
|
if: ${{ matrix.arch == 'riscv64' }}
|
|
215
|
-
uses: docker/setup-qemu-action@
|
|
215
|
+
uses: docker/setup-qemu-action@1f40c72289eff860ee54a304f1438e3cff362e0a # v4.3.0
|
|
216
216
|
|
|
217
217
|
- name: "Show environment"
|
|
218
218
|
run: |
|
|
@@ -257,11 +257,11 @@ jobs:
|
|
|
257
257
|
with:
|
|
258
258
|
python-version: "3.11" # PYVERSIONS: the kit-building version
|
|
259
259
|
cache: pip
|
|
260
|
-
cache-dependency-path: 'requirements/*.
|
|
260
|
+
cache-dependency-path: 'requirements/*.txt'
|
|
261
261
|
|
|
262
262
|
- name: "Install tools"
|
|
263
263
|
run: |
|
|
264
|
-
python -m pip install -r requirements/kit.
|
|
264
|
+
python -m pip install -r requirements/kit.txt
|
|
265
265
|
|
|
266
266
|
- name: "Build non-binary artifacts"
|
|
267
267
|
env:
|
|
@@ -58,7 +58,7 @@ jobs:
|
|
|
58
58
|
workflow:
|
|
59
59
|
- ".github/workflows/quality.yml"
|
|
60
60
|
- "tox.ini"
|
|
61
|
-
- "requirements/*.
|
|
61
|
+
- "requirements/*.txt"
|
|
62
62
|
|
|
63
63
|
lint:
|
|
64
64
|
name: "Pylint etc"
|
|
@@ -84,11 +84,11 @@ jobs:
|
|
|
84
84
|
with:
|
|
85
85
|
python-version: "3.10" # Minimum of PYVERSIONS
|
|
86
86
|
cache: pip
|
|
87
|
-
cache-dependency-path: 'requirements/*.
|
|
87
|
+
cache-dependency-path: 'requirements/*.txt'
|
|
88
88
|
|
|
89
89
|
- name: "Install dependencies"
|
|
90
90
|
run: |
|
|
91
|
-
python -m pip install -r requirements/tox.
|
|
91
|
+
python -m pip install -r requirements/tox.txt
|
|
92
92
|
|
|
93
93
|
- name: "Tox lint"
|
|
94
94
|
run: |
|
|
@@ -114,11 +114,11 @@ jobs:
|
|
|
114
114
|
with:
|
|
115
115
|
python-version: "3.10" # Minimum of PYVERSIONS
|
|
116
116
|
cache: pip
|
|
117
|
-
cache-dependency-path: 'requirements/*.
|
|
117
|
+
cache-dependency-path: 'requirements/*.txt'
|
|
118
118
|
|
|
119
119
|
- name: "Install dependencies"
|
|
120
120
|
run: |
|
|
121
|
-
python -m pip install -r requirements/tox.
|
|
121
|
+
python -m pip install -r requirements/tox.txt
|
|
122
122
|
|
|
123
123
|
- name: "Tox mypy"
|
|
124
124
|
run: |
|
|
@@ -149,7 +149,7 @@ jobs:
|
|
|
149
149
|
with:
|
|
150
150
|
python-version: "3.12" # Doc version from PYVERSIONS
|
|
151
151
|
cache: pip
|
|
152
|
-
cache-dependency-path: 'requirements/*.
|
|
152
|
+
cache-dependency-path: 'requirements/*.txt'
|
|
153
153
|
|
|
154
154
|
- name: "Show environment"
|
|
155
155
|
run: |
|
|
@@ -161,7 +161,7 @@ jobs:
|
|
|
161
161
|
- name: "Install dependencies"
|
|
162
162
|
run: |
|
|
163
163
|
set -xe
|
|
164
|
-
python -m pip install -r requirements/tox.
|
|
164
|
+
python -m pip install -r requirements/tox.txt
|
|
165
165
|
|
|
166
166
|
- name: "Tox doc"
|
|
167
167
|
run: |
|
|
@@ -185,7 +185,7 @@ jobs:
|
|
|
185
185
|
persist-credentials: false
|
|
186
186
|
|
|
187
187
|
- name: "Install uv"
|
|
188
|
-
uses: astral-sh/setup-uv@
|
|
188
|
+
uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
|
|
189
189
|
with:
|
|
190
190
|
enable-cache: false
|
|
191
191
|
|
|
@@ -55,7 +55,7 @@ jobs:
|
|
|
55
55
|
- "**.c"
|
|
56
56
|
- ".github/workflows/testsuite.yml"
|
|
57
57
|
- "tox.ini"
|
|
58
|
-
- "requirements/*.
|
|
58
|
+
- "requirements/*.txt"
|
|
59
59
|
- "tests/gold/**"
|
|
60
60
|
|
|
61
61
|
tests:
|
|
@@ -129,7 +129,7 @@ jobs:
|
|
|
129
129
|
# 3.10 on Windows. Commenting out the cache here fixed it. Someday
|
|
130
130
|
# try using the cache again.
|
|
131
131
|
#cache: pip
|
|
132
|
-
#cache-dependency-path: 'requirements/*.
|
|
132
|
+
#cache-dependency-path: 'requirements/*.txt'
|
|
133
133
|
|
|
134
134
|
- name: "Show environment"
|
|
135
135
|
run: |
|
|
@@ -149,7 +149,7 @@ jobs:
|
|
|
149
149
|
- name: "Install dependencies"
|
|
150
150
|
run: |
|
|
151
151
|
set -xe
|
|
152
|
-
python -m pip install -r requirements/tox.
|
|
152
|
+
python -m pip install -r requirements/tox.txt
|
|
153
153
|
|
|
154
154
|
- name: "Run tox for ${{ matrix.python-version }}"
|
|
155
155
|
run: |
|
|
@@ -171,6 +171,6 @@ jobs:
|
|
|
171
171
|
runs-on: ubuntu-latest
|
|
172
172
|
steps:
|
|
173
173
|
- name: "Decide success or failure"
|
|
174
|
-
uses: re-actors/alls-green@
|
|
174
|
+
uses: re-actors/alls-green@b5b5b37504aa4183270bd3d855c52a67f212be35 # v1.3.0
|
|
175
175
|
with:
|
|
176
176
|
jobs: ${{ toJSON(needs) }}
|
|
@@ -22,6 +22,23 @@ upgrading your version of coverage.py.
|
|
|
22
22
|
|
|
23
23
|
.. start-releases
|
|
24
24
|
|
|
25
|
+
.. _changes_7-16-1:
|
|
26
|
+
|
|
27
|
+
Version 7.16.1 — 2026-09-13
|
|
28
|
+
---------------------------
|
|
29
|
+
|
|
30
|
+
- Fix: when the body of an irrefutable ``case`` (like ``case _:``) is entirely
|
|
31
|
+
excluded, the ``case`` line is now excluded too, just as an excluded
|
|
32
|
+
``else:`` body removes the ``else:`` line. Previously the ``case`` line was
|
|
33
|
+
left behind and reported as missing. Closes `issue 1563`_ with `pull 2269`_.
|
|
34
|
+
|
|
35
|
+
- Fix: using :meth:`.CoverageData.update` twice on an in-memory database would
|
|
36
|
+
fail, as described in `issue 2279`_. This is now fixed.
|
|
37
|
+
|
|
38
|
+
.. _issue 1563: https://github.com/coveragepy/coveragepy/issues/1563
|
|
39
|
+
.. _pull 2269: https://github.com/coveragepy/coveragepy/pull/2269
|
|
40
|
+
.. _issue 2279: https://github.com/coveragepy/coveragepy/issues/2279
|
|
41
|
+
|
|
25
42
|
.. _changes_7-16-0:
|
|
26
43
|
|
|
27
44
|
Version 7.16.0 — 2026-08-28
|
|
@@ -36,12 +36,12 @@ recursive-include .github *
|
|
|
36
36
|
recursive-include coverage *.pyi
|
|
37
37
|
recursive-include coverage/ctracer *.c *.h
|
|
38
38
|
|
|
39
|
-
recursive-include doc *.py *.in *.
|
|
39
|
+
recursive-include doc *.py *.in *.rst *.txt *.png
|
|
40
40
|
recursive-include doc/_static *
|
|
41
41
|
prune doc/_build
|
|
42
42
|
prune doc/_spell
|
|
43
43
|
|
|
44
|
-
recursive-include requirements *.in *.
|
|
44
|
+
recursive-include requirements *.in *.txt
|
|
45
45
|
|
|
46
46
|
recursive-include tests *.py *.tok
|
|
47
47
|
recursive-include tests/gold *
|
|
@@ -75,7 +75,7 @@ venv: .venv #- Create a virtualenv in .venv.
|
|
|
75
75
|
$(VENV)
|
|
76
76
|
|
|
77
77
|
install: venv #- Install the developer tools.
|
|
78
|
-
$(INSTALL_R) requirements/dev.
|
|
78
|
+
$(INSTALL_R) requirements/dev.txt
|
|
79
79
|
|
|
80
80
|
|
|
81
81
|
### Tests and quality checks
|
|
@@ -112,11 +112,11 @@ metahtml: #- Produce meta-coverage HTML reports.
|
|
|
112
112
|
|
|
113
113
|
# When updating requirements, a few rules to follow:
|
|
114
114
|
#
|
|
115
|
-
# 1) Don't install more than one .
|
|
116
|
-
# combine .in files onto a single .
|
|
115
|
+
# 1) Don't install more than one .txt file at once. Always use pip-compile to
|
|
116
|
+
# combine .in files onto a single .txt file that can be installed where needed.
|
|
117
117
|
#
|
|
118
118
|
# 2) Check manual pins before `make upgrade` to see if they can be removed. Look
|
|
119
|
-
# in requirements/pins.
|
|
119
|
+
# in requirements/pins.txt, and search for "windows" in .in files to find pins
|
|
120
120
|
# and extra requirements that have been needed, but might be obsolete.
|
|
121
121
|
|
|
122
122
|
.PHONY: upgrade upgrade_one _upgrade diff_upgrade
|
|
@@ -135,24 +135,24 @@ PIP_COMPILE = uv pip compile -q --universal --generate-hashes ${COMPILE_OPTS}
|
|
|
135
135
|
# Limit to packages that were released more than 10 days ago.
|
|
136
136
|
# https://blog.yossarian.net/2025/11/21/We-should-all-be-using-dependency-cooldowns
|
|
137
137
|
upgrade: export UV_EXCLUDE_NEWER=P10D
|
|
138
|
-
upgrade: #- Update the *.
|
|
138
|
+
upgrade: #- Update the *.txt files with the latest packages satisfying *.in files.
|
|
139
139
|
$(MAKE) _upgrade COMPILE_OPTS="--upgrade"
|
|
140
140
|
|
|
141
141
|
# Upgrade just one package, with no cooldown.
|
|
142
|
-
upgrade_one: #- Update the *.
|
|
142
|
+
upgrade_one: #- Update the *.txt files for one package. `make upgrade_one package=...`
|
|
143
143
|
@test -n "$(package)" || { echo "\nUsage: make upgrade_one package=...\n"; exit 1; }
|
|
144
144
|
$(MAKE) _upgrade COMPILE_OPTS="--upgrade-package $(package)"
|
|
145
145
|
|
|
146
146
|
_upgrade: export UV_CUSTOM_COMPILE_COMMAND=make upgrade
|
|
147
147
|
_upgrade: $(DOCBIN) $(KITBIN)
|
|
148
|
-
$(PIP_COMPILE) -o requirements/pip.
|
|
149
|
-
$(PIP_COMPILE) -o requirements/pytest.
|
|
150
|
-
$(PIP_COMPILE) -p $(KITBIN)/python3 -o requirements/kit.
|
|
151
|
-
$(PIP_COMPILE) -o requirements/tox.
|
|
152
|
-
$(PIP_COMPILE) -o requirements/dev.
|
|
153
|
-
$(PIP_COMPILE) -o requirements/light-threads.
|
|
154
|
-
$(PIP_COMPILE) -o requirements/mypy.
|
|
155
|
-
$(PIP_COMPILE) -p $(DOCBIN)/python3 -o doc/requirements.
|
|
148
|
+
$(PIP_COMPILE) -o requirements/pip.txt requirements/pip.in
|
|
149
|
+
$(PIP_COMPILE) -o requirements/pytest.txt requirements/pytest.in
|
|
150
|
+
$(PIP_COMPILE) -p $(KITBIN)/python3 -o requirements/kit.txt requirements/kit.in
|
|
151
|
+
$(PIP_COMPILE) -o requirements/tox.txt requirements/tox.in
|
|
152
|
+
$(PIP_COMPILE) -o requirements/dev.txt requirements/dev.in
|
|
153
|
+
$(PIP_COMPILE) -o requirements/light-threads.txt requirements/light-threads.in
|
|
154
|
+
$(PIP_COMPILE) -o requirements/mypy.txt requirements/mypy.in
|
|
155
|
+
$(PIP_COMPILE) -p $(DOCBIN)/python3 -o doc/requirements.txt doc/requirements.in
|
|
156
156
|
PYTHONWARNDEFAULTENCODING= pre-commit autoupdate
|
|
157
157
|
|
|
158
158
|
diff_upgrade: #- Summarize the last `make upgrade`.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: coverage
|
|
3
|
-
Version: 7.16.
|
|
3
|
+
Version: 7.16.1
|
|
4
4
|
Summary: Code coverage measurement for Python
|
|
5
5
|
Home-page: https://github.com/coveragepy/coveragepy
|
|
6
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.16.
|
|
9
|
+
Project-URL: Documentation, https://coverage.readthedocs.io/en/7.16.1
|
|
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
|
|
@@ -68,7 +68,6 @@ Code coverage measurement for Python.
|
|
|
68
68
|
| |kit| |license| |versions|
|
|
69
69
|
| |test-status| |quality-status| |docs| |metacov|
|
|
70
70
|
| |tidelift| |sponsor| |stars| |mastodon-coveragepy| |mastodon-nedbat|
|
|
71
|
-
|bluesky-nedbat|
|
|
72
71
|
|
|
73
72
|
Coverage.py measures code coverage, typically during test execution. It uses
|
|
74
73
|
the code analysis tools and tracing hooks provided in the Python standard
|
|
@@ -78,13 +77,13 @@ Coverage.py runs on these versions of Python:
|
|
|
78
77
|
|
|
79
78
|
.. PYVERSIONS
|
|
80
79
|
|
|
81
|
-
* Python 3.10 through 3.15
|
|
80
|
+
* Python 3.10 through 3.15 rc2, including free-threading.
|
|
82
81
|
* PyPy3 versions 3.10 and 3.11.
|
|
83
82
|
|
|
84
83
|
Documentation is on `Read the Docs`_. Code repository and issue tracker are on
|
|
85
84
|
`GitHub`_.
|
|
86
85
|
|
|
87
|
-
.. _Read the Docs: https://coverage.readthedocs.io/en/7.16.
|
|
86
|
+
.. _Read the Docs: https://coverage.readthedocs.io/en/7.16.1/
|
|
88
87
|
.. _GitHub: https://github.com/coveragepy/coveragepy
|
|
89
88
|
|
|
90
89
|
|
|
@@ -113,7 +112,7 @@ Getting Started
|
|
|
113
112
|
Looking to run ``coverage`` on your test suite? See the `Quick Start section`_
|
|
114
113
|
of the docs.
|
|
115
114
|
|
|
116
|
-
.. _Quick Start section: https://coverage.readthedocs.io/en/7.16.
|
|
115
|
+
.. _Quick Start section: https://coverage.readthedocs.io/en/7.16.1/#quick-start
|
|
117
116
|
|
|
118
117
|
|
|
119
118
|
Change history
|
|
@@ -121,7 +120,7 @@ Change history
|
|
|
121
120
|
|
|
122
121
|
The complete history of changes is on the `change history page`_.
|
|
123
122
|
|
|
124
|
-
.. _change history page: https://coverage.readthedocs.io/en/7.16.
|
|
123
|
+
.. _change history page: https://coverage.readthedocs.io/en/7.16.1/changes.html
|
|
125
124
|
|
|
126
125
|
|
|
127
126
|
Code of Conduct
|
|
@@ -140,7 +139,7 @@ Contributing
|
|
|
140
139
|
Found a bug? Want to help improve the code or documentation? See the
|
|
141
140
|
`Contributing section`_ of the docs.
|
|
142
141
|
|
|
143
|
-
.. _Contributing section: https://coverage.readthedocs.io/en/7.16.
|
|
142
|
+
.. _Contributing section: https://coverage.readthedocs.io/en/7.16.1/contributing.html
|
|
144
143
|
|
|
145
144
|
|
|
146
145
|
Security
|
|
@@ -168,7 +167,7 @@ Licensed under the `Apache 2.0 License`_. For details, see `NOTICE.txt`_.
|
|
|
168
167
|
:target: https://github.com/coveragepy/coveragepy/actions/workflows/quality.yml
|
|
169
168
|
:alt: Quality check status
|
|
170
169
|
.. |docs| image:: https://readthedocs.org/projects/coverage/badge/?version=latest&style=flat
|
|
171
|
-
:target: https://coverage.readthedocs.io/en/7.16.
|
|
170
|
+
:target: https://coverage.readthedocs.io/en/7.16.1/
|
|
172
171
|
:alt: Documentation
|
|
173
172
|
.. |kit| image:: https://img.shields.io/pypi/v/coverage
|
|
174
173
|
:target: https://pypi.org/project/coverage/
|
|
@@ -194,9 +193,6 @@ Licensed under the `Apache 2.0 License`_. For details, see `NOTICE.txt`_.
|
|
|
194
193
|
.. |mastodon-coveragepy| image:: https://img.shields.io/badge/dynamic/json?style=flat&labelColor=450657&logo=mastodon&logoColor=ffffff&label=@coveragepy&query=followers_count&url=https%3A%2F%2Fhachyderm.io%2Fapi%2Fv1%2Faccounts%2Flookup%3Facct=coveragepy
|
|
195
194
|
:target: https://hachyderm.io/@coveragepy
|
|
196
195
|
:alt: coveragepy on Mastodon
|
|
197
|
-
.. |bluesky-nedbat| image:: https://img.shields.io/badge/dynamic/json?style=flat&color=96a3b0&labelColor=3686f7&logo=icloud&logoColor=white&label=@nedbat&url=https%3A%2F%2Fpublic.api.bsky.app%2Fxrpc%2Fapp.bsky.actor.getProfile%3Factor=nedbat.com&query=followersCount
|
|
198
|
-
:target: https://bsky.app/profile/nedbat.com
|
|
199
|
-
:alt: nedbat on Bluesky
|
|
200
196
|
.. |sponsor| image:: https://img.shields.io/badge/%E2%9D%A4-Sponsor%20me-brightgreen?style=flat&logo=GitHub
|
|
201
197
|
:target: https://github.com/sponsors/nedbat
|
|
202
198
|
:alt: Sponsor me on GitHub
|
|
@@ -16,7 +16,6 @@ Code coverage measurement for Python.
|
|
|
16
16
|
| |kit| |license| |versions|
|
|
17
17
|
| |test-status| |quality-status| |docs| |metacov|
|
|
18
18
|
| |tidelift| |sponsor| |stars| |mastodon-coveragepy| |mastodon-nedbat|
|
|
19
|
-
|bluesky-nedbat|
|
|
20
19
|
|
|
21
20
|
Coverage.py measures code coverage, typically during test execution. It uses
|
|
22
21
|
the code analysis tools and tracing hooks provided in the Python standard
|
|
@@ -26,7 +25,7 @@ Coverage.py runs on these versions of Python:
|
|
|
26
25
|
|
|
27
26
|
.. PYVERSIONS
|
|
28
27
|
|
|
29
|
-
* Python 3.10 through 3.15
|
|
28
|
+
* Python 3.10 through 3.15 rc2, including free-threading.
|
|
30
29
|
* PyPy3 versions 3.10 and 3.11.
|
|
31
30
|
|
|
32
31
|
Documentation is on `Read the Docs`_. Code repository and issue tracker are on
|
|
@@ -142,9 +141,6 @@ Licensed under the `Apache 2.0 License`_. For details, see `NOTICE.txt`_.
|
|
|
142
141
|
.. |mastodon-coveragepy| image:: https://img.shields.io/badge/dynamic/json?style=flat&labelColor=450657&logo=mastodon&logoColor=ffffff&label=@coveragepy&query=followers_count&url=https%3A%2F%2Fhachyderm.io%2Fapi%2Fv1%2Faccounts%2Flookup%3Facct=coveragepy
|
|
143
142
|
:target: https://hachyderm.io/@coveragepy
|
|
144
143
|
:alt: coveragepy on Mastodon
|
|
145
|
-
.. |bluesky-nedbat| image:: https://img.shields.io/badge/dynamic/json?style=flat&color=96a3b0&labelColor=3686f7&logo=icloud&logoColor=white&label=@nedbat&url=https%3A%2F%2Fpublic.api.bsky.app%2Fxrpc%2Fapp.bsky.actor.getProfile%3Factor=nedbat.com&query=followersCount
|
|
146
|
-
:target: https://bsky.app/profile/nedbat.com
|
|
147
|
-
:alt: nedbat on Bluesky
|
|
148
144
|
.. |sponsor| image:: https://img.shields.io/badge/%E2%9D%A4-Sponsor%20me-brightgreen?style=flat&logo=GitHub
|
|
149
145
|
:target: https://github.com/sponsors/nedbat
|
|
150
146
|
:alt: Sponsor me on GitHub
|
|
@@ -503,20 +503,23 @@ coverage.to_prev_chunk = function () {
|
|
|
503
503
|
chunk_indicator = c.chunk_indicator(probe_line);
|
|
504
504
|
}
|
|
505
505
|
|
|
506
|
+
// There is no previous highlighted chunk.
|
|
507
|
+
if (!chunk_indicator) {
|
|
508
|
+
return;
|
|
509
|
+
}
|
|
510
|
+
|
|
506
511
|
// There's a prev chunk, `probe` points to its last line.
|
|
507
512
|
var end = probe+1;
|
|
508
513
|
|
|
509
514
|
// Find the beginning of this chunk.
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
return;
|
|
515
|
+
while (probe > 1) {
|
|
516
|
+
probe_line = c.line_elt(probe-1);
|
|
517
|
+
if (c.chunk_indicator(probe_line) !== chunk_indicator) {
|
|
518
|
+
break;
|
|
515
519
|
}
|
|
516
|
-
|
|
517
|
-
prev_indicator = c.chunk_indicator(probe_line);
|
|
520
|
+
probe--;
|
|
518
521
|
}
|
|
519
|
-
c.set_sel(probe
|
|
522
|
+
c.set_sel(probe, end);
|
|
520
523
|
c.show_selection();
|
|
521
524
|
};
|
|
522
525
|
|
|
@@ -265,6 +265,16 @@ class PythonParser:
|
|
|
265
265
|
first_line = min((d.lineno for d in node.decorator_list), default=node.lineno)
|
|
266
266
|
if self.excluded.intersection(range(first_line, node.lineno + 1)):
|
|
267
267
|
self.excluded.update(range(first_line, cast(int, node.end_lineno) + 1))
|
|
268
|
+
# An irrefutable `case` (like `case _:`) is the `match` equivalent
|
|
269
|
+
# of an `else` clause. If its whole body is excluded, exclude the
|
|
270
|
+
# `case` line too, so it isn't left behind as a missing statement.
|
|
271
|
+
# Refutable cases are left alone, the same way an `elif` line is
|
|
272
|
+
# still reported. https://github.com/coveragepy/coveragepy/issues/1563
|
|
273
|
+
if isinstance(node, ast.match_case) and _case_is_irrefutable(node):
|
|
274
|
+
body_lines = range(node.body[0].lineno, cast(int, node.body[-1].end_lineno) + 1)
|
|
275
|
+
body_statements = self.raw_statements & set(body_lines)
|
|
276
|
+
if body_statements and body_statements <= self.excluded:
|
|
277
|
+
self.excluded.update(range(node.pattern.lineno, node.pattern.end_lineno + 1))
|
|
268
278
|
|
|
269
279
|
def first_line(self, lineno: TLineNo) -> TLineNo:
|
|
270
280
|
"""Return the first line number of the statement including `lineno`."""
|
|
@@ -647,6 +657,24 @@ def walk_statement_nodes(root: ast.AST) -> Iterable[ast.AST]:
|
|
|
647
657
|
todo.append(child)
|
|
648
658
|
|
|
649
659
|
|
|
660
|
+
def _case_is_irrefutable(case: ast.match_case) -> bool:
|
|
661
|
+
"""Will this `case` clause always match, like `case _:` does?
|
|
662
|
+
|
|
663
|
+
An irrefutable case has a wildcard or bare-capture pattern and no guard,
|
|
664
|
+
so anything reaching it will match. These are the `match` equivalent of
|
|
665
|
+
an `else` clause.
|
|
666
|
+
|
|
667
|
+
"""
|
|
668
|
+
if case.guard is not None:
|
|
669
|
+
return False
|
|
670
|
+
pattern = case.pattern
|
|
671
|
+
while isinstance(pattern, ast.MatchOr):
|
|
672
|
+
pattern = pattern.patterns[-1]
|
|
673
|
+
while isinstance(pattern, ast.MatchAs) and pattern.pattern is not None:
|
|
674
|
+
pattern = pattern.pattern
|
|
675
|
+
return isinstance(pattern, ast.MatchAs) and pattern.pattern is None
|
|
676
|
+
|
|
677
|
+
|
|
650
678
|
def is_constant_test_expr(node: ast.AST) -> tuple[bool, bool]:
|
|
651
679
|
"""Is this a compile-time constant test expression?
|
|
652
680
|
|
|
@@ -1102,14 +1130,7 @@ class AstArcAnalyzer:
|
|
|
1102
1130
|
last_start = case_start
|
|
1103
1131
|
|
|
1104
1132
|
# case is now the last case, check for wildcard match.
|
|
1105
|
-
|
|
1106
|
-
while isinstance(pattern, ast.MatchOr):
|
|
1107
|
-
pattern = pattern.patterns[-1]
|
|
1108
|
-
while isinstance(pattern, ast.MatchAs) and pattern.pattern is not None:
|
|
1109
|
-
pattern = pattern.pattern
|
|
1110
|
-
had_wildcard = (
|
|
1111
|
-
isinstance(pattern, ast.MatchAs) and pattern.pattern is None and case.guard is None # pylint: disable=undefined-loop-variable
|
|
1112
|
-
)
|
|
1133
|
+
had_wildcard = _case_is_irrefutable(case) # pylint: disable=undefined-loop-variable
|
|
1113
1134
|
|
|
1114
1135
|
if not had_wildcard:
|
|
1115
1136
|
exits.add(
|
|
@@ -880,6 +880,13 @@ class CoverageData:
|
|
|
880
880
|
INNER JOIN main.file AS main_file ON other_file_mapped.mapped_path = main_file.path
|
|
881
881
|
""")
|
|
882
882
|
|
|
883
|
+
# Clean up in case we'll use update() again.
|
|
884
|
+
con.execute_void("DROP TABLE other_file_mapped")
|
|
885
|
+
if has_arcs:
|
|
886
|
+
con.execute_void("DROP TABLE context_mapping")
|
|
887
|
+
con.con.commit()
|
|
888
|
+
con.execute_void("DETACH DATABASE other_db")
|
|
889
|
+
|
|
883
890
|
if not self._no_disk:
|
|
884
891
|
# Update all internal cache data.
|
|
885
892
|
self._reset()
|