Metadata-Version: 1.1
Name: argparse-autogen
Version: 1.3.2
Summary: Parser with automatic creation of parsers and subparsers for paths.
Home-page: https://github.com/sashgorokhov/argparse-autogen
Author: sashgorokhov
Author-email: sashgorokhov@gmail.com
License: MIT License
Download-URL: https://github.com/sashgorokhov/argparse-autogen/archive/v1.3.2.zip
Description: 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 of
        inspect.Signature, which was introduced in python 3.3)
        
        .. code:: shell
        
            pip install argparse-autogen
        
        Usage
        -----
        
        ``argparse_autogen.EndpointParser`` is intended to replace basic
        ``argparse.ArgumentParser``. It extends subparsers creation logic, and
        adds a new special method ``add_endpoint``.
        
        Simple example:
        
        .. code:: python
        
            import argparse_autogen
        
            class 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 and
        add corresponding helps in arguments. For example,
        ``parser.parse_args(['do_stuff', '--help'])`` in above example will show
        something 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 stuff
        
        This magic is done by ``argparse_autogen.autospec`` function. It
        introspects function signature, and adds corresponding argparse
        arguments to parser. ``**kwargs`` are supported and can be passed as
        ``[key=value [key=value ...]]``. You can override argument settings by
        passing ``argument_overrides`` option to ``add_endpoint``. This must be
        a ``dict[str, dict]`` where keys are parameter name, and values are
        parameters to override defaults passed to ``parser.add_argument``
        
        More endpoint examples
        ----------------------
        
        Nested class and complex paths:
        
        .. code:: python
        
            import argparse_autogen
        
            class MyCli():
              def __init__(self):
                self.users = self.Users()
                self.groups = self.Groups()
              
              class Users():
                def get(self, user_id): pass
                def list(self, **filter): pass
                def set_roles(self, user_id, *role): pass
                def update(self, user_id, **fields): pass
               
              class Groups():
                def get(self, group_id): pass
        
            cli = 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 qualname
        
        1.1 (2017-02-28)
        ~~~~~~~~~~~~~~~~
        
        -  Filter args from func signature in call method #1
        
        1.0 (2017-02-26)
        ~~~~~~~~~~~~~~~~
        
        -  First release
        
        0.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
        
Keywords: python,argparse,generate
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Terminals
