Skip to main content

argparser factory for miniconfig

Project description

argparse settings with miniconfig

code

from miniconfig_argparse import get_configurator


config = get_configurator()
config.include("yourmodule")
config.include("yourmodule.extra")

args = config.make_args()
# using args

in yourmodule, using config like a below.

def includeme(config):
    parser = config.parser

    parser.add_argument(
        '-v', '--verbose', action='count', default=0,
        help="(default option: increment logging level(default is WARNING))"
    )
    parser.add_argument(
        '-q', '--quiet', action='count', default=0,
        help="(default option: decrement logging level(default is WARNING))"
    )

    def setup_closure(args):
        logging_level = logging.WARN + 10 * args.quiet - 10 * args.verbose
        logging.basicConfig(level=logging_level)
        return args

    parser.add_callback(setup_closure)

default directives

  • make_parser

  • replace_parser

  • call_function_as_command

make_parser(fn) + call_function_as_command

Using make_parser() and call_function_as_command() combinations are useful, sometimes.

  • make_parser(fn) – creating parser from a function definition.

  • call_function_as_command – call function using parsed argument object.

Such as below.

def greeting(message, is_surprised=False, name="foo"):
    """ greeting message

    :param message: message of greeting
    :param is_surprised: surprised or not (default=False)
    :param name: name of actor
    """
    suffix = "!" if is_surprised else ""
    print("{name}: {message}{suffix}".format(name=name, message=message, suffix=suffix))


def includeme(config):
    parser = config.make_parser(greeting)
    config.replace_parser(parser)


if __name__ == "__main__":
    from miniconfig_argparse import get_configurator
    config = get_configurator()
    config.include(includeme)

    args = config.make_args()
    config.call_function_as_command(greeting, args)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

miniconfig-argparse-0.0.2.tar.gz (4.5 kB view hashes)

Uploaded Source

Built Distribution

miniconfig_argparse-0.0.2-py3-none-any.whl (7.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page