Skip to content

Commit c38697e

Browse files
bchamppyaythomas
authored andcommitted
fix: use unix timestamps for web serialization
1 parent 90985bc commit c38697e

File tree

2 files changed

+17
-17
lines changed

2 files changed

+17
-17
lines changed

src/aws_durable_execution_sdk_python_testing/web/serialization.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ def to_bytes(self, data: Any) -> bytes:
7676
def _default_handler(self, obj: Any) -> str:
7777
"""Handle non-permitive objects."""
7878
if isinstance(obj, datetime):
79-
return obj.isoformat()
79+
return obj.timestamp()
8080
# Raise TypeError for unsupported types
8181
raise TypeError(f"Object of type {type(obj).__name__} is not JSON serializable")
8282

tests/web/serialization_test.py

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -408,13 +408,13 @@ def test_serialize_datetime():
408408
data = {"timestamp": now}
409409

410410
result = serializer.to_bytes(data)
411-
expected = b'{"timestamp":"2025-11-05T16:30:09.895000"}'
411+
expected = b'{"timestamp":1762378209.895}'
412412

413413
assert result == expected
414414
assert isinstance(result, bytes)
415415

416416
deserialized = json.loads(result.decode("utf-8"))
417-
assert deserialized["timestamp"] == "2025-11-05T16:30:09.895000"
417+
assert deserialized["timestamp"] == now.timestamp()
418418

419419

420420
def test_serialize_nested_datetime():
@@ -430,16 +430,16 @@ def test_serialize_nested_datetime():
430430
result = serializer.to_bytes(data)
431431
expected = (
432432
b'{"event":"user_login",'
433-
b'"timestamp":"2025-11-05T16:30:09",'
434-
b'"metadata":{"created_at":"2025-11-05T16:30:09",'
435-
b'"updated_at":"2025-11-05T16:30:09"}}'
433+
b'"timestamp":1762378209.0,'
434+
b'"metadata":{"created_at":1762378209.0,'
435+
b'"updated_at":1762378209.0}}'
436436
)
437437

438438
assert result == expected
439439

440440
deserialized = json.loads(result.decode("utf-8"))
441-
assert deserialized["timestamp"] == now.isoformat()
442-
assert deserialized["metadata"]["created_at"] == now.isoformat()
441+
assert deserialized["timestamp"] == now.timestamp()
442+
assert deserialized["metadata"]["created_at"] == now.timestamp()
443443

444444

445445
def test_serialize_list_with_datetime():
@@ -453,16 +453,16 @@ def test_serialize_list_with_datetime():
453453
result = serializer.to_bytes(data)
454454
expected = (
455455
b'{"events":['
456-
b'{"time":"2025-11-05T16:30:09","action":"login"},'
457-
b'{"time":"2025-11-05T16:30:09","action":"logout"}'
456+
b'{"time":1762378209.0,"action":"login"},'
457+
b'{"time":1762378209.0,"action":"logout"}'
458458
b"]}"
459459
)
460460

461461
assert result == expected
462462

463463
deserialized = json.loads(result.decode("utf-8"))
464-
assert deserialized["events"][0]["time"] == now.isoformat()
465-
assert deserialized["events"][1]["time"] == now.isoformat()
464+
assert deserialized["events"][0]["time"] == now.timestamp()
465+
assert deserialized["events"][1]["time"] == now.timestamp()
466466

467467

468468
def test_serialize_mixed_types():
@@ -487,7 +487,7 @@ def test_serialize_mixed_types():
487487
b'"boolean":true,'
488488
b'"null":null,'
489489
b'"list":[1,2,3],'
490-
b'"datetime":"2025-11-05T16:30:09"}'
490+
b'"datetime":1762378209.0}'
491491
)
492492

493493
assert result == expected
@@ -499,7 +499,7 @@ def test_serialize_mixed_types():
499499
assert deserialized["boolean"] is True
500500
assert deserialized["null"] is None
501501
assert deserialized["list"] == [1, 2, 3]
502-
assert deserialized["datetime"] == now.isoformat()
502+
assert deserialized["datetime"] == now.timestamp()
503503

504504

505505
def test_serialize_returns_bytes():
@@ -550,7 +550,7 @@ def test_serialize_datetime_with_microseconds():
550550
data = {"timestamp": now}
551551

552552
result = serializer.to_bytes(data)
553-
expected = b'{"timestamp":"2025-11-05T16:30:09.123456"}'
553+
expected = b'{"timestamp":1762378209.123456}'
554554

555555
assert result == expected
556556

@@ -562,7 +562,7 @@ def test_serialize_datetime_without_microseconds():
562562
data = {"timestamp": now}
563563

564564
result = serializer.to_bytes(data)
565-
expected = b'{"timestamp":"2025-11-05T16:30:09"}'
565+
expected = b'{"timestamp":1762378209.0}'
566566

567567
assert result == expected
568568

@@ -575,6 +575,6 @@ def test_serialize_multiple_datetimes():
575575

576576
data = {"start": dt1, "end": dt2}
577577
result = serializer.to_bytes(data)
578-
expected = b'{"start":"2025-01-01T00:00:00",' b'"end":"2025-12-31T23:59:59"}'
578+
expected = b'{"start":1735707600.0,"end":1767243599.0}'
579579

580580
assert result == expected

0 commit comments

Comments
 (0)