Skip to content

chore(deps): update all non-major dependencies - #212

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/all-minor-patch
Open

renovate[bot] wants to merge 1 commit into
mainfrom
renovate/all-minor-patch

Conversation

@renovate

@renovate renovate Bot commented Jun 10, 2026 •

Copy link
Copy Markdown
Contributor

Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence Type Update
ansible (source) ==13.6.0 → ==13.8.0 age confidence packages minor
antsibull-changelog (changelog) ==0.35.0 → ==0.36.0 age confidence packages minor
antsibull-docs (changelog) ==2.24.0 → ==2.28.0 age confidence packages minor
black (changelog) ==26.3.1 → ==26.10.1 age confidence packages minor
coverage ==7.6.1 → ==7.17.2 age confidence packages minor
pylint (changelog) ==4.0.5 → ==4.1.3 age confidence packages minor
pytest (changelog) ==9.0.3 → ==9.2.0 age confidence packages minor
pytest-forked ==1.6.0 → ==1.7.5 age confidence packages minor
python 3.13 → 3.15 age confidence uses-with minor
python 3.10 → 3.15 age confidence uses-with minor
python 3.11 → 3.15 age confidence uses-with minor

Release Notes

ansible-community/ansible-build-data (ansible)

v13.8.0

Compare Source

v13.7.0

Compare Source

ansible-community/antsibull-changelog (antsibull-changelog)

v0.36.0

Compare Source

Release Summary

Feature release with breaking changes.

Minor Changes
  • Add internal API for generating changelogs as text instead of writing them to files (#​231).
  • In internal code, allow to pass extra keyword arguments to the document renderer (#​233).
  • Internal change that makes some private code public (#​230).
  • Internal change to allow loading plugin information without invoking the cache (#​229).
Breaking Changes / Porting Guide
  • The --is-collection and --collection-flatmap options no longer accept boolean values (true/yes/false/no), but instead accept no value and have a --no-is-collection respectively --no-collection-flatmap analogue (#​232).

v0.35.2

Compare Source

Release Summary

Maintenance release.

Minor Changes
  • Internal change to allow rendering MarkDown documents without section IDs (#​226).
Bugfixes
  • Declare support for Python 3.15 (#​227).

v0.35.1

Compare Source

Release Summary

Bugfix release.

Bugfixes
  • Ensure that there is a newline between the Table of Contents in rendered MarkDown documents and following text content (#​217).
ansible-community/antsibull-docs (antsibull-docs)

v2.28.0

Compare Source

Release Summary

Feature and maintenance release.

Minor Changes
  • Updated the schema for role argument spec to allow no_log, which is supported since ansible-core 2.22 (#​447, #​495).
Bugfixes
  • Declare support for Python 3.15 (#​496).

v2.27.0

Compare Source

Release Summary

Maintenance release for upcoming changes in ansible-core 2.22.

Minor Changes
  • Added support for the new secrets keyword added in ansible-core 2.22+ on plugin configuration options (#​483).

v2.26.0

Compare Source

Release Summary

Maintenance release.

Minor Changes
  • antsibull-docs now requires pydantic 2.12+ (#​473).

v2.25.0

Compare Source

Release Summary

Feature and bugfix release.

Minor Changes
  • When linting collection docs, report matches more precisely if possible (#​439).
Bugfixes
  • Do not re-define environment variables mentioned in a collection's config file's envvar_directives in the environment variable index (#​471).
psf/black (black)

v26.10.1

Compare Source

Highlights

This release fixes a security issue in Black's bundled GitHub Action. Repositories that
use the action are encouraged to update to the latest version of Black immediately. This
update is received automatically when using psf/black@stable, and is independent of
the version of Black installed by the action.

When the GitHub Action reads version specifiers from tool.black.required-version, it
now only accepts released versions of Black, as it already did for black requirements
in dependency lists. Other values, such as URL references, are now rejected. This issue
has been registered as GHSA-cg8m-r9f2-5wm2; a CVE identifier is pending.

Stable style
  • Fix a long Jupyter notebook assignment magic (for example x = !ls -la) being wrapped
    in parentheses, which IPython can no longer run; such cells are now left unchanged
    (#​5481)
  • Keep repeated lines outside the selected --line-ranges unchanged (#​5436)
  • Fix --line-ranges formatting lines that follow a statement when formatting joins or
    re-indents that statement (#​5484)
  • Fix --line-ranges crashing with an internal error when an unselected statement has a
    # fmt: skip comment on the last line before a closing bracket (#​5477)
  • Prevent moving an encoding declaration (for example # -*- coding: latin-1 -*-) onto
    the first two lines of a file (#​5487)
  • Fix adding an extra trailing blank line inside a multi-line module docstring when its
    last line is near the line length limit (#​5494)
  • Preserve blank lines between imports and unselected statements when using
    --line-ranges, and ensure a blank line is added between an unselected import and a
    newly formatted statement (#​5493, #​5649)
  • Keep the parentheses around a walrus that is the only item in a set (for example
    {(x := f())}) when targeting Python 3.9 or older, since Python 3.8 and 3.9.0 can't
    parse it without them (#​5502)
Preview style
  • Do not split short expressions on delimiters (such as binary operators, comparisons,
    or comprehensions) inside brackets when preceded by a standalone comment (#​5455)
  • Fix the unstable string_processing feature removing backslash-newline sequences from
    raw strings, which changed their value (#​5482)
  • Avoid adding unnecessary parentheses around unbreakable right-hand side expressions in
    assignments (such as annotated assignments or subscript targets) (#​5473)
  • Parenthesize expressions with parameter comments when they exceed the line length
    under --preview (#​5442)
  • Fix wrap_long_dict_values_in_parens dropping the parentheses around a right-hand
    side that contains a dictionary, leaving a line over the length limit (#​5492)
  • Fix the unstable string_processing feature adding a space after * or ** in a PEP
    695 type parameter (* Ts = ...) when it splits a string in the parameter's default
    (#​5504)
  • Avoid unnecessary line splits of trailers (such as indexing/subscripts) when an
    earlier bracket split exceeds the line length only due to a trailing comment (#​5498)
Configuration
  • Add --cache-dir to configure the cache directory from the command line (#​5433)
  • Don't cache a file as formatted after formatting or checking it with --line-ranges,
    which made a later full black --check pass and black skip the unformatted lines
    (#​5476)
  • Respect a .gitignore that starts with a UTF-8 byte order mark. The mark became part
    of the first pattern, so that pattern never matched and Black formatted files that git
    ignores (#​5497)
Performance
  • Avoid quadratic runtime when splitting very long lines with many trailing bracket
    pairs (such as consecutive subscripts) (#​5475)
Integrations
  • Fix the GitHub Action crashing on dependency-group includes when use_pyproject is
    enabled (#​5479)
  • When the GitHub Action reads version specifiers from tool.black.required-version, it
    now only accepts released versions of Black, as it already did for black
    requirements in dependency lists. Other values, such as URL references, are now
    rejected. (#​5510)

v26.10.0

Compare Source

Stable style
  • --line-ranges no longer inserts an empty line after a docstring when the range
    covers only the docstring itself (#​5312)
  • Fix # fmt: skip on a bracketed ternary turning the surrounding tuple into a call
    (#​5464)
  • Fix crash when # fmt: skip is placed on a one-line function or class with PEP 695
    type parameters (#​5429)
  • Fix an inline comment after the closing bracket of optional parentheses being moved
    inside the parentheses when the parenthesized expression contains own-line comments
    (#​5395)
  • Fix unparseable output when # fmt: skip is placed on a bracket of an if, while,
    for, or with header (#​5401, #​5405)
  • Fix crash when formatting parenthesized expressions with multiple inline comments and
    # fmt: skip (#​5414)
  • Fix parsing Jupyter notebook assignment magics when non-ASCII characters appear
    earlier on the line (#​5381)
  • Preserve blank lines that come immediately before a # fmt: on comment (#​5300)
  • Keep the parentheses around the target of an annotated assignment (e.g.
    (x): int = 5), which prevent CPython from including the name in __annotations__
    (#​5321)
  • Stop treating a t-string in docstring position as a docstring (e.g. t" spam " as
    the first statement of a module, class or function) (#​5287)
  • Fix unparseable output for a t-string whose replacement field contains a quote (e.g.
    t'\'{a["b"]}\'') (#​5265)
  • Fix unparseable output for a triple-quoted string whose body ends in an
    already-escaped double quote (e.g. '''\'''\"''') (#​5262)
  • Fix --skip-magic-trailing-comma dropping the trailing comma from a split
    single-element tuple used as a lambda parameter default (#​5246)
  • Fix unstable formatting when an inline comment sits on optional parentheses (e.g. a
    parenthesized assert message) (#​5241)
  • Fix --skip-magic-trailing-comma dropping the trailing comma of a one-element
    subscript (a[x,]) when the line is long enough to be split and contains a power
    operator (#​5272)
  • Fix crash when a standalone comment sits between tokens of a comprehension or lambda
    (#​5144)
  • Fix inline comments on a bracket inside a comprehension being dropped (#​5330)
  • Respect the magic trailing comma in a PEP 695 type parameter list containing a
    *TypeVarTuple or **ParamSpec (#​5244)
  • Fix crash when a comment-only # fmt: off/# fmt: on block is followed by a with
    statement after another standalone comment (#​5189)
  • Fix a crash when splitting case case if ... match patterns at very small line
    lengths (#​5147)
  • Fix multiline docstring indentation when leading tabs are used inside indented
    docstrings (#​5148)
  • Respect # fmt: skip on a line that opens a bracket (e.g.
    from x import ( # fmt: skip) when a standalone comment is among the bracket's
    contents (#​5161)
  • Fix an AST safety error when separate # type: ignore comments in a parenthesized
    attribute chain were merged onto one physical line (#​5297)
  • Preserve comments and blank lines outside requested ranges when formatting with
    --line-ranges (#​5175)
  • Fix crash when # fmt: skip is used on one-line async def, async with, and
    async for statements containing a semicolon (#​5311)
  • Stop converting form feeds or other similar characters in docstrings into newlines
    (#​5461)
  • Fix --skip-source-first-line turning the skipped line's CRLF ending into \r\r\n
    when reformatting a file with CRLF line endings (#​5438)
Preview style
New preview features
  • Add missing blank lines after classes whose last method has an ellipsis body (#​5439)
  • Split only the brackets holding a magic trailing comma when more trailers follow them
    (e.g. stop splitting inside the [2] of [1,][2](3)) (#​5448)
  • Keep dictionary keys containing operators together on one line when the value can be
    wrapped onto a new line instead (#​5435)
  • Remove redundant parentheses around individual variables in unpacking targets (e.g.
    for (x), (y) in points: becomes for x, y in points:) (#​5416)
  • Normalize uppercase T prefixes on t-strings to lowercase (#​5425)
  • Remove redundant parentheses around generator expressions (#​5304, #​5369)
  • Preserve two blank lines before a top-level class starting inside a # fmt: off block
    after an import (#​5238)
  • Fix unnecessary parentheses around short right-hand expressions in indexed assignments
    (e.g. x[key] = expr) (#​5095)
  • Parenthesize tuple expressions in yield statements for consistency with function
    calls and returns (#​5170)
  • Stop splitting between a variable and its operator (not in, ==, is, ...) when
    the right-hand side is a bracketed expression, and instead split inside the brackets
    (#​5135)
  • In .pyi stub files, enforce a blank line after a function or method that has a
    docstring-only body when another comment or statement follows it (#​5158)
Updates to existing preview features
  • Fix crash in stub files when # fmt: skip is placed on a function in a group of
    same-name decorated functions (e.g. @overloads or a property setter) (#​5430)
  • Keep the parentheses around a lambda used as the iterable of a comprehension (e.g.
    [x for x in (lambda: 0) if x]) (#​5176, #​5200)
Updates to existing unstable features
  • Do not treat multi-line expressions with merged strings and trailing # type: ignore
    comments as single-line unsplittable expressions (#​5466)
  • Fix duplicated inline comment when stripping the parentheses around a string or
    merging a backslash-continued string on the same line (#​5449)
  • Split long stringified return annotations even when the function has parameters
    (#​5427)
  • Don't hug brackets when doing so would join two # type: ignore comments onto one
    line (#​5271)
  • Fix a crash when # type: ignore is lost during formatting of a long parenthesized
    string (#​5329)
  • Fix only the first part of an implicitly concatenated unmergeable string (e.g.
    r"..." r"...") being wrapped in parentheses (#​5434)
Configuration
  • Add support for NO_COLOR environment variable to disable ANSI output (#​5129)
  • Remove spurious target version warning when runtime version is included in a
    --target-version flag (#​5167)
  • Fix --force-exclude not excluding files whose path contains .. (e.g.
    black ../generated/file.py run from a subdirectory) (#​5471)
  • Fall back to the default configuration, with a warning, when the given sources share
    no common project root (e.g. they are on different drives on Windows) instead of
    crashing (#​5386)
  • Fix loading a stale cached pyproject.toml path when --code is used from different
    working directories in the same process (#​5152)
  • Add validation for --line-ranges values (#​5107)
  • Ignore empty cache files instead of raising an EOFError (#​5192)
  • Reject non-string include and force-exclude values in pyproject.toml (#​5193)
  • Validate BLACK_NUM_WORKERS values and report invalid values as usage errors instead
    of crashing (#​5211)
  • Ignore permission errors when reading cache (#​5258)
Packaging
  • Reduce the size of Linux standalone binaries by stripping debug symbols during the
    PyInstaller release build (#​5223)
  • Black is now released using GitHub
    Immutable Releases
    (#​5296)
Performance
  • Fix superlinear runtime growth with the number of input files (#​5450)
  • Improve performance on strings containing many consecutive backslashes (#​5163)
  • Improve performance on files with many # fmt: skip/# fmt: off/# fmt: on comments
    (#​5169, #​5190, #​5232)
  • Improve performance on long calls and collections (#​5177)
  • Improve performance on multiline strings inside large collections (e.g. a dict literal
    with triple-quoted strings as values) (#​5188)
  • Improve performance on files with many soft keywords (e.g. match/case blocks)
    (#​5186)
  • Improve performance on long semicolon-separated statements (in the stable style) and
    large dict literals (in --preview) (#​5184)
  • Improve performance of --line-ranges on files with many sibling blocks (a long
    if/elif chain, a match with many cases, or many top-level definitions) (#​5213)
  • Improve performance on deeply nested bracketed expressions (#​5171, #​5242)
  • Improve performance on lists and subscripts holding one long expression without
    operators (e.g. a long run of implicitly concatenated strings inside []) (#​5239)
  • Improve performance on deeply chained operations (e.g. a long a ** b ** c ** ...
    chain) (#​5235)
  • Improve performance on long if/elif chains and other compound statements with many
    clauses (#​5322)
  • Improve performance of string_processing:
    • when merging implicitly concatenated f-strings containing long string literals
      (#​5165)
    • when merging long implicitly concatenated strings (#​5173, #​5194)
    • when rewriting large nodes (e.g. "%s ..." % (a, b, c, ...)) (#​5178, #​5199, #​5220)
    • when splitting long string literals (#​5183)
Output
  • Report parser failures using editor-friendly path:line:column locations (#​5237)
  • Fix crash when writing formatted code or diffs to a sys.stdout that has no buffer
    attribute (e.g. in Jupyter notebooks) (#​5411)
  • Report parse failures on Black's own output as internal errors (#​5383)
Blackd
  • Return HTTP 400 instead of 500 when the X-Python-Variant header is empty or has an
    empty entry (e.g. a trailing comma) (#​5428)
  • Allow optional whitespace around comma-separated versions and pyi in the
    X-Python-Variant header (#​5441)
Integrations
  • Remove unused migrate-black script (#​5319)
  • Support PEP 440 version specifiers in tool.black.required-version for the GitHub
    Action (#​5399)
  • Add outputs (is_formatted, change_count, same_count, failure_count) to GitHub
    Action runs (#​5408)
Documentation
  • Document vim-python-pep8-indent, which provides an indentexpr for Black-style
    insert-mode indentation (#​5288)

v26.5.1

Compare Source

Stable style
  • Fix unstable formatting of annotated assignments whose subscript annotation contains
    an inline comment (e.g. x: list[ # pyright: ignore[...]) (#​5130)
  • Preserve inline comments (including # type: ignore) immediately before a
    # fmt: skip line, avoiding AST equivalence failures (#​5139)
Packaging
  • Correct the version in the published executables (#​5137)
Documentation
  • Add Neovim integration guide covering conform.nvim, ALE, and simple command approaches
    (#​5124)

v26.5.0

Compare Source

Highlights
  • Add support for unpacking in comprehensions (PEP 798) and for lazy imports (PEP 810),
    both new syntactic features in Python 3.15 (#​5048)
  • Python 3.15 is now supported. Compiled wheels are not yet provided for Python 3.15, so
    performance may be slower than on existing Python versions. Wheels will be provided
    once Python 3.15 is later in its release cycle. (#​5127)
Stable style
  • Fix # fmt: skip being ignored in nested if expressions with parenthesized in
    clauses (#​4903)
  • Add syntactic support for Python 3.15 (#​5048)
  • Fix crash when an f-string follows a # fmt: off comment inside brackets (#​5097)
  • Preserve multiline compound statement headers when # fmt: skip is placed on the
    colon line (#​5117)
Preview style
  • Improve heuristics around whether blank lines should appear before, within and after
    groups of same-name decorated functions (such as @overload groups) in .pyi stub
    files (#​5021)
  • Fix blank lines being removed between a function and a decorated class in .pyi stub
    files (#​5092)
  • Prevent string merger from creating unsplittable long lines when a pragma comment
    (e.g. # type: ignore) follows the closing bracket (#​5096)
Packaging
Output
  • Improve parse error readability by showing multi-line output with an error pointer.
    (#​5068)
  • Add SourceASTParseError to distinguish source parse failures from internal safety
    errors, improving error reporting when Black's lenient parser accepts input that
    ast.parse() rejects (#​5080)
Blackd
  • Return HTTP 400 (Bad Request) for source parse failures instead of HTTP 500, keeping
    HTTP 500 only for genuine internal safety errors (#​5080)
Integrations
  • Added documentation for doctest formatting tools and updated the integrations index to
    match (#​4916)
Documentation
  • Use "Version X.Y.Z" headings in changelog for stable permalink anchors on ReadTheDocs
    (#​5063)
  • Note in the editor integrations that the SublimeText sublack plugin is archived and
    unmaintained (#​5082)
coveragepy/coveragepy (coverage)

v7.17.2

Compare Source

  • Fix: two different scenarios failed with "attempt to write a readonly
    database". These were regressions in 7.17.1. They are fixed, closing issue 2356_:

    • When using a version of SQLite older than 3.34.0, such as on RHEL 8 or
      Ubuntu 20.04, coverage combine (and pytest-cov, which combines
      automatically) always failed.

    • coverage combine and coverage debug data failed when a data file
      existed but had no coverage schema, for example an empty file left behind
      by a worker that died. A file we can't read is now reported like any other
      unusable data file, and is left in place.

.. _issue 2356: #​2356

.. _changes_7-17-1:

v7.17.1

Compare Source

  • Fix: a one-line class or function body immediately followed by another
    statement (such as class Foo: ... on its own line) was incorrectly
    reported as a missing branch when using the sys.monitoring core. This is now
    fixed, closing issue 2167_ and issue 2337_.

  • Fix: the HTML report only rewrites a file's page when the file or its data
    has changed, but each page also links to the previous and next files. When
    the set of reported files changed, unchanged pages kept their old links. For
    example, with skip_covered, a file that became 100% covered had its page
    deleted, but the pages next to it still linked to it. Now a page is also
    rewritten when its neighbors change.

  • Fix: --fail-under now uses at least the decimal precision of the
    threshold for both the comparison and failure message. With precision=0,
    a total of 0.4 now passes --fail-under=0.3 and fails --fail-under=0.5
    with the message "total of 0.4 is less than fail-under=0.5". Previously, the
    comparison rounded the total to zero and the message could claim "1 is less
    than 0". Closes issue 2295_.

  • Fix: the HTML report escaped file names twice, so a name with &, <,
    or quotes in it was shown with entities like &amp;. Now they are properly
    escaped only once.

  • Fix: --source=/ measured no files. A file system root can't be a source
    directory, so now it is an error. Closes issue 2291_.

  • In an abundance of caution, prevent forged SQLite journal files from deleting
    files they shouldn't.

.. _issue 2167: #​2167
.. _issue 2291: #​2291
.. _issue 2295: #​2295
.. _issue 2337: #​2337

.. _changes_7-17-0:

v7.17.0

Compare Source

  • Dropped support for Python 3.10.

  • Binary wheels are now provided for iOS and Android. This allows the use of
    the optimized C tracer on mobile platforms.

  • Fix: three or more levels of nested with statements could make a with
    line look like a branch with an exit that can never happen. Using the
    sys.monitoring core, these phantom branches were reported as partial. Other
    cores hid the problem but still counted the phantom branches in the total.
    Closes issue 1987_.

  • Fix: a comment or string that merely mentioned if True: or
    while True: could mark its line as a branch that is known to be partial,
    so a branch that never ran was reported as taken. These built-in patterns
    now only match at the start of the statement. Closes issue 2314_.

  • Fix: region detection missed functions defined in unusual places, such as
    else and except clauses. This is now fixed.

  • Fix: recent versions of the lcov tool complain if the same function name
    appears more than once in a report. Python can have multiple same-named
    functions in a few ways, for example, getters/setters or conditionally
    defined functions. These are now disambiguated by adding a @<line number>
    suffix to the function name. Fixes issue 2335.

  • Fix: The "Can't combine statement coverage data with branch data" error now
    names the two data files it couldn't combine. The :ref:error description <error_cant_combine> in the docs now lists common causes and how to find the
    process that wrote the file.

  • Fix: at coverage totals close to 0 or 100, the XML report could get incorrect
    line-rate values like 8.333e-05 or 1. This is now fixed, closing
    issue 2293_ and issue 2294_.

  • Fix: a parallel data file saved more than once kept the hash of its first
    save in its file name. Combining could then skip it as a duplicate of another
    file that had the same data at that point, and delete it, losing the data
    recorded after the first save. Each save now updates the hash. This had been
    a problem since 7.13.1. Fixes issue 2338_.

  • Fixes for obscure but legal file names:

    • File names (and plugin names) can contain control characters, which are
      legal in POSIX paths but unsafe in reports: in XML 1.0 they make the
      document non-well-formed, and in a terminal they act as escape sequences
      (colors, title/clipboard sequences, cursor moves that forge output). Now
      the XML report, the text and Markdown summary reports, and coverage debug data replace non-printable characters in names. Printable names are
      unchanged.

    • A file pattern (from include, omit, or a [paths] alias)
      containing a newline sent the glob-to-regex translation into an infinite
      loop, hanging the process. Newlines in patterns are now handled like any
      other character.

  • Fixes in the implementation of the C tracer:

    • If a plugin's dynamic_source_filename method raised an exception, lines
      in that function could be recorded as belonging to a different file. Also
      fixed some minor memory leaks in the C tracer.

    • The refcount of None was mismanaged during function calls, including
      comprehensions. This was unlikely to cause an actual problem, but is now
      fixed. Thanks, Andrew Dalke.

    • The C tracer held borrowed references to dictionary values, which was
      unsafe on free-threaded Python. Now it takes its own references.

    • An internal error while recording a new file could be reported as a
      confusing SystemError instead of the actual exception.

  • Performance: the text summary report (coverage report) held on to every
    file's parsed source until it finished, so its memory use grew with the size
    of the project: ten times or more what 7.14 used on large projects. Now it
    keeps only what it needs to print. Fixes issue 2277_.

  • Performance: HTML reports should be about 5% faster to produce.

  • Kept the political banner in the README. Closes issue 2344_.

.. _issue 1987: #​1987
.. _issue 2277: #​2277
.. _issue 2293: #​2293
.. _issue 2294: #​2294
.. _issue 2314: #​2314
.. _issue 2335: #​2335
.. _issue 2338: #​2338
.. _issue 2344: #​2344

.. _changes_7-16-2:

v7.16.2

Compare Source

  • Fix: on Python 3.14 and later, a for loop completing immediately before a
    function return could mistakenly report an uncovered branch. This is now
    fixed, closing issue 2168_.

  • Fix: on Python 3.14 and later, the else clause of a try whose body is
    a with statement could incorrectly be reported as covered when the
    with raised. This is now fixed, closing issue 2289_.

  • Fix: with dynamic_context = test_function, test methods written as
    @staticmethod or @classmethod were not given a context of their own.
    Now they are, on Python 3.11 and later. Closes issue 1923_.

.. _issue 1923: #​1923
.. _issue 2168: #​2168
.. _issue 2289: #​2289

.. _changes_7-16-1:

v7.16.1

Compare Source

  • Fix: when the body of an irrefutable case (like case _:) is entirely
    excluded, the case line is now excluded too, just as an excluded
    else: body removes the else: line. Previously the case line was
    left behind and reported as missing. Closes issue 1563_ with pull 2269_.

  • Fix: using :meth:.CoverageData.update twice on an in-memory database would
    fail, as described in issue 2279_. This is now fixed.

  • Fix: the Total row in the footer of the HTML report's index page was
    recomputed in JavaScript with rounding that could disagree with the total
    the server rendered in the heading, including showing 100% when coverage
    was not complete. The footer now clamps values the way the rest of the
    report does, and when nothing is filtered out it is shown exactly as the
    server rendered it, so the two can't disagree. That also keeps rows the
    report omits (--skip-covered drops fully covered files) in the total.
    Fixes issue 2256_.

.. _issue 1563: #​1563
.. _issue 2256: #​2256
.. _pull 2269: #​2269
.. _issue 2279: #​2279

.. _changes_7-16-0:

v7.16.0

Compare Source

  • When combining files, now path separator slashes will automatically be
    converted to the local file system style. This makes it less necessary to
    define [paths] configuration to combine data across operating systems.
    Fixes issue 2266_.

  • The :meth:.Coverage.switch_context method now returns the previous context.

  • Fix: previously, a [paths] pattern would be replaced everywhere in a file
    path when it was only meant to be replaced once, in the leading portion of
    the path. This is now fixed, in pull 2268_.

  • Fixes to validation of options and configuration settings:

    • Negative precision settings now always cause useful error messages (pull 2261_).

    • An invalid regex in the --contexts option (or the [report] contexts setting) reported a confusing "Couldn't use data file ...:
      user-defined function raised exception" error. Now it raises a proper
      configuration error naming the bad regex, like other regex settings do
      (pull 2262_).

    • Non-string values in TOML configuration settings now produce a helpful
      error message instead of a traceback. This affects list settings whose
      elements aren't strings (like omit, exclude_lines, or a [paths]
      entry), file settings like data_file, and any wrong-typed value in the
      [paths] section (pull 2263_).

    • coverage run refuses run-affecting command-line options like
      --branch alongside --concurrency=multiprocessing, since they can't
      reach the subprocesses. The check only recognized multiprocessing as
      the entire option value, so --concurrency=multiprocessing,thread
      slipped through and failed later with "Can't combine statement coverage
      data with branch data". Each named concurrency library is now properly
      considered (pull 2270_).

  • Fix: coverage annotate -d DIR raised an AssertionError if any
    measured file had an extension other than .py, such as a .pyw file on
    Windows. The original extension is now restored on the annotated copy (pull 2265_).

.. _pull 2261: #​2261
.. _pull 2262: #​2262
.. _pull 2263: #​2263
.. _pull 2265: #​2265
.. _issue 2266: #​2266
.. _pull 2268: #​2268
.. _pull 2270: #​2270

.. _changes_7-15-4:

v7.15.4

Compare Source

  • Fix: in the HTML report, a source file name containing a double quote (legal
    on POSIX) wasn't escaped where it's dropped into the href of the index
    and prev/next links, so it could close the attribute early and inject markup.
    Page URLs are now escaped. Thanks, Rajath Mohare <pull 2227_>_.

  • Fix: the LCOV report wrote file names and other fields into its
    line-oriented records without neutralizing control characters. A measured
    file whose name contained a newline (legal on POSIX) could forge extra
    records, inflating the coverage seen by tools that read the report. Control
    characters in a field are now replaced. Thanks, Rajath Mohare <pull 2226_>_.

  • Wheels are now provided for Python 3.15.

.. _pull 2226: #​2226
.. _pull 2227: #​2227

.. _changes_7-15-3:

v7.15.3

Compare Source

  • Fix: the sysmon core is incompatible with dynamic contexts. Previously, the
    combination would be prevented when read from the coverage.py configuration.
    But using the context API as pytest-cov does, contexts would be silently
    dropped. Now a warning is issued, thanks to Jisang Han <pull 2234_>.
    Closes issue 2200
    .

  • A performance improvement in the low-level line number bookkeeping when
    combining data files, thanks to Kevin Turcios <pull 2239_>_.

  • Performance improvement in HTML reporting by reducing the number of times
    files have to be parsed, thanks to Kevin Turcios <pull 2240_>_.

.. _issue 2200: #​2200
.. _pull 2234: #​2234
.. _pull 2239: #​2239
.. _pull 2240: #​2240

.. _changes_7-15-2:

v7.15.2

Compare Source

  • Fix: one of the performance improvements in 7.15.1 (pull 2215) dramatically
    increased memory use during reporting for large projects. Now we use a
    different approach that is both faster and slimmer than 7.15.0. Fixes issue 2229_.

.. _issue 2229: #​2229

.. _changes_7-15-1:

v7.15.1

Compare Source

  • Fix: in the HTML report with show_contexts enabled, a context label
    containing </script> (for example a parametrized pytest node id) could
    close the inline <script> element in a file page early, injecting markup.
    Context labels are now fully escaped. Thanks, Rajath Mohare <pull 2224_>_.

  • A number of performance improvements thanks to Paul Kehrer, in pull requests
    2213 <pull 2213_>, 2214 <pull 2214_>, 2215 <pull 2215_>, 2216 <pull 2216_>, 2218 <pull 2218_>, 2220 <pull 2220_>, and 2221 <pull 2221_>_.

.. _pull 2213: #​2213
.. _pull 2214: #​2214
.. _pull 2215: #​2215
.. _pull 2216: #​2216
.. _pull 2218: #​2218
.. _pull 2220: #​2220
.. _pull 2221: #​2221
.. _pull 2224: #​2224

.. _changes_7-15-0:

v7.15.0

Compare Source

  • Since 7.14.0, reporting commands implicitly combine parallel data files. Now
    those commands have a new option --keep-combined to retain the data files
    after combining them instead of the default, which is to delete them.
    Finishes issue 2198_.

  • Fix: the LCOV report would incorrectly count excluded functions as uncovered,
    as described in issue 2205. This is now fixed thanks to Martin Kuntz Jacobsen <pull 2206_>.

  • When running your program, coverage now correctly sets
    yourmodule.__spec__.loader as strongly recommended <--loader--_>,
    avoiding the deprecation warning described in issue 2208
    . Thanks, A5rocks <pull 2209_>_.

  • Fix: with Python 3.10, running with the -I (isolated mode) option didn't
    correctly omit the current directory from the module search path, as
    described in issue 2103. That is now fixed thanks to Ilia Sorokin <pull 2211_>.

.. --loader--: https://docs.python.org/3/reference/datamodel.html#module.__loader_
.. _issue 2103: #​2103
.. _issue 2198: #​2198
.. _issue 2205: #​2205
.. _pull 2206: #​2206
.. _issue 2208: #​2208
.. _pull 2209: #​2209
.. _pull 2211: #​2211

.. _changes_7-14-3:

v7.14.3

Compare Source

  • Fix: the default ... exclusion rule now also matches function bodies
    whose closing return-type bracket is on its own line (for example, after a
    long -> dict[ ... ] annotation that a formatter has split over multiple
    lines). Closes issue 2185, thanks Mengjia Shang <pull 2196_>.

  • Fix: On 3.13t, we incorrectly issued Couldn't import C tracer errors.
    We can't import the C tracer because in 7.14.2 we stopped shipping compiled
    wheels for 3.13t. Thanks, Hugo van Kemenade <pull 2203_>_.

.. _issue 2185: #​2185
.. _pull 2196: #​2196
.. _pull 2203: #​2203

.. _changes_7-14-2:

v7.14.2

Compare Source

  • Fix: some messages were being written to stdout, making coverage json -o - useless for capturing JSON output. Now messages are written to stderr,
    fixing issue 2197_.

  • Fix: CoverageData kept one SQLite connection per thread that recorded
    coverage, but never closed them when those threads terminated. On long runs
    with many short-lived threads this leaked one file descriptor per dead
    thread, eventually failing with OSError: [Errno 24] Too many open files.
    Connections belonging to ter

[!IMPORTANT]
✂ PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 3 times, most recently from 15e92c7 to 6c1c602 Compare June 14, 2026 17:56
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 4 times, most recently from 59b11b4 to 918f635 Compare June 23, 2026 02:07
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch from 918f635 to b95e807 Compare July 2, 2026 16:50
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 3 times, most recently from 3ab7b6a to 2c183fd Compare July 15, 2026 21:38
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 2 times, most recently from 571ed9f to ff172a4 Compare July 24, 2026 21:52
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 2 times, most recently from da82b23 to 9a2b292 Compare August 2, 2026 22:38
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 6 times, most recently from 10c96f7 to 7a6e435 Compare August 13, 2026 02:55
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch from 7a6e435 to 1ba96f6 Compare August 14, 2026 22:04
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 3 times, most recently from a5ac48a to 99c375e Compare August 29, 2026 13:50
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch from 99c375e to 49cd8d5 Compare September 3, 2026 10:04
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 4 times, most recently from f5c282e to fd54ea6 Compare September 16, 2026 15:58
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 2 times, most recently from 011596f to f700687 Compare September 24, 2026 01:34
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 5 times, most recently from 86ffed5 to be690e1 Compare October 3, 2026 01:49
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 4 times, most recently from d3fd056 to e035e47 Compare October 11, 2026 10:15
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 5 times, most recently from 14d0611 to 680309a Compare October 20, 2026 10:16
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 7 times, most recently from 218b443 to 64e89b9 Compare October 27, 2026 21:41
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch from 64e89b9 to 7345545 Compare November 3, 2026 16:56
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch from 7345545 to 0e764b9 Compare November 5, 2026 00:32

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants