Skip to content

Commit 1e799b5

Browse files
committed
Replace deprecated datetime.datetime.utcnow
The utcnow function was deprecated in Python 3.12[1]. Note that all datetime instances are kept non-timezone-aware to keep backword-compatibility. [1] https://docs.python.org/3.13/library/datetime.html#datetime.datetime.utcnow
1 parent 39d5af3 commit 1e799b5

File tree

3 files changed

+15
-6
lines changed

3 files changed

+15
-6
lines changed

src/webob/cookies.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import time
1111
import warnings
1212

13+
from webob.datetime_utils import utcnow
1314
from webob.util import bytes_, text_
1415

1516
__all__ = [
@@ -239,7 +240,7 @@ def serialize_cookie_date(v):
239240
v = timedelta(seconds=v)
240241

241242
if isinstance(v, timedelta):
242-
v = datetime.utcnow() + v
243+
v = utcnow() + v
243244

244245
if isinstance(v, (datetime, date)):
245246
v = v.timetuple()

src/webob/datetime_utils.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import calendar
2-
from datetime import date, datetime, timedelta, tzinfo
2+
from datetime import date, datetime, timedelta, timezone, tzinfo
33
from email.utils import formatdate, mktime_tz, parsedate_tz
44
import time
55

@@ -121,3 +121,10 @@ def serialize_date_delta(value):
121121
return str(int(value))
122122
else:
123123
return serialize_date(value)
124+
125+
126+
def utcnow():
127+
"""
128+
replacement of deprecated datetime.datetime.utcnow
129+
"""
130+
return datetime.now(timezone.utc).replace(tzinfo=None)

src/webob/response.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from base64 import b64encode
2-
from datetime import datetime, timedelta
2+
from datetime import timedelta
33
from hashlib import md5
44
import re
55
import struct
@@ -14,6 +14,7 @@
1414
parse_date_delta,
1515
serialize_date_delta,
1616
timedelta_to_seconds,
17+
utcnow,
1718
)
1819
from webob.descriptors import (
1920
CHARSET_RE,
@@ -1259,15 +1260,15 @@ def _cache_expires(self, seconds=0, **kw):
12591260
cache_control.max_age = 0
12601261
cache_control.post_check = 0
12611262
cache_control.pre_check = 0
1262-
self.expires = datetime.utcnow()
1263+
self.expires = utcnow()
12631264

12641265
if "last-modified" not in self.headers:
1265-
self.last_modified = datetime.utcnow()
1266+
self.last_modified = utcnow()
12661267
self.pragma = "no-cache"
12671268
else:
12681269
cache_control.properties.clear()
12691270
cache_control.max_age = seconds
1270-
self.expires = datetime.utcnow() + timedelta(seconds=seconds)
1271+
self.expires = utcnow() + timedelta(seconds=seconds)
12711272
self.pragma = None
12721273

12731274
for name, value in kw.items():

0 commit comments

Comments
 (0)