From 7d9850c6a92c27c53068f6493925e1fbca79087d Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Fri, 13 Jun 2025 09:05:29 -0400 Subject: [PATCH 01/11] build: bump version to 7.9.2 --- CHANGES.rst | 6 ++++++ coverage/version.py | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 909cc5c8a..e186939fc 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -20,6 +20,12 @@ upgrading your version of coverage.py. .. Version 9.8.1 — 2027-07-27 .. -------------------------- +Unreleased +---------- + +Nothing yet. + + .. start-releases .. _changes_7-9-1: diff --git a/coverage/version.py b/coverage/version.py index aef3c5ddb..4c3296403 100644 --- a/coverage/version.py +++ b/coverage/version.py @@ -8,8 +8,8 @@ # version_info: same semantics as sys.version_info. # _dev: the .devN suffix if any. -version_info = (7, 9, 1, "final", 0) -_dev = 0 +version_info = (7, 9, 2, "alpha", 0) +_dev = 1 def _make_version( From 42bf82c3ed409c308b2f2437fac87cb5b8d6fad9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 15 Jun 2025 10:40:29 -0400 Subject: [PATCH 02/11] chore: bump the action-dependencies group with 2 updates (#1985) Bumps the action-dependencies group with 2 updates: [github/codeql-action](https://github.com/github/codeql-action) and [actions/attest-build-provenance](https://github.com/actions/attest-build-provenance). Updates `github/codeql-action` from 3.28.18 to 3.29.0 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/ff0a06e83cb2de871e5a09832bc6a81e7276941f...ce28f5bb42b7a9f2c824e633a3f6ee835bab6858) Updates `actions/attest-build-provenance` from 2.3.0 to 2.4.0 - [Release notes](https://github.com/actions/attest-build-provenance/releases) - [Changelog](https://github.com/actions/attest-build-provenance/blob/main/RELEASE.md) - [Commits](https://github.com/actions/attest-build-provenance/compare/db473fddc028af60658334401dc6fa3ffd8669fd...e8998f949152b193b063cb0ec769d69d929409be) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.29.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: action-dependencies - dependency-name: actions/attest-build-provenance dependency-version: 2.4.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: action-dependencies ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/publish.yml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 48f9e10b0..a88a80f3e 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -51,7 +51,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3 + uses: github/codeql-action/init@ce28f5bb42b7a9f2c824e633a3f6ee835bab6858 # v3 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -62,7 +62,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3 + uses: github/codeql-action/autobuild@ce28f5bb42b7a9f2c824e633a3f6ee835bab6858 # v3 # â„šī¸ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -76,4 +76,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3 + uses: github/codeql-action/analyze@ce28f5bb42b7a9f2c824e633a3f6ee835bab6858 # v3 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 7533c9840..18a393302 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -81,7 +81,7 @@ jobs: files=$(ls dist 2>/dev/null | wc -l) && [ "$files" -eq $EXPECTED ] || exit 1 - name: "Generate attestations" - uses: actions/attest-build-provenance@db473fddc028af60658334401dc6fa3ffd8669fd # v2.3.0 + uses: actions/attest-build-provenance@e8998f949152b193b063cb0ec769d69d929409be # v2.4.0 with: subject-path: "dist/*" @@ -121,7 +121,7 @@ jobs: files=$(ls dist 2>/dev/null | wc -l) && [ "$files" -eq $EXPECTED ] || exit 1 - name: "Generate attestations" - uses: actions/attest-build-provenance@db473fddc028af60658334401dc6fa3ffd8669fd # v2.3.0 + uses: actions/attest-build-provenance@e8998f949152b193b063cb0ec769d69d929409be # v2.4.0 with: subject-path: "dist/*" From 614dfbf059002a832b187fe8d14f635ee64afb0b Mon Sep 17 00:00:00 2001 From: Itamar Oren Date: Sun, 15 Jun 2025 12:55:49 -0700 Subject: [PATCH 03/11] fix: enable measuring test coverage for Python archive (.par) files (#1984) ".par" files are another common(?) (at least at Meta) zip-based binary format for python applications. This change enables coverage to unpack and use the unpacked files under any .par archives as source files. we've been carrying this patch for years, so I thought I'd try to upstream it, as it could benefit any PAR users out there (and should be harmless for anyone else). --- coverage/files.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coverage/files.py b/coverage/files.py index 21ba3f167..bdc3633b5 100644 --- a/coverage/files.py +++ b/coverage/files.py @@ -166,7 +166,7 @@ def zip_location(filename: str) -> tuple[str, str] | None: name is in the zipfile. """ - for ext in [".zip", ".whl", ".egg", ".pex"]: + for ext in [".zip", ".whl", ".egg", ".pex", ".par"]: zipbase, extension, inner = filename.partition(ext + sep(filename)) if extension: zipfile = zipbase + ext From 279310a8f08b742072915ff88b6773a70ed3095d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 22 Jun 2025 09:37:09 -0400 Subject: [PATCH 04/11] chore: bump the action-dependencies group with 2 updates (#1988) Bumps the action-dependencies group with 2 updates: [sigstore/gh-action-sigstore-python](https://github.com/sigstore/gh-action-sigstore-python) and [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv). Updates `sigstore/gh-action-sigstore-python` from 3.0.0 to 3.0.1 - [Release notes](https://github.com/sigstore/gh-action-sigstore-python/releases) - [Changelog](https://github.com/sigstore/gh-action-sigstore-python/blob/main/CHANGELOG.md) - [Commits](https://github.com/sigstore/gh-action-sigstore-python/compare/f514d46b907ebcd5bedc05145c03b69c1edd8b46...f7ad0af51a5648d09a20d00370f0a91c3bdf8f84) Updates `astral-sh/setup-uv` from 6.1.0 to 6.3.0 - [Release notes](https://github.com/astral-sh/setup-uv/releases) - [Commits](https://github.com/astral-sh/setup-uv/compare/f0ec1fc3b38f5e7cd731bb6ce540c5af426746bb...445689ea25e0de0a23313031f5fe577c74ae45a1) --- updated-dependencies: - dependency-name: sigstore/gh-action-sigstore-python dependency-version: 3.0.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: action-dependencies - dependency-name: astral-sh/setup-uv dependency-version: 6.3.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: action-dependencies ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/kit.yml | 2 +- .github/workflows/quality.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/kit.yml b/.github/workflows/kit.yml index 0fd0534ea..9447a651a 100644 --- a/.github/workflows/kit.yml +++ b/.github/workflows/kit.yml @@ -324,7 +324,7 @@ jobs: files=$(ls coverage-* 2>/dev/null | wc -l) && [ "$files" -eq $EXPECTED ] || exit 1 - name: "Sign artifacts" - uses: sigstore/gh-action-sigstore-python@f514d46b907ebcd5bedc05145c03b69c1edd8b46 # v3.0.0 + uses: sigstore/gh-action-sigstore-python@f7ad0af51a5648d09a20d00370f0a91c3bdf8f84 # v3.0.1 with: inputs: coverage-*.* diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml index 0e1650fed..fc2dbb273 100644 --- a/.github/workflows/quality.yml +++ b/.github/workflows/quality.yml @@ -173,7 +173,7 @@ jobs: persist-credentials: false - name: Install the latest version of uv - uses: astral-sh/setup-uv@f0ec1fc3b38f5e7cd731bb6ce540c5af426746bb #v6.1.0 + uses: astral-sh/setup-uv@445689ea25e0de0a23313031f5fe577c74ae45a1 #v6.3.0 with: enable-cache: false From a3d00d521a8d49c133b773bcbc22ee7d0f839f93 Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Thu, 26 Jun 2025 18:20:28 -0400 Subject: [PATCH 05/11] build: workflow jobs should have names --- .github/workflows/dependency-review.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index 4ba98033d..070b5ff07 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -19,6 +19,7 @@ permissions: jobs: dependency-review: + name: "Review dependencies" if: github.repository_owner == 'nedbat' runs-on: ubuntu-latest steps: From 678ec80b42116b790ee30cb8ec638a0dda96927c Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Wed, 2 Jul 2025 19:15:03 -0400 Subject: [PATCH 06/11] build: use pyenv for nightly builds. Thanks, Paul Timmins Deadsnakes was giving me too-old builds, and I can't understand why. So switch to pyenv instead. --- .github/workflows/python-nightly.yml | 89 +++++++++++----------------- CONTRIBUTORS.txt | 1 + 2 files changed, 36 insertions(+), 54 deletions(-) diff --git a/.github/workflows/python-nightly.yml b/.github/workflows/python-nightly.yml index c6dc6a7f3..6eaee452d 100644 --- a/.github/workflows/python-nightly.yml +++ b/.github/workflows/python-nightly.yml @@ -31,52 +31,29 @@ concurrency: jobs: tests: - name: "${{ matrix.python-version }}${{ matrix.nogil && ' nogil' || '' }} on ${{ matrix.os-short }}" + name: "${{ matrix.python-version }}" runs-on: "${{ matrix.os }}" # If it doesn't finish in an hour, it's not going to. Don't spin for six # hours needlessly. timeout-minutes: 60 env: - TOX_GH_MAJOR_MINOR: "${{ matrix.python-version }}${{ matrix.nogil && 't' || '' }}" + TOX_GH_MAJOR_MINOR: "${{ matrix.python-version }}" strategy: matrix: os: - # Choose a recent Ubuntu that deadsnakes still builds all the versions for. - # For example, deadsnakes doesn't provide 3.10 nightly for 22.04 (jammy) - # because jammy ships 3.10, and deadsnakes doesn't want to clobber it. - # https://launchpad.net/~deadsnakes/+archive/ubuntu/nightly/+packages - # https://github.com/deadsnakes/issues/issues/234 - # See https://github.com/deadsnakes/nightly for the source of the nightly - # builds. - # bionic: 18, focal: 20, jammy: 22, noble: 24 - - "ubuntu-22.04" - os-short: - - "ubuntu" + - "ubuntu-latest" python-version: # When changing this list, be sure to check the [gh] list in # tox.ini so that tox will run properly. PYVERSIONS - # Available versions: - # https://launchpad.net/~deadsnakes/+archive/ubuntu/nightly/+packages - "3.12" - "3.13" + - "3.13t" - "3.14" + - "3.14t" - "3.15" - # https://github.com/actions/setup-python#available-versions-of-pypy - - "pypy-3.11" - nogil: - - false - - true - # include: - # - python-version: "pypy-3.11" - # os: "windows-latest" - # os-short: "windows" - exclude: - - python-version: "3.12" - nogil: true - - python-version: "pypy-3.11" - nogil: true + - "3.15t" fail-fast: false @@ -86,18 +63,28 @@ jobs: with: persist-credentials: false - - name: "Install ${{ matrix.python-version }} with deadsnakes" - uses: deadsnakes/action@e640ac8743173a67cca4d7d77cd837e514bf98e8 # v3.2.0 - if: "!startsWith(matrix.python-version, 'pypy-')" - with: - python-version: "${{ matrix.python-version }}-dev" - nogil: "${{ matrix.nogil || false }}" + - name: "Install system dependencies" + run: | + sudo sed -i.bak 's/^Types: deb$/Types: deb deb-src/' /etc/apt/sources.list.d/ubuntu.sources + sudo apt-get update + sudo apt-get build-dep -y python3 - - name: "Install ${{ matrix.python-version }} with setup-python" - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 - if: "startsWith(matrix.python-version, 'pypy-')" - with: - python-version: "${{ matrix.python-version }}-nightly" + - name: "Install pyenv" + run: | + curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash + + - name: "Build Python ${{ matrix.python-version }}-dev" + env: + PYVER: "${{ matrix.python-version }}-dev" + #PYTHON_CONFIGURE_OPTS: "--enable-shared --disable-test-modules" + run: | + set -xe + export PYENV_ROOT="$HOME/.pyenv" + export PATH="$PYENV_ROOT/bin:$PATH" + echo "$PYENV_ROOT/shims:$PYENV_ROOT/bin" >> $GITHUB_PATH + pyenv install $PYVER -v + pyenv global $PYVER + pyenv rehash - name: "Show diagnostic info" run: | @@ -110,21 +97,15 @@ jobs: python -m coverage debug pybehave env | sort - - name: "Check build recency" - shell: python + - name: "Check the Python version" + env: + EXPECTED: "${{ matrix.python-version }}" run: | - import platform - from datetime import datetime - for fmt in ["%b %d %Y %H:%M:%S", "%b %d %Y"]: - try: - built = datetime.strptime(platform.python_build()[1], fmt) - except ValueError: - continue - days = (datetime.now() - built).days - impl = platform.python_implementation() - recency = 7 if (impl == "CPython") else 21 - print(f"Days since {impl} was built: {days}, need within {recency}") - assert days <= recency + python -c " + import sys + assert sys.version.startswith('$EXPECTED'.strip('t')) + assert getattr(sys, '_is_gil_enabled', lambda: True)() == (not '$EXPECTED'.endswith('t')) + " - name: "Install dependencies" run: | diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt index bd83cfb3f..c0ea942a1 100644 --- a/CONTRIBUTORS.txt +++ b/CONTRIBUTORS.txt @@ -190,6 +190,7 @@ Ori Avtalion Pablo Carballo Pankaj Pandey Patrick Mezard +Paul Timmins Pavel Tsialnou Peter Baughman Peter Ebden From 88dcaa21727a8670e0eb663cae540760b1f04a6d Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Wed, 2 Jul 2025 19:44:15 -0400 Subject: [PATCH 07/11] fix: assume a missing line number is intra-line. #1991 A bytecode is missing a line number. This seems to happen with conditionals within a line, so assume the missing line number means we aren't branching from one line to another. I wrote a CPython bug about the missing line number: https://github.com/python/cpython/issues/136190 --- CHANGES.rst | 8 +++++++- coverage/sysmon.py | 4 ++-- tests/test_arcs.py | 14 ++++++++++++++ 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index e186939fc..f5d5daa9c 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -23,7 +23,13 @@ upgrading your version of coverage.py. Unreleased ---------- -Nothing yet. +- Fix: complex conditionals within a line might cause a KeyError when using + sys.monitoring, as reported in `issue 1991`_. This is now fixed. + +- Fix: we can now measure coverage for code in Python archive (.par) files. + +.. _issue 1991: https://github.com/nedbat/coveragepy/issues/1991 + .. start-releases diff --git a/coverage/sysmon.py b/coverage/sysmon.py index 2c4602765..94b28b9ff 100644 --- a/coverage/sysmon.py +++ b/coverage/sysmon.py @@ -448,8 +448,8 @@ def sysmon_branch_either( # This could be an exception jumping from line to line. assert code_info.byte_to_line is not None l1 = code_info.byte_to_line[instruction_offset] - l2 = code_info.byte_to_line[destination_offset] - if l1 != l2: + l2 = code_info.byte_to_line.get(destination_offset) + if l2 is not None and l1 != l2: arc = (l1, l2) code_info.file_data.add(arc) # type: ignore # log(f"adding unforeseen {arc=}") diff --git a/tests/test_arcs.py b/tests/test_arcs.py index 966f80241..c069a39a7 100644 --- a/tests/test_arcs.py +++ b/tests/test_arcs.py @@ -181,6 +181,20 @@ def foo(x): branchz_missing="", ) + def test_bug_1991(self) -> None: + # A bytecode was missing a line number, causing a KeyError in sysmon.py. + self.check_coverage("""\ + def func(x, y): + for size in (x or ()) if y else (): + print(size) + + func([5], True) + """, + branchz="2-1 23", + branchz_missing="", + ) + assert self.stdout() == "5\n" + class WithTest(CoverageTest): """Arc-measuring tests involving context managers.""" From 9a8d9b637406334c5ef3fdf8d574d3e5c54aa66c Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Thu, 3 Jul 2025 05:53:20 -0400 Subject: [PATCH 08/11] docs: add pull request link --- CHANGES.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGES.rst b/CHANGES.rst index f5d5daa9c..2d2efa673 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -27,11 +27,12 @@ Unreleased sys.monitoring, as reported in `issue 1991`_. This is now fixed. - Fix: we can now measure coverage for code in Python archive (.par) files. + Thanks, `Itamer Oren `_. +.. _pull 1984: https://github.com/nedbat/coveragepy/pull/1984 .. _issue 1991: https://github.com/nedbat/coveragepy/issues/1991 - .. start-releases .. _changes_7-9-1: From 35305c350fb08ea02a723c91b0eb84ab14b770bd Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Thu, 3 Jul 2025 06:03:11 -0400 Subject: [PATCH 09/11] docs: prep for 7.9.2 --- CHANGES.rst | 10 ++++++---- coverage/version.py | 4 ++-- doc/conf.py | 6 +++--- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 2d2efa673..19666e165 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -20,8 +20,12 @@ upgrading your version of coverage.py. .. Version 9.8.1 — 2027-07-27 .. -------------------------- -Unreleased ----------- +.. start-releases + +.. _changes_7-9-2: + +Version 7.9.2 — 2025-07-03 +-------------------------- - Fix: complex conditionals within a line might cause a KeyError when using sys.monitoring, as reported in `issue 1991`_. This is now fixed. @@ -33,8 +37,6 @@ Unreleased .. _issue 1991: https://github.com/nedbat/coveragepy/issues/1991 -.. start-releases - .. _changes_7-9-1: Version 7.9.1 — 2025-06-13 diff --git a/coverage/version.py b/coverage/version.py index 4c3296403..2ebe99b1f 100644 --- a/coverage/version.py +++ b/coverage/version.py @@ -8,8 +8,8 @@ # version_info: same semantics as sys.version_info. # _dev: the .devN suffix if any. -version_info = (7, 9, 2, "alpha", 0) -_dev = 1 +version_info = (7, 9, 2, "final", 0) +_dev = 0 def _make_version( diff --git a/doc/conf.py b/doc/conf.py index ce73075e0..6fee3cd3f 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -67,11 +67,11 @@ # @@@ editable copyright = "2009–2025, Ned Batchelder" # pylint: disable=redefined-builtin # The short X.Y.Z version. -version = "7.9.1" +version = "7.9.2" # The full version, including alpha/beta/rc tags. -release = "7.9.1" +release = "7.9.2" # The date of release, in "monthname day, year" format. -release_date = "June 13, 2025" +release_date = "July 3, 2025" # @@@ end rst_epilog = f""" From b24cf7ef3968ba86ebe3c3d4ca8ae3af82d6dc8c Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Thu, 3 Jul 2025 06:03:27 -0400 Subject: [PATCH 10/11] docs: sample HTML for 7.9.2 --- doc/sample_html/class_index.html | 8 ++++---- doc/sample_html/function_index.html | 8 ++++---- doc/sample_html/index.html | 8 ++++---- doc/sample_html/status.json | 2 +- doc/sample_html/z_7b071bdc2a35fa80___init___py.html | 8 ++++---- doc/sample_html/z_7b071bdc2a35fa80___main___py.html | 8 ++++---- doc/sample_html/z_7b071bdc2a35fa80_cogapp_py.html | 8 ++++---- doc/sample_html/z_7b071bdc2a35fa80_hashhandler_py.html | 8 ++++---- doc/sample_html/z_7b071bdc2a35fa80_makefiles_py.html | 8 ++++---- doc/sample_html/z_7b071bdc2a35fa80_test_cogapp_py.html | 8 ++++---- doc/sample_html/z_7b071bdc2a35fa80_test_makefiles_py.html | 8 ++++---- .../z_7b071bdc2a35fa80_test_whiteutils_py.html | 8 ++++---- doc/sample_html/z_7b071bdc2a35fa80_utils_py.html | 8 ++++---- doc/sample_html/z_7b071bdc2a35fa80_whiteutils_py.html | 8 ++++---- 14 files changed, 53 insertions(+), 53 deletions(-) diff --git a/doc/sample_html/class_index.html b/doc/sample_html/class_index.html index a6e0b4bf7..de94105ee 100644 --- a/doc/sample_html/class_index.html +++ b/doc/sample_html/class_index.html @@ -56,8 +56,8 @@

Classes

- coverage.py v7.9.1, - created at 2025-06-13 08:29 -0400 + coverage.py v7.9.2, + created at 2025-07-03 06:03 -0400

@@ -567,8 +567,8 @@

- coverage.py v7.9.1, - created at 2025-06-13 08:29 -0400 + coverage.py v7.9.2, + created at 2025-07-03 06:03 -0400

diff --git a/doc/sample_html/z_7b071bdc2a35fa80_hashhandler_py.html b/doc/sample_html/z_7b071bdc2a35fa80_hashhandler_py.html index c67c8648b..91e030904 100644 --- a/doc/sample_html/z_7b071bdc2a35fa80_hashhandler_py.html +++ b/doc/sample_html/z_7b071bdc2a35fa80_hashhandler_py.html @@ -66,8 +66,8 @@

^ index     » next       - coverage.py v7.9.1, - created at 2025-06-13 08:29 -0400 + coverage.py v7.9.2, + created at 2025-07-03 06:03 -0400