This is an automated email from the ASF dual-hosted git repository.
husseinawala pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 69f556dd13 Stop serializing timezone-naive datetime to timezone-aware
dateime with UTC tz (#36379)
69f556dd13 is described below
commit 69f556dd136598662db9e87478584a3c96362fc9
Author: Hussein Awala <[email protected]>
AuthorDate: Mon Dec 25 14:57:12 2023 +0100
Stop serializing timezone-naive datetime to timezone-aware dateime with UTC
tz (#36379)
---
airflow/serialization/serializers/datetime.py | 11 ++++++-----
tests/serialization/serializers/test_serializers.py | 5 +++++
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/airflow/serialization/serializers/datetime.py
b/airflow/serialization/serializers/datetime.py
index 49f0899a59..d32dd8897b 100644
--- a/airflow/serialization/serializers/datetime.py
+++ b/airflow/serialization/serializers/datetime.py
@@ -24,7 +24,6 @@ from airflow.serialization.serializers.timezone import (
serialize as serialize_timezone,
)
from airflow.utils.module_loading import qualname
-from airflow.utils.timezone import convert_to_utc, is_naive
if TYPE_CHECKING:
import datetime
@@ -45,10 +44,8 @@ def serialize(o: object) -> tuple[U, str, int, bool]:
if isinstance(o, datetime):
qn = qualname(o)
- if is_naive(o):
- o = convert_to_utc(o)
- tz = serialize_timezone(o.tzinfo)
+ tz = serialize_timezone(o.tzinfo) if o.tzinfo else None
return {TIMESTAMP: o.timestamp(), TIMEZONE: tz}, qn, __version__, True
@@ -83,7 +80,11 @@ def deserialize(classname: str, version: int, data: dict |
str) -> datetime.date
else:
tz = timezone(data[TIMEZONE])
else:
- tz = deserialize_timezone(data[TIMEZONE][1], data[TIMEZONE][2],
data[TIMEZONE][0])
+ tz = (
+ deserialize_timezone(data[TIMEZONE][1], data[TIMEZONE][2],
data[TIMEZONE][0])
+ if data[TIMEZONE]
+ else None
+ )
if classname == qualname(datetime.datetime) and isinstance(data, dict):
return datetime.datetime.fromtimestamp(float(data[TIMESTAMP]), tz=tz)
diff --git a/tests/serialization/serializers/test_serializers.py
b/tests/serialization/serializers/test_serializers.py
index aab9f91395..32e9787ccf 100644
--- a/tests/serialization/serializers/test_serializers.py
+++ b/tests/serialization/serializers/test_serializers.py
@@ -84,6 +84,11 @@ class TestSerializers:
d = deserialize(s)
assert i.timestamp() == d.timestamp()
+ i = datetime.datetime.now()
+ s = serialize(i)
+ d = deserialize(s)
+ assert i.timestamp() == d.timestamp()
+
def test_deserialize_datetime_v1(self):
s = {
"__classname__": "pendulum.datetime.DateTime",