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():

Reply via email to