dependabot[bot] opened a new pull request, #18827:
URL: https://github.com/apache/iceberg/pull/18827

   Bumps 
[datamodel-code-generator](https://github.com/datamodel-code-generator/datamodel-code-generator)
 from 0.86.0 to 0.87.0.
   <details>
   <summary>Release notes</summary>
   <p><em>Sourced from <a 
href="https://github.com/datamodel-code-generator/datamodel-code-generator/releases";>datamodel-code-generator's
 releases</a>.</em></p>
   <blockquote>
   <h2>0.87.0</h2>
   <h2>Compatibility policy for 0.87.0</h2>
   <ul>
   <li>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 <code>standard-*-20261027</code> / 
<code>practical-*-20261027</code> (for example 
<code>standard-py312-20261027</code>).</li>
   <li>Announced exceptions to &quot;unchanged by default&quot;:
   <ul>
   <li>External <code>$anchor</code> references in directory input resolve to 
the document that declares the anchor (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5088";>#5088</a>).
 This is what the specification says; 0.86.0 depended on the order the files 
were read.</li>
   <li>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 (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5369";>#5369</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/4984";>#4984</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5085";>#5085</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5086";>#5086</a>).</li>
   <li><code>propertyNames</code> keys that reference a root model are typed as 
a constrained <code>str</code> (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5017";>#5017</a>);
 the previous output rejected every non-empty map.</li>
   <li>With <code>--strict-nullable --reuse-model 
--collapse-reuse-models</code> (and the practical presets), a reference to a 
non-nullable object schema whose model was merged into an equal nullable one 
rejects <code>null</code> again, as in 0.83.0; 0.84.0 to 0.86.0 wrote <code>| 
None</code> there (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5407";>#5407</a>).
 No class is renamed or removed; where a second merge depended on that 
<code>None</code>, the model or type alias of the non-nullable schema is 
written again.</li>
   </ul>
   </li>
   <li>Import cycles: the modules merged into <code>_internal</code> (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5347";>#5347</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5374";>#5374</a>)
 keep every name importable from its 0.86.0 module path, including the 
<code>_internal</code> module. A module import named like a builtin is aliased 
where the module also writes that builtin (partial fix of <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5387";>#5387</a>).</li>
   <li>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).</li>
   <li>New tooling: per-release output-change pages and an upgrade guide are 
generated from recorded behaviour differences (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5386";>#5386</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5388";>#5388</a>).</li>
   <li>Known issues, open at release: <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5376";>#5376</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5378";>#5378</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5380";>#5380</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5382";>#5382</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5384";>#5384</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5385";>#5385</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5387";>#5387</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5411";>#5411</a>,
 <a href="https://redirect.github.com/datamodel-code-generator/datamodel-
 code-generator/issues/5412">#5412</a>.</li>
   </ul>
   <h2>Opt-in behaviour changes (enable per option or with the 20261027 
preset)</h2>
   <ul>
   <li><code>--filter-literal-values</code> drops <code>enum</code> and 
<code>const</code> values that fail the constraints beside them; implied by 
<code>--omit-redundant-constraints</code> (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5100";>#5100</a>)</li>
   <li><code>--read-const-beside-enum</code> types a value by the 
<code>const</code> that narrows its enum, and reads an enum that contains its 
<code>const</code> as that <code>const</code> under 
<code>--use-single-value-enum-as-const</code> (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5101";>#5101</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5102";>#5102</a>)</li>
   <li><code>--use-tuple-for-closed-arrays</code> generates closed 
<code>prefixItems</code> / <code>items</code> arrays (and the length-fixing 
<code>--use-tuple-for-fixed-items</code> cases) as fixed-length tuples (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5103";>#5103</a>)</li>
   <li><code>--pin-aliases-with-alias-generator</code> decides each field's 
alias by the <code>alias_generator</code> its model applies, for Pydantic v2 
models and dataclasses (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5104";>#5104</a>)</li>
   <li><code>--tag-msgspec-by-payload-name</code> tags msgspec discriminated 
unions by the property name in the document, not its Python name (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5105";>#5105</a>)</li>
   <li><code>--order-constructor-fields-by final-names</code> orders 
constructor fields by their final names, so an overriding required field keeps 
the position of the inherited one instead of becoming <code>kw_only</code> (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5106";>#5106</a>)</li>
   <li><code>--use-site-models-for-constrained-refs</code> gives a 
<code>$ref</code> that carries more assertions (or an <code>allOf</code> that 
adds constraints, an enum or a type to a reference) its own model (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5107";>#5107</a>)</li>
   <li><code>--intersect-allof-keywords</code> combines the keywords of every 
<code>allOf</code> part: constraints intersect, enums narrow, patterns conjoin, 
<code>null</code> members drop beside a type that excludes null (for example 
<code>kind: str | None</code> becomes <code>kind: str</code>) (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5108";>#5108</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/4951";>#4951</a>)</li>
   <li><code>--use-single-dict-for-object-maps</code> generates one dict for 
<code>patternProperties</code> / <code>propertyNames</code> object maps instead 
of a union of dicts, and counts every key in schema validators (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5113";>#5113</a>)</li>
   <li><code>--read-unevaluated-properties</code> reads a schema-valued 
<code>unevaluatedProperties</code> like <code>additionalProperties</code>, so 
extra keys are typed (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5114";>#5114</a>)</li>
   <li><code>--dedupe-request-response-variants</code> (needs 
<code>--read-only-write-only-model-type request-response</code> or 
<code>all</code>, which the preset does not set) decides request/response 
variants from the schema graph: no unreferenced duplicates, stable numbering, 
<code>allOf</code> parent inline models written once (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5115";>#5115</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5089";>#5089</a>)</li>
   <li><code>--order-constructor-fields-by written-defaults</code> orders 
<code>msgspec.Struct</code> and Pydantic dataclass fields by the defaults they 
write under <code>--strip-default-none</code> (which the preset does not set): 
a stripped <code>None</code> default counts as a default for the field's place, 
a subclass after an inherited default is no longer <code>kw_only=True</code>, 
and a Pydantic dataclass field that redeclares an inherited stripped 
<code>None</code> default as required gets <code>Field(...)</code>. Without it 
the output keeps 0.86.0's order, <code>kw_only</code> and inherited defaults 
(<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5116";>#5116</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/4946";>#4946</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5399";>#5399</a>)</li>
   <li><code>--read-nullable-beside-type-list</code> lets the root model admit 
<code>None</code> for <code>nullable: true</code> beside a <code>type</code> 
list that holds an object and another type, under 
<code>--strict-nullable</code> or <code>--use-missing-sentinel</code> (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5117";>#5117</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5064";>#5064</a>)</li>
   <li><code>--keep-field-defaults-off-branch-roots</code> keeps a nullable 
field's <code>default: null</code> off the root model of a constrained union 
branch under <code>--field-constraints</code> / <code>--use-annotated</code> 
(<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5118";>#5118</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5084";>#5084</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/4987";>#4987</a>)</li>
   <li><code>--omit-redundant-reference-null</code> stops writing <code>| 
None</code> after a reference to a model that already admits null 
(<code>list[Name | None]</code> becomes <code>list[Name]</code>) (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5120";>#5120</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5081";>#5081</a>)</li>
   <li><code>--use-typed-map-values-beside-other-types</code>, together with 
<code>--use-typed-nullable-map-values</code> (which no preset sets), types the 
<code>additionalProperties</code> values of the object member of type arrays 
that list other types, such as <code>[object, string]</code>; the option 
changes nothing without <code>--use-typed-nullable-map-values</code> (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5127";>#5127</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5094";>#5094</a>)</li>
   <li><code>--keep-enum-member-values</code> writes an enum whose 
<code>IntEnum</code> / <code>StrEnum</code> / <code>(T, Enum)</code> base would 
change a member value as a plain <code>Enum</code> that keeps every value as 
written (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5133";>#5133</a>)</li>
   <li><code>--omit-redundant-constraints</code> does not write a constraint 
again beside a type that already enforces it, such as the bound of 
<code>NonNegativeInt</code> (needs 
<code>--use-non-positive-negative-number-constrained-types</code>, not set by 
the preset) and the length and number constraints a <code>const</code> or 
<code>enum</code> <code>Literal</code> meets by its values; implies 
<code>--filter-literal-values</code> (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/4525";>#4525</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/4875";>#4875</a>)</li>
   <li><code>--use-decimal-in-field-forms</code> writes <code>Decimal</code> 
for <code>multipleOf</code> in field forms (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5021";>#5021</a>)</li>
   <li><code>--collapse-shared-parent-wrappers</code>: under 
<code>--collapse-root-models --collapse-root-models-name-strategy 
parent</code>, later holders of a parent root wrapper follow the first holder's 
collapse even where <code>--field-type-collision-strategy rename-type</code> 
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 <code>Wrapper = TypeAliasType(&quot;Wrapper&quot;, Wrapper)</code> beside 
the class that took the wrapper's name; the class validates the same payloads. 
(<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5398";>#5398</a>)</li>
   <li><code>--openapi-as-definitions paths-bodies</code> gives the request and 
response bodies of the <code>paths</code> and <code>webhooks</code> scopes the 
model a schema definition of the same body gets, for example an object body 
with a <code>type</code> array such as <code>[object, null]</code> (needs 
<code>--openapi-scopes paths</code> / <code>webhooks</code>, not set by the 
preset); it also covers object-map bodies of the legacy <code>paths</code> 
scope, whose default output is as in 0.86.0 except that closed 
<code>patternProperties</code> maps are fixed by default (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5025";>#5025</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5024";>#5024</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5141";>#5141</a>)</li>
   <li>Under <code>--generate-schema-validators</code>, counting every key of 
pattern maps and checking declared keys against matching patterns now needs 
<code>--check-pattern-maps-strictly</code>; without it the output is the same 
as 0.86.0 (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5152";>#5152</a>)</li>
   <li><code>--order-constructor-fields-by written-defaults</code> now also 
orders dataclass and Pydantic dataclass fields by the nested-model default 
factories they write (under 
<code>--use-default-factory-for-optional-nested-models 
--strip-default-none</code>); without it the output is the same as 0.86.0</li>
   <li>Giving OpenAPI components written as a constrained <code>$ref</code> to 
a recursive schema their own root model now needs 
<code>--openapi-as-definitions ref-components</code> (in preset 20261027); 
without it the output is the same as 0.86.0 (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5176";>#5176</a>)</li>
   </ul>
   <h2>Crash and import fixes</h2>
   <ul>
   <li>msgspec: a union of several dicts, which msgspec cannot decode, is 
generated as one dict</li>
   <li>Map keys that reference a root model that is not frozen are typed by the 
root type: the previous <code>dict[Key, ...]</code> raised <code>TypeError: 
unhashable type</code> on every non-empty map (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5017";>#5017</a>)</li>
   <li>Object bodies in the legacy <code>paths</code> scope get models (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5024";>#5024</a>)</li>
   <li><code>TypedDict</code> <code>extra_items</code> names the final class so 
the module imports (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5022";>#5022</a>)</li>
   <li>Non-finite float enum members are written importably (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/4954";>#4954</a>)</li>
   <li>GraphQL subclass enums are written as importable <code>StrEnum</code> 
(<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/4970";>#4970</a>)</li>
   <li>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 (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5053";>#5053</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5086";>#5086</a>)</li>
   <li>Schemas merged from another document resolve their <code>$ref</code>s in 
their own document: inputs that failed with &quot;A Parser can not resolve 
classes&quot; (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5046";>#5046</a>),
 an inherited property narrowed by a child in another directory (<code>$ref 
file not found</code>, <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5068";>#5068</a>),
 and several <code>--read-only-write-only-model-type request-response</code> 
inputs now generate</li>
   <li><code>$ref</code> to an <code>$anchor</code> declared inside a 
<code>oneOf</code> branch resolves instead of failing with <code>Unresolved $id 
reference</code> (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5056";>#5056</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5092";>#5092</a>)</li>
   <li>Fixed a <code>ValidationError</code> when an <code>allOf</code> child 
and its parent both declare a property named like a schema keyword, such as 
<code>minimum</code> or <code>maximum</code> (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5069";>#5069</a>)</li>
   </ul>
   <!-- raw HTML omitted -->
   </blockquote>
   <p>... (truncated)</p>
   </details>
   <details>
   <summary>Changelog</summary>
   <p><em>Sourced from <a 
href="https://github.com/datamodel-code-generator/datamodel-code-generator/blob/main/CHANGELOG.md";>datamodel-code-generator's
 changelog</a>.</em></p>
   <blockquote>
   <h2><a 
href="https://github.com/datamodel-code-generator/datamodel-code-generator/releases/tag/0.87.0";>0.87.0</a>
 - 2026-10-28</h2>
   <h2>Compatibility policy for 0.87.0</h2>
   <ul>
   <li>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 <code>standard-*-20261027</code> / 
<code>practical-*-20261027</code> (for example 
<code>standard-py312-20261027</code>).</li>
   <li>Announced exceptions to &quot;unchanged by default&quot;:
   <ul>
   <li>External <code>$anchor</code> references in directory input resolve to 
the document that declares the anchor (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5088";>#5088</a>).
 This is what the specification says; 0.86.0 depended on the order the files 
were read.</li>
   <li>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 (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5369";>#5369</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/4984";>#4984</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5085";>#5085</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5086";>#5086</a>).</li>
   <li><code>propertyNames</code> keys that reference a root model are typed as 
a constrained <code>str</code> (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5017";>#5017</a>);
 the previous output rejected every non-empty map.</li>
   <li>With <code>--strict-nullable --reuse-model 
--collapse-reuse-models</code> (and the practical presets), a reference to a 
non-nullable object schema whose model was merged into an equal nullable one 
rejects <code>null</code> again, as in 0.83.0; 0.84.0 to 0.86.0 wrote <code>| 
None</code> there (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5407";>#5407</a>).
 No class is renamed or removed; where a second merge depended on that 
<code>None</code>, the model or type alias of the non-nullable schema is 
written again.</li>
   </ul>
   </li>
   <li>Import cycles: the modules merged into <code>_internal</code> (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5347";>#5347</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5374";>#5374</a>)
 keep every name importable from its 0.86.0 module path, including the 
<code>_internal</code> module. A module import named like a builtin is aliased 
where the module also writes that builtin (partial fix of <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5387";>#5387</a>).</li>
   <li>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).</li>
   <li>New tooling: per-release output-change pages and an upgrade guide are 
generated from recorded behaviour differences (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5386";>#5386</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5388";>#5388</a>).</li>
   <li>Known issues, open at release: <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5376";>#5376</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5378";>#5378</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5380";>#5380</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5382";>#5382</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5384";>#5384</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5385";>#5385</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5387";>#5387</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5411";>#5411</a>,
 <a href="https://redirect.github.com/datamodel-code-generator/datamodel-
 code-generator/issues/5412">#5412</a>.</li>
   </ul>
   <h2>Opt-in behaviour changes (enable per option or with the 20261027 
preset)</h2>
   <ul>
   <li><code>--filter-literal-values</code> drops <code>enum</code> and 
<code>const</code> values that fail the constraints beside them; implied by 
<code>--omit-redundant-constraints</code> (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5100";>#5100</a>)</li>
   <li><code>--read-const-beside-enum</code> types a value by the 
<code>const</code> that narrows its enum, and reads an enum that contains its 
<code>const</code> as that <code>const</code> under 
<code>--use-single-value-enum-as-const</code> (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5101";>#5101</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5102";>#5102</a>)</li>
   <li><code>--use-tuple-for-closed-arrays</code> generates closed 
<code>prefixItems</code> / <code>items</code> arrays (and the length-fixing 
<code>--use-tuple-for-fixed-items</code> cases) as fixed-length tuples (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5103";>#5103</a>)</li>
   <li><code>--pin-aliases-with-alias-generator</code> decides each field's 
alias by the <code>alias_generator</code> its model applies, for Pydantic v2 
models and dataclasses (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5104";>#5104</a>)</li>
   <li><code>--tag-msgspec-by-payload-name</code> tags msgspec discriminated 
unions by the property name in the document, not its Python name (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5105";>#5105</a>)</li>
   <li><code>--order-constructor-fields-by final-names</code> orders 
constructor fields by their final names, so an overriding required field keeps 
the position of the inherited one instead of becoming <code>kw_only</code> (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5106";>#5106</a>)</li>
   <li><code>--use-site-models-for-constrained-refs</code> gives a 
<code>$ref</code> that carries more assertions (or an <code>allOf</code> that 
adds constraints, an enum or a type to a reference) its own model (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5107";>#5107</a>)</li>
   <li><code>--intersect-allof-keywords</code> combines the keywords of every 
<code>allOf</code> part: constraints intersect, enums narrow, patterns conjoin, 
<code>null</code> members drop beside a type that excludes null (for example 
<code>kind: str | None</code> becomes <code>kind: str</code>) (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5108";>#5108</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/4951";>#4951</a>)</li>
   <li><code>--use-single-dict-for-object-maps</code> generates one dict for 
<code>patternProperties</code> / <code>propertyNames</code> object maps instead 
of a union of dicts, and counts every key in schema validators (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5113";>#5113</a>)</li>
   <li><code>--read-unevaluated-properties</code> reads a schema-valued 
<code>unevaluatedProperties</code> like <code>additionalProperties</code>, so 
extra keys are typed (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5114";>#5114</a>)</li>
   <li><code>--dedupe-request-response-variants</code> (needs 
<code>--read-only-write-only-model-type request-response</code> or 
<code>all</code>, which the preset does not set) decides request/response 
variants from the schema graph: no unreferenced duplicates, stable numbering, 
<code>allOf</code> parent inline models written once (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5115";>#5115</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5089";>#5089</a>)</li>
   <li><code>--order-constructor-fields-by written-defaults</code> orders 
<code>msgspec.Struct</code> and Pydantic dataclass fields by the defaults they 
write under <code>--strip-default-none</code> (which the preset does not set): 
a stripped <code>None</code> default counts as a default for the field's place, 
a subclass after an inherited default is no longer <code>kw_only=True</code>, 
and a Pydantic dataclass field that redeclares an inherited stripped 
<code>None</code> default as required gets <code>Field(...)</code>. Without it 
the output keeps 0.86.0's order, <code>kw_only</code> and inherited defaults 
(<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5116";>#5116</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/4946";>#4946</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5399";>#5399</a>)</li>
   <li><code>--read-nullable-beside-type-list</code> lets the root model admit 
<code>None</code> for <code>nullable: true</code> beside a <code>type</code> 
list that holds an object and another type, under 
<code>--strict-nullable</code> or <code>--use-missing-sentinel</code> (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5117";>#5117</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5064";>#5064</a>)</li>
   <li><code>--keep-field-defaults-off-branch-roots</code> keeps a nullable 
field's <code>default: null</code> off the root model of a constrained union 
branch under <code>--field-constraints</code> / <code>--use-annotated</code> 
(<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5118";>#5118</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5084";>#5084</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/4987";>#4987</a>)</li>
   <li><code>--omit-redundant-reference-null</code> stops writing <code>| 
None</code> after a reference to a model that already admits null 
(<code>list[Name | None]</code> becomes <code>list[Name]</code>) (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5120";>#5120</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5081";>#5081</a>)</li>
   <li><code>--use-typed-map-values-beside-other-types</code>, together with 
<code>--use-typed-nullable-map-values</code> (which no preset sets), types the 
<code>additionalProperties</code> values of the object member of type arrays 
that list other types, such as <code>[object, string]</code>; the option 
changes nothing without <code>--use-typed-nullable-map-values</code> (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5127";>#5127</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5094";>#5094</a>)</li>
   <li><code>--keep-enum-member-values</code> writes an enum whose 
<code>IntEnum</code> / <code>StrEnum</code> / <code>(T, Enum)</code> base would 
change a member value as a plain <code>Enum</code> that keeps every value as 
written (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5133";>#5133</a>)</li>
   <li><code>--omit-redundant-constraints</code> does not write a constraint 
again beside a type that already enforces it, such as the bound of 
<code>NonNegativeInt</code> (needs 
<code>--use-non-positive-negative-number-constrained-types</code>, not set by 
the preset) and the length and number constraints a <code>const</code> or 
<code>enum</code> <code>Literal</code> meets by its values; implies 
<code>--filter-literal-values</code> (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/4525";>#4525</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/4875";>#4875</a>)</li>
   <li><code>--use-decimal-in-field-forms</code> writes <code>Decimal</code> 
for <code>multipleOf</code> in field forms (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5021";>#5021</a>)</li>
   <li><code>--collapse-shared-parent-wrappers</code>: under 
<code>--collapse-root-models --collapse-root-models-name-strategy 
parent</code>, later holders of a parent root wrapper follow the first holder's 
collapse even where <code>--field-type-collision-strategy rename-type</code> 
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 <code>Wrapper = TypeAliasType(&quot;Wrapper&quot;, Wrapper)</code> beside 
the class that took the wrapper's name; the class validates the same payloads. 
(<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5398";>#5398</a>)</li>
   <li><code>--openapi-as-definitions paths-bodies</code> gives the request and 
response bodies of the <code>paths</code> and <code>webhooks</code> scopes the 
model a schema definition of the same body gets, for example an object body 
with a <code>type</code> array such as <code>[object, null]</code> (needs 
<code>--openapi-scopes paths</code> / <code>webhooks</code>, not set by the 
preset); it also covers object-map bodies of the legacy <code>paths</code> 
scope, whose default output is as in 0.86.0 except that closed 
<code>patternProperties</code> maps are fixed by default (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5025";>#5025</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5024";>#5024</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5141";>#5141</a>)</li>
   <li>Under <code>--generate-schema-validators</code>, counting every key of 
pattern maps and checking declared keys against matching patterns now needs 
<code>--check-pattern-maps-strictly</code>; without it the output is the same 
as 0.86.0 (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5152";>#5152</a>)</li>
   <li><code>--order-constructor-fields-by written-defaults</code> now also 
orders dataclass and Pydantic dataclass fields by the nested-model default 
factories they write (under 
<code>--use-default-factory-for-optional-nested-models 
--strip-default-none</code>); without it the output is the same as 0.86.0</li>
   <li>Giving OpenAPI components written as a constrained <code>$ref</code> to 
a recursive schema their own root model now needs 
<code>--openapi-as-definitions ref-components</code> (in preset 20261027); 
without it the output is the same as 0.86.0 (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5176";>#5176</a>)</li>
   </ul>
   <h2>Crash and import fixes</h2>
   <ul>
   <li>msgspec: a union of several dicts, which msgspec cannot decode, is 
generated as one dict</li>
   <li>Map keys that reference a root model that is not frozen are typed by the 
root type: the previous <code>dict[Key, ...]</code> raised <code>TypeError: 
unhashable type</code> on every non-empty map (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5017";>#5017</a>)</li>
   <li>Object bodies in the legacy <code>paths</code> scope get models (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5024";>#5024</a>)</li>
   <li><code>TypedDict</code> <code>extra_items</code> names the final class so 
the module imports (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5022";>#5022</a>)</li>
   <li>Non-finite float enum members are written importably (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/4954";>#4954</a>)</li>
   <li>GraphQL subclass enums are written as importable <code>StrEnum</code> 
(<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/4970";>#4970</a>)</li>
   <li>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 (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5053";>#5053</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5086";>#5086</a>)</li>
   <li>Schemas merged from another document resolve their <code>$ref</code>s in 
their own document: inputs that failed with &quot;A Parser can not resolve 
classes&quot; (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5046";>#5046</a>),
 an inherited property narrowed by a child in another directory (<code>$ref 
file not found</code>, <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5068";>#5068</a>),
 and several <code>--read-only-write-only-model-type request-response</code> 
inputs now generate</li>
   <li><code>$ref</code> to an <code>$anchor</code> declared inside a 
<code>oneOf</code> branch resolves instead of failing with <code>Unresolved $id 
reference</code> (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5056";>#5056</a>,
 <a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5092";>#5092</a>)</li>
   </ul>
   <!-- raw HTML omitted -->
   </blockquote>
   <p>... (truncated)</p>
   </details>
   <details>
   <summary>Commits</summary>
   <ul>
   <li><a 
href="https://github.com/datamodel-code-generator/datamodel-code-generator/commit/4e5fc6256f3417234edf430ea90b995aa985545c";><code>4e5fc62</code></a>
 Keep a reference rejecting null when the schema it names does, after 
--collap...</li>
   <li><a 
href="https://github.com/datamodel-code-generator/datamodel-code-generator/commit/878a178655a9961592c7ed27aa0765b32b708667";><code>878a178</code></a>
 Order the fields of a dataclass whose field class overrides field or 
<strong>str</strong> ...</li>
   <li><a 
href="https://github.com/datamodel-code-generator/datamodel-code-generator/commit/8de944f6665a0cc220c7600f5055152504b761e4";><code>8de944f</code></a>
 Bound the payload sampling of number schemas with an integer multipleOf to 
th...</li>
   <li><a 
href="https://github.com/datamodel-code-generator/datamodel-code-generator/commit/437f4f004763ded4ba9aca75060ac6fea0bbcab6";><code>437f4f0</code></a>
 Rebalance the CI test shards on current durations and split them so each job 
...</li>
   <li><a 
href="https://github.com/datamodel-code-generator/datamodel-code-generator/commit/0b09235f5a78b40e9d0d95a1721c6e23dba08280";><code>0b09235</code></a>
 Keep the 0.86.0 kw_only and field order of msgspec and Pydantic dataclass 
sub...</li>
   <li><a 
href="https://github.com/datamodel-code-generator/datamodel-code-generator/commit/47665fa772ec9c90751cb9af9d97f7f1976d8137";><code>47665fa</code></a>
 Generate per-release output-change pages and an upgrade guide from behaviour 
...</li>
   <li><a 
href="https://github.com/datamodel-code-generator/datamodel-code-generator/commit/f40a5e601703dc33468fc8d8dfac645886bbab6e";><code>f40a5e6</code></a>
 Keep the parent root wrapper for its later holders, as 0.86.0 did, where the 
...</li>
   <li><a 
href="https://github.com/datamodel-code-generator/datamodel-code-generator/commit/b25d531a5bbc9174292be7856833c9cbab35e0be";><code>b25d531</code></a>
 Keep 0.86.0 output for legacy path object bodies, multipleOf field forms, 
inh...</li>
   <li><a 
href="https://github.com/datamodel-code-generator/datamodel-code-generator/commit/55e7dc27d16afbd75fd0c9c3ebbb38e1959fd0ba";><code>55e7dc2</code></a>
 Date the unreleased preset 20261027 (<a 
href="https://redirect.github.com/datamodel-code-generator/datamodel-code-generator/issues/5395";>#5395</a>)</li>
   <li><a 
href="https://github.com/datamodel-code-generator/datamodel-code-generator/commit/546c492ddd0a39627ea67ea872e78f0716e046b3";><code>546c492</code></a>
 Restore the 0.86.0 dialect flag reads and constructor field ordering under 
--...</li>
   <li>Additional commits viewable in <a 
href="https://github.com/datamodel-code-generator/datamodel-code-generator/compare/0.86.0...0.87.0";>compare
 view</a></li>
   </ul>
   </details>
   <br />
   
   
   [![Dependabot compatibility 
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=datamodel-code-generator&package-manager=pip&previous-version=0.86.0&new-version=0.87.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
   
   Dependabot will resolve any conflicts with this PR as long as you don't 
alter it yourself. You can also trigger a rebase manually by commenting 
`@dependabot rebase`.
   
   [//]: # (dependabot-automerge-start)
   [//]: # (dependabot-automerge-end)
   
   ---
   
   <details>
   <summary>Dependabot commands and options</summary>
   <br />
   
   You can trigger Dependabot actions by commenting on this PR:
   - `@dependabot rebase` will rebase this PR
   - `@dependabot recreate` will recreate this PR, overwriting any edits that 
have been made to it
   - `@dependabot show <dependency name> ignore conditions` will show all of 
the ignore conditions of the specified dependency
   - `@dependabot ignore this major version` will close this PR and stop 
Dependabot creating any more for this major version (unless you reopen the PR 
or upgrade to it yourself)
   - `@dependabot ignore this minor version` will close this PR and stop 
Dependabot creating any more for this minor version (unless you reopen the PR 
or upgrade to it yourself)
   - `@dependabot ignore this dependency` will close this PR and stop 
Dependabot creating any more for this dependency (unless you reopen the PR or 
upgrade to it yourself)
   
   
   </details>


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to