[releng] Port schedule scripts to python3



commit 6b7cdee01824326762e15be04c3e7f4bd8ff3871
Author: Michael Catanzaro <mcatanzaro gnome org>
Date:   Wed Apr 1 11:10:54 2020 -0500

    Port schedule scripts to python3
    
    See: #12

 tools/schedule/automail.py    |  6 +++---
 tools/schedule/ical.py        |  4 ++--
 tools/schedule/libschedule.py | 38 ++++++++++++++++++++++----------------
 tools/schedule/wiki.py        | 24 ++++++++++++------------
 4 files changed, 39 insertions(+), 33 deletions(-)
---
diff --git a/tools/schedule/automail.py b/tools/schedule/automail.py
index c23e77d..6815bce 100755
--- a/tools/schedule/automail.py
+++ b/tools/schedule/automail.py
@@ -1,10 +1,10 @@
-#!/usr/bin/env python2
+#!/usr/bin/env python3
 
 import datetime
 from libschedule import *
 import smtplib
 from email.MIMEText import MIMEText
-import StringIO
+import io
 import textwrap
 
 cat_task = set(('release', 'tarball'))
@@ -40,7 +40,7 @@ def mail_events(events):
     if assignees:
         subject += ' (responsible: %s)' % ', '.join(assignees)
 
-    contents = StringIO.StringIO()
+    contents = io.StringIO()
     contents.write("Hello all,\n\n")
     if len(events) > 1:
         contents.write("We would like to inform you about the following:\n* %s\n\n\n" % "\n* 
".join([event.summary for event in events]))
diff --git a/tools/schedule/ical.py b/tools/schedule/ical.py
index 1579317..4e8082f 100755
--- a/tools/schedule/ical.py
+++ b/tools/schedule/ical.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python2
+#!/usr/bin/env python3
 
 import sys
 from libschedule import *
@@ -63,5 +63,5 @@ for event in events:
     else:
         x.value = start.value + datetime.timedelta(days=-3)
 
-print cal.serialize()
+print(cal.serialize())
 
diff --git a/tools/schedule/libschedule.py b/tools/schedule/libschedule.py
index 77ab9cb..02635c6 100755
--- a/tools/schedule/libschedule.py
+++ b/tools/schedule/libschedule.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python2
+#!/usr/bin/env python3
 
 import datetime
 import time
@@ -121,7 +121,7 @@ From this point, developers can concentrate on stability and bugfixing. Translat
         self.description_template = None
         self.summary_template = None
 
-        for name, value in self.categories[category].iteritems():
+        for name, value in self.categories[category].items():
             setattr(self, name, value)
 
     def __getitem__(self, item):
@@ -144,7 +144,7 @@ From this point, developers can concentrate on stability and bugfixing. Translat
         text = self.make_text(self.wiki_template)
 
         if text is None:
-            return `self`
+            return repr(self)
         else:
             return text
 
@@ -153,7 +153,7 @@ From this point, developers can concentrate on stability and bugfixing. Translat
         text = self.make_text(self.summary_template)
 
         if text is None:
-            return `self`
+            return repr(self)
         else:
             return text
 
@@ -179,8 +179,14 @@ From this point, developers can concentrate on stability and bugfixing. Translat
 
         return text
 
-    def __cmp__ (self, other):
-        return cmp(self.date, other.date) or cmp(self.prio, other.prio)
+    def __lt__ (self, other):
+        if self.date != other.date:
+            return self.date < other.date
+        if self.prio == None:
+            return True
+        if other.prio == None:
+            return False
+        return self.prio < other.prio
 
 def find_date(year, week):
     guessed = datetime.date(year, 2, 1)
@@ -211,7 +217,7 @@ def parse_file (filename=DEFAULT_SCHEDULE, cls=GnomeReleaseEvent):
             continue
 
         if not ':' in line:
-            print "Error: line '%s' is not parsable" % line[0:-1]
+            print("Error: line '%s' is not parsable" % line[0:-1])
             return None
 
         info = [item.strip() for item in line.split(':')]
@@ -219,16 +225,16 @@ def parse_file (filename=DEFAULT_SCHEDULE, cls=GnomeReleaseEvent):
         if len(info) == 2:
             if info[0].lower() == 'yearweek':
                 if start:
-                    print "Error: more than one start date specified"
+                    print("Error: more than one start date specified")
                     return None
 
                 year = int(info[1][:4])
                 week = int(info[1][-2:])
                 if year < 2007 or year > 2030:
-                    print "Error: %s is not a valid year for the start date" % year
+                    print("Error: %s is not a valid year for the start date" % year)
                     return None
                 if week > 54:
-                    print "Error: %s is not a valid week for the start date" % week
+                    print("Error: %s is not a valid week for the start date" % week)
                     return None
                 start = find_date(year, week)
             else:
@@ -236,7 +242,7 @@ def parse_file (filename=DEFAULT_SCHEDULE, cls=GnomeReleaseEvent):
             continue
         else:
             if not start or 'unstable' not in definitions or 'stable' not in definitions:
-                print "Error: Need yearweek, stable and unstable definitions before line '%s'" % line[0:-1]
+                print("Error: Need yearweek, stable and unstable definitions before line '%s'" % line[0:-1])
                 return None
 
             fixedDate = False
@@ -244,7 +250,7 @@ def parse_file (filename=DEFAULT_SCHEDULE, cls=GnomeReleaseEvent):
             if info[0].isdigit():
                 week = int(info[0])
                 if week < -10 or week > 53:
-                    print "Error: %s is not a valid week for an event" % week
+                    print("Error: %s is not a valid week for an event" % week)
                     return None
                 date = start + datetime.timedelta(week * 7) - datetime.timedelta(2)
             else:
@@ -253,7 +259,7 @@ def parse_file (filename=DEFAULT_SCHEDULE, cls=GnomeReleaseEvent):
             category = info[1].lower()
             event = info[2]
             if category not in cls.categories:
-                print "Error: %s is not a valid category for an event" % category
+                print("Error: %s is not a valid category for an event" % category)
                 return None
 
             # Expand event info
@@ -272,7 +278,7 @@ def parse_file (filename=DEFAULT_SCHEDULE, cls=GnomeReleaseEvent):
                     i[0] = definitions.get(i[0], definitions['unstable'])
                     version = '.'.join(i)
             if (category == 'release' or category == 'tarball') and version is None:
-                print "Error: line '%s' is not parsable" % line[0:-1]
+                print("Error: line '%s' is not parsable" % line[0:-1])
                 return None
 
             if event == 'translation-deadline' and not fixedDate:
@@ -292,7 +298,7 @@ def parse_file (filename=DEFAULT_SCHEDULE, cls=GnomeReleaseEvent):
     file.close ()
 
     if not start:
-        print "Error: empty data file"
+        print("Error: empty data file")
         return None
 
     events.sort()
@@ -306,6 +312,6 @@ if __name__ == '__main__':
     while d < end:
         yw = d.isocalendar()[:2]
         dcalc = find_date(yw[0], yw[1])
-        print yw, dcalc, d, "" if d == dcalc else "WRONG"
+        print(yw, dcalc, d, "" if d == dcalc else "WRONG")
 
         d += adv
diff --git a/tools/schedule/wiki.py b/tools/schedule/wiki.py
index bfaaf9a..a4d2e80 100755
--- a/tools/schedule/wiki.py
+++ b/tools/schedule/wiki.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python2
+#!/usr/bin/env python3
 
 from libschedule import *
 import itertools
@@ -57,10 +57,10 @@ for smonths in splitter(months, 4):
         cals.append(c)
 
     for r in zip(*cals):
-        print '||%s||' % '||'.join(("||".join(cells) for cells in r))
+        print('||%s||' % '||'.join(("||".join(cells) for cells in r)))
 
-print ""
-print "||<:> '''Week''' ||<:> '''Date''' || '''Task''' || '''Notes''' ||"
+print("")
+print("||<:> '''Week''' ||<:> '''Date''' || '''Task''' || '''Notes''' ||")
 year = None
 for month, events_month in itertools.groupby(events, by_month):
     events = list(events_month)
@@ -70,8 +70,8 @@ for month, events_month in itertools.groupby(events, by_month):
         year = events[0].date.year
     elif year != events[0].date.year:
         year = events[0].date.year
-        print "||<-4 rowbgcolor=\"#dddddd\"> '''%d''' ||" % year
-    print "||<-4 rowbgcolor=\"#dddddd\"> '''%s''' ||" % month_str
+        print("||<-4 rowbgcolor=\"#dddddd\"> '''%d''' ||" % year)
+    print("||<-4 rowbgcolor=\"#dddddd\"> '''%s''' ||" % month_str)
 
     for week, events_week in itertools.groupby(events, by_week):
         events = list(events_week)
@@ -79,21 +79,21 @@ for month, events_month in itertools.groupby(events, by_month):
 
         dates = list([(key, list(items)) for key, items in itertools.groupby(events, by_date)])
 
-        print "||<|%d ^ : #9db8d2> %s " % (len (dates), rel_week_str),
+        print("||<|%d ^ : #9db8d2> %s " % (len (dates), rel_week_str), end=' ')
         for date, items in dates:
             date_str = items[0].date.strftime("%a %d")
-            print "||<^ : #c5d2c8> %s %s" % (date_str, '<<Anchor(d%s)>>' % items[0].date.isoformat()),
+            print("||<^ : #c5d2c8> %s %s" % (date_str, '<<Anchor(d%s)>>' % items[0].date.isoformat()), end=' 
')
 
 
             task_items = [item for item in items if item.category in cat_task]
             note_items = [item for item in items if item.category not in cat_task]
 
-            print "|| ", "<<BR>><<BR>>".join([i.wiki_text for i in task_items]),
+            print("|| ", "<<BR>><<BR>>".join([i.wiki_text for i in task_items]), end=' ')
             if len(note_items):
-                print "||<:#e0b6af> ", "<<BR>>".join([i.wiki_text for i in note_items]),
+                print("||<:#e0b6af> ", "<<BR>>".join([i.wiki_text for i in note_items]), end=' ')
             else:
-                print "|| ",
+                print("|| ", end=' ')
 
-            print "||"
+            print("||")
 
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]