Releases: nedbat/coveragepy
5.1
Version 5.1 — 2020-04-12
- The JSON report now includes counts of covered and missing branches. Thanks, Salvatore Zagaria.
- On Python 3.8, try-finally-return reported wrong branch coverage with decorated async functions (issue 964). This is now fixed. Thanks, Kjell Braden.
- The get_option() and set_option() methods can now manipulate the
[paths]
configuration setting. Thanks to Bernát Gábor for the fix for issue 967.
➡️ PyPI page: coverage 5.1.
➡️ To install: python3 -m pip install coverage==5.1
5.0.4
Version 5.0.4 — 2020-03-16
- If using the
[run] relative_files
setting, the XML report will use relative files in the<source>
elements indicating the location of source code. Closes issue 948. - The textual summary report could report missing lines with negative line numbers on PyPy3 7.1 (issue 943). This is now fixed.
- Windows wheels for Python 3.8 were incorrectly built, but are now fixed. (issue 949)
- Updated Python 3.9 support to 3.9a4.
- HTML reports couldn’t be sorted if localStorage wasn’t available. This is now fixed: sorting works even though the sorting setting isn’t retained. (issue 944 and pull request 945). Thanks, Abdeali Kothari.
➡️ PyPI page: coverage 5.0.4.
➡️ To install: python3 -m pip install coverage==5.0.4
5.0.3
Version 5.0.3 — 2020-01-12
- A performance improvement in 5.0.2 didn’t work for test suites that changed directory before combining data, causing “Couldn’t use data file: no such table: meta” errors (issue 916). This is now fixed.
- Coverage could fail to run your program with some form of “ModuleNotFound” or “ImportError” trying to import from the current directory. This would happen if coverage had been packaged into a zip file (for example, on Windows), or was found indirectly (for example, by pyenv-virtualenv). A number of different scenarios were described in issue 862 which is now fixed. Huge thanks to Agbonze O. Jeremiah for reporting it, and Alexander Waters and George-Cristian Bîrzan for protracted debugging sessions.
- Added the “premain” debug option.
- Added SQLite compile-time options to the “debug sys” output.
➡️ PyPI page: coverage 5.0.3.
➡️ To install: python3 -m pip install coverage==5.0.3
5.0.2
Version 5.0.2 — 2020-01-05
- Programs that used multiprocessing and changed directories would fail under coverage. This is now fixed (issue 890). A side effect is that debug information about the config files read now shows absolute paths to the files.
- When running programs as modules (
coverage run -m
) with--source
, some measured modules were imported before coverage starts. This resulted in unwanted warnings (“Already imported a file that will be measured”) and a reduction in coverage totals (issue 909). This is now fixed. - If no data was collected, an exception about “No data to report” could happen instead of a 0% report being created (issue 884). This is now fixed.
- The handling of source files with non-encodable file names has changed. Previously, if a file name could not be encoded as UTF-8, an error occurred, as described in issue 891. Now, those files will not be measured, since their data would not be recordable.
- A new warning (“dynamic-conflict”) is issued if two mechanisms are trying to change the dynamic context. Closes issue 901.
coverage run --debug=sys
would fail with an AttributeError. This is now fixed (issue 907).
➡️ PyPI page: coverage 5.0.2.
➡️ To install: python3 -m pip install coverage==5.0.2
5.0.1
Version 5.0.1 — 2019-12-22
- If a 4.x data file is the cause of a “file is not a database” error, then use a more specific error message, “Looks like a coverage 4.x data file, are you mixing versions of coverage?” Helps diagnose the problems described in issue 886.
- Measurement contexts and relative file names didn’t work together, as reported in issue 899 and issue 900. This is now fixed, thanks to David Szotten.
- When using
coverage run --concurrency=multiprocessing
, all data files should be named with parallel-ready suffixes. 5.0 mistakenly named the main process’ file with no suffix when using--append
. This is now fixed, closing issue 880. - Fixed a problem on Windows when the current directory is changed to a different drive (issue 895). Thanks, Olivier Grisel.
- Updated Python 3.9 support to 3.9a2.
➡️ PyPI page: coverage 5.0.1.
➡️ To install: python3 -m pip install coverage==5.0.1
5.0
Version 5.0 — 2019-12-14
Nothing new beyond 5.0b2.
A summary of major changes in 5.0 since 4.5.x is in see Major changes in 5.0.
➡️ PyPI page: coverage 5.0.
➡️ To install: python3 -m pip install coverage==5.0
5.0b2
Version 5.0b2 — 2019-12-08
- An experimental
[run] relative_files
setting tells coverage to store relative file names in the data file. This makes it easier to run tests in one (or many) environments, and then report in another. It has not had much real-world testing, so it may change in incompatible ways in the future. - When constructing a coverage.Coverage object, data_file can be specified as None to prevent writing any data file at all. In previous versions, an explicit data_file=None argument would use the default of “.coverage”. Fixes issue 871.
- Python files run with
-m
now have__spec__
defined properly. This fixes issue 745 (about not being able to run unittest tests that spawn subprocesses), and issue 838, which described the problem directly. - The
[paths]
configuration section is now ordered. If you specify more than one list of patterns, the first one that matches will be used. Fixes issue 649. - The coverage.numbits.register_sqlite_functions() function now also registers numbits_to_nums for use in SQLite queries. Thanks, Simon Willison.
- Python 3.9a1 is supported.
- Coverage.py has a mascot: Sleepy Snake.
➡️ PyPI page: coverage 5.0b2.
➡️ To install: python3 -m pip install coverage==5.0b2
5.0b1
Version 5.0b1 — 2019-11-11
- The HTML and textual reports now have a
--skip-empty
option that skips files with no statements, notably__init__.py
files. Thanks, Reya B. - Configuration can now be read from TOML files. This requires installing coverage.py with the
[toml]
extra. The standard “pyproject.toml” file will be read automatically if no other configuration file is found, with settings in the[tool.coverage.]
namespace. Thanks to Frazer McLean for implementation and persistence. Finishes issue 664. - The
[run] note
setting has been deprecated. Using it will result in a warning, and the note will not be written to the data file. The corresponding CoverageData methods have been removed. - The HTML report has been reimplemented (no more table around the source code). This allowed for a better presentation of the context information, hopefully resolving issue 855.
- Added sqlite3 module version information to
coverage debug sys
output. - Asking the HTML report to show contexts (
[html] show_contexts=True
orcoverage html --show-contexts
) will issue a warning if there were no contexts measured (issue 851).
➡️ PyPI page: coverage 5.0b1.
➡️ To install: python3 -m pip install coverage==5.0b1
5.0a8
Version 5.0a8 — 2019-10-02
- The CoverageData API has changed how queries are limited to specific contexts. Now you use CoverageData.set_query_context() to set a single exact-match string, or CoverageData.set_query_contexts() to set a list of regular expressions to match contexts. This changes the command-line
--contexts
option to use regular expressions instead of filename-style wildcards.
➡️ PyPI page: coverage 5.0a8.
➡️ To install: python3 -m pip install coverage==5.0a8
5.0a7
Version 5.0a7 — 2019-09-21
- Data can now be “reported” in JSON format, for programmatic use, as requested in issue 720. The new
coverage json
command writes raw and summarized data to a JSON file. Thanks, Matt Bachmann. - Dynamic contexts are now supported in the Python tracer, which is important for PyPy users. Closes issue 846.
- The compact line number representation introduced in 5.0a6 is called a “numbits.” The coverage.numbits module provides functions for working with them.
- The reporting methods used to permanently apply their arguments to the configuration of the Coverage object. Now they no longer do. The arguments affect the operation of the method, but do not persist.
- A class named “test_something” no longer confuses the
test_function
dynamic context setting. Fixes issue 829. - Fixed an unusual tokenizing issue with backslashes in comments. Fixes issue 822.
debug=plugin
didn’t properly support configuration or dynamic context plugins, but now it does, closing issue 834.
➡️ PyPI page: coverage 5.0a7.
➡️ To install: python3 -m pip install coverage==5.0a7