{ "info": { "author": "Shoma Kokuryo", "author_email": "pudding@mail.poyo.info", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# uroboros\n\n[![Build Status](https://travis-ci.com/pddg/uroboros.svg?branch=master)](https://travis-ci.com/pddg/uroboros) [![PyPI pyversions](https://img.shields.io/pypi/pyversions/uroboros.svg)](https://pypi.python.org/pypi/uroboros/) [![PyPI version shields.io](https://img.shields.io/pypi/v/uroboros.svg)](https://pypi.python.org/pypi/uroboros/)\n [![GitHub license](https://img.shields.io/github/license/pddg/uroboros.svg)](https://github.com/pddg/uroboros/blob/master/LICENSE)\n\n\n\nSimple framework for building scalable CLI tool.\n\n**NOTE** \nThis framework currently under development. Please be careful to use.\n\n## Features\n\n- Simple interface\n- Pure python\n - Thin wrapper of `argparse`\n - No third party dependencies\n- Easy to reuse common options\n- Easy to create sub commands\n - Nested sub command is also supported\n\n## Environment\n\n- Python >= 3.5\n - No support for python 2.x\n\nInstall uroboros\n\n```bash\n$ pip install uroboros\n```\n\n## How to use\n\nImplement your command using `uroboros.Command` and create a command tree.\n\n```python\n# sample.py\nfrom uroboros import Command\nfrom uroboros.constants import ExitStatus\n\nclass RootCommand(Command):\n \"\"\"Root command of your application\"\"\"\n name = 'sample'\n long_description = 'This is a sample command using uroboros'\n\n def build_option(self, parser):\n \"\"\"Add optional arguments\"\"\"\n parser.add_argument('--version', action='store_true', default=False, help='Print version')\n return parser\n\n def run(self, args):\n \"\"\"Your own script to run\"\"\"\n if args.version:\n print(\"{name} v{version}\".format(\n name=self.name, version='1.0.0'))\n else:\n self.print_help()\n return ExitStatus.SUCCESS\n\nclass HelloCommand(Command):\n \"\"\"Sub command of root\"\"\"\n name = 'hello'\n short_description = 'Hello world!'\n long_description = 'Print \"Hello world!\" to stdout'\n\n def run(self, args):\n print(self.short_description)\n return ExitStatus.SUCCESS\n\n# Create command tree\nroot_cmd = RootCommand()\nroot_cmd.add_command(HelloCommand())\n\nif __name__ == '__main__':\n exit(root_cmd.execute())\n```\n\nThen, your command works completely.\n\n```bash\n$ python sample.py -h\nusage: sample [-h] [--version] {hello} ...\n\nThis is a sample command using uroboros\n\noptional arguments:\n -h, --help show this help message and exit\n --version Print version\n\nSub commands:\n {hello}\n hello Hello world!\n$ python sample.py --version\nsample v1.0.0\n$ python sample.py hello\nHello world!\n```\n\nIf you want to use new sub command `sample.py hello xxxx`, you just implement new `XXXXCommand` and add it to `Hello`.\n\n```python\nroot_cmd = RootCommand().add_command(\n HelloCommand().add_command(\n XXXXCommand()\n )\n)\n```\n\nYou can see other examples in [examples](examples).\n\n## Develop\n\nFirst, clone this repository and install uroboros with editable option.\n\n```bash\n$ git clone https://github.com/pddg/uroboros\n$ cd /path/to/uroboros\n$ pip install -e .\n```\n\nUse `Pipenv` for lint and test.\n\n```bash\n# Create environment\n$ pipenv install --dev\n# Execute lint by flake8\n$ pipenv run lint\n# Execute test by py.test\n$ pipenv run test\n```\n\nAlso support test with `tox`. Before execute test with `tox`, you should make available to use python `3.5` and `3.6`, `3.7`.\n\n## License\n\nApache 2.0\n\n## Author\n\nShoma Kokuryo\n\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/pddg/uroboros", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "uroboros", "package_url": "https://pypi.org/project/uroboros/", "platform": "", "project_url": "https://pypi.org/project/uroboros/", "project_urls": { "Homepage": "https://github.com/pddg/uroboros" }, "release_url": "https://pypi.org/project/uroboros/0.2.3/", "requires_dist": null, "requires_python": ">=3.5", "summary": "Simple framework for building scalable CLI tool", "version": "0.2.3" }, "last_serial": 5904782, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "799e56832d59cc46d93ec9968707b328", "sha256": "7ce76a17c26571a031aa1c613ac7c8de13e10e8963f3dd95bb3e8b585311c83c" }, "downloads": -1, "filename": "uroboros-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "799e56832d59cc46d93ec9968707b328", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 12232, "upload_time": "2019-07-13T09:04:25", "url": "https://files.pythonhosted.org/packages/10/b3/8065d6b9c16e14d4e58e88b20cb7460d2473481fb1e6d183b578b870eec2/uroboros-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a9a86d124f2d899f5ef6b1cccf0c6890", "sha256": "24694380b5f8ceef8f82f60ee00285f9409feb06a0812f8c084ec8ffc7366c9a" }, "downloads": -1, "filename": "uroboros-0.1.0.tar.gz", "has_sig": false, "md5_digest": "a9a86d124f2d899f5ef6b1cccf0c6890", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 11601, "upload_time": "2019-07-13T09:04:27", "url": "https://files.pythonhosted.org/packages/ed/3a/9dbd6e832754ec2c6b2cd0e2781501c5ad5e6762d0ab7b73bfbf1b70a190/uroboros-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "71936b786f05748c900fd8d1ca685d42", "sha256": "57af33bb03809df28b1fa9638e73c21f388c72fc2f737da1a9db19935007c5bc" }, "downloads": -1, "filename": "uroboros-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "71936b786f05748c900fd8d1ca685d42", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 13189, "upload_time": "2019-09-10T05:26:28", "url": "https://files.pythonhosted.org/packages/f3/78/805ff59c2d78e448d6f52a213abe87e3af345d47392a0eaf9735f278d515/uroboros-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4b316e723f03c6d5c023786a9827de40", "sha256": "2afcb4a7a4d84d137280016f1c6b05f215108df679eccbef88a81c09d678263f" }, "downloads": -1, "filename": "uroboros-0.2.0.tar.gz", "has_sig": false, "md5_digest": "4b316e723f03c6d5c023786a9827de40", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 13293, "upload_time": "2019-09-10T05:26:29", "url": "https://files.pythonhosted.org/packages/27/4b/388c82f0d654a11ebeaca78a61c4c335ea16f7d7fc93428fa872a20768f2/uroboros-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "4238e0339de14cd7d33f4beca9abc892", "sha256": "cd4bdb1b2d41d6de117269b42a97c74f33de1bfd96ed3bcc8f58b4594cdbddc5" }, "downloads": -1, "filename": "uroboros-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "4238e0339de14cd7d33f4beca9abc892", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 13189, "upload_time": "2019-09-21T03:38:30", "url": "https://files.pythonhosted.org/packages/fa/a0/351a8089c9d19232e9b7f70e38c37c5d81bcc0ddd1946f4a7886caff3a83/uroboros-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4e8a697e43a2b4414944aaf7c1416539", "sha256": "d87ddf96ca8e52dee9e51f2759f15c1ecd311650b992b53d6e5d3d77db29dc18" }, "downloads": -1, "filename": "uroboros-0.2.1.tar.gz", "has_sig": false, "md5_digest": "4e8a697e43a2b4414944aaf7c1416539", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 13292, "upload_time": "2019-09-21T03:38:31", "url": "https://files.pythonhosted.org/packages/e8/e5/016ebf011d93fe7cfa49fa102926d3d18301886361506c08159bc72aeb65/uroboros-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "90e5efe0647defeca187adc98b0c21f6", "sha256": "47903236e81ee5e98eab66ad0db9365872e7a3a60fce2011f40e8601fad8bbf3" }, "downloads": -1, "filename": "uroboros-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "90e5efe0647defeca187adc98b0c21f6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 13212, "upload_time": "2019-09-25T04:31:00", "url": "https://files.pythonhosted.org/packages/e1/49/534e4fe7a3331f5dc0f0bb3b5483822af317b814d1875175daed06c192e1/uroboros-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f72b3b317e56d8ef1ba8762d1025a622", "sha256": "3bb2f71c8e88820e2a3f0f62ecb4aab9219264de98ba20efa784de8536719e9e" }, "downloads": -1, "filename": "uroboros-0.2.2.tar.gz", "has_sig": false, "md5_digest": "f72b3b317e56d8ef1ba8762d1025a622", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 13318, "upload_time": "2019-09-25T04:31:02", "url": "https://files.pythonhosted.org/packages/d6/e8/39dc517890586004aead25d93597bb335ca39b9c3bcf4e1a7a2df304373a/uroboros-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "07a1ae8f093ea66c38ec84915f4bdced", "sha256": "3e97e88d260af7a7f7dfaeb13665b0d7f3e7650aa216063a393aab35e9d43486" }, "downloads": -1, "filename": "uroboros-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "07a1ae8f093ea66c38ec84915f4bdced", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 13233, "upload_time": "2019-09-30T04:32:36", "url": "https://files.pythonhosted.org/packages/00/9b/5adb3a21bf59f7071292d4ca1b248b711df8633ed4fee5972cc0f81838c7/uroboros-0.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3832efd1818bda9b85e77c537151168b", "sha256": "48d400ff0475683a33b6b4f31b9c6325bdef716e01db45918e793c0ad3f0375e" }, "downloads": -1, "filename": "uroboros-0.2.3.tar.gz", "has_sig": false, "md5_digest": "3832efd1818bda9b85e77c537151168b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 13342, "upload_time": "2019-09-30T04:32:38", "url": "https://files.pythonhosted.org/packages/22/c0/a8eb03a5009b576cd1cc4274a6e93639c74c08eef2b4edf264b6f5a4b4f8/uroboros-0.2.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "07a1ae8f093ea66c38ec84915f4bdced", "sha256": "3e97e88d260af7a7f7dfaeb13665b0d7f3e7650aa216063a393aab35e9d43486" }, "downloads": -1, "filename": "uroboros-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "07a1ae8f093ea66c38ec84915f4bdced", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 13233, "upload_time": "2019-09-30T04:32:36", "url": "https://files.pythonhosted.org/packages/00/9b/5adb3a21bf59f7071292d4ca1b248b711df8633ed4fee5972cc0f81838c7/uroboros-0.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3832efd1818bda9b85e77c537151168b", "sha256": "48d400ff0475683a33b6b4f31b9c6325bdef716e01db45918e793c0ad3f0375e" }, "downloads": -1, "filename": "uroboros-0.2.3.tar.gz", "has_sig": false, "md5_digest": "3832efd1818bda9b85e77c537151168b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 13342, "upload_time": "2019-09-30T04:32:38", "url": "https://files.pythonhosted.org/packages/22/c0/a8eb03a5009b576cd1cc4274a6e93639c74c08eef2b4edf264b6f5a4b4f8/uroboros-0.2.3.tar.gz" } ] }