[releng] Port schedule scripts to python3
- From: Michael Catanzaro <mcatanzaro src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [releng] Port schedule scripts to python3
- Date: Wed, 1 Apr 2020 16:12:19 +0000 (UTC)
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]