{ "info": { "author": "sashgorokhov", "author_email": "sashgorokhov@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Terminals" ], "description": "argparse-autogen\n================\n\n|PyPI| |PyPI| |PyPI version| |GitHub release| |Build Status| |codecov|\n|GitHub license|\n\nParser with automatic creation of parsers and subparsers for paths.\n\nInstallation\n------------\n\nSupported versions of python: **``3.3+``** (because of\ninspect.Signature, which was introduced in python 3.3)\n\n.. code:: shell\n\n pip install argparse-autogen\n\nUsage\n-----\n\n``argparse_autogen.EndpointParser`` is intended to replace basic\n``argparse.ArgumentParser``. It extends subparsers creation logic, and\nadds a new special method ``add_endpoint``.\n\nSimple example:\n\n.. code:: python\n\n import argparse_autogen\n\n class MyCli():\n def do_stuff(self, target, force=False):\n \"\"\"\n This does cool stuff!\n \n :param str target: Target to execute a cool stuff\n :param bool force: Force doing cool stuff\n \"\"\"\n print(target, force)\n\n cli = MyCli()\n\n parser = argparse_autogen.EndpointParser()\n parser.add_endpoint('do_stuff', cli.do_stuff)\n parser.parse_and_call(['do_stuff', 'my target']) # this will print \"my target false\"\n parser.parse_and_call(['do_stuff', '--force', 'my target']) # this will print \"my target true\"\n\n``add_endpoint`` method is clever enough to parse methods docstring and\nadd corresponding helps in arguments. For example,\n``parser.parse_args(['do_stuff', '--help'])`` in above example will show\nsomething like\n\n::\n\n usage: example.py do_stuff [-h] [--force]\n\n This does cool stuff!\n\n optional arguments:\n -h, --help show this help message and exit\n --force Force doing cool stuff\n\nThis magic is done by ``argparse_autogen.autospec`` function. It\nintrospects function signature, and adds corresponding argparse\narguments to parser. ``**kwargs`` are supported and can be passed as\n``[key=value [key=value ...]]``. You can override argument settings by\npassing ``argument_overrides`` option to ``add_endpoint``. This must be\na ``dict[str, dict]`` where keys are parameter name, and values are\nparameters to override defaults passed to ``parser.add_argument``\n\nMore endpoint examples\n----------------------\n\nNested class and complex paths:\n\n.. code:: python\n\n import argparse_autogen\n\n class MyCli():\n def __init__(self):\n self.users = self.Users()\n self.groups = self.Groups()\n \n class Users():\n def get(self, user_id): pass\n def list(self, **filter): pass\n def set_roles(self, user_id, *role): pass\n def update(self, user_id, **fields): pass\n \n class Groups():\n def get(self, group_id): pass\n\n cli = MyCli()\n\n parser = argparse_autogen.EndpointParser()\n\n parser.add_endpoint('users.get', cli.users.get, argument_overrides={'user_id': {'help': 'Users id'}})\n parser.add_endpoint('users.list', cli.users.list)\n parser.add_endpoint(cli.users.update) \n # this will use __qualname__ of update func as path, lowercased and trailing and ending underscores removed.\n # The first item of qualname is skipped, so it would be `users.update`, not `mycli.users.update`\n\n # Alternatively, you can use autogeneration of paths and endpoints:\n # parser.generate_endpoints(cli.users, root_path='users', endpoint_kwargs={'users.get': {'argument_overrides': {'user_id': {'help': 'Users id'}}}})\n # Will create endpoints from class methods.\n\n groups_get_parser = parser.add_endpoint('groups get', cli.groups.get, autospec=False)\n groups_get_parser.add_argument('group_id', help='Group id')\n\n users_parser = parser.get_endpoint_parser('users')\n users_parser.description = 'Users operations'\n\n parser.parse_and_call()\n\nHistory\n-------\n\n1.2 (2017-03-01)\n~~~~~~~~~~~~~~~~\n\n- Ability to automatically generate path from func's qualname\n\n1.1 (2017-02-28)\n~~~~~~~~~~~~~~~~\n\n- Filter args from func signature in call method #1\n\n1.0 (2017-02-26)\n~~~~~~~~~~~~~~~~\n\n- First release\n\n0.1 (2017-02-25)\n~~~~~~~~~~~~~~~~\n\n- Initial commit\n\n.. |PyPI| image:: https://img.shields.io/pypi/status/argparse-autogen.svg\n :target: https://github.com/sashgorokhov/argparse-autogen\n.. |PyPI| image:: https://img.shields.io/pypi/pyversions/argparse-autogen.svg\n :target: https://github.com/sashgorokhov/argparse-autogen\n.. |PyPI version| image:: https://badge.fury.io/py/argparse-autogen.svg\n :target: https://badge.fury.io/py/argparse-autogen\n.. |GitHub release| image:: https://img.shields.io/github/release/sashgorokhov/argparse-autogen.svg\n :target: https://github.com/sashgorokhov/argparse-autogen\n.. |Build Status| image:: https://travis-ci.org/sashgorokhov/argparse-autogen.svg?branch=master\n :target: https://travis-ci.org/sashgorokhov/argparse-autogen\n.. |codecov| image:: https://codecov.io/gh/sashgorokhov/argparse-autogen/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/sashgorokhov/argparse-autogen\n.. |GitHub license| image:: https://img.shields.io/badge/license-MIT-blue.svg\n :target: https://raw.githubusercontent.com/sashgorokhov/argparse-autogen/master/LICENSE", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/sashgorokhov/argparse-autogen/archive/v1.4.zip", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/sashgorokhov/argparse-autogen", "keywords": "python,argparse,generate", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "argparse-autogen", "package_url": "https://pypi.org/project/argparse-autogen/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/argparse-autogen/", "project_urls": { "Download": "https://github.com/sashgorokhov/argparse-autogen/archive/v1.4.zip", "Homepage": "https://github.com/sashgorokhov/argparse-autogen" }, "release_url": "https://pypi.org/project/argparse-autogen/1.4/", "requires_dist": null, "requires_python": "", "summary": "Parser with automatic creation of parsers and subparsers for paths.", "version": "1.4" }, "last_serial": 2733099, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "d0c899a6ff9c7abfe974a6fa07628c13", "sha256": "c1c6a5355e9e5594041d55b725b0c1d7302187c6f6b842cb50639dfdb7bbf9fa" }, "downloads": -1, "filename": "argparse-autogen-1.0.tar.gz", "has_sig": false, "md5_digest": "d0c899a6ff9c7abfe974a6fa07628c13", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3906, "upload_time": "2017-02-26T12:36:20", "url": "https://files.pythonhosted.org/packages/95/f6/f1e52c01ce3a565ed3bb000c5c1ea1c1f3079581d8d7a87e6a8529924667/argparse-autogen-1.0.tar.gz" } ], "1.0.1": [], "1.1": [], "1.2": [ { "comment_text": "", "digests": { "md5": "f340d00da644ffe57a0f206ed24897de", "sha256": "e62a38076638fd625511a07f0aca9beb36c6b3ca3241c77b482a64e3975cbd7d" }, "downloads": -1, "filename": "argparse-autogen-1.2.tar.gz", "has_sig": false, "md5_digest": "f340d00da644ffe57a0f206ed24897de", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4811, "upload_time": "2017-03-01T11:23:24", "url": "https://files.pythonhosted.org/packages/83/2e/452acccca2906062984d87988b028b72850a8ff3bcbf75861b2e4c62b8bf/argparse-autogen-1.2.tar.gz" } ], "1.2.1": [], "1.3": [ { "comment_text": "", "digests": { "md5": "716dda855f7c8d9dd3a6daef30708508", "sha256": "417b437ead742203343261dffc5f27305b3b0a98276e25df10eaf925295719b7" }, "downloads": -1, "filename": "argparse-autogen-1.3.tar.gz", "has_sig": false, "md5_digest": "716dda855f7c8d9dd3a6daef30708508", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5270, "upload_time": "2017-03-23T10:22:15", "url": "https://files.pythonhosted.org/packages/08/a1/86a7239ddf81c1cef122416a8084ce332cc5ff98100939cad80201184629/argparse-autogen-1.3.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "4da6dd1d4f9493e958ac9acd7d820f26", "sha256": "2a26ffc6a845bc807c8f31f4a16c132917e492209598c833d5a1a723ecf2d0ad" }, "downloads": -1, "filename": "argparse-autogen-1.3.1.tar.gz", "has_sig": false, "md5_digest": "4da6dd1d4f9493e958ac9acd7d820f26", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5556, "upload_time": "2017-03-23T10:42:07", "url": "https://files.pythonhosted.org/packages/d4/14/b3f091aadb02fedc7d948636a5cf656bcc85f0d12a9c27638e7681f020e4/argparse-autogen-1.3.1.tar.gz" } ], "1.3.2": [ { "comment_text": "", "digests": { "md5": "c709fbaed73c21289238873553528a06", "sha256": "6598271176ef21cefd6a22f2913c1521741ec0f510e675bc22292847de287670" }, "downloads": -1, "filename": "argparse-autogen-1.3.2.tar.gz", "has_sig": false, "md5_digest": "c709fbaed73c21289238873553528a06", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5711, "upload_time": "2017-03-23T11:04:46", "url": "https://files.pythonhosted.org/packages/79/4e/6cf13e82aa40b76f6d838fedf2b28ec66184fbb9e7ec6b989712d1cd7a7e/argparse-autogen-1.3.2.tar.gz" } ], "1.3.3": [ { "comment_text": "", "digests": { "md5": "5f932214ab3d4033aadc2a24466fdfc3", "sha256": "5eeb7223b5dbea5d0628c8bb220d3c4762de996f5e2316d9ea203876aa643cae" }, "downloads": -1, "filename": "argparse-autogen-1.3.3.tar.gz", "has_sig": false, "md5_digest": "5f932214ab3d4033aadc2a24466fdfc3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5673, "upload_time": "2017-03-23T12:38:30", "url": "https://files.pythonhosted.org/packages/45/5a/702e8d4a8da960c3c72d30d33714f4278fb3a28eb9ee2fd0c3ff5fa1d0bc/argparse-autogen-1.3.3.tar.gz" } ], "1.4": [ { "comment_text": "", "digests": { "md5": "960f48c2216d3726570f6a96c1a02a9a", "sha256": "46f83e11f0e3fb0456b3561c0e5acc6cdc0ae931c92dbc9bd0bb0878a07c30e5" }, "downloads": -1, "filename": "argparse-autogen-1.4.tar.gz", "has_sig": false, "md5_digest": "960f48c2216d3726570f6a96c1a02a9a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5771, "upload_time": "2017-03-27T10:04:44", "url": "https://files.pythonhosted.org/packages/10/07/cc6ca682a7919b57cd42e73bba8052bce4de110bf586c2d18843ddb9782b/argparse-autogen-1.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "960f48c2216d3726570f6a96c1a02a9a", "sha256": "46f83e11f0e3fb0456b3561c0e5acc6cdc0ae931c92dbc9bd0bb0878a07c30e5" }, "downloads": -1, "filename": "argparse-autogen-1.4.tar.gz", "has_sig": false, "md5_digest": "960f48c2216d3726570f6a96c1a02a9a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5771, "upload_time": "2017-03-27T10:04:44", "url": "https://files.pythonhosted.org/packages/10/07/cc6ca682a7919b57cd42e73bba8052bce4de110bf586c2d18843ddb9782b/argparse-autogen-1.4.tar.gz" } ] }