Skip to content

chore(api): update dependency coverage to v7 (develop)

RenovateBot requested to merge renovate/develop-api-coverage-7.x into develop

This MR contains the following updates:

Package Type Update Change
coverage dev major ==6.5.0 -> ==7.4.1

Release Notes

nedbat/coveragepy (coverage)


Compare Source

  • Python 3.13.0a3 is supported.

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

.. _issue 1732:

.. _changes_7-4-0:


Compare Source

  • In Python 3.12 and above, you can try an experimental core based on the new :mod:sys.monitoring <python:sys.monitoring> module by defining a COVERAGE_CORE=sysmon environment variable. This should be faster for line coverage, but not for branch coverage, and plugins and dynamic contexts are not yet supported with it. I am very interested to hear how it works (or doesn't!) for you.

.. _changes_7-3-4:


Compare Source

  • Fix: the change for multi-line signature exclusions in 7.3.3 broke other forms of nested clauses being excluded properly. This is now fixed, closing issue 1713_.

  • Fix: in the HTML report, selecting code for copying won't select the line numbers also. Thanks, Robert Harris <pull 1717_>_.

.. _issue 1713: .. _pull 1717:

.. _changes_7-3-3:


Compare Source

  • Fix: function definitions with multi-line signatures can now be excluded by matching any of the lines, closing issue 684. Thanks, Jan Rusak, Maciej Kowalczyk and Joanna Ejzel <pull 1705_>.

  • Fix: XML reports could fail with a TypeError if files had numeric components that were duplicates except for leading zeroes, like and Fixes issue 1709_.

  • The coverage annotate command used to announce that it would be removed in a future version. Enough people got in touch to say that they use it, so it will stay. Don't expect it to keep up with other new features though.

  • Added new :ref:debug options <cmd_run_debug>:

    • pytest writes the pytest test name into the debug output.

    • dataop2 writes the full data being added to CoverageData objects.

.. _issue 684: .. _pull 1705: .. _issue 1709:

.. _changes_7-3-2:


Compare Source

  • The coverage lcov command ignored the [report] exclude_lines and [report] exclude_also settings (issue 1684). This is now fixed, thanks Jacqueline Lee <pull 1685_>.

  • Sometimes SQLite will create journal files alongside the database files. These are ephemeral, but could be mistakenly included when combining data files. Now they are always ignored, fixing issue 1605_. Thanks to Brad Smith for suggesting fixes and providing detailed debugging.

  • On Python 3.12+, we now disable SQLite writing journal files, which should be a little faster.

  • The new 3.12 soft keyword type is properly bolded in HTML reports.

  • Removed the "fullcoverage" feature used by CPython to measure the coverage of early-imported standard library modules. CPython stopped using it <88054_>_ in 2021, and it stopped working completely in Python 3.13.

.. _issue 1605: .. _issue 1684: .. _pull 1685: .. _88054:

.. _changes_7-3-1:


Compare Source

  • The semantics of stars in file patterns has been clarified in the docs. A leading or trailing star matches any number of path components, like a double star would. This is different than the behavior of a star in the middle of a pattern. This discrepancy was identified by Sviatoslav Sydorenko <starbad_>, who provided patient detailed diagnosis <pull 1650_> and graciously agreed to a pragmatic resolution.

  • The API docs were missing from the last version. They are now restored <apidocs_>_.

.. _apidocs: .. _starbad: .. _pull 1650:

.. _changes_7-3-0:


Compare Source

  • Added a :meth:.Coverage.collect context manager to start and stop coverage data collection.

  • Dropped support for Python 3.7.

  • Fix: in unusual circumstances, SQLite cannot be set to asynchronous mode. would fail with the error Safety level may not be changed inside a transaction. This is now avoided, closing issue 1646_. Thanks to Michael Bell for the detailed bug report.

  • Docs: examples of configuration files now include separate examples for the different syntaxes: .coveragerc, pyproject.toml, setup.cfg, and tox.ini.

  • Fix: added nosemgrep comments to our JavaScript code so that semgrep-based SAST security checks won't raise false alarms about security problems that aren't problems.

  • Added a CITATION.cff file, thanks to Ken Schackart <pull 1641_>_.

.. _pull 1641: .. _issue 1646:

.. _changes_7-2-7:


Compare Source

  • Fix: reverted a change from 6.4.3 <pull 1347b_>_ that helped Cython, but also increased the size of data files when using dynamic contexts, as described in the now-fixed issue 1586. The problem is now avoided due to a recent change (issue 1538 <issue 1538b_>). Thanks to Anders Kaseorg <pull 1629_>_ and David Szotten for persisting with problem reports and detailed diagnoses.

  • Wheels are now provided for CPython 3.12.

.. _pull 1347b: .. _issue 1538b: .. _issue 1586: .. _pull 1629:

.. _changes_7-2-6:


Compare Source

  • Fix: the lcov command could raise an IndexError exception if a file is translated to Python but then executed under its own name. Jinja2 does this when rendering templates. Fixes issue 1553_.

  • Python 3.12 beta 1 now inlines comprehensions. Previously they were compiled as invisible functions and would warn you if they weren't completely executed. This no longer happens under Python 3.12.

  • Fix: the coverage debug sys command includes some environment variables in its output. This could have included sensitive data. Those values are now hidden with asterisks, closing issue 1628_.

.. _issue 1553: .. _issue 1628:

.. _changes_7-2-5:


Compare Source

  • Fix: html_report() could fail with an AttributeError on isatty if run in an unusual environment where sys.stdout had been replaced. This is now fixed.

.. _changes_7-2-4:


Compare Source

PyCon 2023 sprint fixes!

  • Fix: with relative_files = true, specifying a specific file to include or omit wouldn't work correctly (issue 1604). This is now fixed, with testing help by Marc Gibbons <pull 1608_>.

  • Fix: the XML report would have an incorrect <source> element when using relative files and the source option ended with a slash (issue 1541). This is now fixed, thanks to Kevin Brown-Silva <pull 1608_>.

  • When the HTML report location is printed to the terminal, it's now a terminal-compatible URL, so that you can click the location to open the HTML file in your browser. Finishes issue 1523_ thanks to Ricardo Newbery <pull 1613_>_.

  • Docs: a new :ref:Migrating page <migrating> with details about how to migrate between major versions of It currently covers the wildcard changes in 7.x. Thanks, Brian Grohe <pull 1610_>_.

.. _issue 1523: .. _issue 1541: .. _issue 1604: .. _pull 1608: .. _pull 1609: .. _pull 1610: .. _pull 1613:

.. _changes_7-2-3:


Compare Source

  • Fix: the :ref:config_run_sigterm setting was meant to capture data if a process was terminated with a SIGTERM signal, but it didn't always. This was fixed thanks to Lewis Gaul <pull 1600_>, closing issue 1599.

  • Performance: HTML reports with context information are now much more compact. File sizes are typically as small as one-third the previous size, but can be dramatically smaller. This closes issue 1584_ thanks to Oleh Krehel <pull 1587_>_.

  • Development dependencies no longer use hashed pins, closing issue 1592_.

.. _issue 1584: .. _pull 1587: .. _issue 1592: .. _issue 1599: .. _pull 1600:

.. _changes_7-2-2:


Compare Source

  • Fix: if a virtualenv was created inside a source directory, and a sourced package was installed inside the virtualenv, then all of the third-party packages inside the virtualenv would be measured. This was incorrect, but has now been fixed: only the specified packages will be measured, thanks to Manuel Jacob <pull 1560_>_.

  • Fix: the coverage lcov command could create a .lcov file with incorrect LF (lines found) and LH (lines hit) totals. This is now fixed, thanks to Ian Moore <pull 1583_>_.

  • Fix: the coverage xml command on Windows could create a .xml file with duplicate <package> elements. This is now fixed, thanks to Benjamin Parzella <pull 1574_>, closing issue 1573.

.. _pull 1560: .. _issue 1573: .. _pull 1574: .. _pull 1583:

.. _changes_7-2-1:


Compare Source

  • Fix: the PyPI page had broken links to documentation pages, but no longer does, closing issue 1566_.

  • Fix: public members of the coverage module are now properly indicated so that mypy will find them, fixing issue 1564_.

.. _issue 1564: .. _issue 1566:

.. _changes_7-2-0:


Compare Source

  • Added a new setting [report] exclude_also to let you add more exclusions without overwriting the defaults. Thanks, Alpha Chen <pull 1557_>, closing issue 1391.

  • Added a :meth:.CoverageData.purge_files method to remove recorded data for a particular file. Contributed by Stephan Deibel <pull 1547_>_.

  • Fix: when reporting commands fail, they will no longer congratulate themselves with messages like "Wrote XML report to file.xml" before spewing a traceback about their failure.

  • Fix: arguments in the public API that name file paths now accept pathlib.Path objects. This includes the data_file and config_file arguments to the Coverage constructor and the basename argument to CoverageData. Closes issue 1552_.

  • Fix: In some embedded environments, an IndexError could occur on stop() when the originating thread exits before completion. This is now fixed, thanks to Russell Keith-Magee <pull 1543_>, closing issue 1542.

  • Added a py.typed file to announce our type-hintedness. Thanks, KotlinIsland <pull 1550_>_.

.. _issue 1391: .. _issue 1542: .. _pull 1543: .. _pull 1547: .. _pull 1550: .. _issue 1552: .. _pull 1557:

.. _changes_7-1-0:


Compare Source

  • Added: the debug output file can now be specified with [run] debug_file in the configuration file. Closes issue 1319_.

  • Performance: fixed a slowdown with dynamic contexts that's been around since 6.4.3. The fix closes issue 1538. Thankfully this doesn't break the Cython change that fixed issue 972_. Thanks to Mathieu Kniewallner for the deep investigative work and comprehensive issue report.

  • Typing: all product and test code has type annotations.

.. _Cython change: .. _issue 972: .. _issue 1319: .. _issue 1538:

.. _changes_7-0-5:


Compare Source

  • Fix: On Python 3.7, a file with type annotations but no from __future__ import annotations would be missing statements in the coverage report. This is now fixed, closing issue 1524_.

.. _issue 1524:

.. _changes_7-0-4:


Compare Source

  • Performance: an internal cache of file names was accidentally disabled, resulting in sometimes drastic reductions in performance. This is now fixed, closing issue 1527_. Thanks to Ivan Ciuvalschii for the reproducible test case.

.. _issue 1527:

.. _changes_7-0-3:


Compare Source

  • Fix: when using pytest-cov or pytest-xdist, or perhaps both, the combining step could fail with assert row is not None using 7.0.2. This was due to a race condition that has always been possible and is still possible. In 7.0.1 and before, the error was silently swallowed by the combining code. Now it will produce a message "Couldn't combine data file" and ignore the data file as it used to do before 7.0.2. Closes issue 1522_.

.. _issue 1522:

.. _changes_7-0-2:


Compare Source

  • Fix: when using the [run] relative_files = True setting, a relative [paths] pattern was still being made absolute. This is now fixed, closing issue 1519_.

  • Fix: if Python doesn't provide tomllib, then TOML configuration files can only be read if is installed with the [toml] extra. will raise an error if TOML support is not installed when it sees your settings are in a .toml file. But it didn't understand that [tools.coverage] was a valid section header, so the error wasn't reported if you used that header, and settings were silently ignored. This is now fixed, closing issue 1516_.

  • Fix: adjusted how decorators are traced on PyPy 7.3.10, fixing issue 1515_.

  • Fix: the coverage lcov report did not properly implement the --fail-under=MIN option. This has been fixed.

  • Refactor: added many type annotations, including a number of refactorings. This should not affect outward behavior, but they were a bit invasive in some places, so keep your eyes peeled for oddities.

  • Refactor: removed the vestigial and long untested support for Jython and IronPython.

.. _issue 1515: .. _issue 1516: .. _issue 1519:

.. _changes_7-0-1:


Compare Source

  • When checking if a file mapping resolved to a file that exists, we weren't considering files in .whl files. This is now fixed, closing issue 1511_.

  • File pattern rules were too strict, forbidding plus signs and curly braces in directory and file names. This is now fixed, closing issue 1513_.

  • Unusual Unicode or control characters in source files could prevent reporting. This is now fixed, closing issue 1512_.

  • The PyPy wheel now installs on PyPy 3.7, 3.8, and 3.9, closing issue 1510_.

.. _issue 1510: .. _issue 1511: .. _issue 1512: .. _issue 1513:

.. _changes_7-0-0:


Compare Source

Nothing new beyond 7.0.0b1.

.. _changes_7-0-0b1:


📅 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 MR becomes conflicted, or you tick the rebase/retry checkbox.

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

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

This MR has been generated by Renovate Bot.

Edited by RenovateBot

Merge request reports