This is an automated email from the ASF dual-hosted git repository.
gerlowskija pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr-operator.git
The following commit(s) were added to refs/heads/main by this push:
new f55725f Avoid datetime deprecations in releaseWizard.py (#751)
f55725f is described below
commit f55725f0bbd52892f62211b0a5d43b5aa02949f3
Author: Jason Gerlowski <[email protected]>
AuthorDate: Fri Jan 24 14:03:51 2025 -0500
Avoid datetime deprecations in releaseWizard.py (#751)
Python 3.12 deprecates two popular datetime functions that are used
throughout the Release Wizard, 'utcnow()' and 'utcfromtimestamp()',
resulting in many distracting messages that make the other wizard output
hard to read, e.g.
```
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).
```
This commit updates our 'datetime' usage in accordance with the Python
recommendations.
---
hack/release/wizard/releaseWizard.py | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/hack/release/wizard/releaseWizard.py
b/hack/release/wizard/releaseWizard.py
index 280d372..45b86b4 100755
--- a/hack/release/wizard/releaseWizard.py
+++ b/hack/release/wizard/releaseWizard.py
@@ -49,6 +49,7 @@ import urllib
from collections import OrderedDict
from datetime import datetime
from datetime import timedelta
+from datetime import timezone
try:
import holidays
@@ -97,7 +98,7 @@ def expand_jinja(text, vars=None):
'state': state,
'gpg_key': state.get_gpg_key(),
'gpg_fingerprint': state.get_gpg_fingerprint(),
- 'epoch': unix_time_millis(datetime.utcnow()),
+ 'epoch': unix_time_millis(datetime.now(timezone.utc)),
'get_next_version': state.get_next_version(),
'get_next_major_version': state.get_next_major_version(),
'get_next_minor_version': state.get_next_minor_version(),
@@ -201,7 +202,7 @@ def check_prerequisites(todo=None):
return True
-epoch = datetime.utcfromtimestamp(0)
+epoch = datetime.fromtimestamp(0, timezone.utc)
def unix_time_millis(dt):
@@ -295,7 +296,7 @@ class ReleaseState:
self.latest_version = None
self.previous_rcs = {}
self.rc_number = 1
- self.start_date = unix_time_millis(datetime.utcnow())
+ self.start_date = unix_time_millis(datetime.now(timezone.utc))
self.script_branch = run("git rev-parse --abbrev-ref HEAD").strip()
self.released_versions = None
try:
@@ -771,7 +772,7 @@ class Todo(SecretYamlObject):
def set_done(self, is_done):
if is_done:
- self.state['done_date'] = unix_time_millis(datetime.utcnow())
+ self.state['done_date'] =
unix_time_millis(datetime.now(timezone.utc))
if self.persist_vars:
for k in self.persist_vars:
self.state[k] = self.get_vars()[k]
@@ -966,13 +967,13 @@ def expand_multiline(cmd_txt, indent=0):
def unix_to_datetime(unix_stamp):
- return datetime.utcfromtimestamp(unix_stamp / 1000)
+ return datetime.fromtimestamp(unix_stamp / 1000, timezone.utc)
def generate_asciidoc():
base_filename = os.path.join(state.get_release_folder(),
"solr_operator_release_%s"
- % (state.release_version.replace("\.", "_")))
+ % (state.release_version.replace(".", "_")))
filename_adoc = "%s.adoc" % base_filename
filename_html = "%s.html" % base_filename
@@ -980,7 +981,7 @@ def generate_asciidoc():
fh.write("= Solr Operator Release %s\n\n" % state.release_version)
fh.write("(_Generated by releaseWizard.py %s at %s_)\n\n"
- % (getScriptVersion(), datetime.utcnow().strftime("%Y-%m-%d %H:%M
UTC")))
+ % (getScriptVersion(),
datetime.now(timezone.utc).strftime("%Y-%m-%d %H:%M UTC")))
fh.write(":numbered:\n\n")
fh.write("%s\n\n" % template('help'))
for group in state.todo_groups:
@@ -1895,9 +1896,9 @@ def create_ical(todo):
return True
-today = datetime.utcnow().date()
+today = datetime.now(timezone.utc).date()
sundays = {(today + timedelta(days=x)): 'Sunday' for x in range(10) if (today
+ timedelta(days=x)).weekday() == 6}
-y = datetime.utcnow().year
+y = datetime.now(timezone.utc).year
years = [y, y+1]
non_working = holidays.CA(years=years) + holidays.US(years=years) +
holidays.UK(years=years) \
+ holidays.DE(years=years) + holidays.NO(years=years) +
holidays.IND(years=years) + holidays.RU(years=years)
@@ -1905,7 +1906,7 @@ non_working = holidays.CA(years=years) +
holidays.US(years=years) + holidays.UK(
def vote_close_72h_date():
# Voting open at least 72 hours according to ASF policy
- return datetime.utcnow() + timedelta(hours=73)
+ return datetime.now(timezone.utc) + timedelta(hours=73)
def vote_close_72h_holidays():