coverage 7.16.2__tar.gz → 7.17.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {coverage-7.16.2 → coverage-7.17.0}/.github/workflows/codeql-analysis.yml +3 -3
- {coverage-7.16.2 → coverage-7.17.0}/.github/workflows/coverage.yml +16 -20
- {coverage-7.16.2 → coverage-7.17.0}/.github/workflows/kit.yml +55 -31
- {coverage-7.16.2 → coverage-7.17.0}/.github/workflows/publish.yml +3 -3
- {coverage-7.16.2 → coverage-7.17.0}/.github/workflows/quality.yml +3 -3
- {coverage-7.16.2 → coverage-7.17.0}/.github/workflows/testsuite.yml +43 -3
- {coverage-7.16.2 → coverage-7.17.0}/.gitignore +2 -0
- {coverage-7.16.2 → coverage-7.17.0}/.pre-commit-config.yaml +1 -2
- {coverage-7.16.2 → coverage-7.17.0}/CHANGES.rst +105 -0
- {coverage-7.16.2 → coverage-7.17.0}/CONTRIBUTORS.txt +1 -0
- {coverage-7.16.2 → coverage-7.17.0}/MANIFEST.in +2 -1
- {coverage-7.16.2 → coverage-7.17.0}/Makefile +6 -2
- {coverage-7.16.2/coverage.egg-info → coverage-7.17.0}/PKG-INFO +11 -13
- {coverage-7.16.2 → coverage-7.17.0}/README.rst +2 -2
- {coverage-7.16.2 → coverage-7.17.0}/coverage/__init__.py +4 -9
- {coverage-7.16.2 → coverage-7.17.0}/coverage/annotate.py +2 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/bytecode.py +2 -2
- {coverage-7.16.2 → coverage-7.17.0}/coverage/cmdline.py +1 -1
- {coverage-7.16.2 → coverage-7.17.0}/coverage/config.py +10 -6
- {coverage-7.16.2 → coverage-7.17.0}/coverage/context.py +2 -4
- {coverage-7.16.2 → coverage-7.17.0}/coverage/control.py +3 -1
- {coverage-7.16.2 → coverage-7.17.0}/coverage/ctracer/filedisp.c +2 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/ctracer/module.c +0 -2
- {coverage-7.16.2 → coverage-7.17.0}/coverage/ctracer/tracer.c +32 -25
- {coverage-7.16.2 → coverage-7.17.0}/coverage/ctracer/util.h +61 -4
- {coverage-7.16.2 → coverage-7.17.0}/coverage/data.py +7 -5
- {coverage-7.16.2 → coverage-7.17.0}/coverage/debug.py +1 -1
- {coverage-7.16.2 → coverage-7.17.0}/coverage/env.py +2 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/exceptions.py +2 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/execfile.py +2 -6
- {coverage-7.16.2 → coverage-7.17.0}/coverage/files.py +1 -1
- {coverage-7.16.2 → coverage-7.17.0}/coverage/html.py +2 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/htmlfiles/coverage_html.js +44 -4
- {coverage-7.16.2 → coverage-7.17.0}/coverage/jsonreport.py +3 -1
- {coverage-7.16.2 → coverage-7.17.0}/coverage/lcovreport.py +7 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/misc.py +15 -23
- {coverage-7.16.2 → coverage-7.17.0}/coverage/numbits.py +2 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/parser.py +62 -57
- {coverage-7.16.2 → coverage-7.17.0}/coverage/phystokens.py +12 -10
- {coverage-7.16.2 → coverage-7.17.0}/coverage/pytracer.py +1 -1
- {coverage-7.16.2 → coverage-7.17.0}/coverage/regions.py +11 -3
- {coverage-7.16.2 → coverage-7.17.0}/coverage/report.py +10 -5
- {coverage-7.16.2 → coverage-7.17.0}/coverage/report_core.py +2 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/results.py +2 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/sqldata.py +43 -6
- {coverage-7.16.2 → coverage-7.17.0}/coverage/sqlitedb.py +13 -5
- {coverage-7.16.2 → coverage-7.17.0}/coverage/templite.py +2 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/tomlconfig.py +7 -28
- {coverage-7.16.2 → coverage-7.17.0}/coverage/types.py +2 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/version.py +1 -1
- {coverage-7.16.2 → coverage-7.17.0}/coverage/xmlreport.py +21 -6
- {coverage-7.16.2 → coverage-7.17.0/coverage.egg-info}/PKG-INFO +11 -13
- {coverage-7.16.2 → coverage-7.17.0}/coverage.egg-info/SOURCES.txt +10 -1
- coverage-7.17.0/coverage.egg-info/requires.txt +2 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/conf.py +3 -3
- {coverage-7.16.2 → coverage-7.17.0}/doc/config.rst +0 -4
- {coverage-7.16.2 → coverage-7.17.0}/doc/contributing.rst +8 -4
- {coverage-7.16.2 → coverage-7.17.0}/doc/index.rst +2 -2
- {coverage-7.16.2 → coverage-7.17.0}/doc/messages.rst +21 -0
- coverage-7.17.0/doc/requirements.txt +871 -0
- {coverage-7.16.2 → coverage-7.17.0}/pyproject.toml +12 -1
- {coverage-7.16.2 → coverage-7.17.0}/requirements/dev.in +1 -0
- coverage-7.17.0/requirements/dev.txt +1144 -0
- coverage-7.17.0/requirements/js.in +9 -0
- coverage-7.17.0/requirements/js.txt +101 -0
- coverage-7.17.0/requirements/kit.txt +555 -0
- {coverage-7.16.2 → coverage-7.17.0}/requirements/light-threads.txt +129 -129
- {coverage-7.16.2 → coverage-7.17.0}/requirements/mypy.in +3 -0
- coverage-7.17.0/requirements/mypy.txt +716 -0
- coverage-7.17.0/requirements/pip.txt +36 -0
- coverage-7.17.0/requirements/pytest.txt +347 -0
- coverage-7.17.0/requirements/tox.txt +74 -0
- {coverage-7.16.2 → coverage-7.17.0}/setup.py +7 -15
- {coverage-7.16.2 → coverage-7.17.0}/tests/conftest.py +2 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/coveragetest.py +2 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/goldtest.py +2 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/helpers.py +2 -16
- {coverage-7.16.2 → coverage-7.17.0}/tests/hypo.py +2 -6
- coverage-7.17.0/tests/js/collect_results.js +24 -0
- coverage-7.17.0/tests/js/run_js_tests.py +47 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/js/tests.js +40 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/mixins.py +5 -2
- {coverage-7.16.2 → coverage-7.17.0}/tests/osinfo.py +2 -0
- coverage-7.17.0/tests/oss-scanner/Dockerfile +41 -0
- coverage-7.17.0/tests/oss-scanner/README.rst +19 -0
- coverage-7.17.0/tests/oss-scanner/local_run.sh +19 -0
- coverage-7.17.0/tests/oss-scanner/project.yaml +8 -0
- coverage-7.17.0/tests/oss-scanner/threat_model.md +113 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/plugin_config.py +2 -0
- coverage-7.17.0/tests/smoke.py +20 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/strategies.py +2 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_api.py +35 -6
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_arcs.py +121 -2
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_config.py +1 -69
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_context.py +5 -9
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_data.py +92 -5
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_filereporter.py +2 -1
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_files.py +5 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_html.py +6 -5
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_lcov.py +67 -20
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_misc.py +0 -25
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_oddball.py +101 -6
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_parser.py +19 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_plugins.py +59 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_process.py +39 -5
- coverage-7.17.0/tests/test_regions.py +259 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_report.py +24 -6
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_sqlitedb.py +1 -1
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_venv.py +5 -3
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_xml.py +79 -3
- {coverage-7.16.2 → coverage-7.17.0}/tests/testenv.py +10 -1
- {coverage-7.16.2 → coverage-7.17.0}/tox.ini +24 -11
- coverage-7.16.2/coverage.egg-info/requires.txt +0 -5
- coverage-7.16.2/doc/requirements.txt +0 -883
- coverage-7.16.2/requirements/dev.txt +0 -1114
- coverage-7.16.2/requirements/kit.txt +0 -542
- coverage-7.16.2/requirements/mypy.txt +0 -612
- coverage-7.16.2/requirements/pip.txt +0 -36
- coverage-7.16.2/requirements/pytest.txt +0 -340
- coverage-7.16.2/requirements/tox.txt +0 -125
- coverage-7.16.2/tests/qunit/jquery.tmpl.min.js +0 -10
- coverage-7.16.2/tests/test_regions.py +0 -112
- {coverage-7.16.2 → coverage-7.17.0}/.editorconfig +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/.git-blame-ignore-revs +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/.github/CODE_OF_CONDUCT.md +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/.github/FUNDING.yml +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/.github/ISSUE_TEMPLATE/support.md +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/.github/SECURITY.md +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/.github/dependabot.yml +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/.github/workflows/dependency-review.yml +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/.github/workflows/python-nightly.yml +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/.github/zizmor.yml +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/.ignore +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/.readthedocs.yaml +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/CITATION.cff +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/LICENSE.txt +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/NOTICE.txt +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/__main__.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/a1_coverage.pth +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/ci/README.txt +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/ci/comment_on_fixes.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/ci/session.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/ci/trigger_action.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/ci/update_rtfd.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/__main__.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/collector.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/core.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/ctracer/datastack.c +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/ctracer/datastack.h +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/ctracer/filedisp.h +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/ctracer/stats.h +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/ctracer/tracer.h +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/disposition.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/htmlfiles/favicon_32.png +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/htmlfiles/index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/htmlfiles/keybd_closed.png +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/htmlfiles/pyfile.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/htmlfiles/style.css +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/htmlfiles/style.scss +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/inorout.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/multiproc.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/patch.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/plugin.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/plugin_support.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/pth_file.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/py.typed +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/python.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/sysmon.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage/tracer.pyi +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage.egg-info/dependency_links.txt +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage.egg-info/entry_points.txt +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage.egg-info/not-zip-safe +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/coverage.egg-info/top_level.txt +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/_static/coverage.css +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/api.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/api_coverage.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/api_coveragedata.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/api_exceptions.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/api_module.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/api_plugin.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/branch.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/changes.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/cog_helpers.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/commands/cmd_annotate.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/commands/cmd_combine.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/commands/cmd_debug.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/commands/cmd_erase.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/commands/cmd_html.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/commands/cmd_json.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/commands/cmd_lcov.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/commands/cmd_report.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/commands/cmd_reporting.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/commands/cmd_run.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/commands/cmd_xml.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/commands/index.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/contexts.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/dbschema.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/dict.txt +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/excluding.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/faq.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/howitworks.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/install.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/media/Tidelift_Logos_RGB_Tidelift_Shorthand_On-White.png +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/media/Tidelift_Logos_RGB_Tidelift_Shorthand_On-White_small.png +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/media/sleepy-snake-600.png +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/media/sleepy-snake-circle-150.png +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/migrating.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/other.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/plugins.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/python-coverage.1.txt +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/requirements.in +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/sleepy.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/source.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/subprocess.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/trouble.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/doc/whatsnew5x.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/howto.txt +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/igor.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/lab/README.txt +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/lab/branches.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/lab/compare_times.sh +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/lab/coverage-04.dtd +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/lab/extract_code.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/lab/goals.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/lab/hack_pyc.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/lab/notes/arcs-to-branches.txt +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/lab/notes/bug1303.txt +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/lab/notes/pypy-738-decorated-functions.txt +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/lab/parse_all.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/lab/parser.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/lab/pick.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/lab/platform_info.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/lab/run_sysmon.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/lab/run_trace.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/lab/select_contexts.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/lab/show_platform.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/lab/show_pyc.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/lab/treetopy.sh +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/lab/warn_executed.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/lab/warn_executed.toml +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/metacov.ini +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/requirements/kit.in +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/requirements/light-threads.in +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/requirements/pins.txt +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/requirements/pip.in +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/requirements/pytest.in +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/requirements/tox.in +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/setup.cfg +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/__init__.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/covmodzip1.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/README.rst +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/annotate/anno_dir/multi.py,cover +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/annotate/anno_dir/z_80084bf2fba02475___init__.py,cover +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/annotate/anno_dir/z_80084bf2fba02475_a.py,cover +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/annotate/anno_dir/z_b039179a8a4ce2c2___init__.py,cover +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/annotate/anno_dir/z_b039179a8a4ce2c2_b.py,cover +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/annotate/encodings/utf8.py,cover +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/annotate/mae/mae.py,cover +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/annotate/multi/a/__init__.py,cover +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/annotate/multi/a/a.py,cover +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/annotate/multi/b/__init__.py,cover +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/annotate/multi/b/b.py,cover +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/annotate/multi/multi.py,cover +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/annotate/white/white.py,cover +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/Makefile +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/a/a_py.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/a/class_index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/a/function_index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/a/index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/b_branch/b_py.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/b_branch/class_index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/b_branch/function_index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/b_branch/index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/bom/bom_py.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/bom/class_index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/bom/function_index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/bom/index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/contexts/class_index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/contexts/function_index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/contexts/index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/contexts/two_tests_py.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/isolatin1/class_index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/isolatin1/function_index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/isolatin1/index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/isolatin1/isolatin1_py.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/multiline/class_index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/multiline/function_index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/multiline/index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/multiline/multiline_py.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/omit_1/class_index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/omit_1/function_index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/omit_1/index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/omit_1/m1_py.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/omit_1/m2_py.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/omit_1/m3_py.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/omit_1/main_py.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/omit_2/class_index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/omit_2/function_index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/omit_2/index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/omit_2/m2_py.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/omit_2/m3_py.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/omit_2/main_py.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/omit_3/class_index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/omit_3/function_index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/omit_3/index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/omit_3/m3_py.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/omit_3/main_py.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/omit_4/class_index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/omit_4/function_index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/omit_4/index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/omit_4/m1_py.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/omit_4/m3_py.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/omit_4/main_py.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/omit_5/class_index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/omit_5/function_index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/omit_5/index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/omit_5/m1_py.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/omit_5/main_py.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/other/blah_blah_other_py.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/other/class_index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/other/function_index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/other/here_py.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/other/index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/partial/class_index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/partial/function_index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/partial/index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/partial/partial_py.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/styled/a_py.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/styled/class_index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/styled/function_index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/styled/index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/styled/myextra.css +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/styled/style.css +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/support/coverage_html_cb_dd2e7eb5.js +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/support/favicon_32_cb_c827f16f.png +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/support/keybd_closed_cb_900cfef5.png +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/support/style_cb_a90a112a.css +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/unicode/class_index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/unicode/function_index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/unicode/index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/html/unicode/unicode_py.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/testing/getty/gettysburg.txt +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/testing/xml/output.xml +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/xml/x_xml/coverage.xml +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/gold/xml/y_xml_branch/coverage.xml +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/js/index.html +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/aa/__init__.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/aa/afile.odd.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/aa/afile.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/aa/bb/__init__.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/aa/bb/bfile.odd.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/aa/bb/bfile.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/aa/bb/cc/__init__.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/aa/bb/cc/cfile.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/aa/bb.odd/bfile.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/aa/zfile.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/ambiguous/__init__.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/ambiguous/pkg1/__init__.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/ambiguous/pkg1/ambiguous.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/checkspec.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/covmod1.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/namespace_420/sub1/__init__.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/pkg1/__init__.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/pkg1/__main__.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/pkg1/p1a.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/pkg1/p1b.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/pkg1/p1c.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/pkg1/runmod2.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/pkg1/sub/__init__.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/pkg1/sub/__main__.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/pkg1/sub/ps1a.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/pkg1/sub/runmod3.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/pkg2/__init__.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/pkg2/p2a.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/pkg2/p2b.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/plugins/__init__.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/plugins/a_plugin.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/plugins/another.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/process_test/__init__.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/process_test/try_execfile.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/runmod1.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/modules/usepkgs.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/moremodules/namespace_420/sub2/__init__.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/moremodules/othermods/__init__.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/moremodules/othermods/othera.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/moremodules/othermods/otherb.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/moremodules/othermods/sub/__init__.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/moremodules/othermods/sub/osa.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/moremodules/othermods/sub/osb.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/plugin1.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/plugin2.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/select_plugin.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/stress_phystoken.tok +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/stress_phystoken_dos.tok +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_annotate.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_bytecode.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_cmdline.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_collector.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_concurrency.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_core.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_coverage.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_debug.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_execfile.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_goldtest.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_json.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_mixins.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_numbits.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_phystokens.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_python.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_report_common.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_report_core.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_results.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_setup.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_sysmon.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_templite.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_testing.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/test_version.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/tests/zipsrc/zip1/__init__.py +0 -0
- {coverage-7.16.2 → coverage-7.17.0}/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@24c54180a607b1449ed407dd24f251e4e9147c8d # v4.38.3
|
|
59
59
|
with:
|
|
60
60
|
languages: ${{ matrix.language }}
|
|
61
61
|
# If you wish to specify custom queries, you can do so here or in a config file.
|
|
@@ -66,7 +66,7 @@ jobs:
|
|
|
66
66
|
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
|
67
67
|
# If this step fails, then you should remove it and run the build manually (see below)
|
|
68
68
|
- name: Autobuild
|
|
69
|
-
uses: github/codeql-action/autobuild@
|
|
69
|
+
uses: github/codeql-action/autobuild@24c54180a607b1449ed407dd24f251e4e9147c8d # v4.38.3
|
|
70
70
|
|
|
71
71
|
# ℹ️ Command-line programs to run using the OS shell.
|
|
72
72
|
# 📚 https://git.io/JvXDl
|
|
@@ -80,4 +80,4 @@ jobs:
|
|
|
80
80
|
# make release
|
|
81
81
|
|
|
82
82
|
- name: Perform CodeQL Analysis
|
|
83
|
-
uses: github/codeql-action/analyze@
|
|
83
|
+
uses: github/codeql-action/analyze@24c54180a607b1449ed407dd24f251e4e9147c8d # v4.38.3
|
|
@@ -87,7 +87,6 @@ jobs:
|
|
|
87
87
|
# tox.ini so that tox will run properly. PYVERSIONS
|
|
88
88
|
# Available versions:
|
|
89
89
|
# https://github.com/actions/python-versions/blob/main/versions-manifest.json
|
|
90
|
-
- "3.10"
|
|
91
90
|
- "3.11"
|
|
92
91
|
- "3.12"
|
|
93
92
|
- "3.13"
|
|
@@ -95,19 +94,11 @@ jobs:
|
|
|
95
94
|
- "3.14t"
|
|
96
95
|
- "3.15"
|
|
97
96
|
- "3.15t"
|
|
98
|
-
- "pypy-3.10"
|
|
99
97
|
- "pypy-3.11"
|
|
100
98
|
exclude:
|
|
101
99
|
# Mac PyPy always takes the longest, and doesn't add anything.
|
|
102
|
-
- os: macos
|
|
103
|
-
python-version: "pypy-3.10"
|
|
104
100
|
- os: macos
|
|
105
101
|
python-version: "pypy-3.11"
|
|
106
|
-
# Windows pypy 3.10 gets stuck with PyPy 7.3.15. I hope to
|
|
107
|
-
# unstick them, but I don't want that to block all other progress, so
|
|
108
|
-
# skip them for now.
|
|
109
|
-
- os: windows
|
|
110
|
-
python-version: "pypy-3.10"
|
|
111
102
|
# If we need to tweak the os version we can do it with an include like
|
|
112
103
|
# this:
|
|
113
104
|
# include:
|
|
@@ -164,7 +155,7 @@ jobs:
|
|
|
164
155
|
mv .metacov ".metacov.$MATRIX_ID"
|
|
165
156
|
|
|
166
157
|
- name: "Upload coverage data"
|
|
167
|
-
uses: actions/upload-artifact@
|
|
158
|
+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
168
159
|
with:
|
|
169
160
|
name: metacov-${{ env.MATRIX_ID }}
|
|
170
161
|
path: .metacov.*
|
|
@@ -189,12 +180,9 @@ jobs:
|
|
|
189
180
|
- name: "Set up Python"
|
|
190
181
|
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
191
182
|
with:
|
|
192
|
-
python-version: "3.
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
# try using the cache again.
|
|
196
|
-
#cache: pip
|
|
197
|
-
#cache-dependency-path: 'requirements/*.txt'
|
|
183
|
+
python-version: "3.11" # Minimum of PYVERSIONS
|
|
184
|
+
cache: pip
|
|
185
|
+
cache-dependency-path: 'requirements/*.txt'
|
|
198
186
|
|
|
199
187
|
- name: "Show environment"
|
|
200
188
|
run: |
|
|
@@ -211,7 +199,7 @@ jobs:
|
|
|
211
199
|
python igor.py zip_mods
|
|
212
200
|
|
|
213
201
|
- name: "Download coverage data"
|
|
214
|
-
uses: actions/download-artifact@
|
|
202
|
+
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
215
203
|
with:
|
|
216
204
|
pattern: metacov-*
|
|
217
205
|
merge-multiple: true
|
|
@@ -225,14 +213,14 @@ jobs:
|
|
|
225
213
|
python igor.py combine_html
|
|
226
214
|
|
|
227
215
|
- name: "Upload HTML report"
|
|
228
|
-
uses: actions/upload-artifact@
|
|
216
|
+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
229
217
|
with:
|
|
230
218
|
name: html_report
|
|
231
219
|
path: htmlcov
|
|
232
220
|
include-hidden-files: true
|
|
233
221
|
|
|
234
222
|
- name: "Upload other reports"
|
|
235
|
-
uses: actions/upload-artifact@
|
|
223
|
+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
236
224
|
with:
|
|
237
225
|
name: json_xml
|
|
238
226
|
path: |
|
|
@@ -262,6 +250,14 @@ jobs:
|
|
|
262
250
|
echo '***** Total coverage is less than 90%!'
|
|
263
251
|
exit 1
|
|
264
252
|
fi
|
|
253
|
+
|
|
254
|
+
# Files that have reached 100% coverage should stay that way.
|
|
255
|
+
# shellcheck disable=SC2046
|
|
256
|
+
if ! python lab/goals.py --file 100 $(grep -l -R 'pragma: enforce 100% coverage'); then
|
|
257
|
+
echo '***** Coverage dropped for a 100% file!'
|
|
258
|
+
exit 1
|
|
259
|
+
fi
|
|
260
|
+
|
|
265
261
|
# Absolutely all of our test code should be covered.
|
|
266
262
|
if ! python lab/goals.py --file 100 "tests/test_*.py"; then
|
|
267
263
|
echo '***** Coverage of test files must be 100%!'
|
|
@@ -331,7 +327,7 @@ jobs:
|
|
|
331
327
|
|
|
332
328
|
- name: "Download coverage HTML report"
|
|
333
329
|
if: ${{ github.ref == 'refs/heads/main' }}
|
|
334
|
-
uses: actions/download-artifact@
|
|
330
|
+
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
335
331
|
with:
|
|
336
332
|
name: html_report
|
|
337
333
|
path: reports_repo/${{ env.report_dir }}
|
|
@@ -36,7 +36,7 @@ env:
|
|
|
36
36
|
PIP_DISABLE_PIP_VERSION_CHECK: 1
|
|
37
37
|
# PYVERSIONS: changing the list of versions will change the number of
|
|
38
38
|
# expected distributions. This must match the same number in publish.yml.
|
|
39
|
-
EXPECTED:
|
|
39
|
+
EXPECTED: 119
|
|
40
40
|
|
|
41
41
|
permissions:
|
|
42
42
|
contents: read
|
|
@@ -47,10 +47,10 @@ concurrency:
|
|
|
47
47
|
|
|
48
48
|
jobs:
|
|
49
49
|
wheels:
|
|
50
|
-
name: "${{ matrix.py }} ${{ matrix.os }} ${{ matrix.arch }} wheels"
|
|
50
|
+
name: "${{ matrix.py }} ${{ matrix.platform || matrix.os }} ${{ matrix.arch }} wheels"
|
|
51
51
|
runs-on: "${{ matrix.os }}-${{ matrix.os-version || 'latest' }}"
|
|
52
52
|
env:
|
|
53
|
-
MATRIX_ID: "${{ matrix.py }}-${{ matrix.os }}-${{ matrix.arch }}"
|
|
53
|
+
MATRIX_ID: "${{ matrix.py }}-${{ matrix.platform || matrix.os }}-${{ matrix.arch }}"
|
|
54
54
|
strategy:
|
|
55
55
|
matrix:
|
|
56
56
|
include:
|
|
@@ -79,7 +79,7 @@ jobs:
|
|
|
79
79
|
# # of Python: https://cibuildwheel.readthedocs.io/en/stable/options/#enable
|
|
80
80
|
# # When changing this, also adjust SHIPPING_WHEELS in env.py.
|
|
81
81
|
#
|
|
82
|
-
# pys = ["
|
|
82
|
+
# pys = ["cp311", "cp312", "cp313", "cp314", "cp315"]
|
|
83
83
|
# cipy = "3.11" # PYVERSIONS, default for cibuildwheel
|
|
84
84
|
#
|
|
85
85
|
# # Some OS/arch combinations need overrides for the Python versions:
|
|
@@ -88,6 +88,14 @@ jobs:
|
|
|
88
88
|
# ("windows", "ARM64"): ["cp311", "cp312", "cp313", "cp314", "cp315"],
|
|
89
89
|
# }
|
|
90
90
|
#
|
|
91
|
+
# # Mobile platforms: cibuildwheel only supports these from cp313 onward,
|
|
92
|
+
# # and each tuple key is (os, platform, os-version-or-None).
|
|
93
|
+
# mobile_pys = ["cp313", "cp314", "cp315"]
|
|
94
|
+
# mobile_os_archs = {
|
|
95
|
+
# ("ubuntu", "android", None): ["arm64_v8a", "x86_64"],
|
|
96
|
+
# ("macos", "ios", "26"): ["arm64_iphoneos", "arm64_iphonesimulator"],
|
|
97
|
+
# }
|
|
98
|
+
#
|
|
91
99
|
# #----- ^^^ ---------------------- ^^^ -----
|
|
92
100
|
#
|
|
93
101
|
# import json
|
|
@@ -101,7 +109,7 @@ jobs:
|
|
|
101
109
|
# "cipy": cipy,
|
|
102
110
|
# }
|
|
103
111
|
# if the_os == "macos":
|
|
104
|
-
# them["os-version"] = "
|
|
112
|
+
# them["os-version"] = "26"
|
|
105
113
|
# if the_os == "windows" and the_arch == "ARM64":
|
|
106
114
|
# them["os-version"] = "11-arm"
|
|
107
115
|
# # them["cipy"] = "3.11"
|
|
@@ -111,56 +119,60 @@ jobs:
|
|
|
111
119
|
# if the_arch == "ppc64le":
|
|
112
120
|
# them["os-version"] = "24.04-ppc64le"
|
|
113
121
|
# print(f"- {json.dumps(them)}")
|
|
122
|
+
# for (the_os, the_platform, the_os_version), archs in mobile_os_archs.items():
|
|
123
|
+
# for the_arch in archs:
|
|
124
|
+
# for the_py in mobile_pys:
|
|
125
|
+
# them = {
|
|
126
|
+
# "os": the_os,
|
|
127
|
+
# "py": the_py,
|
|
128
|
+
# "arch": the_arch,
|
|
129
|
+
# "cipy": cipy,
|
|
130
|
+
# "platform": the_platform,
|
|
131
|
+
# }
|
|
132
|
+
# if the_os_version is not None:
|
|
133
|
+
# them["os-version"] = the_os_version
|
|
134
|
+
# print(f"- {json.dumps(them)}")
|
|
114
135
|
# ]]]
|
|
115
|
-
- {"os": "ubuntu", "py": "cp310", "arch": "x86_64", "cipy": "3.11"}
|
|
116
136
|
- {"os": "ubuntu", "py": "cp311", "arch": "x86_64", "cipy": "3.11"}
|
|
117
137
|
- {"os": "ubuntu", "py": "cp312", "arch": "x86_64", "cipy": "3.11"}
|
|
118
138
|
- {"os": "ubuntu", "py": "cp313", "arch": "x86_64", "cipy": "3.11"}
|
|
119
139
|
- {"os": "ubuntu", "py": "cp314", "arch": "x86_64", "cipy": "3.11"}
|
|
120
140
|
- {"os": "ubuntu", "py": "cp315", "arch": "x86_64", "cipy": "3.11"}
|
|
121
|
-
- {"os": "ubuntu", "py": "cp310", "arch": "i686", "cipy": "3.11"}
|
|
122
141
|
- {"os": "ubuntu", "py": "cp311", "arch": "i686", "cipy": "3.11"}
|
|
123
142
|
- {"os": "ubuntu", "py": "cp312", "arch": "i686", "cipy": "3.11"}
|
|
124
143
|
- {"os": "ubuntu", "py": "cp313", "arch": "i686", "cipy": "3.11"}
|
|
125
144
|
- {"os": "ubuntu", "py": "cp314", "arch": "i686", "cipy": "3.11"}
|
|
126
145
|
- {"os": "ubuntu", "py": "cp315", "arch": "i686", "cipy": "3.11"}
|
|
127
|
-
- {"os": "ubuntu", "py": "cp310", "arch": "aarch64", "cipy": "3.11", "os-version": "22.04-arm"}
|
|
128
146
|
- {"os": "ubuntu", "py": "cp311", "arch": "aarch64", "cipy": "3.11", "os-version": "22.04-arm"}
|
|
129
147
|
- {"os": "ubuntu", "py": "cp312", "arch": "aarch64", "cipy": "3.11", "os-version": "22.04-arm"}
|
|
130
148
|
- {"os": "ubuntu", "py": "cp313", "arch": "aarch64", "cipy": "3.11", "os-version": "22.04-arm"}
|
|
131
149
|
- {"os": "ubuntu", "py": "cp314", "arch": "aarch64", "cipy": "3.11", "os-version": "22.04-arm"}
|
|
132
150
|
- {"os": "ubuntu", "py": "cp315", "arch": "aarch64", "cipy": "3.11", "os-version": "22.04-arm"}
|
|
133
|
-
- {"os": "ubuntu", "py": "cp310", "arch": "riscv64", "cipy": "3.11"}
|
|
134
151
|
- {"os": "ubuntu", "py": "cp311", "arch": "riscv64", "cipy": "3.11"}
|
|
135
152
|
- {"os": "ubuntu", "py": "cp312", "arch": "riscv64", "cipy": "3.11"}
|
|
136
153
|
- {"os": "ubuntu", "py": "cp313", "arch": "riscv64", "cipy": "3.11"}
|
|
137
154
|
- {"os": "ubuntu", "py": "cp314", "arch": "riscv64", "cipy": "3.11"}
|
|
138
155
|
- {"os": "ubuntu", "py": "cp315", "arch": "riscv64", "cipy": "3.11"}
|
|
139
|
-
- {"os": "ubuntu", "py": "cp310", "arch": "ppc64le", "cipy": "3.11", "os-version": "24.04-ppc64le"}
|
|
140
156
|
- {"os": "ubuntu", "py": "cp311", "arch": "ppc64le", "cipy": "3.11", "os-version": "24.04-ppc64le"}
|
|
141
157
|
- {"os": "ubuntu", "py": "cp312", "arch": "ppc64le", "cipy": "3.11", "os-version": "24.04-ppc64le"}
|
|
142
158
|
- {"os": "ubuntu", "py": "cp313", "arch": "ppc64le", "cipy": "3.11", "os-version": "24.04-ppc64le"}
|
|
143
159
|
- {"os": "ubuntu", "py": "cp314", "arch": "ppc64le", "cipy": "3.11", "os-version": "24.04-ppc64le"}
|
|
144
160
|
- {"os": "ubuntu", "py": "cp315", "arch": "ppc64le", "cipy": "3.11", "os-version": "24.04-ppc64le"}
|
|
145
|
-
- {"os": "macos", "py": "
|
|
146
|
-
- {"os": "macos", "py": "
|
|
147
|
-
- {"os": "macos", "py": "
|
|
148
|
-
- {"os": "macos", "py": "
|
|
149
|
-
- {"os": "macos", "py": "
|
|
150
|
-
- {"os": "macos", "py": "
|
|
151
|
-
- {"os": "macos", "py": "
|
|
152
|
-
- {"os": "macos", "py": "
|
|
153
|
-
- {"os": "macos", "py": "
|
|
154
|
-
- {"os": "macos", "py": "
|
|
155
|
-
- {"os": "macos", "py": "cp314", "arch": "x86_64", "cipy": "3.11", "os-version": "14"}
|
|
156
|
-
- {"os": "macos", "py": "cp315", "arch": "x86_64", "cipy": "3.11", "os-version": "14"}
|
|
157
|
-
- {"os": "windows", "py": "cp310", "arch": "x86", "cipy": "3.11"}
|
|
161
|
+
- {"os": "macos", "py": "cp311", "arch": "arm64", "cipy": "3.11", "os-version": "26"}
|
|
162
|
+
- {"os": "macos", "py": "cp312", "arch": "arm64", "cipy": "3.11", "os-version": "26"}
|
|
163
|
+
- {"os": "macos", "py": "cp313", "arch": "arm64", "cipy": "3.11", "os-version": "26"}
|
|
164
|
+
- {"os": "macos", "py": "cp314", "arch": "arm64", "cipy": "3.11", "os-version": "26"}
|
|
165
|
+
- {"os": "macos", "py": "cp315", "arch": "arm64", "cipy": "3.11", "os-version": "26"}
|
|
166
|
+
- {"os": "macos", "py": "cp311", "arch": "x86_64", "cipy": "3.11", "os-version": "26"}
|
|
167
|
+
- {"os": "macos", "py": "cp312", "arch": "x86_64", "cipy": "3.11", "os-version": "26"}
|
|
168
|
+
- {"os": "macos", "py": "cp313", "arch": "x86_64", "cipy": "3.11", "os-version": "26"}
|
|
169
|
+
- {"os": "macos", "py": "cp314", "arch": "x86_64", "cipy": "3.11", "os-version": "26"}
|
|
170
|
+
- {"os": "macos", "py": "cp315", "arch": "x86_64", "cipy": "3.11", "os-version": "26"}
|
|
158
171
|
- {"os": "windows", "py": "cp311", "arch": "x86", "cipy": "3.11"}
|
|
159
172
|
- {"os": "windows", "py": "cp312", "arch": "x86", "cipy": "3.11"}
|
|
160
173
|
- {"os": "windows", "py": "cp313", "arch": "x86", "cipy": "3.11"}
|
|
161
174
|
- {"os": "windows", "py": "cp314", "arch": "x86", "cipy": "3.11"}
|
|
162
175
|
- {"os": "windows", "py": "cp315", "arch": "x86", "cipy": "3.11"}
|
|
163
|
-
- {"os": "windows", "py": "cp310", "arch": "AMD64", "cipy": "3.11"}
|
|
164
176
|
- {"os": "windows", "py": "cp311", "arch": "AMD64", "cipy": "3.11"}
|
|
165
177
|
- {"os": "windows", "py": "cp312", "arch": "AMD64", "cipy": "3.11"}
|
|
166
178
|
- {"os": "windows", "py": "cp313", "arch": "AMD64", "cipy": "3.11"}
|
|
@@ -171,7 +183,19 @@ jobs:
|
|
|
171
183
|
- {"os": "windows", "py": "cp313", "arch": "ARM64", "cipy": "3.11", "os-version": "11-arm"}
|
|
172
184
|
- {"os": "windows", "py": "cp314", "arch": "ARM64", "cipy": "3.11", "os-version": "11-arm"}
|
|
173
185
|
- {"os": "windows", "py": "cp315", "arch": "ARM64", "cipy": "3.11", "os-version": "11-arm"}
|
|
174
|
-
|
|
186
|
+
- {"os": "ubuntu", "py": "cp313", "arch": "arm64_v8a", "cipy": "3.11", "platform": "android"}
|
|
187
|
+
- {"os": "ubuntu", "py": "cp314", "arch": "arm64_v8a", "cipy": "3.11", "platform": "android"}
|
|
188
|
+
- {"os": "ubuntu", "py": "cp315", "arch": "arm64_v8a", "cipy": "3.11", "platform": "android"}
|
|
189
|
+
- {"os": "ubuntu", "py": "cp313", "arch": "x86_64", "cipy": "3.11", "platform": "android"}
|
|
190
|
+
- {"os": "ubuntu", "py": "cp314", "arch": "x86_64", "cipy": "3.11", "platform": "android"}
|
|
191
|
+
- {"os": "ubuntu", "py": "cp315", "arch": "x86_64", "cipy": "3.11", "platform": "android"}
|
|
192
|
+
- {"os": "macos", "py": "cp313", "arch": "arm64_iphoneos", "cipy": "3.11", "platform": "ios", "os-version": "26"}
|
|
193
|
+
- {"os": "macos", "py": "cp314", "arch": "arm64_iphoneos", "cipy": "3.11", "platform": "ios", "os-version": "26"}
|
|
194
|
+
- {"os": "macos", "py": "cp315", "arch": "arm64_iphoneos", "cipy": "3.11", "platform": "ios", "os-version": "26"}
|
|
195
|
+
- {"os": "macos", "py": "cp313", "arch": "arm64_iphonesimulator", "cipy": "3.11", "platform": "ios", "os-version": "26"}
|
|
196
|
+
- {"os": "macos", "py": "cp314", "arch": "arm64_iphonesimulator", "cipy": "3.11", "platform": "ios", "os-version": "26"}
|
|
197
|
+
- {"os": "macos", "py": "cp315", "arch": "arm64_iphonesimulator", "cipy": "3.11", "platform": "ios", "os-version": "26"}
|
|
198
|
+
# [[[end]]] (sum: f3kjK8N7/g)
|
|
175
199
|
# ^^^^^^^^^^^^^^^
|
|
176
200
|
# If a check fails and points to this checksum line, it means you edited
|
|
177
201
|
# the matrix directly instead of editing the Python code in the comment
|
|
@@ -212,7 +236,7 @@ jobs:
|
|
|
212
236
|
|
|
213
237
|
- name: "Set up QEMU"
|
|
214
238
|
if: ${{ matrix.arch == 'riscv64' }}
|
|
215
|
-
uses: docker/setup-qemu-action@
|
|
239
|
+
uses: docker/setup-qemu-action@99012661954931238ded8c8b007157a8430204e1 # v4.4.0
|
|
216
240
|
|
|
217
241
|
- name: "Show environment"
|
|
218
242
|
run: |
|
|
@@ -221,10 +245,10 @@ jobs:
|
|
|
221
245
|
|
|
222
246
|
- name: "Build binary wheels"
|
|
223
247
|
env:
|
|
248
|
+
CIBW_PLATFORM: ${{ matrix.platform || 'auto' }}
|
|
224
249
|
CIBW_BUILD: ${{ matrix.py }}*-*
|
|
225
250
|
CIBW_ARCHS: ${{ matrix.arch }}
|
|
226
251
|
CIBW_ENVIRONMENT: PIP_DISABLE_PIP_VERSION_CHECK=1
|
|
227
|
-
CIBW_TEST_COMMAND: python -c "from coverage.tracer import CTracer; print('CTracer OK!')"
|
|
228
252
|
run: |
|
|
229
253
|
python -m cibuildwheel --output-dir wheelhouse
|
|
230
254
|
|
|
@@ -237,7 +261,7 @@ jobs:
|
|
|
237
261
|
python -m twine check wheelhouse/*
|
|
238
262
|
|
|
239
263
|
- name: "Upload binary wheels"
|
|
240
|
-
uses: actions/upload-artifact@
|
|
264
|
+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
241
265
|
with:
|
|
242
266
|
name: dist-${{ env.MATRIX_ID }}
|
|
243
267
|
path: wheelhouse/*.whl
|
|
@@ -278,7 +302,7 @@ jobs:
|
|
|
278
302
|
python -m twine check dist/*
|
|
279
303
|
|
|
280
304
|
- name: "Upload non-binary artifacts"
|
|
281
|
-
uses: actions/upload-artifact@
|
|
305
|
+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
282
306
|
with:
|
|
283
307
|
name: dist-non-binary
|
|
284
308
|
path: dist/*
|
|
@@ -296,7 +320,7 @@ jobs:
|
|
|
296
320
|
id-token: write # Needed for signing artifacts
|
|
297
321
|
steps:
|
|
298
322
|
- name: "Download artifacts"
|
|
299
|
-
uses: actions/download-artifact@
|
|
323
|
+
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
300
324
|
with:
|
|
301
325
|
pattern: dist-*
|
|
302
326
|
merge-multiple: true
|
|
@@ -318,7 +342,7 @@ jobs:
|
|
|
318
342
|
ls -alR
|
|
319
343
|
|
|
320
344
|
- name: "Upload signatures"
|
|
321
|
-
uses: actions/upload-artifact@
|
|
345
|
+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
322
346
|
with:
|
|
323
347
|
name: signatures
|
|
324
348
|
path: "*.sigstore.json"
|
|
@@ -17,7 +17,7 @@ defaults:
|
|
|
17
17
|
env:
|
|
18
18
|
# PYVERSIONS: changing the list of versions will change the number of
|
|
19
19
|
# expected distributions. This must match the same number in kit.yml.
|
|
20
|
-
EXPECTED:
|
|
20
|
+
EXPECTED: 119
|
|
21
21
|
|
|
22
22
|
permissions:
|
|
23
23
|
contents: read
|
|
@@ -69,7 +69,7 @@ jobs:
|
|
|
69
69
|
|
|
70
70
|
steps:
|
|
71
71
|
- name: "Download dists"
|
|
72
|
-
uses: actions/download-artifact@
|
|
72
|
+
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
73
73
|
with:
|
|
74
74
|
repository: "coveragepy/coveragepy"
|
|
75
75
|
run-id: ${{ needs.find-run.outputs.run-id }}
|
|
@@ -110,7 +110,7 @@ jobs:
|
|
|
110
110
|
|
|
111
111
|
steps:
|
|
112
112
|
- name: "Download dists"
|
|
113
|
-
uses: actions/download-artifact@
|
|
113
|
+
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
114
114
|
with:
|
|
115
115
|
repository: "coveragepy/coveragepy"
|
|
116
116
|
run-id: ${{ needs.find-run.outputs.run-id }}
|
|
@@ -82,7 +82,7 @@ jobs:
|
|
|
82
82
|
- name: "Install Python"
|
|
83
83
|
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
84
84
|
with:
|
|
85
|
-
python-version: "3.
|
|
85
|
+
python-version: "3.11" # Minimum of PYVERSIONS
|
|
86
86
|
cache: pip
|
|
87
87
|
cache-dependency-path: 'requirements/*.txt'
|
|
88
88
|
|
|
@@ -112,7 +112,7 @@ jobs:
|
|
|
112
112
|
- name: "Install Python"
|
|
113
113
|
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
114
114
|
with:
|
|
115
|
-
python-version: "3.
|
|
115
|
+
python-version: "3.11" # Minimum of PYVERSIONS
|
|
116
116
|
cache: pip
|
|
117
117
|
cache-dependency-path: 'requirements/*.txt'
|
|
118
118
|
|
|
@@ -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@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
|
|
189
189
|
with:
|
|
190
190
|
enable-cache: false
|
|
191
191
|
|
|
@@ -36,6 +36,7 @@ jobs:
|
|
|
36
36
|
pull-requests: read # Needed for this check to run on pull requests
|
|
37
37
|
outputs:
|
|
38
38
|
run_tests: ${{ steps.filter.outputs.run_tests }}
|
|
39
|
+
run_js_tests: ${{ steps.filter.outputs.run_js_tests }}
|
|
39
40
|
steps:
|
|
40
41
|
- name: "Check out the repo"
|
|
41
42
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
@@ -57,6 +58,12 @@ jobs:
|
|
|
57
58
|
- "tox.ini"
|
|
58
59
|
- "requirements/*.txt"
|
|
59
60
|
- "tests/gold/**"
|
|
61
|
+
run_js_tests:
|
|
62
|
+
- "coverage/htmlfiles/*.js"
|
|
63
|
+
- "tests/js/**"
|
|
64
|
+
- ".github/workflows/testsuite.yml"
|
|
65
|
+
- "tox.ini"
|
|
66
|
+
- "requirements/js.txt"
|
|
60
67
|
|
|
61
68
|
tests:
|
|
62
69
|
name: "${{ matrix.python-version }} on ${{ matrix.os }}"
|
|
@@ -87,7 +94,6 @@ jobs:
|
|
|
87
94
|
# Available versions:
|
|
88
95
|
# https://github.com/actions/python-versions/blob/main/versions-manifest.json
|
|
89
96
|
# https://github.com/actions/setup-python/blob/main/docs/advanced-usage.md#available-versions-of-python-and-pypy
|
|
90
|
-
- "3.10"
|
|
91
97
|
- "3.11"
|
|
92
98
|
- "3.12"
|
|
93
99
|
- "3.13"
|
|
@@ -95,7 +101,6 @@ jobs:
|
|
|
95
101
|
- "3.14t"
|
|
96
102
|
- "3.15"
|
|
97
103
|
- "3.15t"
|
|
98
|
-
- "pypy-3.10"
|
|
99
104
|
- "pypy-3.11"
|
|
100
105
|
|
|
101
106
|
#
|
|
@@ -161,6 +166,40 @@ jobs:
|
|
|
161
166
|
# `exit 1` makes sure that the job remains red with flaky runs
|
|
162
167
|
python -m tox -- -rfsEX --lf -vvvvv && exit 1
|
|
163
168
|
|
|
169
|
+
js_tests:
|
|
170
|
+
name: "JavaScript tests"
|
|
171
|
+
runs-on: ubuntu-latest
|
|
172
|
+
timeout-minutes: 15
|
|
173
|
+
|
|
174
|
+
# Don't run tests if the branch name includes "-notests".
|
|
175
|
+
# Only run tests if files that affect the JavaScript tests have changed.
|
|
176
|
+
needs: changed
|
|
177
|
+
if:
|
|
178
|
+
needs.changed.outputs.run_js_tests == 'true'
|
|
179
|
+
&& !contains(github.ref, '-notests')
|
|
180
|
+
|
|
181
|
+
steps:
|
|
182
|
+
- name: "Check out the repo"
|
|
183
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
184
|
+
with:
|
|
185
|
+
persist-credentials: false
|
|
186
|
+
|
|
187
|
+
- name: "Set up Python"
|
|
188
|
+
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
189
|
+
with:
|
|
190
|
+
python-version: "3.11" # Minimum of PYVERSIONS
|
|
191
|
+
cache: pip
|
|
192
|
+
cache-dependency-path: 'requirements/*.txt'
|
|
193
|
+
|
|
194
|
+
- name: "Install dependencies"
|
|
195
|
+
run: |
|
|
196
|
+
set -xe
|
|
197
|
+
python -m pip install -r requirements/tox.txt
|
|
198
|
+
|
|
199
|
+
- name: "Run the JavaScript tests"
|
|
200
|
+
run: |
|
|
201
|
+
python -m tox -e js
|
|
202
|
+
|
|
164
203
|
# This job aggregates test results. It's the required check for branch protection.
|
|
165
204
|
# https://github.com/marketplace/actions/alls-green#why
|
|
166
205
|
# https://github.com/orgs/community/discussions/33579
|
|
@@ -168,6 +207,7 @@ jobs:
|
|
|
168
207
|
name: "Tests successful"
|
|
169
208
|
needs:
|
|
170
209
|
- tests
|
|
210
|
+
- js_tests
|
|
171
211
|
# Without this, GitHub skips this job when `tests` doesn't succeed, so the
|
|
172
212
|
# gate reports "skipped" instead of failing. `allowed-skips` keeps the
|
|
173
213
|
# deliberate skips (-notests branches, no test-relevant files) passing.
|
|
@@ -178,4 +218,4 @@ jobs:
|
|
|
178
218
|
uses: re-actors/alls-green@b5b5b37504aa4183270bd3d855c52a67f212be35 # v1.3.0
|
|
179
219
|
with:
|
|
180
220
|
jobs: ${{ toJSON(needs) }}
|
|
181
|
-
allowed-skips: tests
|
|
221
|
+
allowed-skips: tests, js_tests
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
.metacov
|
|
11
11
|
.metacov.*
|
|
12
12
|
*.swp
|
|
13
|
+
.envrc
|
|
13
14
|
|
|
14
15
|
# Data files we should ignore in the root, but need for gold files.
|
|
15
16
|
/coverage.xml
|
|
@@ -29,6 +30,7 @@ dist
|
|
|
29
30
|
htmlcov
|
|
30
31
|
MANIFEST
|
|
31
32
|
setuptools-*.egg
|
|
33
|
+
wheelhouse
|
|
32
34
|
.tox
|
|
33
35
|
.noseids
|
|
34
36
|
.cache
|
|
@@ -11,12 +11,11 @@ repos:
|
|
|
11
11
|
- id: check-xml
|
|
12
12
|
- id: check-yaml
|
|
13
13
|
- id: end-of-file-fixer
|
|
14
|
-
exclude: "(status\\.json|\\.min\\.js)$"
|
|
15
14
|
- id: trailing-whitespace
|
|
16
15
|
exclude: "stress_phystoken|\\.py,cover$"
|
|
17
16
|
|
|
18
17
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
19
|
-
rev: v0.
|
|
18
|
+
rev: v0.17.1
|
|
20
19
|
hooks:
|
|
21
20
|
- id: ruff-format
|
|
22
21
|
|
|
@@ -22,6 +22,101 @@ upgrading your version of coverage.py.
|
|
|
22
22
|
|
|
23
23
|
.. start-releases
|
|
24
24
|
|
|
25
|
+
.. _changes_7-17-0:
|
|
26
|
+
|
|
27
|
+
Version 7.17.0 — 2026-10-22
|
|
28
|
+
---------------------------
|
|
29
|
+
|
|
30
|
+
- Dropped support for Python 3.10.
|
|
31
|
+
|
|
32
|
+
- Binary wheels are now provided for iOS and Android. This allows the use of
|
|
33
|
+
the optimized C tracer on mobile platforms.
|
|
34
|
+
|
|
35
|
+
- Fix: three or more levels of nested ``with`` statements could make a ``with``
|
|
36
|
+
line look like a branch with an exit that can never happen. Using the
|
|
37
|
+
sys.monitoring core, these phantom branches were reported as partial. Other
|
|
38
|
+
cores hid the problem but still counted the phantom branches in the total.
|
|
39
|
+
Closes `issue 1987`_.
|
|
40
|
+
|
|
41
|
+
- Fix: a comment or string that merely mentioned ``if True:`` or
|
|
42
|
+
``while True:`` could mark its line as a branch that is known to be partial,
|
|
43
|
+
so a branch that never ran was reported as taken. These built-in patterns
|
|
44
|
+
now only match at the start of the statement. Closes `issue 2314`_.
|
|
45
|
+
|
|
46
|
+
- Fix: region detection missed functions defined in unusual places, such as
|
|
47
|
+
``else`` and ``except`` clauses. This is now fixed.
|
|
48
|
+
|
|
49
|
+
- Fix: recent versions of the lcov tool complain if the same function name
|
|
50
|
+
appears more than once in a report. Python can have multiple same-named
|
|
51
|
+
functions in a few ways, for example, getters/setters or conditionally
|
|
52
|
+
defined functions. These are now disambiguated by adding a ``@<line number>``
|
|
53
|
+
suffix to the function name. Fixes `issue 2335`.
|
|
54
|
+
|
|
55
|
+
- Fix: The "Can't combine statement coverage data with branch data" error now
|
|
56
|
+
names the two data files it couldn't combine. The :ref:`error description
|
|
57
|
+
<error_cant_combine>` in the docs now lists common causes and how to find the
|
|
58
|
+
process that wrote the file.
|
|
59
|
+
|
|
60
|
+
- Fix: at coverage totals close to 0 or 100, the XML report could get incorrect
|
|
61
|
+
``line-rate`` values like ``8.333e-05`` or ``1``. This is now fixed, closing
|
|
62
|
+
`issue 2293`_ and `issue 2294`_.
|
|
63
|
+
|
|
64
|
+
- Fix: a parallel data file saved more than once kept the hash of its first
|
|
65
|
+
save in its file name. Combining could then skip it as a duplicate of another
|
|
66
|
+
file that had the same data at that point, and delete it, losing the data
|
|
67
|
+
recorded after the first save. Each save now updates the hash. This had been
|
|
68
|
+
a problem since 7.13.1. Fixes `issue 2338`_.
|
|
69
|
+
|
|
70
|
+
- Fixes for obscure but legal file names:
|
|
71
|
+
|
|
72
|
+
- File names (and plugin names) can contain control characters, which are
|
|
73
|
+
legal in POSIX paths but unsafe in reports: in XML 1.0 they make the
|
|
74
|
+
document non-well-formed, and in a terminal they act as escape sequences
|
|
75
|
+
(colors, title/clipboard sequences, cursor moves that forge output). Now
|
|
76
|
+
the XML report, the text and Markdown summary reports, and ``coverage debug
|
|
77
|
+
data`` replace non-printable characters in names. Printable names are
|
|
78
|
+
unchanged.
|
|
79
|
+
|
|
80
|
+
- A file pattern (from ``include``, ``omit``, or a ``[paths]`` alias)
|
|
81
|
+
containing a newline sent the glob-to-regex translation into an infinite
|
|
82
|
+
loop, hanging the process. Newlines in patterns are now handled like any
|
|
83
|
+
other character.
|
|
84
|
+
|
|
85
|
+
- Fixes in the implementation of the C tracer:
|
|
86
|
+
|
|
87
|
+
- If a plugin's ``dynamic_source_filename`` method raised an exception, lines
|
|
88
|
+
in that function could be recorded as belonging to a different file. Also
|
|
89
|
+
fixed some minor memory leaks in the C tracer.
|
|
90
|
+
|
|
91
|
+
- The refcount of ``None`` was mismanaged during function calls, including
|
|
92
|
+
comprehensions. This was unlikely to cause an actual problem, but is now
|
|
93
|
+
fixed. Thanks, Andrew Dalke.
|
|
94
|
+
|
|
95
|
+
- The C tracer held borrowed references to dictionary values, which was
|
|
96
|
+
unsafe on free-threaded Python. Now it takes its own references.
|
|
97
|
+
|
|
98
|
+
- An internal error while recording a new file could be reported as a
|
|
99
|
+
confusing ``SystemError`` instead of the actual exception.
|
|
100
|
+
|
|
101
|
+
- Performance: the text summary report (``coverage report``) held on to every
|
|
102
|
+
file's parsed source until it finished, so its memory use grew with the size
|
|
103
|
+
of the project: ten times or more what 7.14 used on large projects. Now it
|
|
104
|
+
keeps only what it needs to print. Fixes `issue 2277`_.
|
|
105
|
+
|
|
106
|
+
- Performance: HTML reports should be about 5% faster to produce.
|
|
107
|
+
|
|
108
|
+
- Kept the political banner in the README. Closes `issue 2344`_.
|
|
109
|
+
|
|
110
|
+
.. _issue 1987: https://github.com/coveragepy/coveragepy/issues/1987
|
|
111
|
+
.. _issue 2277: https://github.com/coveragepy/coveragepy/issues/2277
|
|
112
|
+
.. _issue 2293: https://github.com/coveragepy/coveragepy/issues/2293
|
|
113
|
+
.. _issue 2294: https://github.com/coveragepy/coveragepy/issues/2294
|
|
114
|
+
.. _issue 2314: https://github.com/coveragepy/coveragepy/issues/2314
|
|
115
|
+
.. _issue 2335: https://github.com/coveragepy/coveragepy/issues/2335
|
|
116
|
+
.. _issue 2338: https://github.com/coveragepy/coveragepy/issues/2338
|
|
117
|
+
.. _issue 2344: https://github.com/coveragepy/coveragepy/issues/2344
|
|
118
|
+
|
|
119
|
+
|
|
25
120
|
.. _changes_7-16-2:
|
|
26
121
|
|
|
27
122
|
Version 7.16.2 — 2026-09-27
|
|
@@ -57,7 +152,17 @@ Version 7.16.1 — 2026-09-13
|
|
|
57
152
|
- Fix: using :meth:`.CoverageData.update` twice on an in-memory database would
|
|
58
153
|
fail, as described in `issue 2279`_. This is now fixed.
|
|
59
154
|
|
|
155
|
+
- Fix: the Total row in the footer of the HTML report's index page was
|
|
156
|
+
recomputed in JavaScript with rounding that could disagree with the total
|
|
157
|
+
the server rendered in the heading, including showing ``100%`` when coverage
|
|
158
|
+
was not complete. The footer now clamps values the way the rest of the
|
|
159
|
+
report does, and when nothing is filtered out it is shown exactly as the
|
|
160
|
+
server rendered it, so the two can't disagree. That also keeps rows the
|
|
161
|
+
report omits (``--skip-covered`` drops fully covered files) in the total.
|
|
162
|
+
Fixes `issue 2256`_.
|
|
163
|
+
|
|
60
164
|
.. _issue 1563: https://github.com/coveragepy/coveragepy/issues/1563
|
|
165
|
+
.. _issue 2256: https://github.com/coveragepy/coveragepy/issues/2256
|
|
61
166
|
.. _pull 2269: https://github.com/coveragepy/coveragepy/pull/2269
|
|
62
167
|
.. _issue 2279: https://github.com/coveragepy/coveragepy/issues/2279
|
|
63
168
|
|