@@ -228,6 +228,7 @@ def Field(
228228 unique_items : Optional [bool ] = None ,
229229 min_length : Optional [int ] = None ,
230230 max_length : Optional [int ] = None ,
231+ union_mode : Optional [Literal ["smart" , "left_to_right" ]] = None ,
231232 allow_mutation : bool = True ,
232233 regex : Optional [str ] = None ,
233234 discriminator : Optional [str ] = None ,
@@ -273,6 +274,7 @@ def Field(
273274 unique_items : Optional [bool ] = None ,
274275 min_length : Optional [int ] = None ,
275276 max_length : Optional [int ] = None ,
277+ union_mode : Optional [Literal ["smart" , "left_to_right" ]] = None ,
276278 allow_mutation : bool = True ,
277279 regex : Optional [str ] = None ,
278280 discriminator : Optional [str ] = None ,
@@ -327,6 +329,7 @@ def Field(
327329 unique_items : Optional [bool ] = None ,
328330 min_length : Optional [int ] = None ,
329331 max_length : Optional [int ] = None ,
332+ union_mode : Optional [Literal ["smart" , "left_to_right" ]] = None ,
330333 allow_mutation : bool = True ,
331334 regex : Optional [str ] = None ,
332335 discriminator : Optional [str ] = None ,
@@ -362,6 +365,7 @@ def Field(
362365 unique_items : Optional [bool ] = None ,
363366 min_length : Optional [int ] = None ,
364367 max_length : Optional [int ] = None ,
368+ union_mode : Optional [Literal ["smart" , "left_to_right" ]] = None ,
365369 allow_mutation : bool = True ,
366370 regex : Optional [str ] = None ,
367371 discriminator : Optional [str ] = None ,
@@ -384,6 +388,7 @@ def Field(
384388 for param_name in (
385389 "coerce_numbers_to_str" ,
386390 "validate_default" ,
391+ "union_mode" ,
387392 ):
388393 if param_name in current_schema_extra :
389394 msg = f"Pass `{ param_name } ` parameter directly to Field instead of passing it via `schema_extra`"
@@ -444,6 +449,10 @@ def Field(
444449 serialization_alias or schema_serialization_alias or alias
445450 )
446451
452+ current_union_mode = union_mode or current_schema_extra .pop ("union_mode" , None )
453+ if current_union_mode is not None :
454+ field_info_kwargs ["union_mode" ] = current_union_mode
455+
447456 field_info = FieldInfo (
448457 default ,
449458 default_factory = default_factory ,
0 commit comments