{ "info": { "author": "Takahiro Yano", "author_email": "speg03@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# nestargs\n\nnestargs is a Python library that defines nested program arguments. It is based on argparse.\n\n[![PyPI](https://img.shields.io/pypi/v/nestargs.svg)](https://pypi.org/project/nestargs/)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/nestargs.svg)](https://pypi.org/project/nestargs/)\n[![Build Status](https://travis-ci.com/speg03/nestargs.svg?branch=master)](https://travis-ci.com/speg03/nestargs)\n[![codecov](https://codecov.io/gh/speg03/nestargs/branch/master/graph/badge.svg)](https://codecov.io/gh/speg03/nestargs)\n\nRead this in Japanese: [\u65e5\u672c\u8a9e](https://github.com/speg03/nestargs/blob/master/README.ja.md)\n\n## Installation\n\n```\npip install nestargs\n```\n\n## Basic usage\n\nDefine program arguments in the same way as argparse. A nested structure can be represented by putting a dot in the program argument name.\n\n```python\nimport nestargs\n\nparser = nestargs.NestedArgumentParser()\n\nparser.add_argument(\"--apple.n\", type=int)\nparser.add_argument(\"--apple.price\", type=float)\n\nparser.add_argument(\"--banana.n\", type=int)\nparser.add_argument(\"--banana.price\", type=float)\n\nargs = parser.parse_args(\n [\"--apple.n=2\", \"--apple.price=1.5\", \"--banana.n=3\", \"--banana.price=3.5\"]\n)\n# => NestedNamespace(apple=NestedNamespace(n=2, price=1.5), banana=NestedNamespace(n=3, price=3.5))\n```\n\nLet's take out only the program argument apple.\n\n```python\nargs.apple\n# => NestedNamespace(n=2, price=1.5)\n```\n\nYou can also get each value.\n\n```python\nargs.apple.price\n# => 1.5\n```\n\nIf you want a dictionary format, you can get it this way.\n\n```python\nvars(args.apple)\n# => {'n': 2, 'price': 1.5}\n```\n\n## Define program arguments from functions\n\nThe function `register_arguments` can be used to define program arguments from the parameters any function.\n\nIn the following example, program arguments with multiple prefixes are defined as the `n` and `price` parameters of the function `total_price`. At this time, the behavior of the program argument is automatically determined according to the default value of the parameter.\n\n```python\nimport nestargs\n\n\ndef total_price(n=1, price=1.0):\n return n * price\n\n\nparser = nestargs.NestedArgumentParser()\nparser.register_arguments(total_price, prefix=\"apple\")\nparser.register_arguments(total_price, prefix=\"banana\")\n\nargs = parser.parse_args(\n [\"--apple.n=2\", \"--apple.price=1.5\", \"--banana.n=3\", \"--banana.price=3.5\"]\n)\n# => NestedNamespace(apple=NestedNamespace(n=2, price=1.5), banana=NestedNamespace(n=3, price=3.5))\n```\n\nYou can call the function with the values obtained from the program arguments as follows:\n\n```python\napple = total_price(**vars(args.apple))\nbanana = total_price(**vars(args.banana))\n\nprint(apple + banana)\n# => 13.5\n```\n\n### Option decorator\n\nProgram argument settings can be added by attaching an `option` decorator to the target function. The settings that can be added are based on `ArgumentParser.add_argument` of `argparse`.\n\n```python\n@nestargs.option(\"n\", help=\"number of ingredients\")\n@nestargs.option(\"price\", help=\"unit price of ingredients\")\ndef total_price(n=1, price=1.0):\n return n * price\n\n\nparser = nestargs.NestedArgumentParser()\nparser.register_arguments(total_price, prefix=\"apple\")\n```\n\nThis code is equivalent to the following code:\n\n```python\ndef total_price(n=1, price=1.0):\n return n * price\n\n\nparser = nestargs.NestedArgumentParser()\nparser.add_argument(\"--apple.n\", type=int, default=1, help=\"number of ingredients\")\nparser.add_argument(\n \"--apple.price\", type=float, default=1.0, help=\"unit price of ingredients\"\n)\n```\n\n### Ignores decorator\n\nBy attaching an `ignores` decorator to the target function, you can specify parameters that do not register in the program arguments.\n\n```python\n@nestargs.ignores(\"tax\", \"shipping\")\ndef total_price(n=1, price=1.0, tax=1.0, shipping=0.0):\n return n * price * tax + shipping\n\n\nparser = nestargs.NestedArgumentParser()\nparser.register_arguments(total_price, prefix=\"apple\")\n\nargs = parser.parse_args([\"--apple.n=2\", \"--apple.price=1.5\"])\n# => NestedNamespace(apple=NestedNamespace(n=2, price=1.5))\n# Not included tax and shipping parameters\n\napple = total_price(**vars(args.apple))\n# => 3.0\n```\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/speg03/nestargs", "keywords": "argparse,arguments,parser,cli,command,line,interface", "license": "MIT", "maintainer": "Takahiro Yano", "maintainer_email": "speg03@gmail.com", "name": "nestargs", "package_url": "https://pypi.org/project/nestargs/", "platform": "", "project_url": "https://pypi.org/project/nestargs/", "project_urls": { "Homepage": "https://github.com/speg03/nestargs", "Repository": "https://github.com/speg03/nestargs" }, "release_url": "https://pypi.org/project/nestargs/0.4.0/", "requires_dist": null, "requires_python": ">=3.5,<4.0", "summary": "Nested arguments parser", "version": "0.4.0" }, "last_serial": 5852836, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "4febfafce4a887b8b77f8fbf7f5667d2", "sha256": "942305913c36eca0a4108d701211d4ef96e7cbd337ea547af43908da7b5f4eb3" }, "downloads": -1, "filename": "nestargs-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "4febfafce4a887b8b77f8fbf7f5667d2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 1024, "upload_time": "2019-06-13T13:18:37", "url": "https://files.pythonhosted.org/packages/51/31/bf96a06755edd26b4214b8c287d762cb9ed327780763ab2f8a558d63af92/nestargs-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "31345083e815006d35009499de38c086", "sha256": "2d6982f9abcd7535201f011820fea7d39bff50035fec66558a2a2498f181eb7a" }, "downloads": -1, "filename": "nestargs-0.1.0.tar.gz", "has_sig": false, "md5_digest": "31345083e815006d35009499de38c086", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 769, "upload_time": "2019-06-13T13:18:39", "url": "https://files.pythonhosted.org/packages/62/f7/b8e63fcf3e2689f6cee8579d93efd0490d5bfb4679961b5b0e272aa3704c/nestargs-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "0c69128e442c1c8e7b9dc3c35824af12", "sha256": "17a9187bf06271d130a83f0f539f3fb6b1dd8a1592892589557d6d46780989ab" }, "downloads": -1, "filename": "nestargs-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "0c69128e442c1c8e7b9dc3c35824af12", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5,<4.0", "size": 2784, "upload_time": "2019-06-16T07:33:30", "url": "https://files.pythonhosted.org/packages/55/ac/1b3cdc186111385561c68af3ee30f84c0b7d90445fbfeb0e0db4baa28594/nestargs-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6b057d26d20b3b5fddb5fe53c00e8eda", "sha256": "8a4002a29da1391dc198a47387065587b640c95a4693859aa99ca46061464aad" }, "downloads": -1, "filename": "nestargs-0.2.0.tar.gz", "has_sig": false, "md5_digest": "6b057d26d20b3b5fddb5fe53c00e8eda", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5,<4.0", "size": 2492, "upload_time": "2019-06-16T07:33:32", "url": "https://files.pythonhosted.org/packages/b6/93/7781d03ef46064750ba2c48e3af0dfff1035a17c656fed1dc32c745ed02c/nestargs-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "de575069c5d61b10ccae5a1942c4b5bc", "sha256": "f93d29a5afe4ddfbf4c37b739a22838be3dff3e33bcd1f4e5b0b6c69aea904a7" }, "downloads": -1, "filename": "nestargs-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "de575069c5d61b10ccae5a1942c4b5bc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5,<4.0", "size": 3248, "upload_time": "2019-06-26T15:39:39", "url": "https://files.pythonhosted.org/packages/7a/04/6577fba477c45ebecc37089222dfb8dd7556f6de5d6e349087b08eb1bc3a/nestargs-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4d68bfa9d21e8277524524ceed918689", "sha256": "f09e8123692e2792c4a510811a23d6840c75c144fbf39267b12207369e5b4c88" }, "downloads": -1, "filename": "nestargs-0.2.1.tar.gz", "has_sig": false, "md5_digest": "4d68bfa9d21e8277524524ceed918689", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5,<4.0", "size": 3096, "upload_time": "2019-06-26T15:39:40", "url": "https://files.pythonhosted.org/packages/8a/57/3511e3c3dc7d7979d8fe2c2e66bbd7e1130fe410c3ba061975cd1eb5eca7/nestargs-0.2.1.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "cebf64fa3f2a9006e2c793e1703e9dc8", "sha256": "d0b6473b9b9f7b43962aa2f072ac0567e59a066fa3d5ff722587883ad7aa8dc0" }, "downloads": -1, "filename": "nestargs-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "cebf64fa3f2a9006e2c793e1703e9dc8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5,<4.0", "size": 3988, "upload_time": "2019-08-29T15:05:09", "url": "https://files.pythonhosted.org/packages/74/2e/b545a62c433195e8bee7fcc53f5d1c73dd08755e4be8446f540b4ae3ede8/nestargs-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4454a0e14111aec7d4db79265e086506", "sha256": "2d3811be5b0902a7983b5a1c05390cf9394a59d85d34e3fe93777dff0a90c3c7" }, "downloads": -1, "filename": "nestargs-0.3.0.tar.gz", "has_sig": false, "md5_digest": "4454a0e14111aec7d4db79265e086506", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5,<4.0", "size": 3906, "upload_time": "2019-08-29T15:05:11", "url": "https://files.pythonhosted.org/packages/d3/77/f193cc2d57a9e67fadc7c35bb6f7d32ef73badbec3b435a607bff9ce3236/nestargs-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "03be24f4b08e42e16515c654129eac9c", "sha256": "92cc373a288957e1beea56c9f1a92205ad43afe4837344e037c91ef9513db20a" }, "downloads": -1, "filename": "nestargs-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "03be24f4b08e42e16515c654129eac9c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5,<4.0", "size": 5173, "upload_time": "2019-09-18T22:26:33", "url": "https://files.pythonhosted.org/packages/fc/c1/82f2381342c356231c40fe37ef4e398b17f36745340fdc480e51e17d30be/nestargs-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cc94c5ed9502b84e311a7a797a6061da", "sha256": "7f73d9459f352a47a145f95cc0c14b574b26b953784b6c60ef387d0d3345667c" }, "downloads": -1, "filename": "nestargs-0.4.0.tar.gz", "has_sig": false, "md5_digest": "cc94c5ed9502b84e311a7a797a6061da", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5,<4.0", "size": 4791, "upload_time": "2019-09-18T22:26:35", "url": "https://files.pythonhosted.org/packages/46/64/8b6bdac719feaa4901803b7d7185ea2cfcfbcb19354fec3460f67daac228/nestargs-0.4.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "03be24f4b08e42e16515c654129eac9c", "sha256": "92cc373a288957e1beea56c9f1a92205ad43afe4837344e037c91ef9513db20a" }, "downloads": -1, "filename": "nestargs-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "03be24f4b08e42e16515c654129eac9c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5,<4.0", "size": 5173, "upload_time": "2019-09-18T22:26:33", "url": "https://files.pythonhosted.org/packages/fc/c1/82f2381342c356231c40fe37ef4e398b17f36745340fdc480e51e17d30be/nestargs-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cc94c5ed9502b84e311a7a797a6061da", "sha256": "7f73d9459f352a47a145f95cc0c14b574b26b953784b6c60ef387d0d3345667c" }, "downloads": -1, "filename": "nestargs-0.4.0.tar.gz", "has_sig": false, "md5_digest": "cc94c5ed9502b84e311a7a797a6061da", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5,<4.0", "size": 4791, "upload_time": "2019-09-18T22:26:35", "url": "https://files.pythonhosted.org/packages/46/64/8b6bdac719feaa4901803b7d7185ea2cfcfbcb19354fec3460f67daac228/nestargs-0.4.0.tar.gz" } ] }