Issue body
This PR contains the following updates:
| Package | Change | Age | Confidence |
|---|---|---|---|
| [coverage](https://redirect.github.com/nedbat/coveragepy) | `==7.6.1` -> `==7.10.6` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) |
---
### Release Notes
<details>
<summary>nedbat/coveragepy (coverage)</summary>
### [`v7.10.6`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-7106--2025-08-29)
[Compare Source](https://redirect.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: [#​1499](https://redirect.github.com/nedbat/coveragepy/issues/1499)
.. \_pull 2038: [#​2038](https://redirect.github.com/nedbat/coveragepy/pull/2038)
.. \_changes\_7-10-5:
### [`v7.10.5`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-7105--2025-08-23)
[Compare Source](https://redirect.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: [#​2032](https://redirect.github.com/nedbat/coveragepy/pull/2032)
.. \_pull 2033: [#​2033](https://redirect.github.com/nedbat/coveragepy/pull/2033)
.. \_pull 2034: [#​2034](https://redirect.github.com/nedbat/coveragepy/pull/2034)
.. \_changes\_7-10-4:
### [`v7.10.4`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-7104--2025-08-16)
[Compare Source](https://redirect.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://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-7103--2025-08-10)
[Compare Source](https://redirect.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: [#​2017](https://redirect.github.com/nedbat/coveragepy/issues/2017)
.. \_issue 2021: [#​2021](https://redirect.github.com/nedbat/coveragepy/issues/2021)
.. \_issue 2022: [#​2022](https://redirect.github.com/nedbat/coveragepy/issues/2022)
.. \_issue 2024: [#​2024](https://redirect.github.com/nedbat/coveragepy/issues/2024)
.. \_issue 2025: [#​2025](https://redirect.github.com/nedbat/coveragepy/issues/2025)
.. \_changes\_7-10-2:
### [`v7.10.2`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-7102--2025-08-03)
[Compare Source](https://redirect.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: [#​1999](https://redirect.github.com/nedbat/coveragepy/issues/1999)
.. \_changes\_7-10-1:
### [`v7.10.1`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-7101--2025-07-27)
[Compare Source](https://redirect.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: [#​2006](https://redirect.github.com/nedbat/coveragepy/issues/2006)
.. \_changes\_7-10-0:
### [`v7.10.0`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-7100--2025-07-24)
[Compare Source](https://redirect.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: [#​43](https://redirect.github.com/nedbat/coveragepy/issues/43)
.. \_issue 310: [#​310](https://redirect.github.com/nedbat/coveragepy/issues/310)
.. \_issue 312: [#​312](https://redirect.github.com/nedbat/coveragepy/issues/312)
.. \_issue 367: [#​367](https://redirect.github.com/nedbat/coveragepy/issues/367)
.. \_issue 378: [#​378](https://redirect.github.com/nedbat/coveragepy/issues/378)
.. \_issue 689: [#​689](https://redirect.github.com/nedbat/coveragepy/issues/689)
.. \_issue 831: [#​831](https://redirect.github.com/nedbat/coveragepy/issues/831)
.. \_issue 1308: [#​1308](https://redirect.github.com/nedbat/coveragepy/issues/1308)
.. \_issue 1673: [#​1673](https://redirect.github.com/nedbat/coveragepy/issues/1673)
.. \_issue 1845: [#​1845](https://redirect.github.com/nedbat/coveragepy/issues/1845)
.. \_issue 1941: [#​1941](https://redirect.github.com/nedbat/coveragepy/issues/1941)
.. \_pull 1998: [#​1998](https://redirect.github.com/nedbat/coveragepy/pull/1998)
.. \_issue 2001: [#​2001](https://redirect.github.com/nedbat/coveragepy/issues/2001)
.. \_issue 2005: [#​2005](https://redirect.github.com/nedbat/coveragepy/issues/2005)
.. \_changes\_7-9-2:
### [`v7.9.2`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-792--2025-07-03)
[Compare Source](https://redirect.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: [#​1984](https://redirect.github.com/nedbat/coveragepy/pull/1984)
.. \_issue 1991: [#​1991](https://redirect.github.com/nedbat/coveragepy/issues/1991)
.. \_changes\_7-9-1:
### [`v7.9.1`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-791--2025-06-13)
[Compare Source](https://redirect.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://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-790--2025-06-11)
[Compare Source](https://redirect.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: [#​1746](https://redirect.github.com/nedbat/coveragepy/issues/1746)
.. \_issue 1977: [#​1977](https://redirect.github.com/nedbat/coveragepy/issues/1977)
.. \_pull 1978: [#​1978](https://redirect.github.com/nedbat/coveragepy/pull/1978)
.. \_issue 1980: [#​1980](https://redirect.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://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-782--2025-05-23)
[Compare Source](https://redirect.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: [#​1971](https://redirect.github.com/nedbat/coveragepy/pull/1971)
.. \_pull 1972: [#​1972](https://redirect.github.com/nedbat/coveragepy/pull/1972)
.. \_changes\_7-8-1:
### [`v7.8.1`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-781--2025-05-21)
[Compare Source](https://redirect.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: [#​1966](https://redirect.github.com/nedbat/coveragepy/issues/1966)
.. \_pull 1967: [#​1967](https://redirect.github.com/nedbat/coveragepy/pull/1967)
.. \_issue 1970: [#​1970](https://redirect.github.com/nedbat/coveragepy/issues/1970)
.. \_changes\_7-8-0:
### [`v7.8.0`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-780--2025-03-30)
[Compare Source](https://redirect.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: [#​1696](https://redirect.github.com/nedbat/coveragepy/issues/1696)
.. \_pull 1700: [#​1700](https://redirect.github.com/nedbat/coveragepy/pull/1700)
.. \_issue 1942: [#​1942](https://redirect.github.com/nedbat/coveragepy/issues/1942)
.. \_pull 1943: [#​1943](https://redirect.github.com/nedbat/coveragepy/pull/1943)
.. \_changes\_7-7-1:
### [`v7.7.1`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-771--2025-03-21)
[Compare Source](https://redirect.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://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-770--2025-03-16)
[Compare Source](https://redirect.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: [#​1888](https://redirect.github.com/nedbat/coveragepy/issues/1888)
.. \_pull 1919: [#​1919](https://redirect.github.com/nedbat/coveragepy/pull/1919)
.. \_changes\_7-6-12:
### [`v7.6.12`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-7612--2025-02-11)
[Compare Source](https://redirect.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: [#​1927](https://redirect.github.com/nedbat/coveragepy/issues/1927)
.. \_changes\_7-6-11:
### [`v7.6.11`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-7611--2025-02-08)
[Compare Source](https://redirect.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: [#​1914](https://redirect.github.com/nedbat/coveragepy/pull/1914)
.. \_issue 1924: [#​1924](https://redirect.github.com/nedbat/coveragepy/issues/1924)
.. \_pytest-dev 676: [pytest-dev/pytest-cov#676](https://redirect.github.com/pytest-dev/pytest-cov/issues/676)
.. \_changes\_7-6-10:
### [`v7.6.10`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-7610--2024-12-26)
[Compare Source](https://redirect.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: [#​1874](https://redirect.github.com/nedbat/coveragepy/issues/1874)
.. \_issue 1875: [#​1875](https://redirect.github.com/nedbat/coveragepy/issues/1875)
.. \_issue 1902: [#​1902](https://redirect.github.com/nedbat/coveragepy/issues/1902)
.. \_issue 1908: [#​1908](https://redirect.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://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-769--2024-12-06)
[Compare Source](https://redirect.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: [#​1901](https://redirect.github.com/nedbat/coveragepy/pull/1901)
.. \_changes\_7-6-8:
### [`v7.6.8`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-768--2024-11-23)
[Compare Source](https://redirect.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: [#​1896](https://redirect.github.com/nedbat/coveragepy/issues/1896)
.. \_changes\_7-6-7:
### [`v7.6.7`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-767--2024-11-15)
[Compare Source](https://redirect.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://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-766--2024-11-15)
[Compare Source](https://redirect.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: [#​1891](https://redirect.github.com/nedbat/coveragepy/issues/1891)
.. \_changes\_7-6-5:
### [`v7.6.5`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-765--2024-11-14)
[Compare Source](https://redirect.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: [pytest-dev/pytest-cov#666](https://redirect.github.com/pytest-dev/pytest-cov/issues/666)
.. \_changes\_7-6-4:
### [`v7.6.4`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-764--2024-10-20)
[Compare Source](https://redirect.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: [#​1880](https://redirect.github.com/nedbat/coveragepy/issues/1880)
.. \_changes\_7-6-3:
### [`v7.6.3`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-763--2024-10-13)
[Compare Source](https://redirect.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: [#​1873](https://redirect.github.com/nedbat/coveragepy/issues/1873)
.. \_issue 1876: [#​1876](https://redirect.github.com/nedbat/coveragepy/issues/1876)
.. \_changes\_7-6-2:
### [`v7.6.2`](https://redirect.github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-762--2024-10-09)
[Compare Source](https://redirect.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: [#​1835](https://redirect.github.com/nedbat/coveragepy/issues/1835)
.. \_issue 1836: [#​1836](https://redirect.github.com/nedbat/coveragepy/issues/1836)
.. \_pull 1838: [#​1838](https://redirect.github.com/nedbat/coveragepy/pull/1838)
.. \_pull 1843: [#​1843](https://redirect.github.com/nedbat/coveragepy/pull/1843)
.. \_issue 1846: [#​1846](https://redirect.github.com/nedbat/coveragepy/issues/1846)
.. \_pull 1849: [#​1849](https://redirect.github.com/nedbat/coveragepy/pull/1849)
.. \_issue 1850: [#​1850](https://redirect.github.com/nedbat/coveragepy/issues/1850)
.. \_pull 1851: [#​1851](https://redirect.github.com/nedbat/coveragepy/pull/1851)
.. \_issue 1852: [#​1852](https://redirect.github.com/nedbat/coveragepy/issues/1852)
.. \_issue 1860: [#​1860](https://redirect.github.com/nedbat/coveragepy/issues/1860)
.. \_issue 1863: [#​1863](https://redirect.github.com/nedbat/coveragepy/issues/1863)
.. \_changes\_7-6-1:
</details>
---
### Configuration
📅 **Schedule**: Branch creation - "every weekend" in timezone Etc/UTC, 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 was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/canonical/craft-cli).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS45Ny4xMCIsInVwZGF0ZWRJblZlciI6IjQxLjk3LjEwIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJQUjogRGVwZW5kZW5jaWVzIl19-->