# HG changeset patch # User Magnus Schieder # Date 1525354722 -7200 # Node ID 59d9c58402732a899374982afcadea0f38ecfd46 # Parent 9dab95965ac690bca52befdb4bbeedbcb06ae51b Porting Python 2 to Python 3. diff -r 9dab95965ac6 -r 59d9c5840273 CHANGES --- a/CHANGES Wed May 02 13:46:50 2018 +0200 +++ b/CHANGES Thu May 03 15:38:42 2018 +0200 @@ -1,5 +1,11 @@ 2.x 20xx-xx-xx UNRELEASED + * Updated the source code to the latest version of pyhton (python 3) to better + maintain it in the future. + Python 2.7 will not be maintained past 2020. + Therefore, the whole source code of'done' and'done/scripts' is updated to + python 3. + * Update and clean up the source code to better maintain it in the future. optparse to argparse Migration. The optparse module is deprecated and will not be developed further.The diff -r 9dab95965ac6 -r 59d9c5840273 getan/backend.py --- a/getan/backend.py Wed May 02 13:46:50 2018 +0200 +++ b/getan/backend.py Thu May 03 15:38:42 2018 +0200 @@ -175,7 +175,7 @@ self.con = db.connect(database, detect_types=db.PARSE_DECLTYPES | db.PARSE_COLNAMES) - self.con.text_factory = lambda x: unicode(x, "utf-8", "ignore") + self.con.text_factory = lambda x: str(x, "utf-8", "ignore") def ensure_exists(self): """ Creates the database file if it does not exist. """ diff -r 9dab95965ac6 -r 59d9c5840273 getan/config.py --- a/getan/config.py Wed May 02 13:46:50 2018 +0200 +++ b/getan/config.py Thu May 03 15:38:42 2018 +0200 @@ -13,7 +13,7 @@ import logging import os -from ConfigParser import SafeConfigParser, NoSectionError, NoOptionError +from configparser import SafeConfigParser, NoSectionError, NoOptionError logger = None @@ -242,7 +242,7 @@ def get_palette(self): palette = [] - for key in self.DEFAULT_THEME.keys(): + for key in list(self.DEFAULT_THEME.keys()): colors = self.get_colors(key) line = [key] line.extend(colors) diff -r 9dab95965ac6 -r 59d9c5840273 getan/project.py --- a/getan/project.py Wed May 02 13:46:50 2018 +0200 +++ b/getan/project.py Thu May 03 15:38:42 2018 +0200 @@ -104,8 +104,8 @@ # carefully handle non unicode string # urwid seems to have some issue with plain str - if self.desc and not isinstance(self.desc, unicode): - self.desc = unicode(self.desc, locale.getpreferredencoding()) + if self.desc and not isinstance(self.desc, str): + self.desc = str(self.desc, locale.getpreferredencoding()) c = self.desc if c: diff -r 9dab95965ac6 -r 59d9c5840273 getan/resources.py --- a/getan/resources.py Wed May 02 13:46:50 2018 +0200 +++ b/getan/resources.py Thu May 03 15:38:42 2018 +0200 @@ -9,4 +9,4 @@ modir = os.path.join(share_dir, "locale") t = py_gettext.translation("getan", modir, fallback=True) - return t.ugettext(message) + return t.gettext(message) diff -r 9dab95965ac6 -r 59d9c5840273 getan/template.py --- a/getan/template.py Wed May 02 13:46:50 2018 +0200 +++ b/getan/template.py Thu May 03 15:38:42 2018 +0200 @@ -73,7 +73,7 @@ database = os.path.expanduser(os.path.join("~", ".getan", DEFAULT_DATABASE)) if not os.path.isfile(database): - print >> sys.stderr, "'%s' does not exist or is not a file." % database + print("'%s' does not exist or is not a file." % database, file=sys.stderr) sys.exit(1) u_week = None @@ -85,7 +85,7 @@ year = c_year if not os.path.isfile(database): - print >> sys.stderr, "'%s' does not exist or is not a file." % database + print("'%s' does not exist or is not a file." % database, file=sys.stderr) sys.exit(1) loader = ChoiceLoader([FileSystemLoader(os.path.expanduser(os.path.join( diff -r 9dab95965ac6 -r 59d9c5840273 scripts/getan-eval.py --- a/scripts/getan-eval.py Wed May 02 13:46:50 2018 +0200 +++ b/scripts/getan-eval.py Thu May 03 15:38:42 2018 +0200 @@ -53,16 +53,15 @@ if not args.encoding: encoding = locale.getdefaultlocale()[1] or "utf-8" - Writer = codecs.getwriter(encoding) - sys.stdout = Writer(sys.stdout) + sys.stdout = codecs.getwriter(encoding)(sys.stdout.detach()) user = None if args.user: user = args.user.decode(encoding) - print render(database=args.database, user=user, + print(render(database=args.database, user=user, template=template_name, year=year, week=week, - project=args.project, empty_projects=args.empty) + project=args.project, empty_projects=args.empty)) if __name__ == '__main__': diff -r 9dab95965ac6 -r 59d9c5840273 setup.py --- a/setup.py Wed May 02 13:46:50 2018 +0200 +++ b/setup.py Thu May 03 15:38:42 2018 +0200 @@ -64,6 +64,6 @@ "License :: OSI Approved :: " "GNU General Public License v3 or later (GPLv3+)", "Operating System :: POSIX", - "Programming Language :: Python :: 2" + "Programming Language :: Python :: 3" ], )