Package: argparse-autogen
argparse-autogen================|PyPI| |PyPI| |PyPI version| |GitHub release| |Build Status| |codecov||GitHub license|Parser with automatic creation of parsers and subparsers for paths.Installation------------Supported versions of python: **``3.3+``** (because ofinspect.Signature, which was introduced in python 3.3).. code:: shellpip install argparse-autogenUsage-----``argparse_autogen.EndpointParser`` is intended to replace basic``argparse.ArgumentParser``. It extends subparsers creation logic, andadds a new special method ``add_endpoint``.Simple example:.. code:: pythonimport argparse_autogenclass MyCli():def do_stuff(self, target, force=False):"""This does cool stuff!:param str target: Target to execute a cool stuff:param bool force: Force doing cool stuff"""print(target, force)cli = MyCli()parser = argparse_autogen.EndpointParser()parser.add_endpoint('do_stuff', cli.do_stuff)parser.parse_and_call(['do_stuff', 'my target']) # this will print "my target false"parser.parse_and_call(['do_stuff', '--force', 'my target']) # this will print "my target true"``add_endpoint`` method is clever enough to parse methods docstring andadd corresponding helps in arguments. For example,``parser.parse_args(['do_stuff', '--help'])`` in above example will showsomething like::usage: example.py do_stuff [-h] [--force]This does cool stuff!optional arguments:-h, --help  show this help message and exit--force     Force doing cool stuffThis magic is done by ``argparse_autogen.autospec`` function. Itintrospects function signature, and adds corresponding argparsearguments to parser. ``**kwargs`` are supported and can be passed as``[key=value [key=value ...]]``. You can override argument settings bypassing ``argument_overrides`` option to ``add_endpoint``. This must bea ``dict[str, dict]`` where keys are parameter name, and values areparameters to override defaults passed to ``parser.add_argument``More endpoint examples----------------------Nested class and complex paths:.. code:: pythonimport argparse_autogenclass MyCli():def __init__(self):self.users = self.Users()self.groups = self.Groups()class Users():def get(self, user_id): passdef list(self, **filter): passdef set_roles(self, user_id, *role): passdef update(self, user_id, **fields): passclass Groups():def get(self, group_id): passcli = MyCli()parser = argparse_autogen.EndpointParser()parser.add_endpoint('users.get', cli.users.get, argument_overrides={'user_id': {'help': 'Users id'}})parser.add_endpoint('users.list', cli.users.list)parser.add_endpoint(cli.users.update)# this will use __qualname__ of update func as path, lowercased and trailing and ending underscores removed.# The first item of qualname is skipped, so it would be `users.update`, not `mycli.users.update`# Alternatively, you can use autogeneration of paths and endpoints:# parser.generate_endpoints(cli.users, root_path='users', endpoint_kwargs={'users.get': {'argument_overrides': {'user_id': {'help': 'Users id'}}}})# Will create endpoints from class methods.groups_get_parser = parser.add_endpoint('groups get', cli.groups.get, autospec=False)groups_get_parser.add_argument('group_id', help='Group id')users_parser = parser.get_endpoint_parser('users')users_parser.description = 'Users operations'parser.parse_and_call()History-------1.2 (2017-03-01)~~~~~~~~~~~~~~~~-  Ability to automatically generate path from func's qualname1.1 (2017-02-28)~~~~~~~~~~~~~~~~-  Filter args from func signature in call method #11.0 (2017-02-26)~~~~~~~~~~~~~~~~-  First release0.1 (2017-02-25)~~~~~~~~~~~~~~~~-  Initial commit.. |PyPI| image:: https://img.shields.io/pypi/status/argparse-autogen.svg:target: https://github.com/sashgorokhov/argparse-autogen.. |PyPI| image:: https://img.shields.io/pypi/pyversions/argparse-autogen.svg:target: https://github.com/sashgorokhov/argparse-autogen.. |PyPI version| image:: https://badge.fury.io/py/argparse-autogen.svg:target: https://badge.fury.io/py/argparse-autogen.. |GitHub release| image:: https://img.shields.io/github/release/sashgorokhov/argparse-autogen.svg:target: https://github.com/sashgorokhov/argparse-autogen.. |Build Status| image:: https://travis-ci.org/sashgorokhov/argparse-autogen.svg?branch=master:target: https://travis-ci.org/sashgorokhov/argparse-autogen.. |codecov| image:: https://codecov.io/gh/sashgorokhov/argparse-autogen/branch/master/graph/badge.svg:target: https://codecov.io/gh/sashgorokhov/argparse-autogen.. |GitHub license| image:: https://img.shields.io/badge/license-MIT-blue.svg:target: https://raw.githubusercontent.com/sashgorokhov/argparse-autogen/master/LICENSE