[Getan-commits] [PATCH] optparse to argparse Migration for scripts/getan-eval.py

Wald Commits scm-commit at wald.intevation.org
Mon Apr 30 12:18:14 CEST 2018


# HG changeset patch
# User Magnus Schieder <mschieder at intevation.de>
# Date 1525083215 -7200
# Node ID 24ccca2442b1021b7e294130eec95c92c4259b2b
# Parent  52398469cacc327b92bcc1a43653994d9d8effc3
optparse to argparse Migration for scripts/getan-eval.py.

diff -r 52398469cacc -r 24ccca2442b1 TODO
--- a/TODO	Wed Mar 21 10:04:31 2018 +0100
+++ b/TODO	Mon Apr 30 12:13:35 2018 +0200
@@ -67,15 +67,9 @@
     This is a larger drawback after moving all entries somewhere,
     it is unclear which task's entries are shown now.
 
-20180104 BER (minor) Display licensing information with --version and
-  usage. Implementation idea: change this when moving away from optparse.
-
 20170709 BER: Give scripts/getan-eval.py a more specific name and add
   it as a script to be installed.
 
-20170529 BER: Python compatibility: switch from deprecated optparse module
-  to argparse. Affects getan/main.py and scripts/getan-eval.py.
-
 20170504 BER: Some multi-user installations do not want a logfile by default.
   We could solve this requirement by making it configurable.
 
diff -r 52398469cacc -r 24ccca2442b1 scripts/getan-eval.py
--- a/scripts/getan-eval.py	Wed Mar 21 10:04:31 2018 +0100
+++ b/scripts/getan-eval.py	Mon Apr 30 12:13:35 2018 +0200
@@ -11,56 +11,58 @@
 import sys
 
 from datetime import date, datetime, timedelta
-from optparse import OptionParser
+import argparse
 
 from getan.template import render
 
 
 def main():
-    parser = OptionParser()
-    parser.add_option("-d", "--database", dest="database",
-                      help="getan database",  metavar="DATABASE")
-    parser.add_option("-t", "--template", dest="template", metavar="TEMPLATE",
-                      help="name of getan template")
-    parser.add_option("-u", "--user", dest="user", help="name of user")
-    parser.add_option("-p", "--project", dest="project",
-                      help="key of output project")
-    parser.add_option("-w", "--week", type="int", dest="week",
-                      help="week of year")
-    parser.add_option("-y", "--year", type="int", dest="year", help="year")
-    parser.add_option("-c", "--lastweek", dest="lastweek",
-                      help="entries of last working week",
-                      action="store_true")
-    parser.add_option("-m", "--empty", dest="empty",
-                      help="show projects without an entries",
-                      action="store_true")
-    parser.add_option("--encoding", dest="encoding",
-                      help="encoding of output", metavar="ENCODING")
+    usage='getan-eval.py [options]'
+    parser = argparse.ArgumentParser(prog='getan', usage=usage)
 
-    (options, args) = parser.parse_args()
+    parser.add_argument('-d', '--database', dest='database',metavar="DATABASE",
+                        help='metavar="DATABASE')
+    parser.add_argument('-t', '--template', dest='template',
+                        metavar='TEMPLATE', help='name of getan template')
+    parser.add_argument('-u', '--user', dest='user', help='name of user')
+    parser.add_argument('-p', '--project', dest='project',
+                        help='key of output project')
+    parser.add_argument('-w', '--week', type=int, dest='week',
+                        help='week of year')
+    parser.add_argument('-y', '--year', type=int, dest='year', help='year')
+    parser.add_argument('-c', '--lastweek', dest='lastweek',
+                        help='entries of last working week',
+                        action='store_true')
+    parser.add_argument('-m', '--empty', dest='empty',
+                        help='show projects without an entries',
+                        action="store_true")
+    parser.add_argument('--encoding', dest='encoding',
+                        help='encoding of output', metavar='ENCODING')
 
-    if options.lastweek:
+    args = parser.parse_args()
+
+    if args.lastweek:
         week = (datetime.now() - timedelta(7)).isocalendar()[1]
         year = int(date.today().strftime("%Y"))
     else:
-        year = options.year
-        week = options.week
+        year = args.year
+        week = args.week
 
-    template_name = options.template or "wochenbericht"
+    template_name = args.template or "wochenbericht"
 
-    if not options.encoding:
+    if not args.encoding:
         encoding = locale.getdefaultlocale()[1] or "utf-8"
 
     Writer = codecs.getwriter(encoding)
     sys.stdout = Writer(sys.stdout)
 
     user = None
-    if options.user:
-        user = options.user.decode(encoding)
+    if args.user:
+        user = args.user.decode(encoding)
 
-    print render(database=options.database, user=user,
+    print render(database=args.database, user=user,
                  template=template_name, year=year, week=week,
-                 project=options.project, empty_projects=options.empty)
+                 project=args.project, empty_projects=args.empty)
 
 
 if __name__ == '__main__':


More information about the Getan-commits mailing list