Skip to content

Commit

Permalink
Replace deprecated usage of datetime.utcnow and datetime.utcfromtimes…
Browse files Browse the repository at this point in the history
…tamp

Fixes buildbot#7223
  • Loading branch information
pmisik committed Dec 3, 2023
1 parent 3e78b1e commit 6db5cf6
Show file tree
Hide file tree
Showing 13 changed files with 28 additions and 19 deletions.
4 changes: 2 additions & 2 deletions master/buildbot/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ def mTimeVersion(init_file):
for root, _, files in os.walk(cwd):
for f in files:
m = max(os.path.getmtime(os.path.join(root, f)), m)
d = datetime.datetime.utcfromtimestamp(m)
d = datetime.datetime.fromtimestamp(m, datetime.timezone.utc)
return d.strftime("%Y.%m.%d")


Expand All @@ -80,7 +80,7 @@ def getVersionFromArchiveId(git_archive_id='$Format:%ct %d$'):

# archived revision is not tagged, use the commit date
tstamp = git_archive_id.strip().split()[0]
d = datetime.datetime.utcfromtimestamp(int(tstamp))
d = datetime.datetime.fromtimestamp(int(tstamp), datetime.timezone.utc)
return d.strftime('%Y.%m.%d')
return None

Expand Down
4 changes: 2 additions & 2 deletions master/buildbot/changes/gerritchangesource.py
Original file line number Diff line number Diff line change
Expand Up @@ -543,7 +543,7 @@ def reconfigService(self,
@staticmethod
def now():
"""patchable now (datetime is not patchable as builtin)"""
return datetime.datetime.utcnow()
return datetime.datetime.now(datetime.timezone.utc)

@defer.inlineCallbacks
def poll(self):
Expand All @@ -553,7 +553,7 @@ def poll(self):
# the last event time to some historical look-back
last_event = self.now() - datetime.timedelta(days=self._first_fetch_lookback)
else:
last_event = datetime.datetime.utcfromtimestamp(last_event_ts)
last_event = datetime.datetime.fromtimestamp(last_event_ts, datetime.timezone.utc)
last_event_formatted = last_event.strftime("%Y-%m-%d %H:%M:%S")

if self.debug:
Expand Down
2 changes: 1 addition & 1 deletion master/buildbot/changes/mail.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ def parse(self, m, prefix=None):
else:
when = mktime_tz(dateTuple)

theTime = datetime.datetime.utcfromtimestamp(float(when))
theTime = datetime.datetime.fromtimestamp(float(when), datetime.timezone.utc)
rev = theTime.strftime('%Y-%m-%d %H:%M:%S')

catRE = re.compile(r'^Category:\s*(\S.*)')
Expand Down
2 changes: 1 addition & 1 deletion master/buildbot/configurators/janitor.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@

def now():
"""patchable now (datetime is not patchable as builtin)"""
return datetime.datetime.utcnow()
return datetime.datetime.now(datetime.timezone.utc)


class LogChunksJanitor(BuildStep):
Expand Down
3 changes: 2 additions & 1 deletion master/buildbot/schedulers/timed.py
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,8 @@ def now(self):

def current_utc_offset(self, tm):
return (
datetime.datetime.fromtimestamp(tm) - datetime.datetime.utcfromtimestamp(tm)
datetime.datetime.fromtimestamp(tm).replace(tzinfo=datetime.timezone.utc)
- datetime.datetime.fromtimestamp(tm, datetime.timezone.utc)
).total_seconds()

@defer.inlineCallbacks
Expand Down
6 changes: 3 additions & 3 deletions master/buildbot/test/unit/changes/test_gerritchangesource.py
Original file line number Diff line number Diff line change
Expand Up @@ -688,10 +688,10 @@ def test_lineReceived_patchset_created(self):
fakedb.Object(id=self.OBJECTID, name='GerritEventLogPoller:gerrit',
class_name='GerritEventLogPoller')])
yield self.newChangeSource(get_files=True)
self.changesource.now = lambda: datetime.datetime.utcfromtimestamp(
self.NOW_TIMESTAMP)
self.changesource.now = lambda: datetime.datetime.fromtimestamp(
self.NOW_TIMESTAMP, datetime.timezone.utc)
thirty_days_ago = (
datetime.datetime.utcfromtimestamp(self.NOW_TIMESTAMP)
datetime.datetime.fromtimestamp(self.NOW_TIMESTAMP, datetime.timezone.utc)
- datetime.timedelta(days=30))
self._http.expect(method='get', ep='/plugins/events-log/events/',
params={'t1': thirty_days_ago.strftime("%Y-%m-%d %H:%M:%S")},
Expand Down
2 changes: 1 addition & 1 deletion master/buildbot/test/unit/test_util.py
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ def test_UTC(self):
datetime.timedelta(0))
self.assertEqual(util.UTC.dst(datetime.datetime.now()),
datetime.timedelta(0))
self.assertEqual(util.UTC.tzname(datetime.datetime.utcnow()), "UTC")
self.assertEqual(util.UTC.tzname(datetime.datetime.now(datetime.timezone.utc)), "UTC")

def test_epoch2datetime(self):
self.assertEqual(util.epoch2datetime(0),
Expand Down
2 changes: 1 addition & 1 deletion master/buildbot/test/unit/util/test_httpclientservice.py
Original file line number Diff line number Diff line change
Expand Up @@ -395,7 +395,7 @@ def test_put_content_with_json(self):
@defer.inlineCallbacks
def test_put_content_with_json_datetime(self):
exp_content_json = {"json_received": {"a": 'b', "ts": 12}}
dt = datetime.datetime.utcfromtimestamp(12)
dt = datetime.datetime.fromtimestamp(12, datetime.timezone.utc)
self.expect('post', '/', json={"a": 'b', "ts": dt},
content_json=exp_content_json)
res = yield self._http.post('/', json={"a": 'b', "ts": dt})
Expand Down
2 changes: 1 addition & 1 deletion master/buildbot/test/unit/www/test_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ def test_getSession_from_correct_jwt(self):

def test_getSession_from_expired_jwt(self):
# expired one week ago
exp = datetime.datetime.utcnow() - datetime.timedelta(weeks=1)
exp = datetime.datetime.now(datetime.timezone.utc) - datetime.timedelta(weeks=1)
exp = calendar.timegm(datetime.datetime.timetuple(exp))
payload = {'user_info': {'some': 'payload'}, 'exp': exp}
uid = jwt.encode(payload, self.SECRET, algorithm=service.SESSION_SECRET_ALGORITHM)
Expand Down
2 changes: 1 addition & 1 deletion master/buildbot/www/rest.py
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,7 @@ def writeError(msg, errcode=404, jsonrpccode=None):

# set up caching
if self.cache_seconds:
now = datetime.datetime.utcnow()
now = datetime.datetime.now(datetime.timezone.utc)
expires = now + datetime.timedelta(seconds=self.cache_seconds)
expiresBytes = unicode2bytes(
expires.strftime("%a, %d %b %Y %H:%M:%S GMT"))
Expand Down
2 changes: 1 addition & 1 deletion master/buildbot/www/service.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ def uid(self):
This should actually only be used for cookie generation
"""
exp = datetime.datetime.utcnow() + self.expDelay
exp = datetime.datetime.now(datetime.timezone.utc) + self.expDelay
claims = {
'user_info': self.user_info,
# Note that we use JWT standard 'exp' field to implement session expiration
Expand Down
4 changes: 2 additions & 2 deletions pkg/buildbot_pkg.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ def mTimeVersion(init_file):
for root, dirs, files in os.walk(cwd):
for f in files:
m = max(os.path.getmtime(os.path.join(root, f)), m)
d = datetime.datetime.utcfromtimestamp(m)
d = datetime.datetime.fromtimestamp(m, datetime.timezone.utc)
return d.strftime("%Y.%m.%d")


Expand All @@ -107,7 +107,7 @@ def getVersionFromArchiveId(git_archive_id='$Format:%ct %d$'):

# archived revision is not tagged, use the commit date
tstamp = git_archive_id.strip().split()[0]
d = datetime.datetime.utcfromtimestamp(int(tstamp))
d = datetime.datetime.fromtimestamp(int(tstamp), datetime.timezone.utc)
return d.strftime('%Y.%m.%d')
return None

Expand Down
12 changes: 10 additions & 2 deletions worker/buildbot_worker/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import datetime
import os
import re
import sys
from subprocess import PIPE
from subprocess import STDOUT
from subprocess import Popen
Expand Down Expand Up @@ -59,7 +60,11 @@ def mTimeVersion(init_file):
for root, _, files in os.walk(cwd):
for f in files:
m = max(os.path.getmtime(os.path.join(root, f)), m)
d = datetime.datetime.utcfromtimestamp(m)

if sys.version_info >= (3, 3):
d = datetime.datetime.fromtimestamp(m, datetime.timezone.utc)
else:
d = datetime.datetime.utcfromtimestamp(m)
return d.strftime("%Y.%m.%d")


Expand All @@ -86,7 +91,10 @@ def getVersionFromArchiveId(git_archive_id='$Format:%ct %d$'):

# archived revision is not tagged, use the commit date
tstamp = git_archive_id.strip().split()[0]
d = datetime.datetime.utcfromtimestamp(int(tstamp))
if sys.version_info >= (3, 3):
d = datetime.datetime.fromtimestamp(int(tstamp), datetime.timezone.utc)
else:
d = datetime.datetime.utcfromtimestamp(int(tstamp))
return d.strftime('%Y.%m.%d')
return None

Expand Down

0 comments on commit 6db5cf6

Please sign in to comment.