Skip to content

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Jan 23, 2026

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
packaging ~=25.0~=26.0 age adoption passing confidence
pytest (changelog) ~=8.4.1~=9.0.2 age adoption passing confidence
pytest-asyncio (changelog) ~=0.26.0~=1.3.0 age adoption passing confidence
pytest-cov (changelog) ~=6.3.0~=7.0.0 age adoption passing confidence
pytest-rerunfailures ~=15.1~=16.1 age adoption passing confidence
sphinx (changelog) ~=8.1.3~=9.1.0 age adoption passing confidence
sphinx-autodoc-typehints (changelog) ~=2.5.0~=3.6.2 age adoption passing confidence

Release Notes

pypa/packaging (packaging)

v26.0

Compare Source

pytest-dev/pytest (pytest)

v9.0.2

Compare Source

pytest 9.0.2 (2025-12-06)

Bug fixes

  • #​13896: The terminal progress feature added in pytest 9.0.0 has been disabled by default, except on Windows, due to compatibility issues with some terminal emulators.

    You may enable it again by passing -p terminalprogress. We may enable it by default again once compatibility improves in the future.

    Additionally, when the environment variable TERM is dumb, the escape codes are no longer emitted, even if the plugin is enabled.

  • #​13904: Fixed the TOML type of the tmp_path_retention_count settings in the API reference from number to string.

  • #​13946: The private config.inicfg attribute was changed in a breaking manner in pytest 9.0.0.
    Due to its usage in the ecosystem, it is now restored to working order using a compatibility shim.
    It will be deprecated in pytest 9.1 and removed in pytest 10.

  • #​13965: Fixed quadratic-time behavior when handling unittest subtests in Python 3.10.

Improved documentation

  • #​4492: The API Reference now contains cross-reference-able documentation of pytest's command-line flags <command-line-flags>.

v9.0.1

Compare Source

pytest 9.0.1 (2025-11-12)

Bug fixes

  • #​13895: Restore support for skipping tests via raise unittest.SkipTest.
  • #​13896: The terminal progress plugin added in pytest 9.0 is now automatically disabled when iTerm2 is detected, it generated desktop notifications instead of the desired functionality.
  • #​13904: Fixed the TOML type of the verbosity settings in the API reference from number to string.
  • #​13910: Fixed UserWarning: Do not expect file_or_dir on some earlier Python 3.12 and 3.13 point versions.

Packaging updates and notes for downstreams

  • #​13933: The tox configuration has been adjusted to make sure the desired
    version string can be passed into its package_env through
    the SETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST environment
    variable as a part of the release process -- by webknjaz.

Contributor-facing changes

  • #​13891, #​13942: The CI/CD part of the release automation is now capable of
    creating GitHub Releases without having a Git checkout on
    disk -- by bluetech and webknjaz.
  • #​13933: The tox configuration has been adjusted to make sure the desired
    version string can be passed into its package_env through
    the SETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST environment
    variable as a part of the release process -- by webknjaz.

v9.0.0

Compare Source

pytest 9.0.0 (2025-11-05)

New features

  • #​1367: Support for subtests has been added.

    subtests <subtests> are an alternative to parametrization, useful in situations where the parametrization values are not all known at collection time.

    Example:

    def contains_docstring(p: Path) -> bool:
        """Return True if the given Python file contains a top-level docstring."""
        ...
    
    def test_py_files_contain_docstring(subtests: pytest.Subtests) -> None:
        for path in Path.cwd().glob("*.py"):
            with subtests.test(path=str(path)):
                assert contains_docstring(path)

    Each assert failure or error is caught by the context manager and reported individually, giving a clear picture of all files that are missing a docstring.

    In addition, unittest.TestCase.subTest is now also supported.

    This feature was originally implemented as a separate plugin in pytest-subtests, but since then has been merged into the core.

    [!NOTE]
    This feature is experimental and will likely evolve in future releases. By that we mean that we might change how subtests are reported on failure, but the functionality and how to use it are stable.

  • #​13743: Added support for native TOML configuration files.

    While pytest, since version 6, supports configuration in pyproject.toml files under [tool.pytest.ini_options],
    it does so in an "INI compatibility mode", where all configuration values are treated as strings or list of strings.
    Now, pytest supports the native TOML data model.

    In pyproject.toml, the native TOML configuration is under the [tool.pytest] table.

    # pyproject.toml
    [tool.pytest]
    minversion = "9.0"
    addopts = ["-ra", "-q"]
    testpaths = [
        "tests",
        "integration",
    ]

    The [tool.pytest.ini_options] table remains supported, but both tables cannot be used at the same time.

    If you prefer to use a separate configuration file, or don't use pyproject.toml, you can use pytest.toml or .pytest.toml:

    # pytest.toml or .pytest.toml
    [pytest]
    minversion = "9.0"
    addopts = ["-ra", "-q"]
    testpaths = [
        "tests",
        "integration",
    ]

    The documentation now (sometimes) shows configuration snippets in both TOML and INI formats, in a tabbed interface.

    See config file formats for full details.

  • #​13823: Added a "strict mode" enabled by the strict configuration option.

    When set to true, the strict option currently enables

    • strict_config
    • strict_markers
    • strict_parametrization_ids
    • strict_xfail

    The individual strictness options can be explicitly set to override the global strict setting.

    The previously-deprecated --strict command-line flag now enables strict mode.

    If pytest adds new strictness options in the future, they will also be enabled in strict mode.
    Therefore, you should only enable strict mode if you use a pinned/locked version of pytest,
    or if you want to proactively adopt new strictness options as they are added.

    See strict mode for more details.

  • #​13737: Added the strict_parametrization_ids configuration option.

    When set, pytest emits an error if it detects non-unique parameter set IDs,
    rather than automatically making the IDs unique by adding 0, 1, ... to them.
    This can be particularly useful for catching unintended duplicates.

  • #​13072: Added support for displaying test session progress in the terminal tab using the OSC 9;4; ANSI sequence.
    When pytest runs in a supported terminal emulator like ConEmu, Gnome Terminal, Ptyxis, Windows Terminal, Kitty or Ghostty,
    you'll see the progress in the terminal tab or window,
    allowing you to monitor pytest's progress at a glance.

    This feature is automatically enabled when running in a TTY. It is implemented as an internal plugin. If needed, it can be disabled as follows:

    • On a user level, using -p no:terminalprogress on the command line or via an environment variable PYTEST_ADDOPTS='-p no:terminalprogress'.
    • On a project configuration level, using addopts = "-p no:terminalprogress".
  • #​478: Support PEP420 (implicit namespace packages) as --pyargs target when consider_namespace_packages is true in the config.

    Previously, this option only impacted package imports, now it also impacts tests discovery.

  • #​13678: Added a new faulthandler_exit_on_timeout configuration option set to "false" by default to let faulthandler interrupt the pytest process after a timeout in case of deadlock.

    Previously, a faulthandler timeout would only dump the traceback of all threads to stderr, but would not interrupt the pytest process.

    -- by ogrisel.

  • #​13829: Added support for configuration option aliases via the aliases parameter in Parser.addini() <pytest.Parser.addini>.

    Plugins can now register alternative names for configuration options,
    allowing for more flexibility in configuration naming and supporting backward compatibility when renaming options.
    The canonical name always takes precedence if both the canonical name and an alias are specified in the configuration file.

Improvements in existing functionality

  • #​13330: Having pytest configuration spread over more than one file (for example having both a pytest.ini file and pyproject.toml with a [tool.pytest.ini_options] table) will now print a warning to make it clearer to the user that only one of them is actually used.

    -- by sgaist

  • #​13574: The single argument --version no longer loads the entire plugin infrastructure, making it faster and more reliable when displaying only the pytest version.

    Passing --version twice (e.g., pytest --version --version) retains the original behavior, showing both the pytest version and plugin information.

    [!NOTE]
    Since --version is now processed early, it only takes effect when passed directly via the command line. It will not work if set through other mechanisms, such as PYTEST_ADDOPTS or addopts.

  • #​13823: Added strict_xfail as an alias to the xfail_strict option,
    strict_config as an alias to the --strict-config flag,
    and strict_markers as an alias to the --strict-markers flag.
    This makes all strictness options consistently have configuration options with the prefix strict_.

  • #​13700: --junitxml no longer prints the generated xml file summary at the end of the pytest session when --quiet is given.

  • #​13732: Previously, when filtering warnings, pytest would fail if the filter referenced a class that could not be imported. Now, this only outputs a message indicating the problem.

  • #​13859: Clarify the error message for pytest.raises() when a regex match fails.

  • #​13861: Better sentence structure in a test's expected error message. Previously, the error message would be "expected exception must be <expected>, but got <actual>". Now, it is "Expected <expected>, but got <actual>".

Removals and backward incompatible breaking changes

  • #​12083: Fixed a bug where an invocation such as pytest a/ a/b would cause only tests from a/b to run, and not other tests under a/.

    The fix entails a few breaking changes to how such overlapping arguments and duplicates are handled:

    1. pytest a/b a/ or pytest a/ a/b are equivalent to pytest a; if an argument overlaps another arguments, only the prefix remains.
    2. pytest x.py x.py is equivalent to pytest x.py; previously such an invocation was taken as an explicit request to run the tests from the file twice.

    If you rely on these behaviors, consider using --keep-duplicates <duplicate-paths>, which retains its existing behavior (including the bug).

  • #​13719: Support for Python 3.9 is dropped following its end of life.

  • #​13766: Previously, pytest would assume it was running in a CI/CD environment if either of the environment variables $CI or $BUILD_NUMBER was defined;
    now, CI mode is only activated if at least one of those variables is defined and set to a non-empty value.

  • #​13779: PytestRemovedIn9Warning deprecation warnings are now errors by default.

    Following our plan to remove deprecated features with as little disruption as
    possible, all warnings of type PytestRemovedIn9Warning now generate errors
    instead of warning messages by default.

    The affected features will be effectively removed in pytest 9.1, so please consult the
    deprecations section in the docs for directions on how to update existing code.

    In the pytest 9.0.X series, it is possible to change the errors back into warnings as a
    stopgap measure by adding this to your pytest.ini file:

    [pytest]
    filterwarnings =
        ignore::pytest.PytestRemovedIn9Warning

    But this will stop working when pytest 9.1 is released.

    If you have concerns about the removal of a specific feature, please add a
    comment to 13779.

Deprecations (removal in next major release)

  • #​13807: monkeypatch.syspath_prepend() <pytest.MonkeyPatch.syspath_prepend> now issues a deprecation warning when the prepended path contains legacy namespace packages (those using pkg_resources.declare_namespace()).
    Users should migrate to native namespace packages (420).
    See monkeypatch-fixup-namespace-packages for details.

Bug fixes

  • #​13445: Made the type annotations of pytest.skip and friends more spec-complaint to have them work across more type checkers.

  • #​13537: Fixed a bug in which ExceptionGroup with only Skipped exceptions in teardown was not handled correctly and showed as error.

  • #​13598: Fixed possible collection confusion on Windows when short paths and symlinks are involved.

  • #​13716: Fixed a bug where a nonsensical invocation like pytest x.py[a] (a file cannot be parametrized) was silently treated as pytest x.py. This is now a usage error.

  • #​13722: Fixed a misleading assertion failure message when using pytest.approx on mappings with differing lengths.

  • #​13773: Fixed the static fixture closure calculation to properly consider transitive dependencies requested by overridden fixtures.

  • #​13816: Fixed pytest.approx which now returns a clearer error message when comparing mappings with different keys.

  • #​13849: Hidden .pytest.ini files are now picked up as the config file even if empty.
    This was an inconsistency with non-hidden pytest.ini.

  • #​13865: Fixed --show-capture with --tb=line.

  • #​13522: Fixed pytester in subprocess mode ignored all :attr`pytester.plugins <pytest.Pytester.plugins>` except the first.

    Fixed pytester in subprocess mode silently ignored non-str pytester.plugins <pytest.Pytester.plugins>.
    Now it errors instead.
    If you are affected by this, specify the plugin by name, or switch the affected tests to use pytester.runpytest_inprocess <pytest.Pytester.runpytest_inprocess> explicitly instead.

Packaging updates and notes for downstreams

  • #​13791: Minimum requirements on iniconfig and packaging were bumped to 1.0.1 and 22.0.0, respectively.

Contributor-facing changes

  • #​12244: Fixed self-test failures when TERM=dumb.
  • #​12474: Added scheduled GitHub Action Workflow to run Sphinx linkchecks in repo documentation.
  • #​13621: pytest's own testsuite now handles the lsof command hanging (e.g. due to unreachable network filesystems), with the affected selftests being skipped after 10 seconds.
  • #​13638: Fixed deprecated gh pr new command in scripts/prepare-release-pr.py.
    The script now uses gh pr create which is compatible with GitHub CLI v2.0+.
  • #​13695: Flush stdout and stderr in Pytester.run to avoid truncated outputs in test_faulthandler.py::test_timeout on CI -- by ogrisel.
  • #​13771: Skip test_do_not_collect_symlink_siblings on Windows environments without symlink support to avoid false negatives.
  • #​13841: tox>=4 is now required when contributing to pytest.
  • #​13625: Added missing docstrings to pytest_addoption(), pytest_configure(), and cacheshow() functions in cacheprovider.py.

Miscellaneous internal changes

  • #​13830: Configuration overrides (-o/--override-ini) are now processed during startup rather than during config.getini() <pytest.Config.getini>.

v8.4.2

Compare Source

pytest 8.4.2 (2025-09-03)

Bug fixes

  • #​13478: Fixed a crash when using console_output_style{.interpreted-text role="confval"} with times and a module is skipped.

  • #​13530: Fixed a crash when using pytest.approx{.interpreted-text role="func"} and decimal.Decimal{.interpreted-text role="class"} instances with the decimal.FloatOperation{.interpreted-text role="class"} trap set.

  • #​13549: No longer evaluate type annotations in Python 3.14 when inspecting function signatures.

    This prevents crashes during module collection when modules do not explicitly use from __future__ import annotations and import types for annotations within a if TYPE_CHECKING: block.

  • #​13559: Added missing [int]{.title-ref} and [float]{.title-ref} variants to the [Literal]{.title-ref} type annotation of the [type]{.title-ref} parameter in pytest.Parser.addini{.interpreted-text role="meth"}.

  • #​13563: pytest.approx{.interpreted-text role="func"} now only imports numpy if NumPy is already in sys.modules. This fixes unconditional import behavior introduced in [8.4.0]{.title-ref}.

Improved documentation

  • #​13577: Clarify that pytest_generate_tests is discovered in test modules/classes; other hooks must be in conftest.py or plugins.

Contributor-facing changes

  • #​13480: Self-testing: fixed a few test failures when run with -Wdefault or a similar override.
  • #​13547: Self-testing: corrected expected message for test_doctest_unexpected_exception in Python 3.14.
  • #​13684: Make pytest's own testsuite insensitive to the presence of the CI environment variable -- by ogrisel{.interpreted-text role="user"}.
pytest-dev/pytest-asyncio (pytest-asyncio)

v1.3.0: pytest-asyncio 1.3.0

Compare Source

1.3.0 - 2025-11-10

Removed

Added

Notes for Downstream Packagers

  • Tested Python versions include free threaded Python 3.14t (#​1274)
  • Tests are run in the same pytest process, instead of spawning a subprocess with pytest.Pytester.runpytest_subprocess. This prevents the test suite from accidentally using a system installation of pytest-asyncio, which could result in test errors. (#​1275)

v1.2.0: pytest-asyncio 1.2.0

Compare Source

1.2.0 - 2025-09-12

Added

  • --asyncio-debug CLI option and asyncio_debug configuration option to enable asyncio debug mode for the default event loop. (#​980)
  • A pytest.UsageError for invalid configuration values of asyncio_default_fixture_loop_scope and asyncio_default_test_loop_scope. (#​1189)
  • Compatibility with the Pyright type checker (#​731)

Fixed

  • RuntimeError: There is no current event loop in thread 'MainThread' when any test unsets the event loop (such as when using asyncio.run and asyncio.Runner). (#​1177)
  • Deprecation warning when decorating an asynchronous fixture with @pytest.fixture in [strict]{.title-ref} mode. The warning message now refers to the correct package. (#​1198)

Notes for Downstream Packagers

  • Bump the minimum required version of tox to v4.28. This change is only relevant if you use the tox.ini file provided by pytest-asyncio to run tests.
  • Extend dependency on typing-extensions>=4.12 from Python<3.10 to Python<3.13.

v1.1.1: pytest-asyncio 1.1.1

Compare Source

v1.1.1 - 2025-09-12

Notes for Downstream Packagers

- Addresses a build problem with setuptoos-scm >= 9 caused by invalid setuptools-scm configuration in pytest-asyncio. (#​1192)

v1.1.0: pytest-asyncio 1.1.0

Compare Source

Added

  • Propagation of ContextVars from async fixtures to other fixtures and tests on Python 3.10 and older (#​127)
  • Cancellation of tasks when the loop_scope ends (#​200)
  • Warning when the current event loop is closed by a test

Fixed

  • Error about missing loop when calling functions requiring a loop in the finally clause of a task (#​878)
  • An error that could cause duplicate warnings to be issued

Notes for Downstream Packagers

v1.0.0: pytest-asyncio 1.0.0

Compare Source

1.0.0 - 2025-05-26

Removed

  • The deprecated event_loop fixture.
    (#​1106)

Added

  • Prelimiary support for Python 3.14
    (#​1025)

Changed

  • Scoped event loops (e.g. module-scoped loops) are created once rather
    than per scope (e.g. per module). This reduces the number of fixtures
    and speeds up collection time, especially for large test suites.
    (#​1107)
  • The loop_scope argument to pytest.mark.asyncio no longer forces
    that a pytest Collector exists at the level of the specified scope.
    For example, a test function marked with
    pytest.mark.asyncio(loop_scope="class") no longer requires a class
    surrounding the test. This is consistent with the behavior of the
    scope argument to pytest_asyncio.fixture.
    (#​1112)

Fixed

  • An error caused when using pytest's [--setup-plan]{.title-ref}
    option.
    (#​630)
  • Unsuppressed import errors with pytest option
    --doctest-ignore-import-errors
    (#​797)
  • A "fixture not found" error in connection with package-scoped loops
    (#​1052)

Notes for Downstream Packagers

  • Removed a test that had an ordering dependency on other tests.
    (#​1114)
pytest-dev/pytest-cov (pytest-cov)

v7.0.0

Compare Source

  • Dropped support for subprocesses measurement.

    It was a feature added long time ago when coverage lacked a nice way to measure subprocesses created in tests.
    It relied on a .pth file, there was no way to opt-out and it created bad interations
    with coverage's new patch system <https://coverage.readthedocs.io/en/latest/config.html#run-patch>_ added
    in 7.10 <https://coverage.readthedocs.io/en/7.10.6/changes.html#version-7-10-0-2025-07-24>_.

    To migrate to this release you might need to enable the suprocess patch, example for .coveragerc:

    .. code-block:: ini

    [run]
    patch = subprocess

    This release also requires at least coverage 7.10.6.

  • Switched packaging to have metadata completely in pyproject.toml and use hatchling <https://pypi.org/project/hatchling/>_ for
    building.
    Contributed by Ofek Lev in #&#8203;551 <https://github.com/pytest-dev/pytest-cov/pull/551>_
    with some extras in #&#8203;716 <https://github.com/pytest-dev/pytest-cov/pull/716>_.

  • Removed some not really necessary testing deps like six.

pytest-dev/pytest-rerunfailures (pytest-rerunfailures)

v16.1

Compare Source

  • Drop support for Python 3.9.

  • Changed "localhost" to "127.0.0.1" to avoid bad hostname resolution.

  • Added --force-reruns to override rerun count globally.
    Fixes #&#8203;306 <https://github.com/pytest-dev/pytest-rerunfailures/issues/306>_.

v16.0.1

Compare Source

  • Reverted the ability to access error attributes because of an incompatibility
    with pytest-xdist <https://github.com/pytest-dev/pytest-xdist/issues/843>.
    Fixes #&#8203;302 <https://github.com/pytest-dev/pytest-rerunfailures/issues/302>
    ,
    #&#8203;303 <https://github.com/pytest-dev/pytest-rerunfailures/issues/303>_.

v16.0

Compare Source

  • Reverted the ability to access error attributes because of an incompatibility
    with pytest-xdist <https://github.com/pytest-dev/pytest-xdist/issues/843>.
    Fixes #&#8203;302 <https://github.com/pytest-dev/pytest-rerunfailures/issues/302>
    ,
    #&#8203;303 <https://github.com/pytest-dev/pytest-rerunfailures/issues/303>_.
sphinx-doc/sphinx (sphinx)

v9.1.0

Compare Source

=====================================

Dependencies

  • #​14153: Drop Python 3.11 support.
  • #​12555: Drop Docutils 0.20 support.
    Patch by Adam Turner

Features added

  • Add :meth:~sphinx.application.Sphinx.add_static_dir for copying static
    assets from extensions to the build output.
    Patch by Jared Dillard

Bugs fixed

  • #​14189: autodoc: Fix duplicate :no-index-entry: for modules.
    Patch by Adam Turner
  • #​13713: Fix compatibility with MyST-Parser.
    Patch by Adam Turner
  • Fix tests for Python 3.15.
    Patch by Adam Turner
  • #​14089: autodoc: Fix default option parsing.
    Patch by Adam Turner
  • Remove incorrect static typing assertions.
    Patch by Adam Turner
  • #​14050: LaTeXTranslator fails to build documents using the "acronym"
    standard role.
    Patch by Günter Milde
  • LaTeX: Fix rendering for grid filled merged vertical cell.
    Patch by Tim Nordell
  • #​14228: LaTeX: Fix overrun footer for cases of merged vertical table cells.
    Patch by Tim Nordell
  • #​14207: Fix creating HTMLThemeFactory objects in third-party extensions.
    Patch by Adam Turner
  • #​3099: LaTeX: PDF build crashes if a code-block contains more than
    circa 1350 codelines (about 27 a4-sized pages at default pointsize).
    Patch by Jean-François B.
  • #​14064: LaTeX: TABs ending up in sphinxVerbatim fail to obey tab stops.
    Patch by Jean-François B.
  • #​14089: autodoc: Improve support for non-weakreferencable objects.
    Patch by Adam Turner
  • LaTeX: Fix accidental removal at 3.5.0 (#​8854) of the documentation of
    literalblockcappos key of :ref:'sphinxsetup' <latexsphinxsetup>.
    Patch by Jean-François B.

v9.0.4: Sphinx 9.0.4

Compare Source

Changelog: https://www.sphinx-doc.org/en/master/changes/9.0.html

Bugs fixed

  • #​14143: Fix spurious build warnings when translators reorder references
    in strings, or use translated display text in references.
    Patch by Matt Wang.

v9.0.3: Sphinx 9.0.3

Compare Source

Changelog: https://www.sphinx-doc.org/en/master/changes/9.0.html

Bugs fixed

  • #​14142: autodoc: Restore some missing exports in sphinx.ext.autodoc.
    Patch by Adam Turner.

v9.0.2: Sphinx 9.0.2

Compare Source

Changelog: https://www.sphinx-doc.org/en/master/changes/9.0.html

Bugs fixed

  • #​14142: autodoc: Restore sphinx.ext.autodoc.mock.
    Patch by Adam Turner.

v9.0.1: Sphinx 9.0.1

Compare Source

Changelog: https://www.sphinx-doc.org/en/master/changes/9.0.html

Bugs fixed

  • #​13942: autodoc: Restore the mapping interface for options objects.
    Patch by Adam Turner.
  • #​13942: autodoc: Deprecate the mapping interface for options objects.
    Patch by Adam Turner.
  • #​13387: Update translations.

v9.0.0: Sphinx 9.0.0

Changelog: https://www.sphinx-doc.org/en/master/changes/9.0.html

Dependencies

Incompatible changes

  • #​13639: SphinxComponentRegistry.create_source_parser no longer
    has an app parameter, instead taking config and env.
    Patch by Adam Turner.
  • #​13679: Non-decodable characters in source files now raise an error.
    Such bytes have been replaced with '?' along with logging a warning
    since Sphinx 2.0.
    Patch by Adam Turner.
  • #​13751, #​14089: sphinx.ext.autodoc has been substantially rewritten,
    and there may be some incompatible changes in edge cases, especially when
    extensions interact with autodoc internals.
    The autodoc_use_legacy_class_based option has been added to
    use the legacy (pre-9.0) implementation of autodoc.
    Patches by Adam Turner.
  • #​13355: Don't include escaped title content in the search index.
    Patch by Will Lachance.

Deprecated

  • 13627: Deprecate remaining public app attributes,
    including builder.app, env.app, events.app,
    and SphinxTransform.app.
    Patch by Adam Turner.
  • #​13637: Deprecate the set_application method
    of Parser objects.
    Patch by Adam Turner.
  • #​13644: Deprecate the Parser.config and env attributes.
    Patch by Adam Turner.
  • #​13665: Deprecate support for non-UTF 8 source encodings,
    scheduled for removal in Sphinx 10.
    Patch by Adam Turner.
  • #​13682: Deprecate sphinx.io.
    Sphinx no longer uses the sphinx.io classes,
    having replaced them with standard Python I/O.
    The entire sphinx.io module will be removed in Sphinx 10.
    Patch by Adam Turner.
  • #​13631: sphinx.environment.adapters.toctree.global_toctree_for_doc
    and sphinx.environment.BuildEnvironment.get_and_resolve_doctree
    will require a tags keyword argument from Sphinx 11.
    It may optionally be passed from Sphinx 9 onwards.
    Patch by Adam Turner.

Features added

  • #​13332: Add doctest_fail_fast option to exit after the first failed
    test.
    Patch by Till Hoffmann.
  • #​13439: linkcheck: Permit warning on every redirect with
    linkcheck_allowed_redirects = {}.
    Patch by Adam Turner and James Addison.
  • #​13497: Support C domain objects in the table of contents.
  • #​13500: LaTeX: add support for fontawesome6 package.
    Patch by Jean-François B.
  • #​13509: autodoc: Detect typing_extensions.overload
    and final decorators.
    Patch by Spencer Brown.
  • #​13535: html search: Update to the latest version of Snowball (v3.0.1).
    Patch by Adam Turner.
  • #​13647: LaTeX: allow more cases of table nesting.
    Patch by Jean-François B.
  • #​13657: LaTeX: support CSS3 length units.
    Patch by Jean-François B.
  • #​13684: intersphinx: Add a file-based cache for remote inventories.
    The location of the cache directory must not be relied upon externally,
    as it may change without notice or warning in future releases.
    Patch by Adam Turner.
  • #​13805: LaTeX: add support for fontawesome7 package.
    Patch by Jean-François B.
  • #​13508: autodoc: Initial support for PEP 695 type aliases.
    Patch by Martin Matouš, Jeremy Maitin-Shepard, and Adam Turner.
  • #​14023: Add the new mathjax_config_path option
    to load MathJax configuration from a file.
    Patch by Randolf Scholz and Adam Turner.
  • #​14046: linkcheck: Add the linkcheck_case_insensitive_urls option
    to allow case-insensitive URL comparison for specific URL patterns.
    This is useful for links to websites that normalise URL casing (e.g. GitHub)
    or case-insensitive servers.
    Patch by Fazeel Usmani and James Addison.
  • #​14075: autosummary: Provide more context in import exception stack traces.
    Patch by Philipp A.
  • #​13468: Add config options to sphinx.ext.duration.
    Patch by Erik Bedard and Adam Turner.
  • #​14022: Use MathJax v4 by default in the sphinx.ext.mathjax extension,
    from v3 previously.
    To keep using an older version, set the mathjax_path option.
    Also add the new mathjax4_config option to configure MathJax v4.
    Note that MathJax v3 is mostly compatible with MathJax v4, so existing
    mathjax3_config settings should not need to change.
    Patch by Matthias Geier.
  • #​14029: intersphinx: Fix error in format string interpolation.
    Patch by Matthieu de Cibeins.

Bugs fixed

  • #​13926: multiple py:type directives for the same canonical type no
    longer result in spurious duplicate object description warnings.
    Patch by Jeremy Maitin-Shepard.
  • #​1327: LaTeX: tables using longtable raise error if
    tabularcolumns specifies automatic widths
    (L, R, C, or J).
    Patch by Jean-François B.
  • #​3447: LaTeX: when assigning longtable class to table for PDF, it may render
    "horizontally" and overflow in right margin.
    Patch by Jean-François B.
  • #​8828: LaTeX: adding a footnote to a longtable cell causes table to occupy
    full width.
    Patch by Jean-François B.
  • #​11498: LaTeX: Table in cell fails to build if it has many rows.
    Patch by Jean-François B.
  • #​11515: LaTeX: longtable does not allow nested table.
    Patch by Jean-François B.
  • #​11973: LaTeX: links in table captions do not work in PDF.
    Patch by Jean-François B.
  • #​12821: LaTeX: URLs/links in section titles should render in PDF.
    Patch by Jean-François B.
  • #​13369: Correctly parse and cross-reference unpacked type annotations.
    Patch by Alicia Garcia-Raboso.
  • #​13528: Add tilde ~ prefix support for py:deco.
    Patch by Shengyu Zhang and Adam Turner.
  • #​13597: LaTeX: table nested in a merged cell leads to invalid LaTeX mark-up
    and PDF cannot be built.
    Patch by Jean-François B.
  • #​13619: LaTeX: possible duplicated footnotes in PDF from object signatures
    (typically if latex_show_urls = 'footnote').
    Patch by Jean-François B.
  • #​13635: LaTeX: if a cell contains a table, row coloring is turned off for
    the next table cells.
    Patch by Jean-François B.
  • #​13685: gettext: Correctly ignore trailing backslashes.
    Patch by Bénédikt Tran.
  • #​13712: intersphinx: Don't add "v" prefix to non-numeric versions.
    Patch by Szymon Karpinski.
  • #​13688: HTML builder: Replace <em class="property"> with
    <span class="property"> for attribute type annotations
    to improve semantic HTML structure.
    Patch by Mark Ostroth.
  • #​13812 (discussion): LaTeX: long confval value does not wrap at
    spaces in PDF.
    Patch by Jean-François B.
  • #​10785: Autodoc: Allow type aliases defined in the project to be properly
    cross-referenced when used as type annotations. This makes it possible
    for objects documented as :py:data: to be hyperlinked in function signatures.
  • #​13858: doctest: doctest blocks are now correctly added to a group defined by the
    configuration variable doctest_test_doctest_blocks.
  • #​13885: Coverage builder: Fix TypeError when warning about missing modules.
    Patch by Damien Ayers.
  • #​13929: Duplicate equation label warnings now have a new warning
    sub-type, ref.equation.
    Patch by Jared Dillard.
  • #​13935: autoclass: parent class members no longer considered
    directly defined in certain cases, depending on autodoc processing
    order.
    Patch by Jeremy Maitin-Shepard.
  • #​13939: LaTeX: page break can separate admonition title from contents.
    Patch by Jean-François B.
  • #​14004: Fix autodoc_type_aliases when they appear in PEP 604
    union syntax (Alias | Type).
    Patch by Tamika Nomara.
  • #​14059: LaTeX: Footnotes cause pdflatex error with French language
    (since late June 2025 upstream change to LaTeX babel-french).
    Patch by Jean-François B.
  • #​13916: HTML Search: do not clear text fragments from the URL on page load.
    Patch by Harmen Stoppels.
  • #​13944: autodoc: show traceback during import in human readable representation.
    Patch by Florian Best.
  • #​14006: Support images with data URIs that aren't base64-encoded.
    Patch by Shengyu Zhang and Adam Turner.
  • #​12797: Fix Some type variables (...) are not listed in Generic[...]
    TypeError when inheriting from both Generic and autodoc mocked class.
    Patch by Ikor Jefocur and Daniel Sperber.
  • #​13945: autodoc: Fix handling of undefined names in annotations by using
    the FORWARDREF annotationlib format.
    Patch by Rui Pinheiro and Adam Turner.
  • #​14067: EPUB: unify path separators in manifest items to forward slashes;
    resolve duplicates in the manifest on Windows.
    Patch by Akihiro Takizawa.
  • #​13741: text builder: fix an infinite loop when processing CSV tables.
    Patch by Bénédikt Tran.
  • #​13217: Remove extra parentheses from js:function arguments and errors.
    Patch by Shengyu Zhang.

v8.2.3: Sphinx 8.2.3

Compare Source

Changelog: https://www.sphinx-doc.org/en/master/changes/8.2.html

v8.2.2: Sphinx 8.2.2

Compare Source

Changelog: https://www.sphinx-doc.org/en/master/changes/8.2.html

v8.2.1: Sphinx 8.2.1

Compare Source

Changelog: https://www.sphinx-doc.org/en/master/changes/8.2.html

v8.2.0: Sphinx 8.2.0

Compare Source

Changelog: https://www.sphinx-doc.org/en/master/changes/8.2.html

Dependencies

Incompatible changes

  • #​13044: Remove the internal and undocumented has_equations data
    from the MathDomain domain.
    The undocumented MathDomain.has_equations method
    now unconditionally returns True.
    These are replaced by the has_maths_elements key of the page context dict.
    Patch by Adam Turner.
  • #​13227: HTML output for sequences of keys in the kbd role
    no longer uses a <kbd class="kbd compound"> element to wrap
    the keys and separators, but places them directly in the relevant parent node.
    This means that CSS rulesets targeting kbd.compound or .kbd.compound
    will no longer have any effect.
    Patch by Adam Turner.

Deprecated

  • #​13037: Deprecate the SingleHTMLBuilder.fix_refuris method.
    Patch by James Addison.
  • #​13083, #​13330: Un-deprecate sphinx.util.import_object.
    Patch by Matthias Geier.

Features added

  • #​13173: Add a new duplicate_declaration warning type,
    with duplicate_declaration.c and duplicate_declaration.cpp subtypes.
    Patch by Julien Lecomte and Adam Turner.
  • #​11824: linkcode: Allow extensions to add support for a domain by defining
    the keys that should be present.
    Patch by Nicolas Peugnet.
  • #​13144: Add a class option to the autosummary directive.
    Patch by Tim Hoffmann.
  • [#​13146](

Configuration

📅 Schedule: Branch creation - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, 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 added the a: dependencies Related to package dependencies and management label Jan 23, 2026
@renovate renovate bot force-pushed the renovate/major-python-dependencies branch from 347350d to 84c3fe7 Compare January 24, 2026 10:28
@renovate renovate bot force-pushed the renovate/major-python-dependencies branch from c4511bc to 6954ef5 Compare January 24, 2026 10:41
@PerchunPak PerchunPak requested a review from ItsDrike January 24, 2026 10:43
Copy link
Member

@ItsDrike ItsDrike left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice

@ItsDrike ItsDrike merged commit acabaf8 into master Jan 24, 2026
10 checks passed
@ItsDrike ItsDrike deleted the renovate/major-python-dependencies branch January 24, 2026 11:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

a: dependencies Related to package dependencies and management

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants