From 845f573c0db34c65a7eb9092af20fa7fe7b1404d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Lafr=C3=A9choux?= Date: Tue, 30 Apr 2024 11:19:27 +0200 Subject: [PATCH] DateTime field: allow timestamp 0 --- src/marshmallow/fields.py | 2 -- tests/test_deserialization.py | 3 ++- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/marshmallow/fields.py b/src/marshmallow/fields.py index 42e529c95..ceb32aa91 100644 --- a/src/marshmallow/fields.py +++ b/src/marshmallow/fields.py @@ -1285,8 +1285,6 @@ def _serialize(self, value, attr, obj, **kwargs) -> str | float | None: return value.strftime(data_format) def _deserialize(self, value, attr, data, **kwargs) -> dt.datetime: - if not value: # Falsy values, e.g. '', None, [] are not valid - raise self.make_error("invalid", input=value, obj_type=self.OBJ_TYPE) data_format = self.format or self.DEFAULT_FORMAT func = self.DESERIALIZATION_FUNCS.get(data_format) try: diff --git a/tests/test_deserialization.py b/tests/test_deserialization.py index 6c32feadb..4588e2a7d 100644 --- a/tests/test_deserialization.py +++ b/tests/test_deserialization.py @@ -422,6 +422,7 @@ def test_field_toggle_show_invalid_value_in_error_message(self): [ "not-a-datetime", 42, + 0, "", [], "2018", @@ -576,7 +577,7 @@ def test_timestamp_field_deserialization(self, fmt, value, expected): @pytest.mark.parametrize("fmt", ["timestamp", "timestamp_ms"]) @pytest.mark.parametrize( "in_value", - ["", "!@#", 0, -1, dt.datetime(2013, 11, 10, 1, 23, 45)], + ["", "!@#", -1, dt.datetime(2013, 11, 10, 1, 23, 45)], ) def test_invalid_timestamp_field_deserialization(self, fmt, in_value): field = fields.DateTime(format=fmt)