Changelog
### 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:
```
### 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:
```
### 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:
```
### 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:
```
Links
- PyPI: https://pypi.org/project/coverage
- Changelog: https://data.safetycli.com/changelogs/coverage/
- Repo: https://github.com/nedbat/coveragepy
This PR updates coverage from 7.5.1 to 7.6.0.
Changelog
### 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: ``` ### 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: ``` ### 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: ``` ### 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: ```Links
- PyPI: https://pypi.org/project/coverage - Changelog: https://data.safetycli.com/changelogs/coverage/ - Repo: https://github.com/nedbat/coveragepy