From 8fe28e1f0230f9b04c25084c2d22a1ddc0dafae9 Mon Sep 17 00:00:00 2001 From: larkee Date: Mon, 15 Feb 2021 23:24:01 +1100 Subject: [PATCH 1/2] fix: use datetime timezone when generating timestamp strings --- google/cloud/spanner_v1/_helpers.py | 2 +- tests/unit/test__helpers.py | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/google/cloud/spanner_v1/_helpers.py b/google/cloud/spanner_v1/_helpers.py index 4ac13f7c6b..79a387eac6 100644 --- a/google/cloud/spanner_v1/_helpers.py +++ b/google/cloud/spanner_v1/_helpers.py @@ -118,7 +118,7 @@ def _make_value_pb(value): if isinstance(value, datetime_helpers.DatetimeWithNanoseconds): return Value(string_value=value.rfc3339()) if isinstance(value, datetime.datetime): - return Value(string_value=_datetime_to_rfc3339(value)) + return Value(string_value=_datetime_to_rfc3339(value, ignore_zone=False)) if isinstance(value, datetime.date): return Value(string_value=value.isoformat()) if isinstance(value, six.binary_type): diff --git a/tests/unit/test__helpers.py b/tests/unit/test__helpers.py index 5d6b015505..cb2115b3ca 100644 --- a/tests/unit/test__helpers.py +++ b/tests/unit/test__helpers.py @@ -194,7 +194,6 @@ def test_w_timestamp_w_nanos(self): value_pb = self._callFUT(when) self.assertIsInstance(value_pb, Value) self.assertEqual(value_pb.string_value, when.rfc3339()) - def test_w_listvalue(self): from google.protobuf.struct_pb2 import Value from google.cloud.spanner_v1._helpers import _make_list_value_pb @@ -215,6 +214,19 @@ def test_w_datetime(self): self.assertIsInstance(value_pb, Value) self.assertEqual(value_pb.string_value, datetime_helpers.to_rfc3339(now)) + def test_w_timestamp_w_tz(self): + import datetime + import pytz + from google.protobuf.struct_pb2 import Value + + when = datetime.datetime( + 2021, 2, 8, 0, 0, 0, tzinfo=pytz.timezone("US/Mountain") + ) + value_pb = self._callFUT(when) + self.assertIsInstance(value_pb, Value) + self.assertEqual(value_pb.string_value, "2021-02-08T07:00:00.000000Z") + + def test_w_numeric(self): import decimal from google.protobuf.struct_pb2 import Value From 35c725c029c538d2411be8b8403b85037f7093ba Mon Sep 17 00:00:00 2001 From: larkee Date: Tue, 16 Feb 2021 13:46:44 +1100 Subject: [PATCH 2/2] style: fix lint --- tests/unit/test__helpers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit/test__helpers.py b/tests/unit/test__helpers.py index cb2115b3ca..d554f3f717 100644 --- a/tests/unit/test__helpers.py +++ b/tests/unit/test__helpers.py @@ -194,6 +194,7 @@ def test_w_timestamp_w_nanos(self): value_pb = self._callFUT(when) self.assertIsInstance(value_pb, Value) self.assertEqual(value_pb.string_value, when.rfc3339()) + def test_w_listvalue(self): from google.protobuf.struct_pb2 import Value from google.cloud.spanner_v1._helpers import _make_list_value_pb @@ -226,7 +227,6 @@ def test_w_timestamp_w_tz(self): self.assertIsInstance(value_pb, Value) self.assertEqual(value_pb.string_value, "2021-02-08T07:00:00.000000Z") - def test_w_numeric(self): import decimal from google.protobuf.struct_pb2 import Value