{ "info": { "author": "Jazeps Basko", "author_email": "jazeps.basko@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries" ], "description": "==========\naarghparse\n==========\n\nMotivation\n----------\n\nI was having shower and this name came up.\n\nAt the moment this is a collection of `argparse`_ extensions I have written and found useful in recent times.\n\n..\n But really I want an ``argparse``-based argument parser which is able to load plugins based on parsed arguments\n and let those plugins define additional arguments. I have made this work for one of my clients, but it's dirty.\n\n\nFeatures\n--------\n\n* ``@arg_converter`` decorator to write simple argument value parsers without the ``argparse.Action`` boilerplate\n* ``@subcommand`` decorator to save you from all the ``add_subparsers`` and ``set_defaults(func=)``.\n* ``@cli`` decorator to generate a command-line interface.\n\n\n..\n The dynamic loader mentioned in the Motivation_ isn't available yet.\n\n\n.. _argparse: https://docs.python.org/3/library/argparse.html\n\n\nExample\n-------\n\nThe example below combines all the features, but the tool doesn't enforce it on you.\n\nIf you have an existing ``argparse.ArgumentParser`` definition, you should be able to replace it with ``aarghparse``\nby just changing the initialisation line to ``parser = aarghparse.ArgumentParser(...)``.\n\n.. code-block:: python\n\n import datetime as dt\n\n import dateutil.tz\n\n from aarghparse import ArgumentParser, arg_converter, cli\n\n\n @cli\n def calendar_cli(parser: ArgumentParser, subcommand: ArgumentParser.subcommand):\n \"\"\"\n Command-line calendar.\n \"\"\"\n\n parser.add_argument(\n '--date-format',\n default=None,\n )\n\n @arg_converter\n def tz_arg(value):\n return dateutil.tz.gettz(value)\n\n @subcommand(\n name=\"now\",\n args=[\n [\"--tz\", {\n \"action\": tz_arg,\n \"help\": \"Timezone\",\n }],\n ],\n )\n def now_cmd(args):\n \"\"\"\n Prints today's date.\n \"\"\"\n date_format = args.date_format or \"%Y-%m-%d %H:%M:%S\"\n print(dt.datetime.now(tz=args.tz).strftime(date_format))\n\n\n if __name__ == \"__main__\":\n calendar_cli.run()\n\n\nIf you install ``python-dateutil`` then you can try the above with:\n\n.. code-block:: shell\n\n python -m aarghparse.examples.calendar --help\n python -m aarghparse.examples.calendar now --help\n python -m aarghparse.examples.calendar now --tz \"Europe/Riga\"\n python -m aarghparse.examples.calendar --date-format \"%d.%m.%Y.\" now --tz \"Europe/Riga\"\n\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/jbasko/aarghparse", "keywords": "argparse cli", "license": "MIT", "maintainer": "Jazeps Basko", "maintainer_email": "jazeps.basko@gmail.com", "name": "aarghparse", "package_url": "https://pypi.org/project/aarghparse/", "platform": "", "project_url": "https://pypi.org/project/aarghparse/", "project_urls": { "Homepage": "https://github.com/jbasko/aarghparse" }, "release_url": "https://pypi.org/project/aarghparse/0.2.0/", "requires_dist": null, "requires_python": ">=3.6.0", "summary": "A collection of argparse extensions", "version": "0.2.0" }, "last_serial": 4453111, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "ef59bc6fc9105bb2723efff1185ca984", "sha256": "72d8c3458a29d645a574db5e83a745cb3255d06fcb8520911aa1ac277c124b41" }, "downloads": -1, "filename": "aarghparse-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ef59bc6fc9105bb2723efff1185ca984", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 5256, "upload_time": "2018-10-21T10:52:55", "url": "https://files.pythonhosted.org/packages/ab/28/5c34259fb35774dfa4797c5ddea56ca499a5286ec004e999cbc3e894bae9/aarghparse-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bd7a8ee977728578ae2a594c3bd0fe12", "sha256": "2209d3e8e8f50477fa9399be3cfbc540edb29e07c318e10458dcebd0d70bd4ac" }, "downloads": -1, "filename": "aarghparse-0.0.1.tar.gz", "has_sig": false, "md5_digest": "bd7a8ee977728578ae2a594c3bd0fe12", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 4452, "upload_time": "2018-10-21T10:52:56", "url": "https://files.pythonhosted.org/packages/2d/8d/350d61cd32a4219701c03c8851f60d51f991f46f67ef8abd11d5c428ac04/aarghparse-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "727963d4935dbe53c8af4c07ad4983f5", "sha256": "4478c30dbdc81ee5c8907312c935d209094c5cbc6e6d6270e9cfd2702f7caf23" }, "downloads": -1, "filename": "aarghparse-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "727963d4935dbe53c8af4c07ad4983f5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 5364, "upload_time": "2018-10-21T11:07:58", "url": "https://files.pythonhosted.org/packages/8c/8a/83e427109206f7e09f5a574ef42c324469ca14ab70f37af379e37eb47fef/aarghparse-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5e5ca74198b33852f78fdccff730e754", "sha256": "b7a0616a2a28e68623381a75871dbe5e9849c838b399b3b1a8a048a4e56a9da0" }, "downloads": -1, "filename": "aarghparse-0.0.2.tar.gz", "has_sig": false, "md5_digest": "5e5ca74198b33852f78fdccff730e754", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 4556, "upload_time": "2018-10-21T11:08:00", "url": "https://files.pythonhosted.org/packages/ca/ee/4ae8806d25083c3f01a8ac4e1915554bd3cfd44f5be3e6cdbcded4e4d8f4/aarghparse-0.0.2.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "9ff8901619fef62cbf445fc132dedd8c", "sha256": "9d8ef4ff35ec0e3e6f75d5af838090814fd92af35a98cb408af029bad149ddba" }, "downloads": -1, "filename": "aarghparse-0.1.0.macosx-10.13-x86_64.tar.gz", "has_sig": false, "md5_digest": "9ff8901619fef62cbf445fc132dedd8c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 7556, "upload_time": "2018-10-24T10:33:54", "url": "https://files.pythonhosted.org/packages/59/19/d5fc4a2cc4a21594cdf03c2f7b84a540f55aeaa4781477d3ba55aa7ae165/aarghparse-0.1.0.macosx-10.13-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "97383cbe0841027c9fcbf0860a33aa21", "sha256": "7bc1d1b2b5bd89a343f8cdb93b2cf5a6bc8ff6d2432eab7d02216c1dfdf48851" }, "downloads": -1, "filename": "aarghparse-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "97383cbe0841027c9fcbf0860a33aa21", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 5576, "upload_time": "2018-10-24T10:33:53", "url": "https://files.pythonhosted.org/packages/af/60/9865cb2d8923f36e352dc1b8f57a49ed51043b4e1db3faf54c86f23bc13c/aarghparse-0.1.0-py3-none-any.whl" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "5eed9bdc667681dfa1cc8c9f72c92548", "sha256": "09d8134c7f75639ed20038f991bbbff70982cbef774192a9a035cb28da6641b1" }, "downloads": -1, "filename": "aarghparse-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "5eed9bdc667681dfa1cc8c9f72c92548", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 5583, "upload_time": "2018-11-05T14:30:44", "url": "https://files.pythonhosted.org/packages/a2/d6/d187093a80372b9224a8c67a9226e030c366d2e668692614f43c7e93d02f/aarghparse-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a9e9d14109a8714a9322ed778004cdf7", "sha256": "500e14ee131e5c713ea077d1821dbf6b1bc74857425707441f2374a4fefd1dd9" }, "downloads": -1, "filename": "aarghparse-0.2.0.tar.gz", "has_sig": false, "md5_digest": "a9e9d14109a8714a9322ed778004cdf7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 4742, "upload_time": "2018-11-05T14:30:45", "url": "https://files.pythonhosted.org/packages/f7/10/4f81202a97aa1b914fb888137148ceb52d787ccc3553fa765c3936efa2b3/aarghparse-0.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5eed9bdc667681dfa1cc8c9f72c92548", "sha256": "09d8134c7f75639ed20038f991bbbff70982cbef774192a9a035cb28da6641b1" }, "downloads": -1, "filename": "aarghparse-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "5eed9bdc667681dfa1cc8c9f72c92548", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 5583, "upload_time": "2018-11-05T14:30:44", "url": "https://files.pythonhosted.org/packages/a2/d6/d187093a80372b9224a8c67a9226e030c366d2e668692614f43c7e93d02f/aarghparse-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a9e9d14109a8714a9322ed778004cdf7", "sha256": "500e14ee131e5c713ea077d1821dbf6b1bc74857425707441f2374a4fefd1dd9" }, "downloads": -1, "filename": "aarghparse-0.2.0.tar.gz", "has_sig": false, "md5_digest": "a9e9d14109a8714a9322ed778004cdf7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 4742, "upload_time": "2018-11-05T14:30:45", "url": "https://files.pythonhosted.org/packages/f7/10/4f81202a97aa1b914fb888137148ceb52d787ccc3553fa765c3936efa2b3/aarghparse-0.2.0.tar.gz" } ] }