Skip to content

Commit db4380e

Browse files
Fix marshmallow 4.x compatibility: Remove from_iso_datetime import and usage
Co-authored-by: kshitij-microsoft <[email protected]>
1 parent 22d85a1 commit db4380e

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,14 @@
1111
import traceback
1212
import typing
1313
from abc import abstractmethod
14+
from datetime import datetime
1415
from pathlib import Path
1516
from typing import List, Optional, Union
1617

1718
from marshmallow import RAISE, fields
1819
from marshmallow.exceptions import ValidationError
1920
from marshmallow.fields import Field, Nested
20-
from marshmallow.utils import from_iso_datetime, resolve_field_instance
21+
from marshmallow.utils import resolve_field_instance
2122

2223
from ..._utils._arm_id_utils import AMLVersionedArmId, is_ARM_id_for_resource, parse_name_label, parse_name_version
2324
from ..._utils._experimental import _is_warning_cached
@@ -249,7 +250,12 @@ def _serialize(self, value, attr, obj, **kwargs):
249250

250251
def _validate(self, value):
251252
try:
252-
from_iso_datetime(value)
253+
# Replace marshmallow's from_iso_datetime with Python's built-in datetime parsing
254+
# This supports ISO 8601 format parsing starting from Python 3.7
255+
if not isinstance(value, str):
256+
raise ValueError("Value must be a string")
257+
# Handle Z suffix by replacing with +00:00 for ISO 8601 compatibility
258+
datetime.fromisoformat(value.replace('Z', '+00:00'))
253259
except Exception as e:
254260
raise ValidationError(f"Not a valid ISO8601-formatted datetime string: {value}") from e
255261

sdk/ml/azure-ai-ml/test_marshmallow_migration.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ def test_basic_imports():
5757
from marshmallow.schema import SchemaMeta
5858
from marshmallow.exceptions import ValidationError as SchemaValidationError
5959
from marshmallow.fields import Field, Nested
60-
from marshmallow.utils import from_iso_datetime, resolve_field_instance
60+
from marshmallow.utils import resolve_field_instance
6161

6262
print("✓ All basic imports successful")
6363
return True

0 commit comments

Comments
 (0)