Constructor Parser

ClassParser

alias of declarative_parser.constructor_parser.ConstructorParser

class ConstructorParser(constructor, docstring_type='google', **kwargs)[source]

Bases: declarative_parser.parser.Parser

Create a parser from an existing class, using arguments from __init__

as well as arguments and sub-parsers defined as class properties.

Example usage:

import argparse

class MyProgram:

    database = Argument(
        type=argparse.FileType('r'),
        help='Path to file with the database'
    )

    def __init__(self, threshold:float=0.05, database=None):
        # do some magic
        pass

parser = ConstructorParser(MyProgram)

options, remaining_unknown_args = parser.parse_known_args(unknown_args)

program = parser.constructor(**vars(options))

Initializes parser analyzing provided class constructor.

Parameters:
  • constructor – a class to use for parser auto-generation
  • docstring_type – docstring convention used in __init__ method of provided class; one of: google, numpy, rst
  • kwargs – custom keyword arguments to be passed to Parser
description

Longer description of the parser.

Description is shown when user narrows down the help to the parser with: ./run.py sub_parser_name -h.

help

A short message, shown as summary on >parent< parser help screen.

Help will be displayed for sub-parsers only.

class FunctionParser(constructor, **kwargs)[source]

Bases: declarative_parser.constructor_parser.ConstructorParser

Create a parser from an existing function

as well as arguments and sub-parsers defined in function object.

Example usage:

def calc_exponent(base: float, exponent: int=2):
    return base ** exponent

parser = FunctionParser(calc_exponent)

commands = '2 --exponent 3'.split()
options = parser.parse_args(commands)
result = parser.constructor(**vars(options))

assert result == 2 * 2 * 2

Advanced usage:

def calc_exponent(base: float, exponent: int=2):
    return base ** exponent

# you can override definitions deduced from signature and
# docstring: just assign custom Argument on the function:
calc_exponent.exponent = Argument(short='n', type=int, default=2)

parser = FunctionParser(calc_exponent)

commands = '2 -n 3'.split()
options = parser.parse_args(commands)
result = parser.constructor(**vars(options))

assert result == 2 * 2 * 2

Initializes parser analyzing provided function.

Parameters:
  • constructor – a function to use for parser auto-generation
  • docstring_type – docstring convention used in provided function one of: google, numpy, rst
  • kwargs – custom keyword arguments to be passed to Parser