@@ -479,8 +479,15 @@ class NestedField(Nested):
479479 """anticipates the default coming in next marshmallow version, unknown=True."""
480480
481481 def __init__ (self , * args , ** kwargs ):
482- if kwargs .get ("unknown" ) is None :
483- kwargs ["unknown" ] = RAISE
482+ # Handle unknown parameter compatibility between marshmallow 3.x and 4.x
483+ # In marshmallow 4.x, unknown parameter was removed from field constructors
484+ unknown_value = kwargs .pop ("unknown" , None )
485+ if unknown_value is None :
486+ unknown_value = RAISE
487+
488+ # Store unknown value for use at schema level if needed
489+ self ._unknown_value = unknown_value
490+
484491 super ().__init__ (* args , ** kwargs )
485492
486493
@@ -493,6 +500,9 @@ class UnionField(fields.Field):
493500 """A field that can be one of multiple types."""
494501
495502 def __init__ (self , union_fields : List [fields .Field ], is_strict = False , ** kwargs ):
503+ # Handle unknown parameter compatibility between marshmallow 3.x and 4.x
504+ # In marshmallow 4.x, unknown parameter was removed from field constructors
505+ kwargs .pop ("unknown" , None )
496506 super ().__init__ (** kwargs )
497507 try :
498508 # add the validation and make sure union_fields must be subclasses or instances of
@@ -917,6 +927,9 @@ def __init__(
917927 ** kwargs ,
918928 ):
919929 self .strict = strict
930+ # Handle unknown parameter compatibility between marshmallow 3.x and 4.x
931+ # In marshmallow 4.x, unknown parameter was removed from field constructors
932+ kwargs .pop ("unknown" , None )
920933 super ().__init__ (allow_nan = allow_nan , as_string = as_string , ** kwargs )
921934
922935 def _validated (self , value ):
@@ -939,6 +952,9 @@ def _serialize(self, value, attr, obj, **kwargs) -> typing.Optional[typing.Union
939952
940953class ExperimentalField (fields .Field ):
941954 def __init__ (self , experimental_field : fields .Field , ** kwargs ):
955+ # Handle unknown parameter compatibility between marshmallow 3.x and 4.x
956+ # In marshmallow 4.x, unknown parameter was removed from field constructors
957+ kwargs .pop ("unknown" , None )
942958 super ().__init__ (** kwargs )
943959 try :
944960 self ._experimental_field = resolve_field_instance (experimental_field )
0 commit comments