@@ -682,11 +682,11 @@ def test_datetime_auto_detection(self) -> None:
682682 assert decoded .hour == 10
683683 assert decoded .second == 45
684684
685- def test_naive_datetime_includes_utc_offset (self ) -> None :
686- """Naive datetime should include +00:00 offset to match Go's format."""
687- from datetime import datetime
685+ def test_aware_utc_datetime_includes_offset (self ) -> None :
686+ """Aware UTC datetime should include +00:00 offset to match Go's format."""
687+ from datetime import UTC , datetime
688688
689- dt = datetime (2024 , 1 , 15 , 10 , 30 , 45 ) # naive, no tzinfo
689+ dt = datetime (2024 , 1 , 15 , 10 , 30 , 45 , tzinfo = UTC )
690690 encoded , vtype = encode_value (dt )
691691 assert vtype == ValueType .ISO8601
692692 # Check the raw encoded text contains +00:00
@@ -885,35 +885,28 @@ def test_encode_value_false_as_explicit_integer(self) -> None:
885885class TestNaiveDatetimeISO8601 :
886886 """166: naive datetime 'assume UTC' fallback path is untested."""
887887
888- def test_naive_datetime_assumes_utc (self ) -> None :
889- """Naive datetime is encoded as UTC (+00:00 )."""
888+ def test_naive_datetime_raises (self ) -> None :
889+ """Naive datetime params are rejected (no silent UTC assumption )."""
890890 import datetime
891891
892892 naive = datetime .datetime (2024 , 6 , 15 , 12 , 30 , 45 ) # noqa: DTZ001
893- encoded , vtype = encode_value (naive , ValueType .ISO8601 )
894- assert vtype == ValueType .ISO8601
895- decoded , _ = decode_value (encoded , ValueType .ISO8601 )
896- assert decoded .utcoffset () == datetime .timedelta (0 )
897- assert decoded .year == 2024
898- assert decoded .month == 6
899- assert decoded .hour == 12
893+ with pytest .raises (EncodeError , match = "[Nn]aive" ):
894+ encode_value (naive , ValueType .ISO8601 )
900895
901- def test_naive_datetime_with_microseconds (self ) -> None :
902- """Naive datetime with fractional seconds encodes correctly."""
896+ def test_aware_utc_datetime_with_microseconds (self ) -> None :
897+ """Aware UTC datetime with fractional seconds encodes correctly."""
903898 import datetime
904899
905- naive = datetime .datetime (2024 , 1 , 1 , 0 , 0 , 0 , 123456 ) # noqa: DTZ001
906- encoded , _ = encode_value (naive , ValueType .ISO8601 )
900+ dt = datetime .datetime (2024 , 1 , 1 , 0 , 0 , 0 , 123456 , tzinfo = datetime . UTC )
901+ encoded , _ = encode_value (dt , ValueType .ISO8601 )
907902 decoded , _ = decode_value (encoded , ValueType .ISO8601 )
908903 assert decoded .microsecond == 123456
909904
910- def test_naive_datetime_roundtrip_becomes_aware (self ) -> None :
911- """Naive datetime round-trips as timezone-aware UTC."""
905+ def test_utc_datetime_roundtrips (self ) -> None :
906+ """Aware UTC datetime round-trips as timezone-aware UTC."""
912907 import datetime
913908
914- naive = datetime .datetime (2024 , 6 , 15 , 12 , 30 , 45 ) # noqa: DTZ001
915- assert naive .tzinfo is None
916- encoded , _ = encode_value (naive , ValueType .ISO8601 )
909+ dt = datetime .datetime (2024 , 6 , 15 , 12 , 30 , 45 , tzinfo = datetime .UTC )
910+ encoded , _ = encode_value (dt , ValueType .ISO8601 )
917911 decoded , _ = decode_value (encoded , ValueType .ISO8601 )
918- assert decoded .tzinfo is not None
919- assert decoded .replace (tzinfo = None ) == naive
912+ assert decoded == dt
0 commit comments