Skip to content

Commit d6b8db9

Browse files
committed
Return None for unset datetime instead of datetime.min
Per review (@dirkkul): an unset date property should surface as None, not a datetime.min sentinel. Empty-string input now returns None; year-0 out-of-range handling is unchanged. Callers propagate the value as a property (typed Any / Optional[List[Any]]) so None flows through.
1 parent 6987d13 commit d6b8db9

2 files changed

Lines changed: 8 additions & 5 deletions

File tree

test/test_util.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import uuid as uuid_lib
33
from copy import deepcopy
44
from datetime import datetime, timedelta, timezone
5+
from typing import Optional
56
from unittest.mock import Mock, patch
67

78
import pytest
@@ -458,11 +459,13 @@ def test_is_weaviate_too_old(version: str, too_old: bool):
458459
),
459460
# Test handling year 0 (should return datetime.min)
460461
("0000-01-15T14:30:45.123456Z", datetime.min),
461-
# Test empty string (protobuf default for unset string field)
462-
("", datetime.min),
462+
# Test empty string (protobuf default for unset string field) -> None
463+
("", None),
463464
],
464465
)
465-
def test_datetime_from_weaviate_str(input_str: str, expected: datetime) -> None:
466+
def test_datetime_from_weaviate_str(
467+
input_str: str, expected: Optional[datetime]
468+
) -> None:
466469
assert _datetime_from_weaviate_str(input_str) == expected
467470

468471

weaviate/util.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -750,9 +750,9 @@ def _datetime_to_string(value: TIME) -> str:
750750
return value.isoformat(sep="T", timespec="microseconds")
751751

752752

753-
def _datetime_from_weaviate_str(string: str) -> datetime.datetime:
753+
def _datetime_from_weaviate_str(string: str) -> Optional[datetime.datetime]:
754754
if not string:
755-
return datetime.datetime.min
755+
return None
756756
if string[-1] != "Z":
757757
string = "".join(string.rsplit(":", 1))
758758

0 commit comments

Comments
 (0)