NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #125 most downloaded on PyPI
Code coverage measurement for Python
Last release 5 days ago
13 Sep 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 59 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
17 years old
196 releases · first in 2009
The deprecated *Reporter.file\_reporters* property has been removed.
--contexts option is available on the report and html commands. It’s a comma-separated list of shell-style wildcards, selecting the contexts to report on. Only contexts matching one of the wildcards will be included in the report.--show-contexts option for the html command adds context information to each covered line. Hovering over the “ctx” marker at the end of the line reveals a list of the contexts that covered the line.--ignore-errors option keeps errors from stopping the reporting, but files that couldn’t parse as Python will always be reported as warnings. As with other warnings, you can suppress them with the [run] disable_warnings configuration setting.:arrow_right: PyPI page: coverage 5.0a6.
:arrow_right: To install: python3 -m pip install coverage==5.0a6
One column per quarter.
Dynamic contexts can now be set two new ways, both thanks to Justas Sadzevičius.
dynamic_context method to check frames for whether a new context should be started. See Dynamic Context Switchers for more details.dynamic_context = test_function setting now works with Python 2 old-style classes, though it only reports the method name, not the class it was defined on. Closes issue 797.fail_under values more than 100 are reported as errors. Thanks to Mike Fiedler for closing issue 746.filename attribute on CoverageData objects has been made private. You can use the data_filename method to get the actual file name being used to store data, and the base_filename method to get the original filename before parallelizing suffixes were added. This is part of fixing issue 708.:arrow_right: PyPI page: coverage 5.0a5.
:arrow_right: To install: python3 -m pip install coverage==5.0a5
You can specify the command line to run your program with the [run] command_line configuration setting, as requested in issue 695.
[run] command_line configuration setting, as requested in issue 695.coverage run command has always adjusted the first entry in sys.path, to properly emulate how Python runs your program. Now this adjustment is skipped if sys.path[0] is already different than Python’s default. This fixes issue 715.:arrow_right: PyPI page: coverage 5.0a4.
:arrow_right: To install: python3 -m pip install coverage==5.0a4
Context support: static contexts let you specify a label for a coverage run, which is recorded in the data, and retained when you combine files. See M
[run] dynamic_context = test_function in the config file will record the test function name as a dynamic context during execution. This is the core of “Who Tests What” (issue 170). Things to note:
dynamic_context are recognized yet. Let me know what else would be useful. I’d like to use a pytest plugin to get better information directly from pytest, for example.VARNAME is not defined, ${VARNAME?} will raise an error, and ${VARNAME-default value} will use “default value”.:arrow_right: PyPI page: coverage 5.0a3.
:arrow_right: To install: python3 -m pip install coverage==5.0a3
Coverage’s data storage has changed. In version 4.x, .coverage files were basically JSON. Now, they are SQLite databases. This means the data file can
parallel=true where you didn’t before.COVERAGE_STORAGE=json. Please tell me if you think you need to keep the JSON format.:arrow_right: PyPI page: coverage 5.0a2.
:arrow_right: To install: python3 -m pip install coverage==5.0a2
Coverage.py no longer supports Python 2.6 or 3.3.
COVERAGE_RCFILE environment variable, as requested in issue 650.already-imported) is issued if measurable files have already been imported before coverage.py started measurement. See Warnings for more information.:arrow_right: PyPI page: coverage 5.0a1.
:arrow_right: To install: python3 -m pip install coverage==5.0a1
Multiprocessing support in Python 3.8 was broken, but is now fixed. Closes issue 828.
:arrow_right: PyPI page: coverage 4.5.4.
:arrow_right: To install: python3 -m pip install coverage==4.5.4
Multiprocessing support in Python 3.8 was broken, but is now fixed. Closes issue 828.
Only packaging metadata changes.
:arrow_right: PyPI page: coverage 4.5.3.
:arrow_right: To install: python3 -m pip install coverage==4.5.3
Namespace packages are supported on Python 3.7, where they used to cause TypeErrors about path being None. Fixes issue 700.
:arrow_right: PyPI page: coverage 4.5.2.
:arrow_right: To install: python3 -m pip install coverage==4.5.2
Now that 4.5 properly separated the [run] omit and [report] omit settings, an old bug has become apparent. If you specified a package name for [run] s
[run] omit and [report] omit settings, an old bug has become apparent. If you specified a package name for [run] source, then omit patterns weren’t matched inside that package. This bug (issue 638) is now fixed.--debug=sys.:arrow_right: PyPI page: coverage 4.5.1.
:arrow_right: To install: python3 -m pip install coverage==4.5.1
A new kind of plugin is supported: configurers are invoked at start-up to allow more complex configuration than the .coveragerc file can easily do. Se
fail_under option can now be a float. Note that you must specify the [report] precision configuration option for the fractional part to be used. Thanks to Lars Hupfeldt Nielsen for help with the implementation. Fixes issue 631.include and omit options can be specified for both the [run] and [report] phases of execution. 4.4.2 introduced some incorrect interactions between those phases, where the options for one were confused for the other. This is now corrected, fixing issue 621 and issue 622. Thanks to Daniel Hahler for seeing more clearly than I could.coverage combine command used to always overwrite the data file, even when no data had been read from apparently combinable files. Now, an error is raised if we thought there were files to combine, but in fact none of them could be used. Fixes issue 629.coverage combine command could get confused about path separators when combining data collected on Windows with data collected on Linux, as described in issue 618. This is now fixed: the result path always uses the path separator specified in the [paths] result.:arrow_right: PyPI page: coverage 4.5.
:arrow_right: To install: python3 -m pip install coverage==4.5
Support for Python 3.7. In some cases, class and module docstrings are no longer counted in statement totals, which could slightly change your total r
--source and --include no longer silently ignores the include setting, instead it displays a warning. Thanks, Loïc Dachary. Closes issue 265 and issue 101.:arrow_right: PyPI page: coverage 4.4.2.
:arrow_right: To install: python3 -m pip install coverage==4.4.2
No code changes: just corrected packaging for Python 2.7 Linux wheels.
:arrow_right: PyPI page: coverage 4.4.1.
:arrow_right: To install: python3 -m pip install coverage==4.4.1
No code changes: just corrected packaging for Python 2.7 Linux wheels.
Reports could produce the wrong file names for packages, reporting pkg.py instead of the correct pkg/__init__.py. This is now fixed. Thanks, Dirk Thom
pkg.py instead of the correct pkg/__init__.py. This is now fixed. Thanks, Dirk Thomas.<source> and <class> lines that together didn’t specify a valid source file path. This is now fixed. (issue 526)sys.settrace(sys.gettrace()) in a file that wasn’t being coverage-measured would prevent correct coverage measurement in following code. An example of this was running doctests programmatically. This is now fixed. (issue 575)coverage command now go to stderr instead of stdout.coverage xml in a directory named with non-ASCII characters would fail under Python 2. This is now fixed. (issue 573):arrow_right: PyPI page: coverage 4.4.
:arrow_right: To install: python3 -m pip install coverage==4.4
Some warnings can now be individually disabled. Warnings that can be disabled have a short name appended. The [run] disable_warnings setting takes a l
[run] disable_warnings setting takes a list of these warning names to disable. Closes both issue 96 and issue 355.coverage run, though you will still have to do the reporting phase with CPython.:arrow_right: PyPI page: coverage 4.4b1.
:arrow_right: To install: python3 -m pip install coverage==4.4b1
Fixing 2.6 in version 4.3.3 broke other things, because the too-tricky exception wasn’t properly derived from Exception, described in issue 556. A new
:arrow_right: PyPI page: coverage 4.3.4.
:arrow_right: To install: python3 -m pip install coverage==4.3.4
Python 2.6 support was broken due to a testing exception imported for the benefit of the coverage.py test suite. Properly conditionalizing it fixed is
:arrow_right: PyPI page: coverage 4.3.3.
:arrow_right: To install: python3 -m pip install coverage==4.3.3
Using the --skip-covered option on an HTML report with 100% coverage would cause a “No data to report” error, as reported in issue 549. This is now fi
--skip-covered option on an HTML report with 100% coverage would cause a “No data to report” error, as reported in issue 549. This is now fixed; thanks, Loïc Dachary.if 0: or if __debug__:. Coverage.py had problems properly understanding these statements which existed in the source, but not in the compiled bytecode. This problem, reported in issue 522, is now fixed.--source as a directory, then coverage.py would look for importable Python files in that directory, and could identify ones that had never been executed at all. But if you specified it as a package name, that detection wasn’t performed. Now it is, closing issue 426. Thanks to Loïc Dachary for the fix.jython -m coverage run myprog.py works properly.--skip-covered. And imagine due to your heroic test-writing efforts, a file just achieved the goal of 100% coverage. With coverage.py 4.3, the old HTML file with the less-than-100% coverage would be left behind. This file is now properly deleted.:arrow_right: PyPI page: coverage 4.3.2.
:arrow_right: To install: python3 -m pip install coverage==4.3.2
Some environments couldn’t install 4.3, as described in issue 540. This is now fixed.
--source and --include was too simple in a few different ways, breaking a few perfectly reasonable use cases, described in issue 541. The check has been reverted while we re-think the fix for issue 265.:arrow_right: PyPI page: coverage 4.3.1.
:arrow_right: To install: python3 -m pip install coverage==4.3.1
Prevented deprecation warnings from configparser that happened in some circumstances, closing issue 530.
Special thanks to Loïc Dachary, who took an extraordinary interest in coverage.py and contributed a number of improvements in this release.
coverage combine command will now fail if there are no data files to combine. The combine changes in 4.2 meant that multiple combines could lose data, leaving you with an empty .coverage data file. Fixes issue 525, issue 412, issue 516, and probably issue 511.--skip-covered option like the other reporting commands. Thanks, Loïc Dachary for the implementation, closing issue 433.[run] options will be read from the [coverage:run] section of tox.ini. Implements part of issue 519. Thanks, Stephen Finucane.--source and --include no longer silently ignores the include setting, instead it fails with a message. Thanks, Nathan Land and Loïc Dachary. Closes issue 265.Coverage.combine method has a new parameter, strict=False, to support failing if there are no data files to combine.[run] debug setting:
concurrency=multiprocessing.--source options. Thanks, Cosimo Lupo.:arrow_right: PyPI page: coverage 4.3.
:arrow_right: To install: python3 -m pip install coverage==4.3
Since concurrency=multiprocessing uses subprocesses, options specified on the coverage.py command line will not be communicated down to them. Only opt
concurrency=multiprocessing uses subprocesses, options specified on the coverage.py command line will not be communicated down to them. Only options in the configuration file will apply to the subprocesses. Previously, the options didn’t apply to the subprocesses, but there was no indication. Now it is an error to use --concurrency=multiprocessing and other run-affecting options on the command line. This prevents failures like those reported in issue 495.:arrow_right: PyPI page: coverage 4.2.
:arrow_right: To install: python3 -m pip install coverage==4.2
BACKWARD INCOMPATIBILITY: the coverage combine command now ignores an existing .coverage data file. It used to include that file in its combining. Thi…
Work from the PyCon 2016 Sprints!
coverage combine command now ignores an existing .coverage data file. It used to include that file in its combining. This caused confusing results, and extra tox “clean” steps. If you want the old behavior, use the new coverage combine --append option.concurrency option can now take multiple values, to support programs using multiprocessing and another library such as eventlet. This is only possible in the configuration file, not from the command line. The configuration file is the only way for subprocesses to all run with the same options. Fixes issue 484. Thanks to Josh Williams for prototyping.concurrency setting of multiprocessing now implies --parallel so that the main program is measured similarly to the subprocesses.report:sort, controls what column of the text report is used to sort the rows. Thanks to Dan Wandschneider, this closes issue 199.-i flag to allow the report to continue. Closes issue 231, thanks, Nathan Land.coverage debug is available: coverage debug config shows the current configuration. Closes issue 454, thanks to Matthew Boehm.python -m coverage) no longer shows the program name as __main__.py. Fixes issue 478. Thanks, Scott Belden.:arrow_right: PyPI page: coverage 4.2b1.
:arrow_right: To install: python3 -m pip install coverage==4.2b1
It has been restored, but with a deprecation warning.
:arrow_right: PyPI page: coverage 4.1.
:arrow_right: To install: python3 -m pip install coverage==4.1
When running your program, execution can jump from an except X: line to some other line when an exception other than X happens. This jump is no longer
except X: line to some other line when an exception other than X happens. This jump is no longer considered a branch when measuring branch coverage.yield statements that were never resumed were incorrectly marked as missing, as reported in issue 440. This is now fixed.coverage report -m will now say ->exit for missed branches to the exit of a function, rather than a negative number. Fixes issue 469.coverage --help and coverage --version now mention which tracer is installed, to help diagnose problems. The docs mention which features need the C extension. (issue 479):arrow_right: PyPI page: coverage 4.1b3.
:arrow_right: To install: python3 -m pip install coverage==4.1b3
Problems with the new branch measurement in 4.1 beta 1 were fixed:
yield from and await were considered returns from functions, since they could transfer control to the caller. This produced unhelpful “missing branch” reports in a number of circumstances. Now they no longer are considered returns.source=. Fixes issue 465.coverage report won’t produce trailing white space.:arrow_right: PyPI page: coverage 4.1b2.
:arrow_right: To install: python3 -m pip install coverage==4.1b2
Branch analysis has been rewritten: it used to be based on bytecode, but now uses AST analysis. This has changed a number of things:
try/except structures. This may mean that coverage.py will identify more code paths as uncovered. This could either raise or lower your overall coverage number.async and await keywords are properly supported, fixing issue 434.def line.except block could be incorrectly marked as a missing branch.with statements) in a loop or try block could confuse the branch measurement, reporting incorrect partial branches.:arrow_right: PyPI page: coverage 4.1b1.
:arrow_right: To install: python3 -m pip install coverage==4.1b1
Fixed a mysterious problem that manifested in different ways: sometimes hanging the process (issue 420), sometimes making database connections fail (i
<source> elements when using a --source= option somewhere besides the current directory. This fixes issue 439. Thanks, Arcadiy Ivanov.:arrow_right: PyPI page: coverage 4.0.3.
:arrow_right: To install: python3 -m pip install coverage==4.0.3
More work on supporting unusually encoded source. Fixed issue 431.
:arrow_right: PyPI page: coverage 4.0.2.
:arrow_right: To install: python3 -m pip install coverage==4.0.2
When combining data files, unreadable files will now generate a warning instead of failing the command. This is more in line with the older coverage.p
__init__ module explicitly would lead to an error: AttributeError: 'module' object has no attribute '__path__', as reported in issue 410. This is now fixed.sys.settrace(sys.gettrace()) used to incur a more than 2x speed penalty. Now there’s no penalty at all. Fixes issue 397.:arrow_right: PyPI page: coverage 4.0.1.
:arrow_right: To install: python3 -m pip install coverage==4.0.1
:arrow_right: PyPI page: coverage 4.0. :arrow_right: To install: python3 -m pip install coverage==4.0
No changes from 4.0b3
:arrow_right: PyPI page: coverage 4.0.
:arrow_right: To install: python3 -m pip install coverage==4.0
Reporting on an unmeasured file would fail with a traceback. This is now fixed, closing issue 403.
:arrow_right: PyPI page: coverage 4.0b3.
:arrow_right: To install: python3 -m pip install coverage==4.0b3
4.0b1 broke --append creating new data files. This is now fixed, closing issue 392.
--append creating new data files. This is now fixed, closing issue 392.py.test --cov can write empty data, then touch files due to --source, which made coverage.py mistakenly force the data file to record lines instead of arcs. This would lead to a “Can’t combine line data with arc data” error message. This is now fixed, and changed some method names in the CoverageData interface. Fixes issue 399.report --skip-covered, a message will now be included in the report output indicating how many files were skipped, and if all files are skipped, coverage.py won’t accidentally scold you for having no data to report. Thanks, Krystian Kichewko.python -m coverage.pickle2json will convert v3.x pickle data files to v4.x JSON data files. Thanks, Alexander Todorov. Closes issue 395.:arrow_right: PyPI page: coverage 4.0b2.
:arrow_right: To install: python3 -m pip install coverage==4.0b2
Coverage.py is now licensed under the Apache 2.0 license. See NOTICE.txt for details. Closes issue 313.
[run] note, lets you set a note that will be stored in the runs section of the data file. You can use this to annotate the data file with any information you like.coverage erase will now delete all of the data files, fixing issue 262.coverage run and will run a __main__.py found there, just like Python will. Fixes issue 252. Thanks, Dmitry Trofimov.missing-branches attribute. Thanks, Steve Peak. This is not a part of the Cobertura DTD, so the XML report no longer references the DTD.fail_under to be applied even when the report is empty. Thanks, Ionel Cristian Mărieș.Plugin, coverage.py looks for a function called coverage_init.Coverage.use_cache method is no longer supported.Coverage._harvest_data is now called Coverage.get_data, and returns the CoverageData containing the collected data.coverage combine now accepts files as well as directories.:arrow_right: PyPI page: coverage 4.0b1.
:arrow_right: To install: python3 -m pip install coverage==4.0b1
Python 3.5b2 and PyPy 2.6.0 are supported.
coverage.Coverage object, and use methods on it.coverage combine command now accepts any number of directories as arguments, and will combine all the data files from those directories. This means you don’t have to copy the files to one directory before combining. Thanks, Christine Lytwynec. Finishes issue 354.COVERAGE_DEBUG environment variable can be used to set the [run] debug configuration option to control what internal operations are logged.coverage annotate command now handles non-ASCII characters properly, closing issue 363. Thanks, Leonardo Pistone.:arrow_right: PyPI page: coverage 4.0a6.
:arrow_right: To install: python3 -m pip install coverage==4.0a6
Plugin support is now implemented in the C tracer instead of the Python tracer. This greatly improves the speed of tracing projects using plugins.
--concurrency=multiprocessing, either on the command line or in the .coveragerc file (issue 117). Thanks, Eduardo Schettino. Currently, this does not work on Windows.:arrow_right: PyPI page: coverage 4.0a5.
:arrow_right: To install: python3 -m pip install coverage==4.0a5
Plugins can now provide sys\_info for debugging output.
:arrow_right: PyPI page: coverage 4.0a4.
:arrow_right: To install: python3 -m pip install coverage==4.0a4
Reports now use file names with extensions. Previously, a report would describe a/b/c.py as “a/b/c”. Now it is shown as “a/b/c.py”. This allows for be
[xml] package_depth controls which directories are identified as packages in the report. Directories deeper than this depth are not reported as packages. The default is that all directories are reported as packages. Thanks, Lex Berezhny.:arrow_right: PyPI page: coverage 4.0a3.
:arrow_right: To install: python3 -m pip install coverage==4.0a3
Officially support PyPy 2.4, and PyPy3 2.4. Drop support for CPython 3.2 and older versions of PyPy. The code won’t work on CPython 3.2. It will proba
--fail-under option in the .coveragerc file as the [report] fail_under option. This closes issue 314.COVERAGE_OPTIONS environment variable is no longer supported. It was a hack for --timid before configuration files were available.--rcfile that cannot be read, you will get an error message. Fixes issue 343.--debug switch can now be used on any command.-m can be used as the argument to --source, fixing issue 328. Thanks, Buck Evan.:arrow_right: PyPI page: coverage 4.0a2.
:arrow_right: To install: python3 -m pip install coverage==4.0a2
The coverage module no longer causes deprecation warnings on Python 3.4 by importing the imp module, fixing issue 305.
concurrency setting specifies the concurrency library in use. Huge thanks to Peter Portante for initial implementation, and to Joe Jevnik for the final insight that completed the work.[run] options will be read from the [coverage:run] section of setup.cfg. Finishes issue 304.report -m command can now show missing branches when reporting on branch coverage. Thanks, Steve Leonard. Closes issue 230.Coverage instead of coverage, though the old name still works, for backward compatibility.fail-under value is now rounded the same as reported results, preventing paradoxical results, fixing issue 284.:arrow_right: PyPI page: coverage 4.0a1.
:arrow_right: To install: python3 -m pip install coverage==4.0a1
Improved the speed of HTML report generation by about 20%.
:arrow_right: PyPI page: coverage 3.7.1.
:arrow_right: To install: python3 -m pip install coverage==3.7.1
Added the --debug switch to coverage run. It accepts a list of options indicating the type of internal activity to log to stderr.
--debug switch to coverage run. It accepts a list of options indicating the type of internal activity to log to stderr.coverage run -m now behaves more like Python does, setting sys.path properly, which fixes issue 207 and issue 242.source option would cause them to be incorrectly marked as un-executed, as described in issue 218. This is now fixed.~/src, or ~build/src, for example), and with environment variable expansion (build/$BUILDNUM/src).__main__.py file in the root coverage directory, fixing issue 255.:arrow_right: PyPI page: coverage 3.7.
:arrow_right: To install: python3 -m pip install coverage==3.7
Added a page to the docs about troublesome situations, closing issue 226, and added some info to the TODO file, closing issue 227.
:arrow_right: PyPI page: coverage 3.6.
:arrow_right: To install: python3 -m pip install coverage==3.6
Beta 2 broke the nose plugin. It’s fixed again, closing issue 224.
:arrow_right: PyPI page: coverage 3.6b3.
:arrow_right: To install: python3 -m pip install coverage==3.6b3
Coverage.py runs on Python 2.3 and 2.4 again. It was broken in 3.6b1.
source and path aliases. It no longer does.debug sys now shows the configuration file path that was read.:arrow_right: PyPI page: coverage 3.6b2.
:arrow_right: To install: python3 -m pip install coverage==3.6b2
Wildcards in include= and omit= arguments were not handled properly in reporting functions, though they were when running. Now they are handled unifor
include= and omit= arguments were not handled properly in reporting functions, though they were when running. Now they are handled uniformly, closing issue 143 and issue 163. NOTE: it is possible that your configurations may now be incorrect. If you use include or omit during reporting, whether on the command line, through the API, or in a configuration file, please check carefully that you were not relying on the old broken behavior.--fail-under switch that indicates in the exit status whether the coverage percentage was less than a particular value. Closes issue 139.--title switch on the command line, or via the API.${WORD}. Closes issue 97.[xml] output= setting in the .coveragerc file simply didn’t work. Now it does.--source option, fixing issue 100.'NoneType' object has no attribute 'isabs'. It no longer does, so kiss issue 153 goodbye.:arrow_right: PyPI page: coverage 3.6b1.
:arrow_right: To install: python3 -m pip install coverage==3.6b1
Line numbers in the HTML report line up better with the source lines, fixing issue 197, thanks Marius Gedminas.
__init__.py file, though its sub-directories do, to be considered as source files.:arrow_right: PyPI page: coverage 3.5.3.
:arrow_right: To install: python3 -m pip install coverage==3.5.3
:arrow_right: PyPI page: coverage 3.5.2. :arrow_right: To install: python3 -m pip install coverage==3.5.2
No changes since 3.5.2.b1
:arrow_right: PyPI page: coverage 3.5.2.
:arrow_right: To install: python3 -m pip install coverage==3.5.2
The HTML report has slightly tweaked controls: the buttons at the top of the page are color-coded to the source lines they affect.
extra_css configuration value in the [html] section.-m switch on coverage report, which includes missing line numbers in the summary report, can now be specified as show_missing in the config file. Closes issue 173.coverage run -m <modulename>, certain details of the execution environment weren’t the same as for python -m <modulename>. This had the unfortunate side-effect of making coverage run -m unittest discover not work if you had tests in a directory named “test”. This fixes issue 155 and issue 142.python -m coverage run .... Thanks, JT Olds.:arrow_right: PyPI page: coverage 3.5.2b1.
:arrow_right: To install: python3 -m pip install coverage==3.5.2b1
The [paths] feature unfortunately didn’t work in real world situations where you wanted to, you know, report on the combined data. Now all paths store
[paths] feature unfortunately didn’t work in real world situations where you wanted to, you know, report on the combined data. Now all paths stored in the combined file are canonicalized properly.:arrow_right: PyPI page: coverage 3.5.1.
:arrow_right: To install: python3 -m pip install coverage==3.5.1
When combining data files from parallel runs, you can now instruct coverage.py about which directories are equivalent on different machines. A [paths]
[paths] section in the configuration file lists paths that are to be considered equivalent. Finishes issue 17.with statements is improved, fixing issue 128.:arrow_right: PyPI page: coverage 3.5.1b1.
:arrow_right: To install: python3 -m pip install coverage==3.5.1b1
The HTML report hotkeys now behave slightly differently when the current chunk isn’t visible at all: a chunk on the screen will be selected, instead o
:arrow_right: PyPI page: coverage 3.5.
:arrow_right: To install: python3 -m pip install coverage==3.5
The HTML report now has hotkeys. Try n, s, m, x, b, p, and c on the overview page to change the column sorting. On a file page, r, m, x, and p toggle
n, s, m, x, b, p, and c on the overview page to change the column sorting. On a file page, r, m, x, and p toggle the run, missing, excluded, and partial line markings. You can navigate the highlighted sections of code by using the j and k keys for next and previous. The 1 (one) key jumps to the first highlighted section in the file, and 0 (zero) scrolls to the top of the file.--omit and --include switches now interpret their values more usefully. If the value starts with a wildcard character, it is used as-is. If it does not, it is interpreted relative to the current directory. Closes issue 121.partial_branches is a list of regular expressions. Lines matching any of those expressions will never be marked as a partial branch. In addition, there’s a built-in list of regular expressions marking statements which should never be marked as partial. This list includes while True:, while 1:, if 1:, and if 0:.coverage() constructor accepts single strings for the omit= and include= arguments, adapting to a common error in programmatic use.coverage run -m modulename, to mirror Python’s -m flag. Closes issue 95, thanks, Brandon Rhodes.coverage run didn’t emulate Python accurately in one small detail: the current directory inserted into sys.path was relative rather than absolute. This is now fixed.sys.gettrace() and sys.settrace(). This fixes issue 125 and issue 123. Thanks, Devin Jeanpierre.tokenize.open() where possible, to get the best handling of Python source files with encodings. Closes issue 107, thanks, Brett Cannon.-i switch just like other source errors. Closes issue 115.python coverage_py_working_dir run .... Thanks, Brett Cannon.:arrow_right: PyPI page: coverage 3.5b1.
:arrow_right: To install: python3 -m pip install coverage==3.5b1
The XML report is now sorted by package name, fixing issue 88.
sys.exit() with no argument weren’t handled properly, producing a coverage.py stack trace. That is now fixed.:arrow_right: PyPI page: coverage 3.4.
:arrow_right: To install: python3 -m pip install coverage==3.4
Completely un-executed files can now be included in coverage results, reported as 0% covered. This only happens if the –source option is specified, si
[report] precision config file setting. Completes issue 16.threading.Thread with an overridden run method would report no coverage for the run method. This is now fixed, closing issue 85.:arrow_right: PyPI page: coverage 3.4b2.
:arrow_right: To install: python3 -m pip install coverage==3.4b2
BACKWARD INCOMPATIBILITY: the --omit and --include switches now take file patterns rather than file prefixes, closing issue 34 and issue 36.
--omit and --include switches now take file patterns rather than file prefixes, closing issue 34 and issue 36.--source switch, a list of directories or module names. If provided, coverage.py will only measure execution in those source files.--source module has no Python source to measure, or is never encountered at all, or if no data is collected.--include switch to restrict reporting to modules matching those file patterns, similar to the existing --omit switch. Thanks, Zooko.--include and --omit to control what modules it measures. This can speed execution and reduce the amount of data during reporting. Thanks Zooko.__init__.py files, are now reported as having zero statements instead of one. Fixes issue 1.os.fork will properly collect data from both the child and parent processes. Use coverage run -p to get two data files that can be combined with coverage combine. Fixes issue 56.python -m coverage. Thanks, Brett Cannon.:arrow_right: PyPI page: coverage 3.4b1.
:arrow_right: To install: python3 -m pip install coverage==3.4b1
Using *parallel=True* in .coveragerc file prevented reporting, but now does not, fixing issue 49.
:arrow_right: PyPI page: coverage 3.3.1.
:arrow_right: To install: python3 -m pip install coverage==3.3.1
Settings are now read from a .coveragerc file. A specific file can be specified on the command line with –rcfile=FILE. The name of the file can be pro
:arrow_right: PyPI page: coverage 3.3.
:arrow_right: To install: python3 -m pip install coverage==3.3
Added a --version option on the command line.
--version option on the command line.:arrow_right: PyPI page: coverage 3.2.
:arrow_right: To install: python3 -m pip install coverage==3.2
The XML report now includes branch information.
:arrow_right: PyPI page: coverage 3.2b4.
:arrow_right: To install: python3 -m pip install coverage==3.2b4
Fixed a memory leak in the C tracer that was introduced in 3.2b1.
:arrow_right: PyPI page: coverage 3.2b3.
:arrow_right: To install: python3 -m pip install coverage==3.2b3
Your coding agent can read these notes before it upgrades. Set up the MCP server →