Text annotation: coverage annotate

Note

The annotate command has been obsoleted by more modern reporting tools, including the html command. The command is still supported, but won’t be getting new features.

The annotate command produces a text annotation of your source code. With a -d argument specifying an output directory, each Python file becomes a text file in that directory. Without -d, the files are written into the same directories as the original Python files.

Coverage status for each line of source is indicated with a character prefix:

> executed
! missing (not executed)
- excluded

For example:

 # A simple function, never called with x==1
> def h(x):
 """Silly function."""
- if 0: # pragma: no cover
- pass
> if x == 1:
! a = 1
> else:
> a = 2
$ coverage annotate --help
Usage: coverage annotate [options] [modules]
Make annotated copies of the given files, marking statements that are executed
with > and statements that are missed with !.
Options:
 -d DIR, --directory=DIR
 Write the output files to DIR.
 --data-file=INFILE Read coverage data for report generation from this
 file. Defaults to '.coverage'. [env: COVERAGE_FILE]
 -i, --ignore-errors Ignore errors while reading source files.
 --include=PAT1,PAT2,...
 Include only files whose paths match one of these
 patterns. Accepts shell-style wildcards, which must be
 quoted.
 --omit=PAT1,PAT2,... Omit files whose paths match one of these patterns.
 Accepts shell-style wildcards, which must be quoted.
 --debug=OPTS Debug options, separated by commas. [env:
 COVERAGE_DEBUG]
 -h, --help Get help on this command.
 --rcfile=RCFILE Specify configuration file. By default '.coveragerc',
 'setup.cfg', 'tox.ini', and 'pyproject.toml' are
 tried. [env: COVERAGE_RCFILE]

Other common reporting options are described above in Reporting.