From 59f3a0dba287c4ca9248046a80f068893a687ad4 Mon Sep 17 00:00:00 2001 From: Rodolfo Alonso Hernandez Date: Tue, 22 Aug 2023 17:24:42 +0000 Subject: [PATCH] Python-3.12: do not use datetime.datetime.utcnow() This is deprecated in the favor of: datetime.datetime.now(datetime.timezone.utc) In order to return a ``datetime.datetime`` object without the TZ zone defined, the ``tzinfo`` member is deleted. That allows the addition/substraction from offset-naive ``datetime.datetime`` objects. Change-Id: Id345167e71bf576ec383b9d700f222343b08b249 --- oslo_utils/tests/test_timeutils.py | 6 +++--- oslo_utils/timeutils.py | 6 ++++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/oslo_utils/tests/test_timeutils.py b/oslo_utils/tests/test_timeutils.py index 0f540f46..3c765a91 100644 --- a/oslo_utils/tests/test_timeutils.py +++ b/oslo_utils/tests/test_timeutils.py @@ -66,7 +66,7 @@ class TimeUtilsTest(test_base.BaseTestCase): @mock.patch('datetime.datetime', wraps=datetime.datetime) def _test_is_older_than(self, fn, datetime_mock): - datetime_mock.utcnow.return_value = self.skynet_self_aware_time + datetime_mock.now.return_value = self.skynet_self_aware_time expect_true = timeutils.is_older_than(fn(self.one_minute_before), 59) self.assertTrue(expect_true) expect_false = timeutils.is_older_than(fn(self.one_minute_before), 60) @@ -89,7 +89,7 @@ class TimeUtilsTest(test_base.BaseTestCase): @mock.patch('datetime.datetime', wraps=datetime.datetime) def _test_is_newer_than(self, fn, datetime_mock): - datetime_mock.utcnow.return_value = self.skynet_self_aware_time + datetime_mock.now.return_value = self.skynet_self_aware_time expect_true = timeutils.is_newer_than(fn(self.one_minute_after), 59) self.assertTrue(expect_true) @@ -202,7 +202,7 @@ class TimeUtilsTest(test_base.BaseTestCase): self.assertTrue(timeutils.is_soon(expires, 600)) with mock.patch('datetime.datetime') as datetime_mock: - datetime_mock.utcnow.return_value = self.skynet_self_aware_time + datetime_mock.now.return_value = self.skynet_self_aware_time expires = timeutils.utcnow() self.assertTrue(timeutils.is_soon(expires, 0)) diff --git a/oslo_utils/timeutils.py b/oslo_utils/timeutils.py index 23314d28..19c326a1 100644 --- a/oslo_utils/timeutils.py +++ b/oslo_utils/timeutils.py @@ -137,7 +137,7 @@ def utcnow(with_timezone=False): return utcnow.override_time if with_timezone: return datetime.datetime.now(tz=iso8601.iso8601.UTC) - return datetime.datetime.utcnow() + return datetime.datetime.now(datetime.timezone.utc).replace(tzinfo=None) utcnow.override_time = None @@ -153,7 +153,9 @@ def set_time_override(override_time=None): :param override_time: datetime instance or list thereof. If not given, defaults to the current UTC time. """ - utcnow.override_time = override_time or datetime.datetime.utcnow() + utcnow.override_time = ( + override_time or + datetime.datetime.now(datetime.timezone.utc).replace(tzinfo=None)) def advance_time_delta(timedelta):