Repository navigation
Update non-major dependencies - #228
Merged
Merged
Conversation
renovate
Bot
force-pushed
the
renovate/non-major
branch
9 times, most recently
from
October 24, 2026 18:35
1d32d6b to
0b5ca70
Compare
renovate
Bot
force-pushed
the
renovate/non-major
branch
11 times, most recently
from
October 31, 2026 14:39
83c9f82 to
aef5a39
Compare
renovate
Bot
force-pushed
the
renovate/non-major
branch
2 times, most recently
from
November 1, 2026 18:15
d317809 to
bf1cc6c
Compare
15 of 17 tasks
renovate
Bot
force-pushed
the
renovate/non-major
branch
from
November 2, 2026 16:08
bf1cc6c to
ef603c3
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Note
This PR body was truncated due to platform limits.
This PR contains the following updates:
==1.43.114→==1.43.123==1.6.0→==1.8.1==7.16.2→==7.17.0==7.4.1→==7.5.0==2.4.0→==2.4.1==9.1.1→==9.2.0==3.16.0→==3.17.0==6.0.12.20260906→==6.0.12.20261030Release Notes
callowayproject/bump-my-version (bump-my-version)
v1.8.1Compare Source
Compare the full difference.
Fixes
Other
Upgrade
markdown-it-deflistto version 4.0.0 for updated features and dependencies. 475aafaMigrate documentation site from ProperDocs to VitePress. 700beae
Replace the Material for MkDocs / ProperDocs site with VitePress (#459).
script (docs/scripts/generate_reference.py); output is gitignored.
relative .md links absolute for rewritten pages.
VitePress syntax; render definition lists with markdown-it-deflist.
config, and the docs dependency group.
giscus comments.
README.md.
Closes #459
v1.8.0Compare Source
Compare the full difference.
Fixes
Other
Upgrade
markdown-it-deflistto version 4.0.0 for updated features and dependencies. 475aafaMigrate documentation site from ProperDocs to VitePress. 700beae
Replace the Material for MkDocs / ProperDocs site with VitePress (#459).
script (docs/scripts/generate_reference.py); output is gitignored.
relative .md links absolute for rewritten pages.
VitePress syntax; render definition lists with markdown-it-deflist.
config, and the docs dependency group.
giscus comments.
README.md.
Closes #459
v1.7.0Compare Source
Compare the full difference.
Fixes
Fix allow_dirty_files for renames and fold duplicated tag mismatch tests. 128dba0
A git rename is only ignored when both the old and new paths match.
Fix lint findings in new tests. 61132ba
Fix YY and 0Y calver formatting and parsing for years 2000 and 2100+. 7edb0c1
YY is now the year minus 2000, as calver.org specifies, so 2106 renders
as 106. The parse patterns accept the values they render, including 0
for the year 2000.
Refs #346
New
Add tests for uncomparable and equal tag mismatch versions. 74990b1
Add allow_dirty_files setting to exempt files from the dirty check. d70acda
Files matching these glob patterns no longer make the working directory
dirty, so generated files like a changelog don't require --allow-dirty.
Refs #237
Updates
Change tag mismatch warning to fire only when the version is behind the tag. 6088a9f
A current version ahead of the last tag is normal during development, so
that case, and versions that can't be compared, now log at debug level.
Refs #318
Update pre-commit hooks to latest versions: Ruff v0.17.3, MyPy v2.4.1, PyDocLint v0.12.0, and Rumdl v0.3.2. 972ffcf
v1.6.7Compare Source
Compare the full difference.
New
Other
[pre-commit.ci] pre-commit autoupdate. d222c27
updates: - github.com/astral-sh/ruff-pre-commit: v0.17.1 → v0.17.2
Skip POSIX quoting test on Windows. 4d7e582
Quote hook placeholder values and skip context when shell hooks allowed. 53b6700
v1.6.6Compare Source
Compare the full difference.
New
Other
Document pyproject.toml discovery by parsing and PEP 621 fallback (#363). 1db7c46
Discover pyproject.toml by parsing; fall back to PEP 621 project.version (#363). 168a7d9
v1.6.5Compare Source
Compare the full difference.
Fixes
Refactor: clean up line formatting and improve spelling. 07ada6f
Fix a failing bump leaving some files already changed. a8a9403
All the file changes are made in memory first and written only when every file could be changed;
several changes to one file still chain. Part of #381.
co-authored-by: Claude Opus 5.5 noreply@anthropic.com
Other
Test the restore-failure, no-new-version and on-disk search paths. ea9a033
Covers the lines Codecov reported as missing in files.py for #454.
Restore files when a write fails in modify_files. 1b69816
Follow-ups to #432 (part of #381): drop the stale coverage pragma on
make_file_change and document it, replace the tuple dict in modify_files
with two dicts, restore already-written files when a later write raises
OSError, and add tests for ignored files, write failure, make_file_change
writes and do_bump leaving config untouched.
v1.6.4Compare Source
Compare the full difference.
Fixes
Fix: don't enable pip caching in the GitHub Action. 3245d15
setup-python's pip cache looks for requirements.txt or pyproject.toml in
the caller's checkout and fails when neither exists. The action installs
bump-my-version from PyPI and doesn't need the cache.
Fixes #320
Other
docs: add Python testing guidelines and examples. 5ad4106
docs/agents/python/for future Python-related references.v1.6.3Compare Source
Compare the full difference.
Fixes
Fix: raise FileNotFoundError when a glob matches no files. a83d288
A
globfile entry that matched nothing (or whose matches were allremoved by
glob_exclude) was silently skipped, while a missingfilenameraised FileNotFoundError. Glob entries now follow the samerule: raise unless
ignore_missing_file(or the globalOther
Test: share no-match glob parametrization and trim helper. 3b935ac
[pre-commit.ci] pre-commit autoupdate. ef27fcd
updates: - github.com/astral-sh/ruff-pre-commit: v0.17.0 → v0.17.1
v1.6.2Compare Source
Compare the full difference.
Fixes
Fix: close review gaps in config discovery and file resolution. aff2341
Fix: don't re-add CLI files already configured; limit '!' handling to glob_exclude. ce16247
Fix: compare CLI and configured file paths as resolved paths. f36ef5d
Also handle '!' glob_exclude negation when rebasing paths, ignore non-mapping
files entries, simplify config-dir walk, and document discovery and path rules.
Other
Test: add docstrings to discovery and resolution tests. 5001ca1
Test: use posix paths for resolved filenames and skip '|' path test on Windows. b1a2d20
Test: compare resolved filename as Path for Windows separators. ad7b894
Test: expect single entry for symlinked cwd. 2635f8e
Feat: resolve config through repo parents and anchor file paths to config dir. 276dfc4
Search parent directories up to the git/hg repo root for a config file (#8).
Resolve relative filename/glob from the config file's directory and add a
{repo_root} placeholder (#9).
Closes #8, closes #9
v1.6.1Compare Source
Compare the full difference.
Fixes
Other
Ci: exclude uv.lock from Codacy analysis. b2732f4
Chore(deps): update
uv.lockfor Python 3.10+ compatibility and dependency upgrades. 37225f8Ci: drop Python 3.9 and add Python 3.15 to test matrix. 8d46056
Ci: add Codacy exclusions and ignore local .codacy directory. 1217a32
Ci: make release work for fork PRs and skip fork-incompatible previews. 364b98c
Trigger the release workflow on push to master so merged fork PRs get a
version bump with full permissions. Skip the version-hint and docs-preview
workflows for fork PRs, which only get a read-only token and no secrets.
Bump
actions/upload-artifactto v7 andactions/setup-pythonto v7. ba36db7Bump python from 3.14-slim-bookworm to 3.15-slim-bookworm. cfed8a8
Bumps python from 3.14-slim-bookworm to 3.15-slim-bookworm.
updated-dependencies: - dependency-name: python
dependency-version: 3.15-slim-bookworm
dependency-type: direct:production
signed-off-by: dependabot[bot] support@github.com
[pre-commit.ci] pre-commit autoupdate. 0640b3e
updates: - github.com/astral-sh/ruff-pre-commit: v0.16.10 → v0.17.0
Bump
build-and-inspect-python-packageaction to version 3.0.1. 8b42383coveragepy/coveragepy (coverage)
v7.17.0Compare 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
withstatements could make awithline 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:orwhile 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
elseandexceptclauses. 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 theprocess that wrote the file.
Fix: at coverage totals close to 0 or 100, the XML report could get incorrect
line-ratevalues like8.333e-05or1. This is now fixed, closingissue 2293_ andissue 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 datareplace non-printable characters in names. Printable names areunchanged.
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_filenamemethod raised an exception, linesin that function could be recorded as belonging to a different file. Also
fixed some minor memory leaks in the C tracer.
The refcount of
Nonewas mismanaged during function calls, includingcomprehensions. 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
SystemErrorinstead of the actual exception.Performance: the text summary report (
coverage report) held on to everyfile'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:
pycqa/flake8 (flake8)
v7.5.0Compare Source
python/mypy (mypy)
v2.4.1Compare Source
pytest-dev/pytest (pytest)
v9.2.0Compare Source
pytest 9.2.0 (2026-10-27)
Removals and backward incompatible breaking changes
#14716:
-cnow raises a usage error for a path that does not exist, is a directory, or is in a format pytest has no loader for. Such paths were previously either ignored or reported as an unhandledFileNotFoundError.#8593: The
indirect,idsandscopearguments ofMetafunc.parametrize() <pytest.Metafunc.parametrize>-- and therefore of@pytest.mark.parametrize <pytest.mark.parametrize ref>-- are now keyword-only.Passing them positionally was a common source of confusing errors, e.g.
parametrize("arg1", "arg2", [(1, 2)])made the argvalues land inindirectand failed withindirect fixture '(1, 2)' doesn't exist; such mistakes now fail with an understandableTypeError. The type annotations have always declared these arguments as keyword-only.#993: Plugin import failures at startup are now reported and classified instead of escaping as a raw traceback with the accidental exit code
1:-p,pytest_pluginsorPYTEST_PLUGINS-- exits withpytest.ExitCodeUSAGE_ERROR(4), like aconftest.pythat fails to import;pytest11entry point or a missing plugin dependency -- exits withpytest.ExitCodeINTERNAL_ERROR(3), with the traceback preserved.pytest.mainnow returns these codes instead of raisingImportError. Also fixed anIndexErrorfrom pytest's own internals when the plugin raised an exception with no arguments.Deprecations (removal in next major release)
#14742: The private
_pytest.python.CallSpec2name has been renamed toCallSpec.The old
CallSpec2alias remains available for now and will be removed in pytest 10 or 11.#14755: Schedule yield_fixture decorator for removal in pytest 10 or 11.
#14774: Similarly to the deprecation of class-scoped fixtures defined as instance methods in pytest 9.1,
all higher-scoped fixtures (
module,package, andsession) definedas instance methods are now deprecated.
They suffer from the same issue the original deprecation only fixed for
class-scoped fixtures, see
10819and14011.#14808: Passing a non-string value to a
string-typed ini option now emits apytest.PytestRemovedIn10Warning. This affects[tool.pytest.ini_options]inpyproject.toml. In pytest 10 this will raise aTypeError, matching the behavior of the corresponding TOML config path.#7323: Passing
bytestoTerminalReporter.write_line()is now deprecated, pass astrinstead.New features
strict_markersis enabled, marker names used in-mexpressions are now validated against registered markers.parametrize_long_str_id_strategyconfiguration option to control how longstr/bytesparameter values are handled in auto-generated test IDs. Explicit IDs set viaids=[...]orpytest.param(..., id=...)are not affected. Available strategies:short(default, values over 100 chars fall back toargname+index),sha256(SHA-256 hex digest),legacy(keep full value), anddisallow(error requesting explicit IDs).Improvements in existing functionality
#10745: A
RecursionErrorwhose recursion origin cannot be located now shows only thefirst and last 10 stack frames, matching what pytest already did when locating
the origin failed outright. Previously the full traceback -- often around a
thousand near-identical frames -- was rendered, which was both slow and
unreadable. Pass
--full-traceto see every frame.#10745: The line numbers of a module's statements are now computed once per traceback
instead of once per traceback entry, which noticeably speeds up rendering
failures raised from large test modules.
#11418: The cached rewritten modules in
__pycache__are now invalidated by a hash ofthe source instead of its modification time, using the checked-hash pyc format
from
552.Timestamps make the cache useless wherever source files get fresh modification
times, most notably in CI: a checkout gives every file a new mtime, so a
restored cache is discarded in full and every test module is rewritten again.
Hashing the source costs roughly 15 microseconds per file and makes the cache
survive that.
Existing timestamp based caches are ignored and rewritten once.
#12624: The
pytest_pluginsvariable and thePYTEST_PLUGINSenvironment variable now also accept entry point names of installed plugins (e.g.xdist), in addition to importable module names, matching the behavior of the-pcommand-line option.As part of this change, plugins specified by entry point name through these mechanisms are now also listed in the
plugins:line of the terminal header (12615).Based on the original implementation by Marcel Telka in
12616.#12697: Warnings emitted while importing plugins through
-p,PYTEST_PLUGINS, or entry point autoloading are now captured, filtered, and reported like other warnings.#12860: Assertion diffs for
dict.items()anddict.keys()comparisons (>=,<=,>,<,==) now show which items are missing, the same way set comparisons do.#13354:
Node.get_closest_marker <_pytest.nodes.Node.get_closest_marker>now also accepts a~pytest.MarkDecoratoras itsdefault, for exampleitem.get_closest_marker("foo", pytest.mark.foo(1)), and returns the wrapped~pytest.Mark.Previously the only way to build a
defaultwas to instantiate~pytest.Markdirectly, which is private and warns.#13369: Improved the error from
pytest.RunResult.assert_outcomeswhen a plugin changes or removes pytest's standard terminal summary, and documented how to isolate output-changing plugins.#13431: Exposed
pytest.ParameterSetas the type of the return value ofpytest.param().This can be used in type annotations and
isinstancechecks.#13564: Issue a warning when fixtures are wrapped with a decorator that prevents
correct discovery, including
@classmethodabove@pytest.fixtureand@staticmethodabove@pytest.fixture. Put@pytest.fixtureabovethose decorators on test classes.
#14164: Exposed
pytest.Approxas the type of the return value ofpytest.approx().This can be used in type annotations and
isinstancechecks.#14463: Assertion diffs for mappings now match up keys the way the compared mappings match them themselves.
Key comparison goes through the mappings' key views instead of plain sets of their keys, so a mapping
with its own notion of key equivalence, such as case-insensitive header mappings, no longer
reports its common keys as missing on either side.
#14523: Large assertion comparison diffs are now built lazily and capped to the
truncation budget, so a huge diff is no longer formatted in full just to
be truncated. As a consequence, the truncation footer no longer
reports the exact number of hidden lines.
#14687: The default fd-level output capturing (
--capture=fd) now skips reading the capture buffer for tests which produce no output, reducing per-test overhead in large test suites.#14724:
--no-summarynow only applies directly to pytest's own summary.The flag no longer skips the
pytest_terminal_summaryhook, so third-partyplugins (for example coverage) can still write their terminal summaries.
#14751:
parser.addini <pytest.Parser.addini>now also accepts type expressions for itstypeargument, in addition to the existing string tags: the plain Python typesstr,bool,int,float, aLiteralof strings, and unions of these (for exampleint | strorint | Literal["auto"]).#14754:
pytest.approx()now rejects infinite relative tolerances fordatetime.timedeltavalues with a clearValueErrorinstead of raisingOverflowError.#14791: The
junit_family,junit_logging,junit_duration_report,console_output_style,empty_parameter_set_mark,assertion_text_diff_styleandtmp_path_retention_policyconfiguration options are now registered with the set of values they accept: an invalid value now fails with a clean usage error instead of being silently ignored or crashing later, andpytest --helplists the accepted values.config.getini <pytest.Config.getini>now raisespytest.UsageErrorinstead ofTypeErrororValueErrorwhen the value read from the configuration file does not match the registered type, so a bad value is always reported as a short usage error message instead of an internal error traceback. Asking for an option name that was never registered still raisesValueError.#15006:
pytest.approxnow emitspytest.PytestApproxDecimalToleranceWarningwhen arelorabstolerance is given as afloatthat cannot be represented exactly for a~decimal.Decimalcomparison, since such a tolerance is widened to the float's exact binary value.#14675, #14953, #15153, #15132: The
truncation_limit_lines,truncation_limit_chars,max_warnings,verbosity_assertions,verbosity_test_cases,verbosity_subtests,tmp_path_retention_count,log_level,log_cli_level,log_file_level,log_auto_indentandfaulthandler_timeoutconfiguration options now accept native integer (and, forlog_auto_indent, boolean) values in TOML configuration files, while still accepting strings for backward compatibility.log_file_modenow reports invalid values as a usage error.#15254:
tmp_pathandTempPathFactory.mktemp <pytest.TempPathFactory.mktemp>no longer list the whole base temporary directory on every call, which made sessions with many temporary directories quadratically slow. Numbers are now handed out from a per-prefix counter, skipping names that already exist.#4569:
Node.add_marker <_pytest.nodes.Node.add_marker>now stores a~pytest.Markinnode.keywords, matching what marks applied during collection store. Previously it stored a~pytest.MarkDecorator.#9436: Avoided formatting tracebacks for tests marked with
xfail(run=False).Bug fixes
#10128: Configured warning filters now apply to warnings emitted by
pytest_configurehooks.#10210:
pytest.approxnow raises aTypeErrorfor any nested container, notonly for one of the same type as its parent. Previously
approx([{"k": 1}])and
approx({"k": [1]})were accepted and then compared unequal to everyvalue, silently ignoring the tolerance, while
approx([[1]])correctlyreported that nesting is unsupported.
#10644:
monkeypatch.setattr()no longer leaves a new entry in the instance__dict__when it patches an attribute that the instance inherits from its class.Previously
undo()assigned the inherited value onto the instance, which shadowed the class attribute -- permanently freezing the result for descriptors that resolve dynamically.#1139: Fixed tracebacks showing
???instead of source lines for code compiled with a filename relative to a directory other than the current working directory -- e.g. compiled Cython modules, when running pytest from a subdirectory of the project root.The source lookup now falls back to searching
sys.pathfor such filenames, as the standardtracebackmodule does.#11502: The
rootdiris no longer derived from a configuration file that is not a regular file, such as--config-file=/dev/null.#11783: Plugins installed in editable mode (
660) are marked for assertion rewriting again.Such installs do not record the package's Python files in the distribution metadata, so pytest found nothing to rewrite and assertions inside the plugin lost their introspection. The plugin's entry point is now used to locate the package in that case.
#11933:
pytest.warnsno longer re-emits unmatched warnings withmodule="warnings", which causedmodule-based warning filters to be applied to the wrong warnings. Sincewarnings.WarningMessagedoes not record the module a warning was emitted with, re-emitted warnings now use the standardwarnings.warn_explicitdefault of deriving the module from the warning's filename.#12175:
ExceptionInfo.exconly(tryshort=True) <pytest.ExceptionInfo.exconly>now strips theAssertionError:prefix of failedassertstatements for~pytest.ExceptionInfoobjects created bypytest.raises, and failures insideunittest.TestCase.subTestreport the same short crash line as regular tests.#12223: The
messageattribute of<failure>and<error>elements in--junitxmlreports is now shortened to whole lines within 500 characters. When something is dropped, it ends with a note pointing to the element text, which still holds the full report. Previously, very verbose assertion output (e.g. with-vv) produced attributes tens of thousands of characters long, which some XML parsers fail on.#12307: Fixed truncation of long collections (lists, dicts, sets, etc.) in the "message" part of failed assertions (as in
assert condition, msg) when using-vv: the message now uses the same unlimited repr as the rest of the assertion output, instead of eliding collection elements with....#12824: Custom command-line options now fail with a clear error when their implicit
destination conflicts with an existing option, avoiding silent overrides of
built-in options such as
-k.#13292: Fixed a stale rewritten module being used when a test file is modified twice
within the same second without changing its size -- the pyc header could only
record whole-second timestamps. The cache is now keyed on a hash of the source.
#14036:
__tracebackhide__is now respected inExceptionGrouptracebacks, both for the group itself and for its sub-exceptions.#14189: Nested usage of
caplog.filtering <pytest.LogCaptureFixture.filtering>no longer removes filters early if they were already present.#14412: Fixed incorrect timing information for subtests and parent tests when
console_output_style = "times".#14445: Assertion rewriting no longer evaluates walrus operator (
:=) expressions more than once, which reported results the test never computed when the expression had side effects.An operand evaluated before a later walrus is now reported with the value it actually saw, so
assert value != identity(value := value.lower())keeps Python's left-to-right order.#14552: Fixed stale
co_filenamevalues after a test module or directory is moved. Assertion-rewrite caches are reused when the source hash still matches, and in-memory code objects are pointed at the current path.#14586: Negative values passed to
log_auto_indentnow correctly fall back to no indentation, matching the documented behavior.#14619: Fixed a crash in
pytest.mark.parametrizewhen a non-sequence value is passed for a parameter set. It now provides a clear error message during collection.#14635: Fixed fixture resolution failures when specifying multiple test paths on the command line that share common parent directories. Parametrized fixtures defined in a
conftest.pycould be silently dropped depending on the order of the specified paths.#14637: Pytest now correctly skips identical trailing characters in assertion text diffs even when the compared strings differ at the beginning.
#14638: Top-level options in
pytest.tomland.pytest.tomlfiles now raise an error instead of being silently ignored when no[pytest]table is present.#14683: Fixed a regression in pytest 9.1 where a conftest.py located in the rootdir was no longer visible to tests and doctests collected from outside the rootdir (for example when passing a parent directory of the rootdir as a collection argument, or setting
--rootdirto a subdirectory).As a result, fixtures defined in such a conftest -- including
doctest_namespaceinjections -- were not available, causing errors such asNameErrorin doctests.#14700: Fixed an internal error on Python 3.12 when a doctest on a fixture-decorated function was skipped.
#14705: TOML configuration files passed via
-cnow also read their configuration from the[pytest]table, the one pytest's own configuration files use. The[tool.pytest]and[tool.pytest.ini_options]tables such files were previously restricted to keep working; using both styles in one file is an error.#14828: Exception groups raised from another exception now print their cause chain only once in the traceback output.
#14864: Fixed collection on Windows collecting the whole suite instead of the given path, on file systems which do not support file IDs (
st_inois0for every file, as seen for example onsshfs-win/WinFsp mounts).#14884:
Cache.get(),Cache.set()andCache.mkdir()now reject keys that resolve outside the cache directory, and--cache-showignores glob matches outside it.#14909: Fixed
MonkeyPatch.delattr <pytest.MonkeyPatch.delattr>,MonkeyPatch.setitem <pytest.MonkeyPatch.setitem>andMonkeyPatch.delitem <pytest.MonkeyPatch.delitem>recording a stale undo entry when the underlying mutation failed, which could cause spurious errors during teardown. The undo entry is now recorded only after the mutation succeeds, matching the behavior ofMonkeyPatch.setattr <pytest.MonkeyPatch.setattr>.#14912:
~pytest.PytestWarninginstances defined in_pytest.deprecatedare no longer reused acrosswarnings.warncalls, so warnings raised as errors (e.g. with-W error) no longer accumulate stale traceback frames from previous raises.#14942: Fixed a regression in 9.1.0 that made collection very slow (quadratic) when many fixtures are defined with the same name.
This can happen particularly when many tests are defined in separate classes which inherit from a base class which defines fixtures (the fixtures are repeated per class).
#15005:
pytest.approxno longer treats finite~decimal.Decimalvalues outside thefloatrange (such asDecimal("1e400")) as infinite, which made in-tolerance comparisons fail.#15006: Restored the tolerance shown by
pytest.approxfor~decimal.Decimalvalues, which since 9.0 displayed???for the default tolerance and reported the rawrelratio instead of the absolute tolerance actually compared against.#15006: The failure message for
pytest.approxcomparisons of~decimal.Decimalcollections no longer reportsMax absolute difference: -inf, or crashes for mappings, when thedecimal.FloatOperationtrap is set.#15006:
pytest.approxno longer raisesAttributeErrorwhen comparingnumpy.ndarrayinstances withobjectdtype, such as arrays of~decimal.Decimal.#15032: Help texts for command-line options and configuration options now keep their indentation
and blank lines. Previously each line was stripped before wrapping, so a wrapped
list item was indistinguishable from a new one and blank lines were dropped; configuration
option help lost its line breaks entirely.
#15043: Cache writes now emit
pytest.PytestCacheWarningwhen writing or closing the cache file fails, consistent with errors opening the file.#15052: Fixed possible off-by-one line numbers in
--fixturesand--fixtures-per-testoutput.#15145: With
console_output_styleset totimes, durations just below a unit boundary are now shown in the next unit (e.g.1.000msinstead of1000.0us).#15172: Assertion diffs now pretty-print the built-in
frozendict(Python 3.15+) across multiple lines, similarly to howdictis displayed.#4569:
-kno longer matches attributes that end up in a test function's__dict__without being meant as keywords, such as pytest's ownpytestmarkattribute and the bookkeeping left behind byfunctools.wrapsandfunctools.lru_cache.#6750: Fix fixture argument discovery for custom collectors that pass bound methods to
pytest.Function.#6997: XFAIL reports from teardown phases now include the phase in the short test
summary.
#7940: Fixed cleanup of temporary directories failing when subdirectories have their execute permission removed.
#8321: Fixed exception chains being duplicated in the traceback output when an exception in the chain (
__cause__/__context__) has no traceback of its own, and that exception is itself linked to further exceptions.#8914: Tests parametrized with higher-than-function scope are now reordered by
parameter value rather than by parameter index, so that items using equal
parameter values are grouped together and share a single fixture setup, even
when they are parametrized by separate
@pytest.mark.parametrize <pytest.mark.parametrize ref>calls. Previously, an expensive higher-scoped fixture could be set up and torn
down repeatedly for the same parameter value.
Unhashable parameter values (e.g. dicts) keep the previous index-based
grouping behavior.
As a consequence, the order in which parametrized tests run may change
(fixture setup/teardown counts can only decrease, not increase).
#9924: Fixed doctest option flags leaking between docstrings after a failure, skip, or expected failure.
Improved documentation
setup.pyusage withpyproject.tomlinwriting-plugins.--confcutdiraffects initialconftest.pydiscovery.pytest-flakefightersplugin to the list of flaky test plugins inplugins.rst.Added flaky test papers published on the Test FLARE project to the list of flaky papers in
plugins.rst.installation instructions <installation>andinstall-package-with-pipnow show how to install pytest into a virtual environment with venv and pip, uv or virtualenv, and explain theexternally-managed-environmenterror.Configuration
📅 Schedule: (UTC)
🚦 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.
This PR was generated by Mend Renovate. View the repository job log.