qmsk/args.py
author Tero Marttila <terom@paivola.fi>
Thu, 29 Jan 2015 23:11:44 +0200
changeset 107 05707929ff6f
parent 93 7ee3a6608406
permissions -rw-r--r--
qmsk.web.async: handle HTTPExceptions
93
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     1
import argparse
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     2
import logging; log = logging.getLogger('qmsk.args')
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     3
import sys
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     4
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     5
def parser (**opts):
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     6
    parser = argparse.ArgumentParser(**opts)
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     7
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     8
    args = parser.add_argument_group("Generic options")
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     9
    args.add_argument('-q', '--quiet',      dest='log_level', action='store_const', const=logging.ERROR,
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    10
            help="Less output")
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    11
    args.add_argument('-v', '--verbose',    dest='log_level', action='store_const', const=logging.INFO,
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    12
            help="More output")
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    13
    args.add_argument('-D', '--debug-all',  dest='log_level', action='store_const', const=logging.DEBUG,
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    14
            help="Most output")
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    15
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    16
    args.add_argument('-d', '--debug-module',   dest='log_debug', action='append',
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    17
            help="Debugging output for given module")
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    18
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    19
    parser.set_defaults(
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    20
            log_level       = logging.WARNING,
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    21
            log_debug       = [ ],
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    22
    )
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    23
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    24
    return parser
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    25
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    26
def parse (parser, argv):
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    27
    """
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    28
        Parse given sys.argv using the ArgumentParser returned by parser()
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    29
    """
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    30
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    31
    args = parser.parse_args(argv[1:])
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    32
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    33
    logging.basicConfig(
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    34
            format      = "{levelname:<8} {name:>30}:{funcName:<20}: {message}",
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    35
            style       = '{',
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    36
            level       = args.log_level,
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    37
    )
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    38
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    39
    for logger in args.log_debug:
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    40
        logging.getLogger(logger).setLevel(logging.DEBUG)
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    41
    
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    42
    log.debug(args)
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    43
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    44
    return args
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    45
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    46
def main (main):
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    47
    """
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    48
        Run given main(argv) which returns exit status.
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    49
    """
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    50
7ee3a6608406 qmsk.args: python3/argparse variant of pvl.args
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    51
    sys.exit(main(sys.argv))