From 7817807381e7d16c0ac35fb6bd9ccde561f4d432 Mon Sep 17 00:00:00 2001 From: Bu Sun Kim Date: Thu, 12 Aug 2021 20:21:49 +0000 Subject: [PATCH 1/5] fix: remove pytz --- google/cloud/ndb/model.py | 8 +++----- tests/system/test_crud.py | 13 ++++++------- tests/system/test_query.py | 5 ++--- tests/unit/test_model.py | 9 ++++----- 4 files changed, 15 insertions(+), 20 deletions(-) diff --git a/google/cloud/ndb/model.py b/google/cloud/ndb/model.py index a51a280f..c5fb591c 100644 --- a/google/cloud/ndb/model.py +++ b/google/cloud/ndb/model.py @@ -259,8 +259,6 @@ class Person(Model): import six import zlib -import pytz - from google.cloud.datastore import entity as ds_entity_module from google.cloud.datastore import helpers from google.cloud.datastore_v1.proto import entity_pb2 @@ -3880,11 +3878,11 @@ def _from_base_type(self, value): if isinstance(value, six.integer_types): # Projection query, value is integer nanoseconds seconds = value / 1e6 - value = datetime.datetime.fromtimestamp(seconds, pytz.utc) + value = datetime.datetime.fromtimestamp(seconds, datetime.timezone.utc) if self._tzinfo is not None: if value.tzinfo is None: - value = value.replace(tzinfo=pytz.utc) + value = value.replace(tzinfo=datetime.timezone.utc) return value.astimezone(self._tzinfo) elif value.tzinfo is not None: @@ -3903,7 +3901,7 @@ def _to_base_type(self, value): TypeError: If ``value`` is not a :class:`~key.Key`. """ if self._tzinfo is not None and value.tzinfo is not None: - return value.astimezone(pytz.utc) + return value.astimezone(datetime.timezone.utc) class DateProperty(DateTimeProperty): diff --git a/tests/system/test_crud.py b/tests/system/test_crud.py index 4b2d1249..f5e36f86 100644 --- a/tests/system/test_crud.py +++ b/tests/system/test_crud.py @@ -18,7 +18,6 @@ import datetime import os import pickle -import pytz import random import threading import zlib @@ -1336,10 +1335,10 @@ def test_insert_autonow_property_with_tz(dispose_of): """ class SomeKind(ndb.Model): - created_at = ndb.DateTimeProperty(auto_now_add=True, tzinfo=pytz.utc) - updated_at = ndb.DateTimeProperty(auto_now=True, tzinfo=pytz.utc) + created_at = ndb.DateTimeProperty(auto_now_add=True, tzinfo=datetime.timezone.utc) + updated_at = ndb.DateTimeProperty(auto_now=True, tzinfo=datetime.timezone.utc) - now = datetime.datetime.now(pytz.utc) + now = datetime.datetime.now(datetime.timezone.utc) entity = SomeKind() key = entity.put() dispose_of(key._key) @@ -1361,10 +1360,10 @@ def test_insert_datetime_property_with_tz(dispose_of): """ class SomeKind(ndb.Model): - alarm1 = ndb.DateTimeProperty(tzinfo=pytz.utc) - alarm2 = ndb.DateTimeProperty(tzinfo=pytz.utc) + alarm1 = ndb.DateTimeProperty(tzinfo=datetime.timezone.utc) + alarm2 = ndb.DateTimeProperty(tzinfo=datetime.timezone.utc) - now = datetime.datetime.now(pytz.utc) + now = datetime.datetime.now(datetime.timezone.utc) entity = SomeKind( alarm1=now, alarm2=datetime.datetime.utcnow(), # naive diff --git a/tests/system/test_query.py b/tests/system/test_query.py index c843e262..b4a13096 100644 --- a/tests/system/test_query.py +++ b/tests/system/test_query.py @@ -22,7 +22,6 @@ import uuid import pytest -import pytz import test_utils.system @@ -247,13 +246,13 @@ def test_projection_datetime(ds_entity): ds_entity( KIND, entity_id, - foo=datetime.datetime(2010, 5, 12, 2, 42, tzinfo=pytz.UTC), + foo=datetime.datetime(2010, 5, 12, 2, 42, tzinfo=datetime.timezone.utc), ) entity_id = test_utils.system.unique_resource_id() ds_entity( KIND, entity_id, - foo=datetime.datetime(2010, 5, 12, 2, 43, tzinfo=pytz.UTC), + foo=datetime.datetime(2010, 5, 12, 2, 43, tzinfo=datetime.timezone.utc), ) class SomeKind(ndb.Model): diff --git a/tests/unit/test_model.py b/tests/unit/test_model.py index 16466e51..59453b34 100644 --- a/tests/unit/test_model.py +++ b/tests/unit/test_model.py @@ -14,7 +14,6 @@ import datetime import pickle -import pytz import six import types import zlib @@ -2748,7 +2747,7 @@ def test__validate_invalid(): @staticmethod def test__validate_with_tz(): prop = model.DateTimeProperty(name="dt_val") - value = datetime.datetime.now(tz=pytz.utc) + value = datetime.datetime.now(tz=datetime.timezone.utc) with pytest.raises(exceptions.BadValueError): prop._validate(value) @@ -2819,13 +2818,13 @@ def test__from_base_type_no_timezone(): @staticmethod def test__from_base_type_timezone(): prop = model.DateTimeProperty(name="dt_val") - value = datetime.datetime(2010, 5, 12, tzinfo=pytz.utc) + value = datetime.datetime(2010, 5, 12, tzinfo=datetime.timezone.utc) assert prop._from_base_type(value) == datetime.datetime(2010, 5, 12) @staticmethod def test__from_base_type_convert_timezone(): prop = model.DateTimeProperty(name="dt_val", tzinfo=timezone(-4)) - value = datetime.datetime(2010, 5, 12, tzinfo=pytz.utc) + value = datetime.datetime(2010, 5, 12, tzinfo=datetime.timezone.utc) assert prop._from_base_type(value) == datetime.datetime( 2010, 5, 11, 20, tzinfo=timezone(-4) ) @@ -2855,7 +2854,7 @@ def test__to_base_type_convert_to_utc(): prop = model.DateTimeProperty(name="dt_val", tzinfo=timezone(-4)) value = datetime.datetime(2010, 5, 12, tzinfo=timezone(-4)) assert prop._to_base_type(value) == datetime.datetime( - 2010, 5, 12, 4, tzinfo=pytz.utc + 2010, 5, 12, 4, tzinfo=datetime.timezone.utc ) From a9860008ce26297a798782bdc0d9d6689676e0da Mon Sep 17 00:00:00 2001 From: Owl Bot Date: Thu, 12 Aug 2021 20:23:34 +0000 Subject: [PATCH 2/5] =?UTF-8?q?=F0=9F=A6=89=20Updates=20from=20OwlBot?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --- tests/system/test_crud.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/system/test_crud.py b/tests/system/test_crud.py index f5e36f86..1d754e77 100644 --- a/tests/system/test_crud.py +++ b/tests/system/test_crud.py @@ -1335,7 +1335,9 @@ def test_insert_autonow_property_with_tz(dispose_of): """ class SomeKind(ndb.Model): - created_at = ndb.DateTimeProperty(auto_now_add=True, tzinfo=datetime.timezone.utc) + created_at = ndb.DateTimeProperty( + auto_now_add=True, tzinfo=datetime.timezone.utc + ) updated_at = ndb.DateTimeProperty(auto_now=True, tzinfo=datetime.timezone.utc) now = datetime.datetime.now(datetime.timezone.utc) From 53780a70686c5d26dd2c38ae8feef0a8fbc77f78 Mon Sep 17 00:00:00 2001 From: Bu Sun Kim Date: Thu, 12 Aug 2021 21:48:05 +0000 Subject: [PATCH 3/5] fix(deps): add pytz as an explicit dependency --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index d7799477..80325a95 100644 --- a/setup.py +++ b/setup.py @@ -28,6 +28,7 @@ def main(): "google-cloud-datastore >= 1.7.0, < 2.0.0dev", "pymemcache", "redis", + "pytz" ] if sys.version_info.major == 3 and sys.version_info.minor < 7: From 501bfd8f2ac2cd501d79af5b00da9b6385fa7aaf Mon Sep 17 00:00:00 2001 From: Bu Sun Kim Date: Thu, 12 Aug 2021 21:49:03 +0000 Subject: [PATCH 4/5] =?UTF-8?q?ievert=20"=F0=9F=A6=89=20Updates=20from=20O?= =?UTF-8?q?wlBot"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit a9860008ce26297a798782bdc0d9d6689676e0da. --- tests/system/test_crud.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/system/test_crud.py b/tests/system/test_crud.py index 1d754e77..f5e36f86 100644 --- a/tests/system/test_crud.py +++ b/tests/system/test_crud.py @@ -1335,9 +1335,7 @@ def test_insert_autonow_property_with_tz(dispose_of): """ class SomeKind(ndb.Model): - created_at = ndb.DateTimeProperty( - auto_now_add=True, tzinfo=datetime.timezone.utc - ) + created_at = ndb.DateTimeProperty(auto_now_add=True, tzinfo=datetime.timezone.utc) updated_at = ndb.DateTimeProperty(auto_now=True, tzinfo=datetime.timezone.utc) now = datetime.datetime.now(datetime.timezone.utc) From 82d54f7febeb02f9c4c58bad78248cdfdc0c2538 Mon Sep 17 00:00:00 2001 From: Bu Sun Kim Date: Thu, 12 Aug 2021 21:49:06 +0000 Subject: [PATCH 5/5] Revert "fix: remove pytz" This reverts commit 7817807381e7d16c0ac35fb6bd9ccde561f4d432. --- google/cloud/ndb/model.py | 8 +++++--- tests/system/test_crud.py | 13 +++++++------ tests/system/test_query.py | 5 +++-- tests/unit/test_model.py | 9 +++++---- 4 files changed, 20 insertions(+), 15 deletions(-) diff --git a/google/cloud/ndb/model.py b/google/cloud/ndb/model.py index c5fb591c..a51a280f 100644 --- a/google/cloud/ndb/model.py +++ b/google/cloud/ndb/model.py @@ -259,6 +259,8 @@ class Person(Model): import six import zlib +import pytz + from google.cloud.datastore import entity as ds_entity_module from google.cloud.datastore import helpers from google.cloud.datastore_v1.proto import entity_pb2 @@ -3878,11 +3880,11 @@ def _from_base_type(self, value): if isinstance(value, six.integer_types): # Projection query, value is integer nanoseconds seconds = value / 1e6 - value = datetime.datetime.fromtimestamp(seconds, datetime.timezone.utc) + value = datetime.datetime.fromtimestamp(seconds, pytz.utc) if self._tzinfo is not None: if value.tzinfo is None: - value = value.replace(tzinfo=datetime.timezone.utc) + value = value.replace(tzinfo=pytz.utc) return value.astimezone(self._tzinfo) elif value.tzinfo is not None: @@ -3901,7 +3903,7 @@ def _to_base_type(self, value): TypeError: If ``value`` is not a :class:`~key.Key`. """ if self._tzinfo is not None and value.tzinfo is not None: - return value.astimezone(datetime.timezone.utc) + return value.astimezone(pytz.utc) class DateProperty(DateTimeProperty): diff --git a/tests/system/test_crud.py b/tests/system/test_crud.py index f5e36f86..4b2d1249 100644 --- a/tests/system/test_crud.py +++ b/tests/system/test_crud.py @@ -18,6 +18,7 @@ import datetime import os import pickle +import pytz import random import threading import zlib @@ -1335,10 +1336,10 @@ def test_insert_autonow_property_with_tz(dispose_of): """ class SomeKind(ndb.Model): - created_at = ndb.DateTimeProperty(auto_now_add=True, tzinfo=datetime.timezone.utc) - updated_at = ndb.DateTimeProperty(auto_now=True, tzinfo=datetime.timezone.utc) + created_at = ndb.DateTimeProperty(auto_now_add=True, tzinfo=pytz.utc) + updated_at = ndb.DateTimeProperty(auto_now=True, tzinfo=pytz.utc) - now = datetime.datetime.now(datetime.timezone.utc) + now = datetime.datetime.now(pytz.utc) entity = SomeKind() key = entity.put() dispose_of(key._key) @@ -1360,10 +1361,10 @@ def test_insert_datetime_property_with_tz(dispose_of): """ class SomeKind(ndb.Model): - alarm1 = ndb.DateTimeProperty(tzinfo=datetime.timezone.utc) - alarm2 = ndb.DateTimeProperty(tzinfo=datetime.timezone.utc) + alarm1 = ndb.DateTimeProperty(tzinfo=pytz.utc) + alarm2 = ndb.DateTimeProperty(tzinfo=pytz.utc) - now = datetime.datetime.now(datetime.timezone.utc) + now = datetime.datetime.now(pytz.utc) entity = SomeKind( alarm1=now, alarm2=datetime.datetime.utcnow(), # naive diff --git a/tests/system/test_query.py b/tests/system/test_query.py index b4a13096..c843e262 100644 --- a/tests/system/test_query.py +++ b/tests/system/test_query.py @@ -22,6 +22,7 @@ import uuid import pytest +import pytz import test_utils.system @@ -246,13 +247,13 @@ def test_projection_datetime(ds_entity): ds_entity( KIND, entity_id, - foo=datetime.datetime(2010, 5, 12, 2, 42, tzinfo=datetime.timezone.utc), + foo=datetime.datetime(2010, 5, 12, 2, 42, tzinfo=pytz.UTC), ) entity_id = test_utils.system.unique_resource_id() ds_entity( KIND, entity_id, - foo=datetime.datetime(2010, 5, 12, 2, 43, tzinfo=datetime.timezone.utc), + foo=datetime.datetime(2010, 5, 12, 2, 43, tzinfo=pytz.UTC), ) class SomeKind(ndb.Model): diff --git a/tests/unit/test_model.py b/tests/unit/test_model.py index 59453b34..16466e51 100644 --- a/tests/unit/test_model.py +++ b/tests/unit/test_model.py @@ -14,6 +14,7 @@ import datetime import pickle +import pytz import six import types import zlib @@ -2747,7 +2748,7 @@ def test__validate_invalid(): @staticmethod def test__validate_with_tz(): prop = model.DateTimeProperty(name="dt_val") - value = datetime.datetime.now(tz=datetime.timezone.utc) + value = datetime.datetime.now(tz=pytz.utc) with pytest.raises(exceptions.BadValueError): prop._validate(value) @@ -2818,13 +2819,13 @@ def test__from_base_type_no_timezone(): @staticmethod def test__from_base_type_timezone(): prop = model.DateTimeProperty(name="dt_val") - value = datetime.datetime(2010, 5, 12, tzinfo=datetime.timezone.utc) + value = datetime.datetime(2010, 5, 12, tzinfo=pytz.utc) assert prop._from_base_type(value) == datetime.datetime(2010, 5, 12) @staticmethod def test__from_base_type_convert_timezone(): prop = model.DateTimeProperty(name="dt_val", tzinfo=timezone(-4)) - value = datetime.datetime(2010, 5, 12, tzinfo=datetime.timezone.utc) + value = datetime.datetime(2010, 5, 12, tzinfo=pytz.utc) assert prop._from_base_type(value) == datetime.datetime( 2010, 5, 11, 20, tzinfo=timezone(-4) ) @@ -2854,7 +2855,7 @@ def test__to_base_type_convert_to_utc(): prop = model.DateTimeProperty(name="dt_val", tzinfo=timezone(-4)) value = datetime.datetime(2010, 5, 12, tzinfo=timezone(-4)) assert prop._to_base_type(value) == datetime.datetime( - 2010, 5, 12, 4, tzinfo=datetime.timezone.utc + 2010, 5, 12, 4, tzinfo=pytz.utc )