diff --git a/sinch/core/deserializers.py b/sinch/core/deserializers.py index 8ca137c8..f81e5fd4 100644 --- a/sinch/core/deserializers.py +++ b/sinch/core/deserializers.py @@ -2,4 +2,11 @@ def timestamp_to_datetime_in_utc_deserializer(timestamp: str): + """ + Older Python versions (like 3.9) do not support "Z" as a TZ information. + One needs to use '+00:00' to represent UTC tz. + """ + if timestamp.endswith("Z"): + timestamp = timestamp[:-1] + return datetime.fromisoformat(timestamp + "+00:00") diff --git a/tests/unit/test_serdes.py b/tests/unit/test_serdes.py index 9b15ba85..d8e16f44 100644 --- a/tests/unit/test_serdes.py +++ b/tests/unit/test_serdes.py @@ -63,3 +63,9 @@ def test_timestamp_to_datetime_in_utc_deserializer(): datetime_in_utc = timestamp_to_datetime_in_utc_deserializer("2024-02-15T13:01:29") assert isinstance(datetime_in_utc, datetime.datetime) assert datetime_in_utc.tzinfo == datetime.timezone.utc + + +def test_timestamp_to_datetime_in_utc_deserializer_with_added_tz(): + datetime_in_utc = timestamp_to_datetime_in_utc_deserializer("2024-02-15T13:01:29Z") + assert isinstance(datetime_in_utc, datetime.datetime) + assert datetime_in_utc.tzinfo == datetime.timezone.utc