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