From cd993d1b04a9c47713d927df757a14d593ca528e Mon Sep 17 00:00:00 2001 From: Dan Radez Date: Thu, 14 Dec 2023 11:22:15 -0500 Subject: [PATCH] Replace deprecated utcnow datetime function python 3.12 reports: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC). --- cherrypy/_cplogging.py | 4 ++-- cherrypy/lib/locking.py | 4 ++-- cherrypy/test/sessiondemo.py | 8 +++++--- cherrypy/test/test_logging.py | 2 +- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/cherrypy/_cplogging.py b/cherrypy/_cplogging.py index bce1c87b..3cf05df5 100644 --- a/cherrypy/_cplogging.py +++ b/cherrypy/_cplogging.py @@ -452,6 +452,6 @@ class WSGIErrorHandler(logging.Handler): class LazyRfc3339UtcTime(object): def __str__(self): - """Return utcnow() in RFC3339 UTC Format.""" - iso_formatted_now = datetime.datetime.utcnow().isoformat('T') + """Return datetime in RFC3339 UTC Format.""" + iso_formatted_now = datetime.datetime.now(datetime.UTC).isoformat('T') return f'{iso_formatted_now!s}Z' diff --git a/cherrypy/lib/locking.py b/cherrypy/lib/locking.py index 317fb58c..44765da9 100644 --- a/cherrypy/lib/locking.py +++ b/cherrypy/lib/locking.py @@ -19,10 +19,10 @@ class Timer(object): """ Return a timer that will expire after `elapsed` passes. """ - return cls(datetime.datetime.utcnow() + elapsed) + return cls(datetime.datetime.now(datetime.UTC) + elapsed) def expired(self): - return datetime.datetime.utcnow() >= self.expiration + return datetime.datetime.now(datetime.UTC) >= self.expiration class LockTimeout(Exception): diff --git a/cherrypy/test/sessiondemo.py b/cherrypy/test/sessiondemo.py index 3849a259..040f8bbe 100755 --- a/cherrypy/test/sessiondemo.py +++ b/cherrypy/test/sessiondemo.py @@ -2,7 +2,7 @@ """A session demonstration app.""" import calendar -from datetime import datetime +import datetime import sys import cherrypy @@ -123,9 +123,11 @@ class Root(object): 'reqcookie': cherrypy.request.cookie.output(), 'sessiondata': list(cherrypy.session.items()), 'servertime': ( - datetime.utcnow().strftime('%Y/%m/%d %H:%M') + ' UTC' + datetime.datetime.now( + datetime.UTC).strftime('%Y/%m/%d %H:%M') + ' UTC' ), - 'serverunixtime': calendar.timegm(datetime.utcnow().timetuple()), + 'serverunixtime': calendar.timegm( + datetime.datetime.utcnow(datetime.UTC).timetuple()), 'cpversion': cherrypy.__version__, 'pyversion': sys.version, 'expires': expires, diff --git a/cherrypy/test/test_logging.py b/cherrypy/test/test_logging.py index 49d41d0a..ed4991df 100644 --- a/cherrypy/test/test_logging.py +++ b/cherrypy/test/test_logging.py @@ -216,7 +216,7 @@ def test_utc_in_timez(monkeypatch): class mock_datetime: @classmethod - def utcnow(cls): + def now(cls, _): return utcoffset8_local_time_in_naive_utc monkeypatch.setattr('datetime.datetime', mock_datetime) -- 2.43.0