Bumps coverage from 7.15.1 to 7.16.0.
Release notes
Sourced from coverage's releases.
7.16.0
Version 7.16.0 — 2026年08月28日
- When combining files, now path separator slashes will automatically be converted to the local file system style. This makes it less necessary to define
[paths] configuration to combine data across operating systems. Fixes issue 2266.
- The Coverage.switch_context() method now returns the previous context.
- Fix: previously, a
[paths] pattern would be replaced everywhere in a file path when it was only meant to be replaced once, in the leading portion of the path. This is now fixed, in pull 2268.
- Fixes to validation of options and configuration settings:
- Negative precision settings now always cause useful error messages (pull 2261).
- An invalid regex in the
--contexts option (or the [report] contexts setting) reported a confusing "Couldn’t use data file ...: user-defined function raised exception" error. Now it raises a proper configuration error naming the bad regex, like other regex settings do (pull 2262).
- Non-string values in TOML configuration settings now produce a helpful error message instead of a traceback. This affects list settings whose elements aren’t strings (like
omit, exclude_lines, or a [paths] entry), file settings like data_file, and any wrong-typed value in the [paths] section (pull 2263).
coverage run refuses run-affecting command-line options like --branch alongside --concurrency=multiprocessing, since they can’t reach the subprocesses. The check only recognized multiprocessing as the entire option value, so --concurrency=multiprocessing,thread slipped through and failed later with "Can’t combine statement coverage data with branch data". Each named concurrency library is now properly considered (pull 2270).
- Fix:
coverage annotate -d DIR raised an AssertionError if any measured file had an extension other than .py, such as a .pyw file on Windows. The original extension is now restored on the annotated copy (pull 2265).
➡️ PyPI page: coverage 7.16.0.
:arrow_right: To install: python3 -m pip install coverage==7.16.0
7.15.4
Version 7.15.4 — 2026年08月06日
- Fix: in the HTML report, a source file name containing a double quote (legal on POSIX) wasn’t escaped where it’s dropped into the
href of the index and prev/next links, so it could close the attribute early and inject markup. Page URLs are now escaped. Thanks, Rajath Mohare.
- Fix: the LCOV report wrote file names and other fields into its line-oriented records without neutralizing control characters. A measured file whose name contained a newline (legal on POSIX) could forge extra records, inflating the coverage seen by tools that read the report. Control characters in a field are now replaced. Thanks, Rajath Mohare.
- Wheels are now provided for Python 3.15.
➡️ PyPI page: coverage 7.15.4.
:arrow_right: To install: python3 -m pip install coverage==7.15.4
7.15.3
Version 7.15.3 — 2026年08月02日
- Fix: the sysmon core is incompatible with dynamic contexts. Previously, the combination would be prevented when read from the coverage.py configuration. But using the context API as pytest-cov does, contexts would be silently dropped. Now a warning is issued, thanks to Jisang Han. Closes issue 2200.
- A performance improvement in the low-level line number bookkeeping when combining data files, thanks to Kevin Turcios.
- Performance improvement in HTML reporting by reducing the number of times files have to be parsed, thanks to Kevin Turcios.
➡️ PyPI page: coverage 7.15.3.
:arrow_right: To install: python3 -m pip install coverage==7.15.3
7.15.2
Version 7.15.2 — 2026年07月15日
- Fix: one of the performance improvements in 7.15.1 (pull 2215) dramatically increased memory use during reporting for large projects. Now we use a different approach that is both faster and slimmer than 7.15.0. Fixes issue 2229.
➡️ PyPI page: coverage 7.15.2.
:arrow_right: To install: python3 -m pip install coverage==7.15.2
Changelog
Sourced from coverage's changelog.
Version 7.16.0 — 2026年08月28日
-
When combining files, now path separator slashes will automatically be
converted to the local file system style. This makes it less necessary to
define [paths] configuration to combine data across operating systems.
Fixes issue 2266_.
-
The :meth:.Coverage.switch_context method now returns the previous context.
-
Fix: previously, a [paths] pattern would be replaced everywhere in a file
path when it was only meant to be replaced once, in the leading portion of
the path. This is now fixed, in pull 2268_.
-
Fixes to validation of options and configuration settings:
-
Negative precision settings now always cause useful error messages (pull 2261_).
-
An invalid regex in the --contexts option (or the [report] contexts setting) reported a confusing "Couldn't use data file ...:
user-defined function raised exception" error. Now it raises a proper
configuration error naming the bad regex, like other regex settings do
(pull 2262_).
-
Non-string values in TOML configuration settings now produce a helpful
error message instead of a traceback. This affects list settings whose
elements aren't strings (like omit, exclude_lines, or a [paths]
entry), file settings like data_file, and any wrong-typed value in the
[paths] section (pull 2263_).
-
coverage run refuses run-affecting command-line options like
--branch alongside --concurrency=multiprocessing, since they can't
reach the subprocesses. The check only recognized multiprocessing as
the entire option value, so --concurrency=multiprocessing,thread
slipped through and failed later with "Can't combine statement coverage
data with branch data". Each named concurrency library is now properly
considered (pull 2270_).
-
Fix: coverage annotate -d DIR raised an AssertionError if any
measured file had an extension other than .py, such as a .pyw file on
Windows. The original extension is now restored on the annotated copy (pull 2265_).
.. _pull 2261: coveragepy/coveragepy#2261
.. _pull 2262: coveragepy/coveragepy#2262
.. _pull 2263: coveragepy/coveragepy#2263
.. _pull 2265: coveragepy/coveragepy#2265
.. _issue 2266: coveragepy/coveragepy#2266
.. _pull 2268: coveragepy/coveragepy#2268
... (truncated)
Commits
3e9fc16 docs: prep for 7.16.0
38be8d1 build: control check-manifest explicitly
8eb1266 docs(build): no longer commit sample_html
1a8b3fa docs: remove sample_html
aeaa79b docs: linklint is now sphinx-linklint
d5eaf3f test: a branchless way to re-add extensions
57e52fd docs: adjust CHANGES for #2270
b9d304d fix: check for multiprocessing in a --concurrency list (#2270)
a6ef928 chore: make upgrade
070461f chore: bump the action-dependencies group with 4 updates (#2271)
- Additional commits viewable in compare view
Dependabot compatibility score
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebase will rebase this PR
@dependabot recreate will recreate this PR, overwriting any edits that have been made to it
@dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
@dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
@dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
@dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps coverage from 7.15.1 to 7.16.0.
Release notes
Sourced from coverage's releases.
Changelog
Sourced from coverage's changelog.
... (truncated)
Commits
3e9fc16docs: prep for 7.16.038be8d1build: control check-manifest explicitly8eb1266docs(build): no longer commit sample_html1a8b3fadocs: remove sample_htmlaeaa79bdocs: linklint is now sphinx-linklintd5eaf3ftest: a branchless way to re-add extensions57e52fddocs: adjust CHANGES for #2270b9d304dfix: check for multiprocessing in a --concurrency list (#2270)a6ef928chore: make upgrade070461fchore: bump the action-dependencies group with 4 updates (#2271)Dependabot compatibility score
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)