Skip to content

Commit 602b157

Browse files
Fix marshmallow 4.x compatibility: remove unknown parameter from all custom field constructors
Co-authored-by: kshitij-microsoft <[email protected]>
1 parent 5739988 commit 602b157

File tree

1 file changed

+18
-2
lines changed
  • sdk/ml/azure-ai-ml/azure/ai/ml/_schema/core

1 file changed

+18
-2
lines changed

sdk/ml/azure-ai-ml/azure/ai/ml/_schema/core/fields.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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

940953
class 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

Comments
 (0)