Remove deprecated helpers from oslo_utils.timeutils

Remove the 'isotime', 'strtime' and 'iso8601_from_timestamp' helpers
from 'oslo_utils.timeutils'. These are all available in the stdlib now.

Change-Id: If4afb9242b14c48cc70e409463865b7b644a919f
Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
This commit is contained in:
Stephen Finucane 2022-05-18 13:01:03 +01:00
parent 5832a7485e
commit 76146aaca8
3 changed files with 10 additions and 135 deletions

View File

@ -13,7 +13,6 @@
# License for the specific language governing permissions and limitations
# under the License.
import calendar
import datetime
import logging
import time
@ -48,18 +47,6 @@ class TimeUtilsTest(test_base.BaseTestCase):
6, 14, 0)
self.addCleanup(timeutils.clear_time_override)
def test_isotime(self):
with mock.patch('datetime.datetime') as datetime_mock:
datetime_mock.utcnow.return_value = self.skynet_self_aware_time
dt = timeutils.isotime()
self.assertEqual(dt, self.skynet_self_aware_time_str)
def test_isotimei_micro_second_precision(self):
with mock.patch('datetime.datetime') as datetime_mock:
datetime_mock.utcnow.return_value = self.skynet_self_aware_ms_time
dt = timeutils.isotime(subsecond=True)
self.assertEqual(dt, self.skynet_self_aware_time_ms_str)
def test_parse_isotime(self):
expect = timeutils.parse_isotime(self.skynet_self_aware_time_str)
skynet_self_aware_time_utc = self.skynet_self_aware_time.replace(
@ -72,40 +59,24 @@ class TimeUtilsTest(test_base.BaseTestCase):
tzinfo=iso8601.iso8601.UTC)
self.assertEqual(skynet_self_aware_time_ms_utc, expect)
def test_strtime(self):
expect = timeutils.strtime(self.skynet_self_aware_time_perfect)
self.assertEqual(self.skynet_self_aware_time_perfect_str, expect)
def test_parse_strtime(self):
perfect_time_format = self.skynet_self_aware_time_perfect_str
expect = timeutils.parse_strtime(perfect_time_format)
self.assertEqual(self.skynet_self_aware_time_perfect, expect)
def test_strtime_and_back(self):
orig_t = datetime.datetime(1997, 8, 29, 6, 14, 0)
s = timeutils.strtime(orig_t)
t = timeutils.parse_strtime(s)
self.assertEqual(orig_t, t)
@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
expect_true = timeutils.is_older_than(fn(self.one_minute_before),
59)
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)
expect_false = timeutils.is_older_than(fn(self.one_minute_before), 60)
self.assertFalse(expect_false)
expect_false = timeutils.is_older_than(fn(self.one_minute_before),
61)
expect_false = timeutils.is_older_than(fn(self.one_minute_before), 61)
self.assertFalse(expect_false)
def test_is_older_than_datetime(self):
self._test_is_older_than(lambda x: x)
def test_is_older_than_str(self):
self._test_is_older_than(timeutils.strtime)
def test_is_older_than_aware(self):
"""Tests sending is_older_than an 'aware' datetime."""
self._test_is_older_than(lambda x: x.replace(
@ -132,9 +103,6 @@ class TimeUtilsTest(test_base.BaseTestCase):
def test_is_newer_than_datetime(self):
self._test_is_newer_than(lambda x: x)
def test_is_newer_than_str(self):
self._test_is_newer_than(timeutils.strtime)
def test_is_newer_than_aware(self):
"""Tests sending is_newer_than an 'aware' datetime."""
self._test_is_newer_than(lambda x: x.replace(
@ -227,18 +195,6 @@ class TimeUtilsTest(test_base.BaseTestCase):
self.assertAlmostEquals(604859.123456,
timeutils.delta_seconds(before, after))
def test_iso8601_from_timestamp(self):
utcnow = timeutils.utcnow()
iso = timeutils.isotime(utcnow)
ts = calendar.timegm(utcnow.timetuple())
self.assertEqual(iso, timeutils.iso8601_from_timestamp(ts))
def test_iso8601_from_timestamp_ms(self):
ts = timeutils.utcnow_ts(microsecond=True)
utcnow = datetime.datetime.utcfromtimestamp(ts)
iso = timeutils.isotime(utcnow, subsecond=True)
self.assertEqual(iso, timeutils.iso8601_from_timestamp(ts, True))
def test_is_soon(self):
expires = timeutils.utcnow() + datetime.timedelta(minutes=5)
self.assertFalse(timeutils.is_soon(expires, 120))
@ -313,30 +269,6 @@ class TestIso8601Time(test_base.BaseTestCase):
self.assertTrue(east < zulu)
self.assertTrue(zulu < west)
def test_zulu_roundtrip(self):
time_str = '2012-02-14T20:53:07Z'
zulu = timeutils.parse_isotime(time_str)
self.assertEqual(zulu.tzinfo, iso8601.iso8601.UTC)
self.assertEqual(timeutils.isotime(zulu), time_str)
def test_east_roundtrip(self):
time_str = '2012-02-14T20:53:07-07:00'
east = timeutils.parse_isotime(time_str)
self.assertEqual(east.tzinfo.tzname(None), '-07:00')
self.assertEqual(timeutils.isotime(east), time_str)
def test_west_roundtrip(self):
time_str = '2012-02-14T20:53:07+11:30'
west = timeutils.parse_isotime(time_str)
self.assertEqual(west.tzinfo.tzname(None), '+11:30')
self.assertEqual(timeutils.isotime(west), time_str)
def test_now_roundtrip(self):
time_str = timeutils.isotime()
now = timeutils.parse_isotime(time_str)
self.assertEqual(now.tzinfo, iso8601.iso8601.UTC)
self.assertEqual(timeutils.isotime(now), time_str)
def test_zulu_normalize(self):
time_str = '2012-02-14T20:53:07Z'
zulu = timeutils.parse_isotime(time_str)

View File

@ -23,7 +23,6 @@ import functools
import logging
import time
from debtcollector import removals
import iso8601
import pytz
@ -39,28 +38,6 @@ _MAX_DATETIME_SEC = 59
now = time.monotonic
@removals.remove(
message="use datetime.datetime.isoformat()",
version="1.6",
removal_version="?",
)
def isotime(at=None, subsecond=False):
"""Stringify time in ISO 8601 format.
.. deprecated:: 1.5.0
Use :func:`utcnow` and :func:`datetime.datetime.isoformat` instead.
"""
if not at:
at = utcnow()
st = at.strftime(_ISO8601_TIME_FORMAT
if not subsecond
else _ISO8601_TIME_FORMAT_SUBSECOND)
tz = at.tzinfo.tzname(None) if at.tzinfo else 'UTC'
# Need to handle either iso8601 or python UTC format
st += ('Z' if tz in ('UTC', 'UTC+00:00') else tz)
return st
def parse_isotime(timestr):
"""Parse time from ISO 8601 format."""
try:
@ -71,29 +48,6 @@ def parse_isotime(timestr):
raise ValueError(str(e))
@removals.remove(
message="use either datetime.datetime.isoformat() "
"or datetime.datetime.strftime() instead",
version="1.6",
removal_version="?",
)
def strtime(at=None, fmt=PERFECT_TIME_FORMAT):
"""Returns formatted utcnow.
.. deprecated:: 1.5.0
Use :func:`utcnow()`, :func:`datetime.datetime.isoformat`
or :func:`datetime.strftime` instead:
* ``strtime()`` => ``utcnow().isoformat()``
* ``strtime(fmt=...)`` => ``utcnow().strftime(fmt)``
* ``strtime(at)`` => ``at.isoformat()``
* ``strtime(at, fmt)`` => ``at.strftime(fmt)``
"""
if not at:
at = utcnow()
return at.strftime(fmt)
def parse_strtime(timestr, fmt=PERFECT_TIME_FORMAT):
"""Turn a formatted time back into a datetime."""
return datetime.datetime.strptime(timestr, fmt)
@ -180,24 +134,6 @@ def utcnow(with_timezone=False):
return datetime.datetime.utcnow()
@removals.remove(
message="use datetime.datetime.utcfromtimestamp().isoformat()",
version="1.6",
removal_version="?",
)
def iso8601_from_timestamp(timestamp, microsecond=False):
"""Returns an iso8601 formatted date from timestamp.
.. versionchanged:: 1.3
Added optional *microsecond* parameter.
.. deprecated:: 1.5.0
Use :func:`datetime.datetime.utcfromtimestamp` and
:func:`datetime.datetime.isoformat` instead.
"""
return isotime(datetime.datetime.utcfromtimestamp(timestamp), microsecond)
utcnow.override_time = None

View File

@ -0,0 +1,7 @@
---
upgrade:
- |
The ``isotime``, ``strtime`` and ``iso8601_from_timestamp`` helpers have
been removed from ``oslo_utils.timeutils``. These are all available in the
stdlib in Python 3.