# What changed in coverage

> 12 changes in coverage 7 from its official release notes, upgrade guides and advisories: 1 breaking. Each one cited. Sources checked 2026-10-18. HTML: https://unstale.sh/pypi/coverage/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## coverage 7

### Breaking changes

- When combining files, path separator slashes are converted to the local file system style, reducing the need for [paths] configuration across operating systems. (7.16.0) — [release notes](https://github.com/coveragepy/coveragepy/releases/tag/7.16.0)

### Behavior and default changes

- With `dynamic_context = test_function`, staticmethod and classmethod test methods receive a context of their own on Python 3.11 and later. (7.16.2) — [release notes](https://github.com/coveragepy/coveragepy/releases/tag/7.16.2)

### Fixes and other changes

- On Python 3.14 and later, a for loop immediately before a function return no longer mistakenly reports an uncovered branch. (7.16.2) — [release notes](https://github.com/coveragepy/coveragepy/releases/tag/7.16.2)
- On Python 3.14 and later, the else clause of a try whose body is a with statement is no longer incorrectly reported as covered when the with raises. (7.16.2) — [release notes](https://github.com/coveragepy/coveragepy/releases/tag/7.16.2)
- Calling CoverageData.update() twice on an in-memory database no longer fails. (7.16.1) — [release notes](https://github.com/coveragepy/coveragepy/releases/tag/7.16.1)
- When an irrefutable case body is entirely excluded, the case line is now excluded too, so it is no longer reported as missing. (7.16.1) — [release notes](https://github.com/coveragepy/coveragepy/releases/tag/7.16.1)
- An invalid regex now raises a proper configuration error naming the bad regex instead of a confusing data-file error. (7.16.0) — [release notes](https://github.com/coveragepy/coveragepy/releases/tag/7.16.0)
- Annotated copies now preserve the original extension, avoiding an AssertionError for measured files with extensions other than .py. (7.16.0) — [release notes](https://github.com/coveragepy/coveragepy/releases/tag/7.16.0)
- Each named concurrency library is considered when refusing run-affecting options that cannot reach subprocesses. (7.16.0) — [release notes](https://github.com/coveragepy/coveragepy/releases/tag/7.16.0)
- A [paths] pattern is now replaced only once, in the leading portion of a file path. (7.16.0) — [release notes](https://github.com/coveragepy/coveragepy/releases/tag/7.16.0)
- Negative precision settings now produce useful error messages. (7.16.0) — [release notes](https://github.com/coveragepy/coveragepy/releases/tag/7.16.0)
- Non-string values in TOML settings now produce helpful error messages instead of tracebacks, including list settings, file settings, and values in [paths]. (7.16.0) — [release notes](https://github.com/coveragepy/coveragepy/releases/tag/7.16.0)
