Skip to content

Bump the python-dependencies group across 1 directory with 5 updates - #14

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/pip/python-dependencies-ff862cd9d4
Open

dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/pip/python-dependencies-ff862cd9d4

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Bumps the python-dependencies group with 5 updates in the / directory:

Package From To
pytest 9.1.1 9.2.0
pytest-asyncio 1.4.0 1.4.1.post1
ruff 0.16.8 0.17.3
mypy 2.3.1 2.4.1
datamodel-code-generator 0.82.0 0.87.0

Updates pytest from 9.1.1 to 9.2.0

Release notes

Sourced from pytest's releases.

9.2.0

pytest 9.2.0 (2026-10-27)

Removals and backward incompatible breaking changes

  • #14716: -c now 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 unhandled FileNotFoundError.

  • #8593: The indirect, ids and scope arguments of Metafunc.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 in indirect and failed with indirect fixture '(1, 2)' doesn't exist; such mistakes now fail with an understandable TypeError. 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:

    • a plugin that cannot be found -- via -p, pytest_plugins or PYTEST_PLUGINS -- exits with pytest.ExitCode USAGE_ERROR (4), like a conftest.py that fails to import;
    • a plugin that is found but raises while importing -- including a broken pytest11 entry point or a missing plugin dependency -- exits with pytest.ExitCode INTERNAL_ERROR (3), with the traceback preserved.

    pytest.main now returns these codes instead of raising ImportError. Also fixed an IndexError from pytest's own internals when the plugin raised an exception with no arguments.

Deprecations (removal in next major release)

  • #14742: The private _pytest.python.CallSpec2 name has been renamed to CallSpec. The old CallSpec2 alias 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, and session) defined as instance methods are now deprecated.

    They suffer from the same issue the original deprecation only fixed for class-scoped fixtures, see 10819 and 14011.

  • #14808: Passing a non-string value to a string-typed ini option now emits a pytest.PytestRemovedIn10Warning. This affects [tool.pytest.ini_options] in pyproject.toml. In pytest 10 this will raise a TypeError, matching the behavior of the corresponding TOML config path.

  • #7323: Passing bytes to TerminalReporter.write_line() is now deprecated, pass a str instead.

New features

  • #14743: Full diff: now contains a legend explaining the + & - symbols in diff output.
  • #2781: When strict_markers is enabled, marker names used in -m expressions are now validated against registered markers.
  • #6881: Added the parametrize_long_str_id_strategy configuration option to control how long str/bytes parameter values are handled in auto-generated test IDs. Explicit IDs set via ids=[...] or pytest.param(..., id=...) are not affected. Available strategies: short (default, values over 100 chars fall back to argname+index), sha256 (SHA-256 hex digest), legacy (keep full value), and disallow (error requesting explicit IDs).

Improvements in existing functionality

  • #10745: A RecursionError whose recursion origin cannot be located now shows only the first 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-trace to see every frame.

... (truncated)

Commits
  • ae1d0ff Prepare release version 9.2.0
  • 143ce31 pre-commit: exclude codespell on generated release announcements
  • 532dc5f tox: add attrs dependency to regen, needed in reportingdemo.rst
  • a7b2446 Merge pull request #15245 from pytest-dev/claude/project-thread-9jcf91
  • 679d09c [pre-commit.ci] pre-commit autoupdate (#15266)
  • 41d12cd docs: clarify typing for yield fixtures
  • b9022ba Merge pull request #15182 from 1871698/docs/improve-getting-started-description
  • 16f87a7 docs: improve getting-started.rst test execution description
  • 082ed70 Merge pull request #15255 from pytest-dev/claude/project-thread-eoi3d6
  • ae37a01 Merge pull request #15227 from pytest-dev/claude/project-thread-4etye4
  • Additional commits viewable in compare view

Updates pytest-asyncio from 1.4.0 to 1.4.1.post1

Release notes

Sourced from pytest-asyncio's releases.

pytest-asyncio v1.4.1.post1

1.4.1.post1 - 2026-11-01

Changed

  • Removed the upper version bound on the pytest dependency. (#1605)

pytest-asyncio v1.4.1

1.4.1 - 2026-10-25

Added

  • Declared support for Python 3.15 (#1588)

Fixed

  • Allow AsyncIterable as a return type for asynchronous generator fixtures decorated with pytest_asyncio.fixture (#1090)

Notes for Downstream Packagers

  • Source-tree development dependencies now use PEP 735 dependency groups and uv.lock. (#1518)
Commits
  • e420349 Bump mypy pre-commit hook to v2.4.0 (#1601)
  • 16a1ba4 chore: Prepare release of v1.4.1.post1.
  • 7087e7f build: drop pytest upper bound (#1605) (#1606)
  • 6af7f5c chore: Prepare release of v1.4.1.
  • 32ccf64 Support 3.15 (#1588)
  • 9830071 Build(deps): Bump certifi from 2026.6.17 to 2026.10.19 (#1590)
  • 0238023 Build(deps): Bump virtualenv from 21.7.13 to 21.14.13 (#1589)
  • 93893ec Build(deps): Bump astral-sh/setup-uv from 10.2.0 to 10.3.0 (#1583)
  • f287e5e Build(deps): Bump actions/download-artifact from 8.0.1 to 8.0.2 (#1581)
  • b71da4f Build(deps-dev): Bump hypothesis from 6.168.3 to 6.168.5 (#1582)
  • Additional commits viewable in compare view

Updates ruff from 0.16.8 to 0.17.3

Release notes

Sourced from ruff's releases.

0.17.3

Release Notes

Released on 2026-10-26.

Preview features

  • [suspicious] Add shared-clock-mock (#29074)

Bug fixes

  • [pyupgrade] Avoid incorrect conversions to f-strings (UP032) (#25485)

Performance

  • Buffer stdout in ruff format (#29631)
  • Specialize ASCII identifier lexing (#29503)
  • Speed up identifier and keyword lexing (#29463)

Documentation

  • [flake8-bandit] Describe what the rule actually checks for httpx (S113) (#27936)

Contributors

Install ruff 0.17.3

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.17.3/ruff-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/ruff/releases/download/0.17.3/ruff-installer.ps1 | iex"

Download ruff 0.17.3

File Platform Checksum
ruff-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
ruff-x86_64-apple-darwin.tar.gz Intel macOS checksum
ruff-aarch64-pc-windows-msvc.zip ARM64 Windows checksum

... (truncated)

Changelog

Sourced from ruff's changelog.

0.17.3

Released on 2026-10-26.

Preview features

  • [suspicious] Add shared-clock-mock (#29074)

Bug fixes

  • [pyupgrade] Avoid incorrect conversions to f-strings (UP032) (#25485)

Performance

  • Buffer stdout in ruff format (#29631)
  • Specialize ASCII identifier lexing (#29503)
  • Speed up identifier and keyword lexing (#29463)

Documentation

  • [flake8-bandit] Describe what the rule actually checks for httpx (S113) (#27936)

Contributors

0.17.2

Released on 2026-10-22.

Preview features

  • [complexity] Add unnecessary-regular-expression-compile (#25533)

Bug fixes

  • Avoid syntax errors for type variables with starred constraints (UP040, UP046, UP047, RUF053) (#28362)
  • [pydocstyle] Treat backslash-escaped *args and **kwargs as documented (D417) (#29536)
  • [pylint] Avoid false positive on starred elements (PLE0643) (#29483)
  • [pylint] Mark fixes unsafe when deleting comments (PLR5501, PLW0120) (#29414)
  • [pyupgrade] Mark fix unsafe when deleting comments (UP035) (#29413)

Performance

  • Avoid intermediate names in lint name resolution (#29506)
  • Prefilter bidirectional Unicode checks by UTF-8 leading bytes (#29561)
  • Share postfix parsing and reduce expression copies (#29480)

... (truncated)

Commits

Updates mypy from 2.3.1 to 2.4.1

Changelog

Sourced from mypy's changelog.

Mypy 2.4.1

  • Process overloads as a whole in two-phase type checking (Ivan Levkivskyi, PR 22231)
  • Skip recursive setup for frame-private nested functions in mypyc (Piotr Sawicki, PR 22187)

Acknowledgements

Thanks to all mypy contributors who contributed to this release:

  • A5rocks
  • Adam Dangoor
  • Alex Waygood
  • Ali Hamdan
  • Brian Helba
  • Chad Dombrova
  • David Foster
  • dnwpark
  • Edgar Ramírez Mondragón
  • Giorgos Michas
  • Ivan Levkivskyi
  • Jelle Zijlstra
  • Jukka Lehtosalo
  • Marc Mueller
  • Michael R. Crusoe
  • NIYONSHUTI Emmanuel
  • Piotr Sawicki
  • Shantanu
  • themylogin
  • Vaggelis Danias
  • Willy Bruns

I'd also like to thank my employer, Dropbox, for supporting mypy development.

Mypy 2.3

We've just uploaded mypy 2.3.0 to the Python Package Index (PyPI). Mypy is a static type checker for Python. This release includes new features, performance improvements and bug fixes. You can install it as follows:

python3 -m pip install -U mypy

You can read the full documentation for this release on Read the Docs.

The Upcoming Switch to the New Native Parser

We are planning to enable the new native parser (--native-parser) by default soon. We recommend that you test the native parser in your projects and report any issues in the mypy issue tracker.

Mypyc Free-threading Memory Safety

... (truncated)

Commits

Updates datamodel-code-generator from 0.82.0 to 0.87.0

Release notes

Sourced from datamodel-code-generator's releases.

0.87.0

Compatibility policy for 0.87.0

  • Default output is unchanged from 0.86.0 except for fixes of output that failed to import or generate, or that rejected every valid payload, and changes that do not alter behaviour. Every other change is behind its own option and the dated presets standard-*-20261027 / practical-*-20261027 (for example standard-py312-20261027).
  • Announced exceptions to "unchanged by default":
    • External $anchor references in directory input resolve to the document that declares the anchor (#5088). This is what the specification says; 0.86.0 depended on the order the files were read.
    • msgspec unions whose members all failed to decode in 0.86.0 now decode. A member class that is also used on its own loses the field named like the union tag, or the field its base already declares (#5369, #4984, #5085, #5086).
    • propertyNames keys that reference a root model are typed as a constrained str (#5017); the previous output rejected every non-empty map.
    • With --strict-nullable --reuse-model --collapse-reuse-models (and the practical presets), a reference to a non-nullable object schema whose model was merged into an equal nullable one rejects null again, as in 0.83.0; 0.84.0 to 0.86.0 wrote | None there (#5407). No class is renamed or removed; where a second merge depended on that None, the model or type alias of the non-nullable schema is written again.
  • Import cycles: the modules merged into _internal (#5347, #5374) keep every name importable from its 0.86.0 module path, including the _internal module. A module import named like a builtin is aliased where the module also writes that builtin (partial fix of #5387).
  • Performance: generation is 12-21% faster than the previous development build, but on large schemas it is still 1.27-1.71x the time of 0.86.0 (quiet x86 Linux host, minimum of 7 runs; small schemas 1.27-1.30x).
  • New tooling: per-release output-change pages and an upgrade guide are generated from recorded behaviour differences (#5386, #5388).
  • Known issues, open at release: #5376, #5378, #5380, #5382, #5384, #5385, #5387, #5411, #5412.

Opt-in behaviour changes (enable per option or with the 20261027 preset)

  • --filter-literal-values drops enum and const values that fail the constraints beside them; implied by --omit-redundant-constraints (#5100)
  • --read-const-beside-enum types a value by the const that narrows its enum, and reads an enum that contains its const as that const under --use-single-value-enum-as-const (#5101, #5102)
  • --use-tuple-for-closed-arrays generates closed prefixItems / items arrays (and the length-fixing --use-tuple-for-fixed-items cases) as fixed-length tuples (#5103)
  • --pin-aliases-with-alias-generator decides each field's alias by the alias_generator its model applies, for Pydantic v2 models and dataclasses (#5104)
  • --tag-msgspec-by-payload-name tags msgspec discriminated unions by the property name in the document, not its Python name (#5105)
  • --order-constructor-fields-by final-names orders constructor fields by their final names, so an overriding required field keeps the position of the inherited one instead of becoming kw_only (#5106)
  • --use-site-models-for-constrained-refs gives a $ref that carries more assertions (or an allOf that adds constraints, an enum or a type to a reference) its own model (#5107)
  • --intersect-allof-keywords combines the keywords of every allOf part: constraints intersect, enums narrow, patterns conjoin, null members drop beside a type that excludes null (for example kind: str | None becomes kind: str) (#5108, #4951)
  • --use-single-dict-for-object-maps generates one dict for patternProperties / propertyNames object maps instead of a union of dicts, and counts every key in schema validators (#5113)
  • --read-unevaluated-properties reads a schema-valued unevaluatedProperties like additionalProperties, so extra keys are typed (#5114)
  • --dedupe-request-response-variants (needs --read-only-write-only-model-type request-response or all, which the preset does not set) decides request/response variants from the schema graph: no unreferenced duplicates, stable numbering, allOf parent inline models written once (#5115, #5089)
  • --order-constructor-fields-by written-defaults orders msgspec.Struct and Pydantic dataclass fields by the defaults they write under --strip-default-none (which the preset does not set): a stripped None default counts as a default for the field's place, a subclass after an inherited default is no longer kw_only=True, and a Pydantic dataclass field that redeclares an inherited stripped None default as required gets Field(...). Without it the output keeps 0.86.0's order, kw_only and inherited defaults (#5116, #4946, #5399)
  • --read-nullable-beside-type-list lets the root model admit None for nullable: true beside a type list that holds an object and another type, under --strict-nullable or --use-missing-sentinel (#5117, #5064)
  • --keep-field-defaults-off-branch-roots keeps a nullable field's default: null off the root model of a constrained union branch under --field-constraints / --use-annotated (#5118, #5084, #4987)
  • --omit-redundant-reference-null stops writing | None after a reference to a model that already admits null (list[Name | None] becomes list[Name]) (#5120, #5081)
  • --use-typed-map-values-beside-other-types, together with --use-typed-nullable-map-values (which no preset sets), types the additionalProperties values of the object member of type arrays that list other types, such as [object, string]; the option changes nothing without --use-typed-nullable-map-values (#5127, #5094)
  • --keep-enum-member-values writes an enum whose IntEnum / StrEnum / (T, Enum) base would change a member value as a plain Enum that keeps every value as written (#5133)
  • --omit-redundant-constraints does not write a constraint again beside a type that already enforces it, such as the bound of NonNegativeInt (needs --use-non-positive-negative-number-constrained-types, not set by the preset) and the length and number constraints a const or enum Literal meets by its values; implies --filter-literal-values (#4525, #4875)
  • --use-decimal-in-field-forms writes Decimal for multipleOf in field forms (#5021)
  • --collapse-shared-parent-wrappers: under --collapse-root-models --collapse-root-models-name-strategy parent, later holders of a parent root wrapper follow the first holder's collapse even where --field-type-collision-strategy rename-type renames the wrapper apart from its inner model. By default those holders keep the 0.86.0 wrapper; inputs that crashed in 0.86.0 are fixed either way. Under the parent strategy a pydantic v2 dataclass no longer writes the self-named alias Wrapper = TypeAliasType("Wrapper", Wrapper) beside the class that took the wrapper's name; the class validates the same payloads. (#5398)
  • --openapi-as-definitions paths-bodies gives the request and response bodies of the paths and webhooks scopes the model a schema definition of the same body gets, for example an object body with a type array such as [object, null] (needs --openapi-scopes paths / webhooks, not set by the preset); it also covers object-map bodies of the legacy paths scope, whose default output is as in 0.86.0 except that closed patternProperties maps are fixed by default (#5025, #5024, #5141)
  • Under --generate-schema-validators, counting every key of pattern maps and checking declared keys against matching patterns now needs --check-pattern-maps-strictly; without it the output is the same as 0.86.0 (#5152)
  • --order-constructor-fields-by written-defaults now also orders dataclass and Pydantic dataclass fields by the nested-model default factories they write (under --use-default-factory-for-optional-nested-models --strip-default-none); without it the output is the same as 0.86.0
  • Giving OpenAPI components written as a constrained $ref to a recursive schema their own root model now needs --openapi-as-definitions ref-components (in preset 20261027); without it the output is the same as 0.86.0 (#5176)

Crash and import fixes

  • msgspec: a union of several dicts, which msgspec cannot decode, is generated as one dict
  • Map keys that reference a root model that is not frozen are typed by the root type: the previous dict[Key, ...] raised TypeError: unhashable type on every non-empty map (#5017)
  • Object bodies in the legacy paths scope get models (#5024)
  • TypedDict extra_items names the final class so the module imports (#5022)
  • Non-finite float enum members are written importably (#4954)
  • GraphQL subclass enums are written as importable StrEnum (#4970)
  • A discriminator whose tag values are float (or, for msgspec, bool) consts no longer crashes generation or import; the union is written without a discriminator (#5053, #5086)
  • Schemas merged from another document resolve their $refs in their own document: inputs that failed with "A Parser can not resolve classes" (#5046), an inherited property narrowed by a child in another directory ($ref file not found, #5068), and several --read-only-write-only-model-type request-response inputs now generate
  • $ref to an $anchor declared inside a oneOf branch resolves instead of failing with Unresolved $id reference (#5056, #5092)
  • Fixed a ValidationError when an allOf child and its parent both declare a property named like a schema keyword, such as minimum or maximum (#5069)

... (truncated)

Changelog

Sourced from datamodel-code-generator's changelog.

0.87.0 - 2026-10-28

Compatibility policy for 0.87.0

  • Default output is unchanged from 0.86.0 except for fixes of output that failed to import or generate, or that rejected every valid payload, and changes that do not alter behaviour. Every other change is behind its own option and the dated presets standard-*-20261027 / practical-*-20261027 (for example standard-py312-20261027).
  • Announced exceptions to "unchanged by default":
    • External $anchor references in directory input resolve to the document that declares the anchor (#5088). This is what the specification says; 0.86.0 depended on the order the files were read.
    • msgspec unions whose members all failed to decode in 0.86.0 now decode. A member class that is also used on its own loses the field named like the union tag, or the field its base already declares (#5369, #4984, #5085, #5086).
    • propertyNames keys that reference a root model are typed as a constrained str (#5017); the previous output rejected every non-empty map.
    • With --strict-nullable --reuse-model --collapse-reuse-models (and the practical presets), a reference to a non-nullable object schema whose model was merged into an equal nullable one rejects null again, as in 0.83.0; 0.84.0 to 0.86.0 wrote | None there (#5407). No class is renamed or removed; where a second merge depended on that None, the model or type alias of the non-nullable schema is written again.
  • Import cycles: the modules merged into _internal (#5347, #5374) keep every name importable from its 0.86.0 module path, including the _internal module. A module import named like a builtin is aliased where the module also writes that builtin (partial fix of #5387).
  • Performance: generation is 12-21% faster than the previous development build, but on large schemas it is still 1.27-1.71x the time of 0.86.0 (quiet x86 Linux host, minimum of 7 runs; small schemas 1.27-1.30x).
  • New tooling: per-release output-change pages and an upgrade guide are generated from recorded behaviour differences (#5386, #5388).
  • Known issues, open at release: #5376, #5378, #5380, #5382, #5384, #5385, #5387, #5411, #5412.

Opt-in behaviour changes (enable per option or with the 20261027 preset)

  • --filter-literal-values drops enum and const values that fail the constraints beside them; implied by --omit-redundant-constraints (#5100)
  • --read-const-beside-enum types a value by the const that narrows its enum, and reads an enum that contains its const as that const under --use-single-value-enum-as-const (#5101, #5102)
  • --use-tuple-for-closed-arrays generates closed prefixItems / items arrays (and the length-fixing --use-tuple-for-fixed-items cases) as fixed-length tuples (#5103)
  • --pin-aliases-with-alias-generator decides each field's alias by the alias_generator its model applies, for Pydantic v2 models and dataclasses (#5104)
  • --tag-msgspec-by-payload-name tags msgspec discriminated unions by the property name in the document, not its Python name (#5105)
  • --order-constructor-fields-by final-names orders constructor fields by their final names, so an overriding required field keeps the position of the inherited one instead of becoming kw_only (#5106)
  • --use-site-models-for-constrained-refs gives a $ref that carries more assertions (or an allOf that adds constraints, an enum or a type to a reference) its own model (#5107)
  • --intersect-allof-keywords combines the keywords of every allOf part: constraints intersect, enums narrow, patterns conjoin, null members drop beside a type that excludes null (for example kind: str | None becomes kind: str) (#5108, #4951)
  • --use-single-dict-for-object-maps generates one dict for patternProperties / propertyNames object maps instead of a union of dicts, and counts every key in schema validators (#5113)
  • --read-unevaluated-properties reads a schema-valued unevaluatedProperties like additionalProperties, so extra keys are typed (#5114)
  • --dedupe-request-response-variants (needs --read-only-write-only-model-type request-response or all, which the preset does not set) decides request/response variants from the schema graph: no unreferenced duplicates, stable numbering, allOf parent inline models written once (#5115, #5089)
  • --order-constructor-fields-by written-defaults orders msgspec.Struct and Pydantic dataclass fields by the defaults they write under --strip-default-none (which the preset does not set): a stripped None default counts as a default for the field's place, a subclass after an inherited default is no longer kw_only=True, and a Pydantic dataclass field that redeclares an inherited stripped None default as required gets Field(...). Without it the output keeps 0.86.0's order, kw_only and inherited defaults (#5116, #4946, #5399)
  • --read-nullable-beside-type-list lets the root model admit None for nullable: true beside a type list that holds an object and another type, under --strict-nullable or --use-missing-sentinel (#5117, #5064)
  • --keep-field-defaults-off-branch-roots keeps a nullable field's default: null off the root model of a constrained union branch under --field-constraints / --use-annotated (#5118, #5084, #4987)
  • --omit-redundant-reference-null stops writing | None after a reference to a model that already admits null (list[Name | None] becomes list[Name]) (#5120, #5081)
  • --use-typed-map-values-beside-other-types, together with --use-typed-nullable-map-values (which no preset sets), types the additionalProperties values of the object member of type arrays that list other types, such as [object, string]; the option changes nothing without --use-typed-nullable-map-values (#5127, #5094)
  • --keep-enum-member-values writes an enum whose IntEnum / StrEnum / (T, Enum) base would change a member value as a plain Enum that keeps every value as written (#5133)
  • --omit-redundant-constraints does not write a constraint again beside a type that already enforces it, such as the bound of NonNegativeInt (needs --use-non-positive-negative-number-constrained-types, not set by the preset) and the length and number constraints a const or enum Literal meets by its values; implies --filter-literal-values (#4525, #4875)
  • --use-decimal-in-field-forms writes Decimal for multipleOf in field forms (#5021)
  • --collapse-shared-parent-wrappers: under --collapse-root-models --collapse-root-models-name-strategy parent, later holders of a parent root wrapper follow the first holder's collapse even where --field-type-collision-strategy rename-type renames the wrapper apart from its inner model. By default those holders keep the 0.86.0 wrapper; inputs that crashed in 0.86.0 are fixed either way. Under the parent strategy a pydantic v2 dataclass no longer writes the self-named alias Wrapper = TypeAliasType("Wrapper", Wrapper) beside the class that took the wrapper's name; the class validates the same payloads. (#5398)
  • --openapi-as-definitions paths-bodies gives the request and response bodies of the paths and webhooks scopes the model a schema definition of the same body gets, for example an object body with a type array such as [object, null] (needs --openapi-scopes paths / webhooks, not set by the preset); it also covers object-map bodies of the legacy paths scope, whose default output is as in 0.86.0 except that closed patternProperties maps are fixed by default (#5025, #5024, #5141)
  • Under --generate-schema-validators, counting every key of pattern maps and checking declared keys against matching patterns now needs --check-pattern-maps-strictly; without it the output is the same as 0.86.0 (#5152)
  • --order-constructor-fields-by written-defaults now also orders dataclass and Pydantic dataclass fields by the nested-model default factories they write (under --use-default-factory-for-optional-nested-models --strip-default-none); without it the output is the same as 0.86.0
  • Giving OpenAPI components written as a constrained $ref to a recursive schema their own root model now needs --openapi-as-definitions ref-components (in preset 20261027); without it the output is the same as 0.86.0 (#5176)

Crash and import fixes

  • msgspec: a union of several dicts, which msgspec cannot decode, is generated as one dict
  • Map keys that reference a root model that is not frozen are typed by the root type: the previous dict[Key, ...] raised TypeError: unhashable type on every non-empty map (#5017)
  • Object bodies in the legacy paths scope get models (#5024)
  • TypedDict extra_items names the final class so the module imports (#5022)
  • Non-finite float enum members are written importably (#4954)
  • GraphQL subclass enums are written as importable StrEnum (#4970)
  • A discriminator whose tag values are float (or, for msgspec, bool) consts no longer crashes generation or import; the union is written without a discriminator (#5053, #5086)
  • Schemas merged from another document resolve their $refs in their own document: inputs that failed with "A Parser can not resolve classes" (#5046), an inherited property narrowed by a child in another directory ($ref file not found, #5068), and several --read-only-write-only-model-type request-response inputs now generate
  • $ref to an $anchor declared inside a oneOf branch resolves instead of failing with Unresolved $id reference (#5056, #5092)

... (truncated)

Commits
  • 4e5fc62 Keep a reference rejecting null when the schema it names does, after --collap...
  • 878a178 Order the fields of a dataclass whose field class overrides field or str ...
  • 8de944f Bound the payload sampling of number schemas with an integer multipleOf to th...
  • 437f4f0 Rebalance the CI tes...

    Description has been truncated

Bumps the python-dependencies group with 5 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [pytest](https://github.com/pytest-dev/pytest) | `9.1.1` | `9.2.0` |
| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `1.4.0` | `1.4.1.post1` |
| [ruff](https://github.com/astral-sh/ruff) | `0.16.8` | `0.17.3` |
| [mypy](https://github.com/python/mypy) | `2.3.1` | `2.4.1` |
| [datamodel-code-generator](https://github.com/datamodel-code-generator/datamodel-code-generator) | `0.82.0` | `0.87.0` |



Updates `pytest` from 9.1.1 to 9.2.0
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](pytest-dev/pytest@9.1.1...9.2.0)

Updates `pytest-asyncio` from 1.4.0 to 1.4.1.post1
- [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
- [Commits](pytest-dev/pytest-asyncio@v1.4.0...v1.4.1.post1)

Updates `ruff` from 0.16.8 to 0.17.3
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](astral-sh/ruff@0.16.8...0.17.3)

Updates `mypy` from 2.3.1 to 2.4.1
- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)
- [Commits](python/mypy@v2.3.1...v2.4.1)

Updates `datamodel-code-generator` from 0.82.0 to 0.87.0
- [Release notes](https://github.com/datamodel-code-generator/datamodel-code-generator/releases)
- [Changelog](https://github.com/datamodel-code-generator/datamodel-code-generator/blob/main/CHANGELOG.md)
- [Commits](datamodel-code-generator/datamodel-code-generator@0.82.0...0.87.0)

---
updated-dependencies:
- dependency-name: pytest
  dependency-version: 9.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: python-dependencies
- dependency-name: pytest-asyncio
  dependency-version: 1.4.1.post1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: python-dependencies
- dependency-name: ruff
  dependency-version: 0.17.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: python-dependencies
- dependency-name: mypy
  dependency-version: 2.4.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: python-dependencies
- dependency-name: datamodel-code-generator
  dependency-version: 0.87.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: python-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot
dependabot Bot requested a review from troycorbinz as a code owner November 4, 2026 20:35
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file python Pull requests that update python code labels Nov 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file python Pull requests that update python code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants