Update dependency coverage to v7.10.6 #121

Open
renovate wants to merge 1 commit from renovate/coverage-7.x into master
Collaborator

This PR contains the following updates:

Package Change Age Confidence
coverage ==7.4.0 -> ==7.10.6 age confidence

Release Notes

nedbat/coveragepy (coverage)

v7.10.6

Compare Source

  • Fix: source directories were not properly communicated to subprocesses
    that ran in different directories, as reported in issue 1499_. This is now
    fixed.

  • Performance: Alex Gaynor continues fine-tuning <pull 2038_>_ the speed of
    combination, especially with many contexts.

.. _issue 1499: #​1499
.. _pull 2038: #​2038

.. _changes_7-10-5:

v7.10.5

Compare Source

  • Big speed improvements for coverage combine: it's now about twice as
    fast! Huge thanks to Alex Gaynor for pull requests 2032 <pull 2032_>,
    2033 <pull 2033_>
    , and 2034 <pull 2034_>_.

.. _pull 2032: #​2032
.. _pull 2033: #​2033
.. _pull 2034: #​2034

.. _changes_7-10-4:

v7.10.4

Compare Source

  • Added patch = fork for times when the built-in forking support is
    insufficient.

  • Fix: patch = execv also inherits the entire coverage configuration now.

.. _changes_7-10-3:

v7.10.3

Compare Source

  • Fixes for patch = subprocess:

    • If subprocesses spawned yet more subprocesses simultaneously, some coverage
      could be missed. This is now fixed, closing issue 2024_.

    • If subprocesses were created in other directories, their data files were
      stranded there and not combined into the totals, as described in issue 2025_. This is now fixed.

    • On Windows (or maybe only some Windows?) the patch would fail with a
      ModuleNotFound error trying to import coverage. This is now fixed,
      closing issue 2022_.

    • Originally only options set in the coverage configuration file would apply
      to subprocesses. Options set on the coverage run command line (such as
      --branch) wouldn't be communicated to the subprocesses. This could
      lead to combining failures, as described in issue 2021_. Now the entire
      configuration is used in subprocesses, regardless of its origin.

    • Added debug=patch to help diagnose problems.

  • Fix: really close all SQLite databases, even in-memory ones. Closes issue 2017_.

.. _issue 2017: #​2017
.. _issue 2021: #​2021
.. _issue 2022: #​2022
.. _issue 2024: #​2024
.. _issue 2025: #​2025

.. _changes_7-10-2:

v7.10.2

Compare Source

  • Fix: some code with NOP bytecodes could report missing branches that are
    actually executed. This is now fixed, closing issue 1999_. Python 3.9
    still shows the problem.

.. _issue 1999: #​1999

.. _changes_7-10-1:

v7.10.1

Compare Source

  • Fix: the exclusion for if TYPE_CHECKING: was wrong: it marked the branch
    as partial, but it should have been a line exclusion so the entire clause
    would be excluded. Improves issue 831_.

  • Fix: changed where .pth files are written for patch = subprocess, closing
    issue 2006_.

.. _issue 2006: #​2006

.. _changes_7-10-0:

v7.10.0

Compare Source

  • A new configuration option: ":ref:config_run_patch" specifies named patches
    to work around some limitations in coverage measurement. These patches are
    available:

    • patch = _exit lets coverage save its data even when :func:os._exit() <python:os._exit> is used to abruptly end the process. This closes
      long-standing issue 310_ as well as its duplicates: issue 312, issue 1673, issue 1845, and issue 1941.

    • patch = subprocess measures coverage in Python subprocesses created
      with :mod:subprocess, :func:os.system, or one of the :func:execv <python:os.execl> or :func:spawnv <python:os.spawnl> family of
      functions. Closes old issue 367, its duplicate issue 378 and old
      issue 689_.

    • patch = execv adjusts the :func:execv <python:os.execl> family of
      functions to save coverage data before ending the current program and
      starting the next. Not available on Windows. Closes issue 43_ after 15
      years!

  • The HTML report now dimly colors subsequent lines in multi-line statements.
    They used to have no color. This gives a better indication of the amount of
    code missing in the report. Closes issue 1308_.

  • Two new exclusion patterns are part of the defaults: ... is automatically
    excluded as a line and if TYPE_CHECKING: is excluded as a branch. Closes
    issue 831_.

  • A new command-line option: --save-signal=USR1 specifies a signal that
    coverage.py will listen for. When the signal is sent, the coverage data will
    be saved. This makes it possible to save data from within long-running
    processes. Thanks, Arkady Gilinsky <pull 1998_>_.

  • A new configuration option: ":ref:config_report_partial_also" is a list of
    regexes to add as pragmas for partial branches. This parallels the
    ":ref:config_report_exclude_also" setting for adding line exclusion
    patterns.

  • A few file path configuration settings didn't allow for tilde expansion:
    :ref:config_json_output, :ref:config_lcov_output and
    :ref:config_run_debug_file. This is now fixed.

  • Wheels are included for 3.14 now that 3.14 rc1 is available.

  • We no longer ship a PyPy-specific wheel. PyPy will install the pure-Python
    wheel. Closes issue 2001_.

  • In the very unusual situation of not having a current frame, coverage no
    longer crashes when using the sysmon core, fixing issue 2005_.

.. _issue 43: #​43
.. _issue 310: #​310
.. _issue 312: #​312
.. _issue 367: #​367
.. _issue 378: #​378
.. _issue 689: #​689
.. _issue 831: #​831
.. _issue 1308: #​1308
.. _issue 1673: #​1673
.. _issue 1845: #​1845
.. _issue 1941: #​1941
.. _pull 1998: #​1998
.. _issue 2001: #​2001
.. _issue 2005: #​2005

.. _changes_7-9-2:

v7.9.2

Compare Source

  • 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.
    Thanks, Itamer Oren <pull 1984_>_.

.. _pull 1984: #​1984
.. _issue 1991: #​1991

.. _changes_7-9-1:

v7.9.1

Compare Source

  • The "no-ctracer" warning is not issued for Python pre-release versions.
    Coverage doesn't ship compiled wheels for those versions, so this was far too
    noisy.

  • On Python 3.14+, the "sysmon" core is now the default if it's supported for
    your configuration. Plugins and dynamic contexts are still not supported
    with it.

.. _changes_7-9-0:

v7.9.0

Compare Source

  • Added a [run] core configuration setting to specify the measurement core,
    which was previously only available through the COVERAGE_CORE environment
    variable. Finishes issue 1746_.

  • Fixed incorrect rendering of f-strings with doubled braces, closing issue 1980_.

  • If the C tracer core can't be imported, a warning ("no-ctracer") is issued
    with the reason.

  • The C tracer core extension module now conforms to PEP 489, closing issue 1977. Thanks, Adam Turner <pull 1978_>_.

  • Fixed a "ValueError: min() arg is an empty sequence" error caused by strange
    empty modules, found by oss-fuzz_.

.. _issue 1746: #​1746
.. _issue 1977: #​1977
.. _pull 1978: #​1978
.. _issue 1980: #​1980
.. _PEP 489: https://peps.python.org/pep-0489
.. _oss-fuzz: https://google.github.io/oss-fuzz/

.. _changes_7-8-2:

v7.8.2

Compare Source

  • Wheels are provided for Windows ARM64 on Python 3.11, 3.12, and 3.13.
    Thanks, Finn Womack <pull 1972_>_.

.. _issue 1971: #​1971
.. _pull 1972: #​1972

.. _changes_7-8-1:

v7.8.1

Compare Source

  • A number of EncodingWarnings were fixed that could appear if you've enabled
    PYTHONWARNDEFAULTENCODING, fixing issue 1966. Thanks, Henry Schreiner <pull 1967_>.

  • Fixed a race condition when using sys.monitoring with free-threading Python,
    closing issue 1970_.

.. _issue 1966: #​1966
.. _pull 1967: #​1967
.. _issue 1970: #​1970

.. _changes_7-8-0:

v7.8.0

Compare Source

  • Added a new source_dirs setting for symmetry with the existing
    source_pkgs setting. It's preferable to the existing source setting,
    because you'll get a clear error when directories don't exist. Fixes issue 1942. Thanks, Jeremy Fleischman <pull 1943_>.

  • Fix: the PYTHONSAFEPATH environment variable new in Python 3.11 is properly
    supported, closing issue 1696. Thanks, Philipp A. <pull 1700_>. This
    works properly except for a detail when using the coverage command on
    Windows. There you can use python -m coverage instead if you need exact
    emulation.

.. _issue 1696: #​1696
.. _pull 1700: #​1700
.. _issue 1942: #​1942
.. _pull 1943: #​1943

.. _changes_7-7-1:

v7.7.1

Compare Source

  • A few small tweaks to the sys.monitoring support for Python 3.14. Please
    test!

.. _changes_7-7-0:

v7.7.0

Compare Source

  • The Coverage object has a new method, :meth:.Coverage.branch_stats for
    getting simple branch information for a module. Closes issue 1888_.

  • The :class:Coverage constructor<.Coverage> now has a plugins parameter
    for passing in plugin objects directly, thanks to Alex Gaynor <pull 1919_>_.

  • Many constant tests in if statements are now recognized as being optimized
    away. For example, previously if 13: would have been considered a branch
    with one path not taken. Now it is understood as always true and no coverage
    is missing.

  • The experimental sys.monitoring support now works for branch coverage if you
    are using Python 3.14.0 alpha 6 or newer. This should reduce the overhead
    coverage.py imposes on your test suite. Set the environment variable
    COVERAGE_CORE=sysmon to try it out.

  • Confirmed support for PyPy 3.11. Thanks Michał Górny.

.. _issue 1888: #​1888
.. _pull 1919: #​1919

.. _changes_7-6-12:

v7.6.12

Compare Source

  • Fix: some aarch64 distributions were missing (issue 1927_). These are now
    building reliably.

.. _issue 1927: https://github.com/nedbat/coveragepy/issues/1927

.. _changes_7-6-11:

v7.6.11

Compare Source

  • Fix: a memory leak in CTracer has been fixed. The details are in issue 1924_ and pytest-dev 676_. This should reduce the memory footprint for
    everyone even if it hadn't caused a problem before.

  • We now ship a py3-none-any.whl wheel file. Thanks, Russell Keith-Magee <pull 1914_>_.

.. _pull 1914: https://github.com/nedbat/coveragepy/pull/1914
.. _issue 1924: https://github.com/nedbat/coveragepy/issues/1924
.. _pytest-dev 676: https://github.com/pytest-dev/pytest-cov/issues/676

.. _changes_7-6-10:

v7.6.10

Compare Source

  • Fix: some descriptions of missing branches in HTML and LCOV reports were
    incorrect when multi-line statements were involved (issue 1874_ and issue 1875_). These are now fixed.

  • Fix: Python 3.14 defers evaluation of annotations <pep649_>_ by moving them
    into separate code objects. That code is rarely executed, so coverage.py
    would mark them as missing, as reported in issue 1908_. Now they are
    ignored by coverage automatically.

  • Fixed an obscure and mysterious problem on PyPy 3.10 seemingly involving
    mocks, imports, and trace functions: issue 1902_. To be honest, I don't
    understand the problem or the solution, but git bisect helped find it,
    and now it's fixed.

  • Docs: re-wrote the :ref:subprocess page to put multiprocessing first and to
    highlight the correct use of :class:multiprocessing.Pool <python:multiprocessing.pool.Pool>.

.. _issue 1874: https://github.com/nedbat/coveragepy/issues/1874
.. _issue 1875: https://github.com/nedbat/coveragepy/issues/1875
.. _issue 1902: https://github.com/nedbat/coveragepy/issues/1902
.. _issue 1908: https://github.com/nedbat/coveragepy/issues/1908
.. _pep649: https://docs.python.org/3.14/whatsnew/3.14.html#whatsnew314-pep649

.. _changes_7-6-9:

v7.6.9

Compare Source

  • Fix: Tomas Uribe fixed <pull 1901_>_ a performance problem in the XML
    report. Large code bases should produce XML reports much faster now.

.. _pull 1901: https://github.com/nedbat/coveragepy/pull/1901

.. _changes_7-6-8:

v7.6.8

Compare Source

  • Fix: the LCOV report code assumed that a branch line that took no branches
    meant that the entire line was unexecuted. This isn't true in a few cases:
    the line might always raise an exception, or might have been optimized away.
    Fixes issue 1896_.

  • Fix: similarly, the HTML report will now explain that a line that jumps to
    none of its expected destinations must have always raised an exception.
    Previously, it would say something nonsensical like, "line 4 didn't jump to
    line 5 because line 4 was never true, and it didn't jump to line 7 because
    line 4 was always true." This was also shown in issue 1896_.

.. _issue 1896: https://github.com/nedbat/coveragepy/issues/1896

.. _changes_7-6-7:

v7.6.7

Compare Source

  • Fix: ugh, the other assert from 7.6.5 can also be encountered in the wild,
    so it's been restored to a conditional. Sorry for the churn.

.. _changes_7-6-6:

v7.6.6

Compare Source

  • One of the new asserts from 7.6.5 caused problems in real projects, as
    reported in issue 1891_. The assert has been removed.

.. _issue 1891: https://github.com/nedbat/coveragepy/issues/1891

.. _changes_7-6-5:

v7.6.5

Compare Source

  • Fix: fine-tuned the exact Python version (3.12.6) when exiting from with
    statements changed how they traced. This affected whether people saw the
    fix for issue 1880_.

  • Fix: isolate our code more from mocking in the os module that in rare cases
    can cause bizarre behavior <pytest-cov-666_>_.

  • Refactor: some code unreachable code paths in parser.py were changed to
    asserts. If you encounter any of these, please let me know!

.. _pytest-cov-666: https://github.com/pytest-dev/pytest-cov/issues/666

.. _changes_7-6-4:

v7.6.4

Compare Source

  • Fix: multi-line with statements could cause contained branches to be
    incorrectly marked as missing (issue 1880_). This is now fixed.

.. _issue 1880: https://github.com/nedbat/coveragepy/issues/1880

.. _changes_7-6-3:

v7.6.3

Compare Source

  • Fix: nested context managers could incorrectly be analyzed to flag a missing
    branch on the last context manager, as described in issue 1876_. This is
    now fixed.

  • Fix: the missing branch message about not exiting a module had an extra
    "didn't," as described in issue 1873_. This is now fixed.

.. _issue 1873: https://github.com/nedbat/coveragepy/issues/1873
.. _issue 1876: https://github.com/nedbat/coveragepy/issues/1876

.. _changes_7-6-2:

v7.6.2

Compare Source

  • Dropped support for Python 3.8 and PyPy 3.8.

  • Fix: a final wildcard match/case clause assigning to a name (case _ as value) was incorrectly marked as a missing branch. This is now fixed,
    closing issue 1860_.

  • Fewer things are considered branches now. Lambdas, comprehensions, and
    generator expressions are no longer marked as missing branches if they don't
    complete execution. Closes issue 1852_.

  • Fix: the HTML report didn't properly show multi-line f-strings that end with
    a backslash continuation. This is now fixed, closing issue 1836, thanks
    to LiuYinCarl and Marco Ricci <pull 1838_>
    .

  • Fix: the LCOV report now has correct line numbers (fixing issue 1846) and
    better branch descriptions for BRDA records (fixing issue 1850
    ). There
    are other changes to lcov also, including a new configuration option
    :ref:line_checksums <config_lcov_line_checksums> to control whether line
    checksums are included in the lcov report. The default is false. To keep
    checksums set it to true. All this work is thanks to Zack Weinberg
    (pull 1849_ and pull 1851_).

  • Fixed the docs for multi-line regex exclusions, closing issue 1863_.

  • Fixed a potential crash in the C tracer, closing issue 1835, thanks to
    Jan Kühle <pull 1843_>
    .

.. _issue 1835: https://github.com/nedbat/coveragepy/issues/1835
.. _issue 1836: https://github.com/nedbat/coveragepy/issues/1836
.. _pull 1838: https://github.com/nedbat/coveragepy/pull/1838
.. _pull 1843: https://github.com/nedbat/coveragepy/pull/1843
.. _issue 1846: https://github.com/nedbat/coveragepy/issues/1846
.. _pull 1849: https://github.com/nedbat/coveragepy/pull/1849
.. _issue 1850: https://github.com/nedbat/coveragepy/issues/1850
.. _pull 1851: https://github.com/nedbat/coveragepy/pull/1851
.. _issue 1852: https://github.com/nedbat/coveragepy/issues/1852
.. _issue 1860: https://github.com/nedbat/coveragepy/issues/1860
.. _issue 1863: https://github.com/nedbat/coveragepy/issues/1863

.. _changes_7-6-1:

v7.6.1

Compare Source

  • Fix: some aarch64 distributions were missing (issue 1927_). These are now
    building reliably.

.. _issue 1927: https://github.com/nedbat/coveragepy/issues/1927

.. _changes_7-6-11:

v7.6.0

Compare Source

  • Exclusion patterns can now be multi-line, thanks to Daniel Diniz <pull 1807_>. This enables many interesting exclusion use-cases, including those
    requested in issues 118 <issue 118_>
    (entire files), 996 <issue 996_>_ (multiple lines only when appearing together), 1741 <issue 1741_>_ (remainder of a function), and 1803 <issue 1803_>_
    (arbitrary sequence of marked lines). See the :ref:multi_line_exclude
    section of the docs for more details and examples.

  • The JSON report now includes per-function and per-class coverage information.
    Thanks to Daniel Diniz <pull 1809_>_ for getting the work started. This
    closes issue 1793_ and issue 1532_.

  • Fixed an incorrect calculation of "(no class)" lines in the HTML classes
    report.

  • Python 3.13.0b3 is supported.

.. _issue 118: https://github.com/nedbat/coveragepy/issues/118
.. _issue 996: https://github.com/nedbat/coveragepy/issues/996
.. _issue 1532: https://github.com/nedbat/coveragepy/issues/1532
.. _issue 1741: https://github.com/nedbat/coveragepy/issues/1741
.. _issue 1793: https://github.com/nedbat/coveragepy/issues/1793
.. _issue 1803: https://github.com/nedbat/coveragepy/issues/1803
.. _pull 1807: https://github.com/nedbat/coveragepy/pull/1807
.. _pull 1809: https://github.com/nedbat/coveragepy/pull/1809

.. _changes_7-5-4:

v7.5.4

Compare Source

  • If you attempt to combine statement coverage data with branch coverage data,
    coverage.py used to fail with the message "Can't combine arc data with line
    data" or its reverse, "Can't combine line data with arc data." These
    messages used internal terminology, making it hard for people to understand
    the problem. They are now changed to mention "branch coverage data" and
    "statement coverage data."

  • Fixed a minor branch coverage problem with wildcard match/case cases using
    names or guard clauses.

  • Started testing on 3.13 free-threading (nogil) builds of Python. I'm not
    claiming full support yet. Closes issue 1799_.

.. _issue 1799: https://github.com/nedbat/coveragepy/issues/1799

.. _changes_7-5-3:

v7.5.3

Compare Source

  • Performance improvements for combining data files, especially when measuring
    line coverage. A few different quadratic behaviors were eliminated. In one
    extreme case of combining 700+ data files, the time dropped from more than
    three hours to seven minutes. Thanks for Kraken Tech for funding the fix.

  • Performance improvements for generating HTML reports, with a side benefit of
    reducing memory use, closing issue 1791_. Thanks to Daniel Diniz for
    helping to diagnose the problem.

.. _issue 1791: https://github.com/nedbat/coveragepy/issues/1791

.. _changes_7-5-2:

v7.5.2

Compare Source

  • Fix: nested matches of exclude patterns could exclude too much code, as
    reported in issue 1779_. This is now fixed.

  • Changed: previously, coverage.py would consider a module docstring to be an
    executable statement if it appeared after line 1 in the file, but not
    executable if it was the first line. Now module docstrings are never counted
    as executable statements. This can change coverage.py's count of the number
    of statements in a file, which can slightly change the coverage percentage
    reported.

  • In the HTML report, the filter term and "hide covered" checkbox settings are
    remembered between viewings, thanks to Daniel Diniz <pull 1776_>_.

  • Python 3.13.0b1 is supported.

  • Fix: parsing error handling is improved to ensure bizarre source files are
    handled gracefully, and to unblock oss-fuzz fuzzing, thanks to Liam DeVoe <pull 1788_>. Closes issue 1787.

.. _pull 1776: https://github.com/nedbat/coveragepy/pull/1776
.. _issue 1779: https://github.com/nedbat/coveragepy/issues/1779
.. _issue 1787: https://github.com/nedbat/coveragepy/issues/1787
.. _pull 1788: https://github.com/nedbat/coveragepy/pull/1788

.. _changes_7-5-1:

v7.5.1

Compare Source

  • Fix: a pragma comment on the continuation lines of a multi-line statement
    now excludes the statement and its body, the same as if the pragma is
    on the first line. This closes issue 754. The fix was contributed by
    Daniel Diniz <pull 1773_>
    .

  • Fix: very complex source files like this one <resolvent_lookup_>_ could
    cause a maximum recursion error when creating an HTML report. This is now
    fixed, closing issue 1774_.

  • HTML report improvements:

    • Support files (JavaScript and CSS) referenced by the HTML report now have
      hashes added to their names to ensure updated files are used instead of
      stale cached copies.

    • Missing branch coverage explanations that said "the condition was never
      false" now read "the condition was always true" because it's easier to
      understand.

    • Column sort order is remembered better as you move between the index pages,
      fixing issue 1766. Thanks, Daniel Diniz <pull 1768_>.

.. _resolvent_lookup: 130950f3e6/sympy/polys/numberfields/resolvent_lookup.py
.. _issue 754: https://github.com/nedbat/coveragepy/issues/754
.. _issue 1766: https://github.com/nedbat/coveragepy/issues/1766
.. _pull 1768: https://github.com/nedbat/coveragepy/pull/1768
.. _pull 1773: https://github.com/nedbat/coveragepy/pull/1773
.. _issue 1774: https://github.com/nedbat/coveragepy/issues/1774

.. _changes_7-5-0:

v7.5.0

Compare Source

  • Added initial support for function and class reporting in the HTML report.
    There are now three index pages which link to each other: files, functions,
    and classes. Other reports don't yet have this information, but it will be
    added in the future where it makes sense. Feedback gladly accepted!
    Finishes issue 780_.

  • Other HTML report improvements:

    • There is now a "hide covered" checkbox to filter out 100% files, finishing
      issue 1384_.

    • The index page is always sorted by one of its columns, with clearer
      indications of the sorting.

    • The "previous file" shortcut key didn't work on the index page, but now it
      does, fixing issue 1765_.

  • The debug output showing which configuration files were tried now shows
    absolute paths to help diagnose problems where settings aren't taking effect,
    and is renamed from "attempted_config_files" to the more logical
    "config_files_attempted."

  • Python 3.13.0a6 is supported.

.. _issue 780: https://github.com/nedbat/coveragepy/issues/780
.. _issue 1384: https://github.com/nedbat/coveragepy/issues/1384
.. _issue 1765: https://github.com/nedbat/coveragepy/issues/1765

.. _changes_7-4-4:

v7.4.4

Compare Source

  • Fix: in some cases, even with [run] relative_files=True, a data file
    could be created with absolute path names. When combined with other relative
    data files, it was random whether the absolute file names would be made
    relative or not. If they weren't, then a file would be listed twice in
    reports, as detailed in issue 1752_. This is now fixed: absolute file
    names are always made relative when combining. Thanks to Bruno Rodrigues dos
    Santos for support.

  • Fix: the last case of a match/case statement had an incorrect message if the
    branch was missed. It said the pattern never matched, when actually the
    branch is missed if the last case always matched.

  • Fix: clicking a line number in the HTML report now positions more accurately.

  • Fix: the report:format setting was defined as a boolean, but should be a
    string. Thanks, Tanaydin Sirin <pull 1754_>_. It is also now documented
    on the :ref:configuration page <config_report_format>.

.. _issue 1752: https://github.com/nedbat/coveragepy/issues/1752
.. _pull 1754: https://github.com/nedbat/coveragepy/pull/1754

.. _changes_7-4-3:

v7.4.3

Compare Source

  • Fix: in some cases, coverage could fail with a RuntimeError: "Set changed
    size during iteration." This is now fixed, closing issue 1733_.

.. _issue 1733: https://github.com/nedbat/coveragepy/issues/1733

.. _changes_7-4-2:

v7.4.2

Compare Source

  • Fix: setting COVERAGE_CORE=sysmon no longer errors on 3.11 and lower,
    thanks Hugo van Kemenade <pull 1747_>_. It now issues a warning that
    sys.monitoring is not available and falls back to the default core instead.

.. _pull 1747: https://github.com/nedbat/coveragepy/pull/1747

.. _changes_7-4-1:

v7.4.1

Compare Source

  • Python 3.13.0a3 is supported.

  • Fix: the JSON report now includes an explicit format version number, closing
    issue 1732_.

.. _issue 1732: https://github.com/nedbat/coveragepy/issues/1732

.. _changes_7-4-0:


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

This PR contains the following updates: | Package | Change | Age | Confidence | |---|---|---|---| | [coverage](https://github.com/nedbat/coveragepy) | `==7.4.0` -> `==7.10.6` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/coverage/7.10.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/coverage/7.4.0/7.10.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>nedbat/coveragepy (coverage)</summary> ### [`v7.10.6`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-7106--2025-08-29) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.10.5...7.10.6) - Fix: `source` directories were not properly communicated to subprocesses that ran in different directories, as reported in `issue 1499`\_. This is now fixed. - Performance: `Alex Gaynor continues fine-tuning <pull 2038_>`\_ the speed of combination, especially with many contexts. .. \_issue 1499: [#&#8203;1499](https://github.com/nedbat/coveragepy/issues/1499) .. \_pull 2038: [#&#8203;2038](https://github.com/nedbat/coveragepy/pull/2038) .. \_changes\_7-10-5: ### [`v7.10.5`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-7105--2025-08-23) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.10.4...7.10.5) - Big speed improvements for `coverage combine`: it's now about twice as fast! Huge thanks to Alex Gaynor for pull requests `2032 <pull 2032_>`*, `2033 <pull 2033_>`*, and `2034 <pull 2034_>`\_. .. \_pull 2032: [#&#8203;2032](https://github.com/nedbat/coveragepy/pull/2032) .. \_pull 2033: [#&#8203;2033](https://github.com/nedbat/coveragepy/pull/2033) .. \_pull 2034: [#&#8203;2034](https://github.com/nedbat/coveragepy/pull/2034) .. \_changes\_7-10-4: ### [`v7.10.4`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-7104--2025-08-16) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.10.3...7.10.4) - Added `patch = fork` for times when the built-in forking support is insufficient. - Fix: `patch = execv` also inherits the entire coverage configuration now. .. \_changes\_7-10-3: ### [`v7.10.3`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-7103--2025-08-10) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.10.2...7.10.3) - Fixes for `patch = subprocess`: - If subprocesses spawned yet more subprocesses simultaneously, some coverage could be missed. This is now fixed, closing `issue 2024`\_. - If subprocesses were created in other directories, their data files were stranded there and not combined into the totals, as described in `issue 2025`\_. This is now fixed. - On Windows (or maybe only some Windows?) the patch would fail with a `ModuleNotFound` error trying to import coverage. This is now fixed, closing `issue 2022`\_. - Originally only options set in the coverage configuration file would apply to subprocesses. Options set on the `coverage run` command line (such as `--branch`) wouldn't be communicated to the subprocesses. This could lead to combining failures, as described in `issue 2021`\_. Now the entire configuration is used in subprocesses, regardless of its origin. - Added `debug=patch` to help diagnose problems. - Fix: really close all SQLite databases, even in-memory ones. Closes `issue 2017`\_. .. \_issue 2017: [#&#8203;2017](https://github.com/nedbat/coveragepy/issues/2017) .. \_issue 2021: [#&#8203;2021](https://github.com/nedbat/coveragepy/issues/2021) .. \_issue 2022: [#&#8203;2022](https://github.com/nedbat/coveragepy/issues/2022) .. \_issue 2024: [#&#8203;2024](https://github.com/nedbat/coveragepy/issues/2024) .. \_issue 2025: [#&#8203;2025](https://github.com/nedbat/coveragepy/issues/2025) .. \_changes\_7-10-2: ### [`v7.10.2`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-7102--2025-08-03) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.10.1...7.10.2) - Fix: some code with NOP bytecodes could report missing branches that are actually executed. This is now fixed, closing `issue 1999`\_. Python 3.9 still shows the problem. .. \_issue 1999: [#&#8203;1999](https://github.com/nedbat/coveragepy/issues/1999) .. \_changes\_7-10-1: ### [`v7.10.1`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-7101--2025-07-27) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.10.0...7.10.1) - Fix: the exclusion for `if TYPE_CHECKING:` was wrong: it marked the branch as partial, but it should have been a line exclusion so the entire clause would be excluded. Improves `issue 831`\_. - Fix: changed where .pth files are written for `patch = subprocess`, closing `issue 2006`\_. .. \_issue 2006: [#&#8203;2006](https://github.com/nedbat/coveragepy/issues/2006) .. \_changes\_7-10-0: ### [`v7.10.0`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-7100--2025-07-24) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.9.2...7.10.0) - A new configuration option: ":ref:`config_run_patch`" specifies named patches to work around some limitations in coverage measurement. These patches are available: - `patch = _exit` lets coverage save its data even when :func:`os._exit() <python:os._exit>` is used to abruptly end the process. This closes long-standing `issue 310`\_ as well as its duplicates: `issue 312`*, `issue 1673`*, `issue 1845`*, and `issue 1941`*. - `patch = subprocess` measures coverage in Python subprocesses created with :mod:`subprocess`, :func:`os.system`, or one of the :func:`execv <python:os.execl>` or :func:`spawnv <python:os.spawnl>` family of functions. Closes old `issue 367`*, its duplicate `issue 378`* and old `issue 689`\_. - `patch = execv` adjusts the :func:`execv <python:os.execl>` family of functions to save coverage data before ending the current program and starting the next. Not available on Windows. Closes `issue 43`\_ after 15 years! - The HTML report now dimly colors subsequent lines in multi-line statements. They used to have no color. This gives a better indication of the amount of code missing in the report. Closes `issue 1308`\_. - Two new exclusion patterns are part of the defaults: `...` is automatically excluded as a line and `if TYPE_CHECKING:` is excluded as a branch. Closes `issue 831`\_. - A new command-line option: `--save-signal=USR1` specifies a signal that coverage.py will listen for. When the signal is sent, the coverage data will be saved. This makes it possible to save data from within long-running processes. Thanks, `Arkady Gilinsky <pull 1998_>`\_. - A new configuration option: ":ref:`config_report_partial_also`" is a list of regexes to add as pragmas for partial branches. This parallels the ":ref:`config_report_exclude_also`" setting for adding line exclusion patterns. - A few file path configuration settings didn't allow for tilde expansion: :ref:`config_json_output`, :ref:`config_lcov_output` and :ref:`config_run_debug_file`. This is now fixed. - Wheels are included for 3.14 now that 3.14 rc1 is available. - We no longer ship a PyPy-specific wheel. PyPy will install the pure-Python wheel. Closes `issue 2001`\_. - In the very unusual situation of not having a current frame, coverage no longer crashes when using the sysmon core, fixing `issue 2005`\_. .. \_issue 43: [#&#8203;43](https://github.com/nedbat/coveragepy/issues/43) .. \_issue 310: [#&#8203;310](https://github.com/nedbat/coveragepy/issues/310) .. \_issue 312: [#&#8203;312](https://github.com/nedbat/coveragepy/issues/312) .. \_issue 367: [#&#8203;367](https://github.com/nedbat/coveragepy/issues/367) .. \_issue 378: [#&#8203;378](https://github.com/nedbat/coveragepy/issues/378) .. \_issue 689: [#&#8203;689](https://github.com/nedbat/coveragepy/issues/689) .. \_issue 831: [#&#8203;831](https://github.com/nedbat/coveragepy/issues/831) .. \_issue 1308: [#&#8203;1308](https://github.com/nedbat/coveragepy/issues/1308) .. \_issue 1673: [#&#8203;1673](https://github.com/nedbat/coveragepy/issues/1673) .. \_issue 1845: [#&#8203;1845](https://github.com/nedbat/coveragepy/issues/1845) .. \_issue 1941: [#&#8203;1941](https://github.com/nedbat/coveragepy/issues/1941) .. \_pull 1998: [#&#8203;1998](https://github.com/nedbat/coveragepy/pull/1998) .. \_issue 2001: [#&#8203;2001](https://github.com/nedbat/coveragepy/issues/2001) .. \_issue 2005: [#&#8203;2005](https://github.com/nedbat/coveragepy/issues/2005) .. \_changes\_7-9-2: ### [`v7.9.2`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-792--2025-07-03) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.9.1...7.9.2) - 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. Thanks, `Itamer Oren <pull 1984_>`\_. .. \_pull 1984: [#&#8203;1984](https://github.com/nedbat/coveragepy/pull/1984) .. \_issue 1991: [#&#8203;1991](https://github.com/nedbat/coveragepy/issues/1991) .. \_changes\_7-9-1: ### [`v7.9.1`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-791--2025-06-13) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.9.0...7.9.1) - The "no-ctracer" warning is not issued for Python pre-release versions. Coverage doesn't ship compiled wheels for those versions, so this was far too noisy. - On Python 3.14+, the "sysmon" core is now the default if it's supported for your configuration. Plugins and dynamic contexts are still not supported with it. .. \_changes\_7-9-0: ### [`v7.9.0`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-790--2025-06-11) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.8.2...7.9.0) - Added a `[run] core` configuration setting to specify the measurement core, which was previously only available through the COVERAGE\_CORE environment variable. Finishes `issue 1746`\_. - Fixed incorrect rendering of f-strings with doubled braces, closing `issue 1980`\_. - If the C tracer core can't be imported, a warning ("no-ctracer") is issued with the reason. - The C tracer core extension module now conforms to `PEP 489`*, closing `issue 1977`*. Thanks, `Adam Turner <pull 1978_>`\_. - Fixed a "ValueError: min() arg is an empty sequence" error caused by strange empty modules, found by `oss-fuzz`\_. .. \_issue 1746: [#&#8203;1746](https://github.com/nedbat/coveragepy/issues/1746) .. \_issue 1977: [#&#8203;1977](https://github.com/nedbat/coveragepy/issues/1977) .. \_pull 1978: [#&#8203;1978](https://github.com/nedbat/coveragepy/pull/1978) .. \_issue 1980: [#&#8203;1980](https://github.com/nedbat/coveragepy/issues/1980) .. \_PEP 489: <https://peps.python.org/pep-0489> .. \_oss-fuzz: <https://google.github.io/oss-fuzz/> .. \_changes\_7-8-2: ### [`v7.8.2`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-782--2025-05-23) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.8.1...7.8.2) - Wheels are provided for Windows ARM64 on Python 3.11, 3.12, and 3.13. Thanks, `Finn Womack <pull 1972_>`\_. .. \_issue 1971: [#&#8203;1971](https://github.com/nedbat/coveragepy/pull/1971) .. \_pull 1972: [#&#8203;1972](https://github.com/nedbat/coveragepy/pull/1972) .. \_changes\_7-8-1: ### [`v7.8.1`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-781--2025-05-21) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.8.0...7.8.1) - A number of EncodingWarnings were fixed that could appear if you've enabled PYTHONWARNDEFAULTENCODING, fixing `issue 1966`*. Thanks, `Henry Schreiner <pull 1967_>`*. - Fixed a race condition when using sys.monitoring with free-threading Python, closing `issue 1970`\_. .. \_issue 1966: [#&#8203;1966](https://github.com/nedbat/coveragepy/issues/1966) .. \_pull 1967: [#&#8203;1967](https://github.com/nedbat/coveragepy/pull/1967) .. \_issue 1970: [#&#8203;1970](https://github.com/nedbat/coveragepy/issues/1970) .. \_changes\_7-8-0: ### [`v7.8.0`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-780--2025-03-30) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.7.1...7.8.0) - Added a new `source_dirs` setting for symmetry with the existing `source_pkgs` setting. It's preferable to the existing `source` setting, because you'll get a clear error when directories don't exist. Fixes `issue 1942`*. Thanks, `Jeremy Fleischman <pull 1943_>`*. - Fix: the PYTHONSAFEPATH environment variable new in Python 3.11 is properly supported, closing `issue 1696`*. Thanks, `Philipp A. <pull 1700_>`*. This works properly except for a detail when using the `coverage` command on Windows. There you can use `python -m coverage` instead if you need exact emulation. .. \_issue 1696: [#&#8203;1696](https://github.com/nedbat/coveragepy/issues/1696) .. \_pull 1700: [#&#8203;1700](https://github.com/nedbat/coveragepy/pull/1700) .. \_issue 1942: [#&#8203;1942](https://github.com/nedbat/coveragepy/issues/1942) .. \_pull 1943: [#&#8203;1943](https://github.com/nedbat/coveragepy/pull/1943) .. \_changes\_7-7-1: ### [`v7.7.1`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-771--2025-03-21) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.7.0...7.7.1) - A few small tweaks to the sys.monitoring support for Python 3.14. Please test! .. \_changes\_7-7-0: ### [`v7.7.0`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-770--2025-03-16) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.6.12...7.7.0) - The Coverage object has a new method, :meth:`.Coverage.branch_stats` for getting simple branch information for a module. Closes `issue 1888`\_. - The :class:`Coverage constructor<.Coverage>` now has a `plugins` parameter for passing in plugin objects directly, thanks to `Alex Gaynor <pull 1919_>`\_. - Many constant tests in if statements are now recognized as being optimized away. For example, previously `if 13:` would have been considered a branch with one path not taken. Now it is understood as always true and no coverage is missing. - The experimental sys.monitoring support now works for branch coverage if you are using Python 3.14.0 alpha 6 or newer. This should reduce the overhead coverage.py imposes on your test suite. Set the environment variable `COVERAGE_CORE=sysmon` to try it out. - Confirmed support for PyPy 3.11. Thanks Michał Górny. .. \_issue 1888: [#&#8203;1888](https://github.com/nedbat/coveragepy/issues/1888) .. \_pull 1919: [#&#8203;1919](https://github.com/nedbat/coveragepy/pull/1919) .. \_changes\_7-6-12: ### [`v7.6.12`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-7612--2025-02-11) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.6.11...7.6.12) - Fix: some aarch64 distributions were missing (`issue 1927`\_). These are now building reliably. .. \_issue 1927: https://github.com/nedbat/coveragepy/issues/1927 .. \_changes\_7-6-11: ### [`v7.6.11`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-7611--2025-02-08) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.6.10...7.6.11) - Fix: a memory leak in CTracer has been fixed. The details are in `issue 1924`\_ and `pytest-dev 676`\_. This should reduce the memory footprint for everyone even if it hadn't caused a problem before. - We now ship a py3-none-any.whl wheel file. Thanks, `Russell Keith-Magee <pull 1914_>`\_. .. \_pull 1914: https://github.com/nedbat/coveragepy/pull/1914 .. \_issue 1924: https://github.com/nedbat/coveragepy/issues/1924 .. \_pytest-dev 676: https://github.com/pytest-dev/pytest-cov/issues/676 .. \_changes\_7-6-10: ### [`v7.6.10`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-7610--2024-12-26) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.6.9...7.6.10) - Fix: some descriptions of missing branches in HTML and LCOV reports were incorrect when multi-line statements were involved (`issue 1874`\_ and `issue 1875`\_). These are now fixed. - Fix: Python 3.14 `defers evaluation of annotations <pep649_>`\_ by moving them into separate code objects. That code is rarely executed, so coverage.py would mark them as missing, as reported in `issue 1908`\_. Now they are ignored by coverage automatically. - Fixed an obscure and mysterious problem on PyPy 3.10 seemingly involving mocks, imports, and trace functions: `issue 1902`\_. To be honest, I don't understand the problem or the solution, but `git bisect` helped find it, and now it's fixed. - Docs: re-wrote the :ref:`subprocess` page to put multiprocessing first and to highlight the correct use of :class:`multiprocessing.Pool <python:multiprocessing.pool.Pool>`. .. \_issue 1874: https://github.com/nedbat/coveragepy/issues/1874 .. \_issue 1875: https://github.com/nedbat/coveragepy/issues/1875 .. \_issue 1902: https://github.com/nedbat/coveragepy/issues/1902 .. \_issue 1908: https://github.com/nedbat/coveragepy/issues/1908 .. \_pep649: https://docs.python.org/3.14/whatsnew/3.14.html#whatsnew314-pep649 .. \_changes\_7-6-9: ### [`v7.6.9`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-769--2024-12-06) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.6.8...7.6.9) - Fix: `Tomas Uribe fixed <pull 1901_>`\_ a performance problem in the XML report. Large code bases should produce XML reports much faster now. .. \_pull 1901: https://github.com/nedbat/coveragepy/pull/1901 .. \_changes\_7-6-8: ### [`v7.6.8`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-768--2024-11-23) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.6.7...7.6.8) - Fix: the LCOV report code assumed that a branch line that took no branches meant that the entire line was unexecuted. This isn't true in a few cases: the line might always raise an exception, or might have been optimized away. Fixes `issue 1896`\_. - Fix: similarly, the HTML report will now explain that a line that jumps to none of its expected destinations must have always raised an exception. Previously, it would say something nonsensical like, "line 4 didn't jump to line 5 because line 4 was never true, and it didn't jump to line 7 because line 4 was always true." This was also shown in `issue 1896`\_. .. \_issue 1896: https://github.com/nedbat/coveragepy/issues/1896 .. \_changes\_7-6-7: ### [`v7.6.7`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-767--2024-11-15) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.6.6...7.6.7) - Fix: ugh, the other assert from 7.6.5 can also be encountered in the wild, so it's been restored to a conditional. Sorry for the churn. .. \_changes\_7-6-6: ### [`v7.6.6`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-766--2024-11-15) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.6.5...7.6.6) - One of the new asserts from 7.6.5 caused problems in real projects, as reported in `issue 1891`\_. The assert has been removed. .. \_issue 1891: https://github.com/nedbat/coveragepy/issues/1891 .. \_changes\_7-6-5: ### [`v7.6.5`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-765--2024-11-14) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.6.4...7.6.5) - Fix: fine-tuned the exact Python version (3.12.6) when exiting from `with` statements changed how they traced. This affected whether people saw the fix for `issue 1880`\_. - Fix: isolate our code more from mocking in the os module that in rare cases can cause `bizarre behavior <pytest-cov-666_>`\_. - Refactor: some code unreachable code paths in parser.py were changed to asserts. If you encounter any of these, please let me know! .. \_pytest-cov-666: https://github.com/pytest-dev/pytest-cov/issues/666 .. \_changes\_7-6-4: ### [`v7.6.4`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-764--2024-10-20) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.6.3...7.6.4) - Fix: multi-line `with` statements could cause contained branches to be incorrectly marked as missing (`issue 1880`\_). This is now fixed. .. \_issue 1880: https://github.com/nedbat/coveragepy/issues/1880 .. \_changes\_7-6-3: ### [`v7.6.3`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-763--2024-10-13) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.6.2...7.6.3) - Fix: nested context managers could incorrectly be analyzed to flag a missing branch on the last context manager, as described in `issue 1876`\_. This is now fixed. - Fix: the missing branch message about not exiting a module had an extra "didn't," as described in `issue 1873`\_. This is now fixed. .. \_issue 1873: https://github.com/nedbat/coveragepy/issues/1873 .. \_issue 1876: https://github.com/nedbat/coveragepy/issues/1876 .. \_changes\_7-6-2: ### [`v7.6.2`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-762--2024-10-09) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.6.1...7.6.2) - Dropped support for Python 3.8 and PyPy 3.8. - Fix: a final wildcard match/case clause assigning to a name (`case _ as value`) was incorrectly marked as a missing branch. This is now fixed, closing `issue 1860`\_. - Fewer things are considered branches now. Lambdas, comprehensions, and generator expressions are no longer marked as missing branches if they don't complete execution. Closes `issue 1852`\_. - Fix: the HTML report didn't properly show multi-line f-strings that end with a backslash continuation. This is now fixed, closing `issue 1836`*, thanks to `LiuYinCarl and Marco Ricci <pull 1838_>`*. - Fix: the LCOV report now has correct line numbers (fixing `issue 1846`*) and better branch descriptions for BRDA records (fixing `issue 1850`*). There are other changes to lcov also, including a new configuration option :ref:`line_checksums <config_lcov_line_checksums>` to control whether line checksums are included in the lcov report. The default is false. To keep checksums set it to true. All this work is thanks to Zack Weinberg (`pull 1849`\_ and `pull 1851`\_). - Fixed the docs for multi-line regex exclusions, closing `issue 1863`\_. - Fixed a potential crash in the C tracer, closing `issue 1835`*, thanks to `Jan Kühle <pull 1843_>`*. .. \_issue 1835: https://github.com/nedbat/coveragepy/issues/1835 .. \_issue 1836: https://github.com/nedbat/coveragepy/issues/1836 .. \_pull 1838: https://github.com/nedbat/coveragepy/pull/1838 .. \_pull 1843: https://github.com/nedbat/coveragepy/pull/1843 .. \_issue 1846: https://github.com/nedbat/coveragepy/issues/1846 .. \_pull 1849: https://github.com/nedbat/coveragepy/pull/1849 .. \_issue 1850: https://github.com/nedbat/coveragepy/issues/1850 .. \_pull 1851: https://github.com/nedbat/coveragepy/pull/1851 .. \_issue 1852: https://github.com/nedbat/coveragepy/issues/1852 .. \_issue 1860: https://github.com/nedbat/coveragepy/issues/1860 .. \_issue 1863: https://github.com/nedbat/coveragepy/issues/1863 .. \_changes\_7-6-1: ### [`v7.6.1`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-7612--2025-02-11) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.6.0...7.6.1) - Fix: some aarch64 distributions were missing (`issue 1927`\_). These are now building reliably. .. \_issue 1927: https://github.com/nedbat/coveragepy/issues/1927 .. \_changes\_7-6-11: ### [`v7.6.0`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-760--2024-07-11) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.5.4...7.6.0) - Exclusion patterns can now be multi-line, thanks to `Daniel Diniz <pull 1807_>`*. This enables many interesting exclusion use-cases, including those requested in issues `118 <issue 118_>`* (entire files), `996 <issue 996_>`\_ (multiple lines only when appearing together), `1741 <issue 1741_>`\_ (remainder of a function), and `1803 <issue 1803_>`\_ (arbitrary sequence of marked lines). See the :ref:`multi_line_exclude` section of the docs for more details and examples. - The JSON report now includes per-function and per-class coverage information. Thanks to `Daniel Diniz <pull 1809_>`\_ for getting the work started. This closes `issue 1793`\_ and `issue 1532`\_. - Fixed an incorrect calculation of "(no class)" lines in the HTML classes report. - Python 3.13.0b3 is supported. .. \_issue 118: https://github.com/nedbat/coveragepy/issues/118 .. \_issue 996: https://github.com/nedbat/coveragepy/issues/996 .. \_issue 1532: https://github.com/nedbat/coveragepy/issues/1532 .. \_issue 1741: https://github.com/nedbat/coveragepy/issues/1741 .. \_issue 1793: https://github.com/nedbat/coveragepy/issues/1793 .. \_issue 1803: https://github.com/nedbat/coveragepy/issues/1803 .. \_pull 1807: https://github.com/nedbat/coveragepy/pull/1807 .. \_pull 1809: https://github.com/nedbat/coveragepy/pull/1809 .. \_changes\_7-5-4: ### [`v7.5.4`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-754--2024-06-22) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.5.3...7.5.4) - If you attempt to combine statement coverage data with branch coverage data, coverage.py used to fail with the message "Can't combine arc data with line data" or its reverse, "Can't combine line data with arc data." These messages used internal terminology, making it hard for people to understand the problem. They are now changed to mention "branch coverage data" and "statement coverage data." - Fixed a minor branch coverage problem with wildcard match/case cases using names or guard clauses. - Started testing on 3.13 free-threading (nogil) builds of Python. I'm not claiming full support yet. Closes `issue 1799`\_. .. \_issue 1799: https://github.com/nedbat/coveragepy/issues/1799 .. \_changes\_7-5-3: ### [`v7.5.3`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-753--2024-05-28) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.5.2...7.5.3) - Performance improvements for combining data files, especially when measuring line coverage. A few different quadratic behaviors were eliminated. In one extreme case of combining 700+ data files, the time dropped from more than three hours to seven minutes. Thanks for Kraken Tech for funding the fix. - Performance improvements for generating HTML reports, with a side benefit of reducing memory use, closing `issue 1791`\_. Thanks to Daniel Diniz for helping to diagnose the problem. .. \_issue 1791: https://github.com/nedbat/coveragepy/issues/1791 .. \_changes\_7-5-2: ### [`v7.5.2`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-752--2024-05-24) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.5.1...7.5.2) - Fix: nested matches of exclude patterns could exclude too much code, as reported in `issue 1779`\_. This is now fixed. - Changed: previously, coverage.py would consider a module docstring to be an executable statement if it appeared after line 1 in the file, but not executable if it was the first line. Now module docstrings are never counted as executable statements. This can change coverage.py's count of the number of statements in a file, which can slightly change the coverage percentage reported. - In the HTML report, the filter term and "hide covered" checkbox settings are remembered between viewings, thanks to `Daniel Diniz <pull 1776_>`\_. - Python 3.13.0b1 is supported. - Fix: parsing error handling is improved to ensure bizarre source files are handled gracefully, and to unblock oss-fuzz fuzzing, thanks to `Liam DeVoe <pull 1788_>`*. Closes `issue 1787`*. .. \_pull 1776: https://github.com/nedbat/coveragepy/pull/1776 .. \_issue 1779: https://github.com/nedbat/coveragepy/issues/1779 .. \_issue 1787: https://github.com/nedbat/coveragepy/issues/1787 .. \_pull 1788: https://github.com/nedbat/coveragepy/pull/1788 .. \_changes\_7-5-1: ### [`v7.5.1`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-751--2024-05-04) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.5.0...7.5.1) - Fix: a pragma comment on the continuation lines of a multi-line statement now excludes the statement and its body, the same as if the pragma is on the first line. This closes `issue 754`*. The fix was contributed by `Daniel Diniz <pull 1773_>`*. - Fix: very complex source files like `this one <resolvent_lookup_>`\_ could cause a maximum recursion error when creating an HTML report. This is now fixed, closing `issue 1774`\_. - HTML report improvements: - Support files (JavaScript and CSS) referenced by the HTML report now have hashes added to their names to ensure updated files are used instead of stale cached copies. - Missing branch coverage explanations that said "the condition was never false" now read "the condition was always true" because it's easier to understand. - Column sort order is remembered better as you move between the index pages, fixing `issue 1766`*. Thanks, `Daniel Diniz <pull 1768_>`*. .. \_resolvent\_lookup: https://github.com/sympy/sympy/blob/130950f3e6b3f97fcc17f4599ac08f70fdd2e9d4/sympy/polys/numberfields/resolvent\_lookup.py .. \_issue 754: https://github.com/nedbat/coveragepy/issues/754 .. \_issue 1766: https://github.com/nedbat/coveragepy/issues/1766 .. \_pull 1768: https://github.com/nedbat/coveragepy/pull/1768 .. \_pull 1773: https://github.com/nedbat/coveragepy/pull/1773 .. \_issue 1774: https://github.com/nedbat/coveragepy/issues/1774 .. \_changes\_7-5-0: ### [`v7.5.0`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-750--2024-04-23) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.4.4...7.5.0) - Added initial support for function and class reporting in the HTML report. There are now three index pages which link to each other: files, functions, and classes. Other reports don't yet have this information, but it will be added in the future where it makes sense. Feedback gladly accepted! Finishes `issue 780`\_. - Other HTML report improvements: - There is now a "hide covered" checkbox to filter out 100% files, finishing `issue 1384`\_. - The index page is always sorted by one of its columns, with clearer indications of the sorting. - The "previous file" shortcut key didn't work on the index page, but now it does, fixing `issue 1765`\_. - The debug output showing which configuration files were tried now shows absolute paths to help diagnose problems where settings aren't taking effect, and is renamed from "attempted\_config\_files" to the more logical "config\_files\_attempted." - Python 3.13.0a6 is supported. .. \_issue 780: https://github.com/nedbat/coveragepy/issues/780 .. \_issue 1384: https://github.com/nedbat/coveragepy/issues/1384 .. \_issue 1765: https://github.com/nedbat/coveragepy/issues/1765 .. \_changes\_7-4-4: ### [`v7.4.4`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-744--2024-03-14) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.4.3...7.4.4) - Fix: in some cases, even with `[run] relative_files=True`, a data file could be created with absolute path names. When combined with other relative data files, it was random whether the absolute file names would be made relative or not. If they weren't, then a file would be listed twice in reports, as detailed in `issue 1752`\_. This is now fixed: absolute file names are always made relative when combining. Thanks to Bruno Rodrigues dos Santos for support. - Fix: the last case of a match/case statement had an incorrect message if the branch was missed. It said the pattern never matched, when actually the branch is missed if the last case always matched. - Fix: clicking a line number in the HTML report now positions more accurately. - Fix: the `report:format` setting was defined as a boolean, but should be a string. Thanks, `Tanaydin Sirin <pull 1754_>`\_. It is also now documented on the :ref:`configuration page <config_report_format>`. .. \_issue 1752: https://github.com/nedbat/coveragepy/issues/1752 .. \_pull 1754: https://github.com/nedbat/coveragepy/pull/1754 .. \_changes\_7-4-3: ### [`v7.4.3`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-743--2024-02-23) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.4.2...7.4.3) - Fix: in some cases, coverage could fail with a RuntimeError: "Set changed size during iteration." This is now fixed, closing `issue 1733`\_. .. \_issue 1733: https://github.com/nedbat/coveragepy/issues/1733 .. \_changes\_7-4-2: ### [`v7.4.2`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-742--2024-02-20) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.4.1...7.4.2) - Fix: setting `COVERAGE_CORE=sysmon` no longer errors on 3.11 and lower, thanks `Hugo van Kemenade <pull 1747_>`\_. It now issues a warning that sys.monitoring is not available and falls back to the default core instead. .. \_pull 1747: https://github.com/nedbat/coveragepy/pull/1747 .. \_changes\_7-4-1: ### [`v7.4.1`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-741--2024-01-26) [Compare Source](https://github.com/nedbat/coveragepy/compare/7.4.0...7.4.1) - Python 3.13.0a3 is supported. - Fix: the JSON report now includes an explicit format version number, closing `issue 1732`\_. .. \_issue 1732: https://github.com/nedbat/coveragepy/issues/1732 .. \_changes\_7-4-0: </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMTkuMSIsInVwZGF0ZWRJblZlciI6IjQxLjg0LjAiLCJ0YXJnZXRCcmFuY2giOiJtYXN0ZXIiLCJsYWJlbHMiOltdfQ==-->
renovate force-pushed renovate/coverage-7.x from ad89eddbf8 to 666c7757f6 2024-05-04 16:00:43 +01:00 Compare
renovate changed title from Update dependency coverage to v7.5.0 to Update dependency coverage to v7.5.1 2024-05-04 16:00:44 +01:00
renovate force-pushed renovate/coverage-7.x from 666c7757f6 to f2ad28db4f 2024-05-26 14:00:43 +01:00 Compare
renovate changed title from Update dependency coverage to v7.5.1 to Update dependency coverage to v7.5.2 2024-05-26 14:00:43 +01:00
renovate force-pushed renovate/coverage-7.x from f2ad28db4f to 86f1da4bee 2024-05-28 16:00:52 +01:00 Compare
renovate changed title from Update dependency coverage to v7.5.2 to Update dependency coverage to v7.5.3 2024-05-28 16:00:54 +01:00
renovate changed title from Update dependency coverage to v7.5.3 to Update dependency coverage to v7.5.4 2024-06-23 08:00:44 +01:00
renovate force-pushed renovate/coverage-7.x from 86f1da4bee to b6aa72f655 2024-06-23 08:00:45 +01:00 Compare
renovate force-pushed renovate/coverage-7.x from b6aa72f655 to b4627a4ad1 2024-07-11 20:00:37 +01:00 Compare
renovate changed title from Update dependency coverage to v7.5.4 to Update dependency coverage to v7.6.0 2024-07-11 20:00:38 +01:00
renovate changed title from Update dependency coverage to v7.6.0 to Update dependency coverage to v7.6.1 2024-08-04 22:00:33 +01:00
renovate force-pushed renovate/coverage-7.x from b4627a4ad1 to 65d8567cd9 2024-08-04 22:00:33 +01:00 Compare
renovate changed title from Update dependency coverage to v7.6.1 to Update dependency coverage to v7.6.2 2024-10-09 14:00:43 +01:00
renovate force-pushed renovate/coverage-7.x from 65d8567cd9 to dcef37f55a 2024-10-09 14:00:44 +01:00 Compare
renovate changed title from Update dependency coverage to v7.6.2 to Update dependency coverage to v7.6.3 2024-10-14 08:00:43 +01:00
renovate force-pushed renovate/coverage-7.x from dcef37f55a to 9187091300 2024-10-14 08:00:44 +01:00 Compare
renovate force-pushed renovate/coverage-7.x from 9187091300 to a7e6ce99f4 2024-10-21 08:00:32 +01:00 Compare
renovate changed title from Update dependency coverage to v7.6.3 to Update dependency coverage to v7.6.4 2024-10-21 08:00:33 +01:00
renovate force-pushed renovate/coverage-7.x from a7e6ce99f4 to 7dfaff1f0d 2024-11-14 18:02:23 +00:00 Compare
renovate changed title from Update dependency coverage to v7.6.4 to Update dependency coverage to v7.6.5 2024-11-14 18:02:24 +00:00
renovate force-pushed renovate/coverage-7.x from 7dfaff1f0d to 65f1912778 2024-11-15 14:00:43 +00:00 Compare
renovate changed title from Update dependency coverage to v7.6.5 to Update dependency coverage to v7.6.6 2024-11-15 14:00:43 +00:00
renovate changed title from Update dependency coverage to v7.6.6 to Update dependency coverage to v7.6.7 2024-11-15 16:00:43 +00:00
renovate force-pushed renovate/coverage-7.x from 65f1912778 to d6bbbff080 2024-11-15 16:00:43 +00:00 Compare
renovate changed title from Update dependency coverage to v7.6.7 to Update dependency coverage to v7.6.8 2024-11-24 08:00:57 +00:00
renovate force-pushed renovate/coverage-7.x from d6bbbff080 to 808f6ebab5 2024-11-24 08:00:58 +00:00 Compare
renovate changed title from Update dependency coverage to v7.6.8 to Update dependency coverage to v7.6.9 2024-12-06 12:00:55 +00:00
renovate force-pushed renovate/coverage-7.x from 808f6ebab5 to a7a897b65f 2024-12-06 12:00:56 +00:00 Compare
renovate changed title from Update dependency coverage to v7.6.9 to Update dependency coverage to v7.6.10 2024-12-26 18:01:04 +00:00
renovate force-pushed renovate/coverage-7.x from a7a897b65f to 1200f2fb01 2024-12-26 18:01:04 +00:00 Compare
renovate force-pushed renovate/coverage-7.x from 1200f2fb01 to f8331f0ba6 2025-02-08 16:01:07 +00:00 Compare
renovate changed title from Update dependency coverage to v7.6.10 to Update dependency coverage to v7.6.11 2025-02-08 16:01:07 +00:00
renovate force-pushed renovate/coverage-7.x from f8331f0ba6 to 3dd6be7909 2025-02-11 16:02:01 +00:00 Compare
renovate changed title from Update dependency coverage to v7.6.11 to Update dependency coverage to v7.6.12 2025-02-11 16:02:01 +00:00
renovate force-pushed renovate/coverage-7.x from 3dd6be7909 to 9e612eb21b 2025-03-16 18:01:06 +00:00 Compare
renovate changed title from Update dependency coverage to v7.6.12 to Update dependency coverage to v7.7.0 2025-03-16 18:01:06 +00:00
renovate changed title from Update dependency coverage to v7.7.0 to Update dependency coverage to v7.7.1 2025-03-21 18:01:07 +00:00
renovate force-pushed renovate/coverage-7.x from 9e612eb21b to b3fa9d3636 2025-03-21 18:01:08 +00:00 Compare
renovate changed title from Update dependency coverage to v7.7.1 to Update dependency coverage to v7.8.0 2025-03-30 22:01:01 +01:00
renovate force-pushed renovate/coverage-7.x from b3fa9d3636 to e214f49b95 2025-03-30 22:01:02 +01:00 Compare
renovate force-pushed renovate/coverage-7.x from e214f49b95 to bcf5fda39a 2025-05-21 14:00:43 +01:00 Compare
renovate changed title from Update dependency coverage to v7.8.0 to Update dependency coverage to v7.8.1 2025-05-21 14:00:44 +01:00
renovate force-pushed renovate/coverage-7.x from bcf5fda39a to cc1173e120 2025-05-23 14:00:34 +01:00 Compare
renovate changed title from Update dependency coverage to v7.8.1 to Update dependency coverage to v7.8.2 2025-05-23 14:00:34 +01:00
renovate force-pushed renovate/coverage-7.x from cc1173e120 to 303ca4bb87 2025-06-12 08:01:56 +01:00 Compare
renovate changed title from Update dependency coverage to v7.8.2 to Update dependency coverage to v7.9.0 2025-06-12 08:01:56 +01:00
renovate changed title from Update dependency coverage to v7.9.0 to Update dependency coverage to v7.9.1 2025-06-13 16:00:53 +01:00
renovate force-pushed renovate/coverage-7.x from 303ca4bb87 to d231eaba9d 2025-06-13 16:00:53 +01:00 Compare
renovate force-pushed renovate/coverage-7.x from d231eaba9d to 7a30607cec 2025-07-03 12:00:43 +01:00 Compare
renovate changed title from Update dependency coverage to v7.9.1 to Update dependency coverage to v7.9.2 2025-07-03 12:00:44 +01:00
renovate changed title from Update dependency coverage to v7.9.2 to Update dependency coverage to v7.10.0 2025-07-24 18:00:35 +01:00
renovate force-pushed renovate/coverage-7.x from 7a30607cec to 4dc6ce1e30 2025-07-24 18:00:36 +01:00 Compare
renovate changed title from Update dependency coverage to v7.10.0 to Update dependency coverage to v7.10.1 2025-07-27 16:00:34 +01:00
renovate force-pushed renovate/coverage-7.x from 4dc6ce1e30 to 87ff064923 2025-07-27 16:00:35 +01:00 Compare
renovate force-pushed renovate/coverage-7.x from 87ff064923 to 08a19164d3 2025-08-04 08:00:40 +01:00 Compare
renovate changed title from Update dependency coverage to v7.10.1 to Update dependency coverage to v7.10.2 2025-08-04 08:00:41 +01:00
renovate force-pushed renovate/coverage-7.x from 08a19164d3 to 26f90574b0 2025-08-11 08:00:35 +01:00 Compare
renovate changed title from Update dependency coverage to v7.10.2 to Update dependency coverage to v7.10.3 2025-08-11 08:00:37 +01:00
renovate force-pushed renovate/coverage-7.x from 26f90574b0 to 2b0459dee2 2025-08-19 18:00:58 +01:00 Compare
renovate changed title from Update dependency coverage to v7.10.3 to Update dependency coverage to v7.10.4 2025-08-19 18:00:59 +01:00
renovate force-pushed renovate/coverage-7.x from 2b0459dee2 to 1d1bb2a416 2025-08-23 16:00:48 +01:00 Compare
renovate changed title from Update dependency coverage to v7.10.4 to Update dependency coverage to v7.10.5 2025-08-23 16:00:49 +01:00
renovate changed title from Update dependency coverage to v7.10.5 to Update dependency coverage to v7.10.6 2025-08-29 18:00:43 +01:00
renovate force-pushed renovate/coverage-7.x from 1d1bb2a416 to 1b380468ee 2025-08-29 18:00:43 +01:00 Compare
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin renovate/coverage-7.x:renovate/coverage-7.x
git switch renovate/coverage-7.x

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch master
git merge --no-ff renovate/coverage-7.x
git switch renovate/coverage-7.x
git rebase master
git switch master
git merge --ff-only renovate/coverage-7.x
git switch renovate/coverage-7.x
git rebase master
git switch master
git merge --no-ff renovate/coverage-7.x
git switch master
git merge --squash renovate/coverage-7.x
git switch master
git merge --ff-only renovate/coverage-7.x
git switch master
git merge renovate/coverage-7.x
git push origin master
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: repos/website#121
No description provided.