{ "info": { "author": "Jo\u00e3o Sampaio", "author_email": "jpmelos@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3 :: Only" ], "description": "=======\nSubcomm\n=======\n\n.. image:: https://travis-ci.org/jpmelos/subcomm.svg?branch=master\n :target: https://travis-ci.org/jpmelos/subcomm\n\nSubcomm provides a clear API for creating subcommands.\n\nSupports Python: 3.5, 3.6, 3.7\n\n------------\nInstallation\n------------\n\n::\n\n $ pip install subcomm\n\n-----------\nBasic usage\n-----------\n\nCreate the command parser::\n\n parser = SubcommParser(description='Command parser.')\n\nWhen declaring commands, use the ``@parser.command`` decorator::\n\n @parser.command(help='Run the command start.')\n def start(file):\n return 0\n start.parser.add_argument('file')\n\nYou can customize the subparser by accessing it as an attribute of the function: ``start.parser``, so you can add arguments to the subcommand or any other parser behavior using the default ``argparse`` API. Arguments will be passed to the command handler by the names they would have in ``parser.parse_args()``.\n\nYou call the handlers by doing::\n\n parser.run()\n\nThe value returned by the handler will be returned to the caller. If you are running a script and you want to return something consistent with the return values of the handlers, do::\n\n sys.exit(parser.run())\n\nIf the code is in a script called ``run.py``, then you can run it using::\n\n python run.py command\n\nThat's the same thing as calling the ``command`` function.\n\nIf you want a default command, so you can just call ``python run.py``, then you can declare::\n\n @parser.default(help='Help for the subcommand.')\n def start(args):\n pass\n\nYou can only declare one default command at a time.\n\n-----------\nDevelopment\n-----------\n\nInstall for development and with dependencies::\n\n $ pip install -e .[dev]\n\nAsserting code quality\n^^^^^^^^^^^^^^^^^^^^^^\n\nOf course we use our own API, so::\n\n $ python dev.py quality\n\nRunning tests\n^^^^^^^^^^^^^\n\n::\n\n $ python dev.py test\n\nThis will report code coverage as well.\n\nTo run tests with ``tox``, run::\n\n $ tox\n\nPackaging for PyPI distribution\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n::\n\n $ python dev.py package\n\nThe build will happen if the repository passes the quality tests and is clean: no untracked files are found. If not, you can see what's wrong with ``git clean -dfx --dry-run`` and remove or track and commit those files.\n\nBuilds will be available at ``dist``, in wheel and source.\n\n----------\nContribute\n----------\n\nPull requests are welcome.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/jpmelos/subcomm", "keywords": "command-line,subcommands,subparser,argparse", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "subcomm", "package_url": "https://pypi.org/project/subcomm/", "platform": "", "project_url": "https://pypi.org/project/subcomm/", "project_urls": { "Homepage": "http://github.com/jpmelos/subcomm" }, "release_url": "https://pypi.org/project/subcomm/0.3.3/", "requires_dist": [ "bleach (==3.0.2); extra == 'dev'", "certifi (==2018.10.15); extra == 'dev'", "cffi (==1.11.5); extra == 'dev'", "chardet (==3.0.4); extra == 'dev'", "cmarkgfm (==0.4.2); extra == 'dev'", "coverage (==4.5.1); extra == 'dev'", "docutils (==0.14); extra == 'dev'", "filelock (==3.0.9); extra == 'dev'", "future (==0.16.0); extra == 'dev'", "idna (==2.7); extra == 'dev'", "isort (==4.3.4); extra == 'dev'", "pep8 (==1.7.1); extra == 'dev'", "pkginfo (==1.4.2); extra == 'dev'", "pluggy (==0.8.0); extra == 'dev'", "py (==1.7.0); extra == 'dev'", "pycparser (==2.19); extra == 'dev'", "pyflakes (==2.0.0); extra == 'dev'", "Pygments (==2.2.0); extra == 'dev'", "readme-renderer (==22.0); extra == 'dev'", "requests (==2.20.0); extra == 'dev'", "requests-toolbelt (==0.8.0); extra == 'dev'", "six (==1.11.0); extra == 'dev'", "toml (==0.10.0); extra == 'dev'", "tox (==3.5.2); extra == 'dev'", "tox-pyenv (==1.1.0); extra == 'dev'", "tqdm (==4.28.0); extra == 'dev'", "twine (==1.12.1); extra == 'dev'", "urllib3 (==1.24); extra == 'dev'", "virtualenv (==16.0.0); extra == 'dev'", "webencodings (==0.5.1); extra == 'dev'" ], "requires_python": ">=3.5, <3.8", "summary": "A command subparser utility.", "version": "0.3.3" }, "last_serial": 4399687, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "4a1337875986a44902846c5d6d42158d", "sha256": "8e85448cf46ad1eb344240a1ed28e3a4cb596794549b7a217c77a161e07d8fbf" }, "downloads": -1, "filename": "subcomm-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "4a1337875986a44902846c5d6d42158d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3826, "upload_time": "2016-10-25T01:55:58", "url": "https://files.pythonhosted.org/packages/47/d5/6c8e2a9fe227f3727d234a5ccb714a2e90c1cd93a8e6eb357fabb49e2a85/subcomm-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7dff484c5443efc660ff0773d58b1849", "sha256": "286794522fcd835e1205f5f290b6523a9bc7f8686e90092068d14661c3f3cf2d" }, "downloads": -1, "filename": "subcomm-0.1.tar.gz", "has_sig": false, "md5_digest": "7dff484c5443efc660ff0773d58b1849", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3068, "upload_time": "2016-10-25T01:56:00", "url": "https://files.pythonhosted.org/packages/81/9b/2f6ab70627d9caf71448e8066f25e81956f7922ff37b56a654142417b6e3/subcomm-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "a20b200e244736cd309e969c48395423", "sha256": "1bc777677d656708318cb8952ddb293fba1bab5592cee7a028f4a2954f92ede6" }, "downloads": -1, "filename": "subcomm-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a20b200e244736cd309e969c48395423", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3947, "upload_time": "2016-10-25T02:03:16", "url": "https://files.pythonhosted.org/packages/40/53/512fa38959bb8d0615ef081ee1003f532a3a798f1cda90b3c232b885331a/subcomm-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "416effc5c24c00941b39de7f693172db", "sha256": "858a313ea298564175df40dcbafc3de71dc287f121280136d0c53889331ea11b" }, "downloads": -1, "filename": "subcomm-0.1.1.tar.gz", "has_sig": false, "md5_digest": "416effc5c24c00941b39de7f693172db", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3148, "upload_time": "2016-10-25T02:03:18", "url": "https://files.pythonhosted.org/packages/b7/ed/03ab5183a1e39119766997bd0459ab6896e9a794508e240436ab75904229/subcomm-0.1.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "7244edf94dad31d9a35f2190f596e800", "sha256": "a735eec3e3814689617478e1a9c3d338851c2feffee0024d16b145d265f73aec" }, "downloads": -1, "filename": "subcomm-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "7244edf94dad31d9a35f2190f596e800", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4257, "upload_time": "2016-10-25T17:47:14", "url": "https://files.pythonhosted.org/packages/bb/be/0708a763515c75fdc9a07d34e3dc5ddfe70d7025a1b076e19ef189a5ed6a/subcomm-0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "15416057c1a438fbcafcfd0fc799d925", "sha256": "4d3df27ff18cbfce1eb428f58c2a1864c9124efc7ee4cd71fd9db037cd7bf42a" }, "downloads": -1, "filename": "subcomm-0.2.tar.gz", "has_sig": false, "md5_digest": "15416057c1a438fbcafcfd0fc799d925", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3376, "upload_time": "2016-10-25T17:47:16", "url": "https://files.pythonhosted.org/packages/32/e3/628f37af459e9430128730e7144f8407dcda1becfbc2775ab1d39c8aa4d9/subcomm-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "df72925ade0858535902cebff3eee14c", "sha256": "5625456133f90cea430e4958cb5db2bc6ff01279e41a17ffa440c375f9a75617" }, "downloads": -1, "filename": "subcomm-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "df72925ade0858535902cebff3eee14c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4445, "upload_time": "2016-11-09T13:00:30", "url": "https://files.pythonhosted.org/packages/8e/5e/0b9c7c8a9abd54de1582889b752286056bf0e1171447621d07140e4e1728/subcomm-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a97ccaec4edfeb53aeaafca6a0695cff", "sha256": "f7f8e6c7a546ca60b9a4e246dbb9528b18c8935c1cc3419d83e7cd81587eb543" }, "downloads": -1, "filename": "subcomm-0.2.1.tar.gz", "has_sig": false, "md5_digest": "a97ccaec4edfeb53aeaafca6a0695cff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3508, "upload_time": "2016-11-09T13:00:32", "url": "https://files.pythonhosted.org/packages/2e/23/51d7144703d53866f9630d2e738f8fd9deb0c45e6df906ba2dd9767a376f/subcomm-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "f4b197971d7f3a5d9d3efebf54230f67", "sha256": "b67ca13407608c216586398fc16eb007a530df9ee18c8128cbc9c20f245133f1" }, "downloads": -1, "filename": "subcomm-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "f4b197971d7f3a5d9d3efebf54230f67", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4514, "upload_time": "2016-12-01T02:32:10", "url": "https://files.pythonhosted.org/packages/cc/e3/3bc68daf3eed2494d425ff8b6c1d2a1f675dd9299f46f7c3ad448ec6de4e/subcomm-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "44e9401e2b18e1fc41dd85a17a0f4b80", "sha256": "ec1b1d2cd53f44c27957f14d773c19bf12fb14e9d770e8597b86ed8c25f502da" }, "downloads": -1, "filename": "subcomm-0.2.2.tar.gz", "has_sig": false, "md5_digest": "44e9401e2b18e1fc41dd85a17a0f4b80", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3565, "upload_time": "2016-12-01T02:32:12", "url": "https://files.pythonhosted.org/packages/48/44/583a40a126f39decae0b7442b6c48c26f5fa4e4a6cc69764aece2cfc7a32/subcomm-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "0bbae660994f6a1b734d9d7e944e5c80", "sha256": "e9287f4506cba1c75611a1dfce3ecad3bfce16687d0833c3567ca947cc165d35" }, "downloads": -1, "filename": "subcomm-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "0bbae660994f6a1b734d9d7e944e5c80", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4542, "upload_time": "2016-12-01T03:01:50", "url": "https://files.pythonhosted.org/packages/b0/99/d0aeb16b9e5f3c56218ddc87d862503ebe74716aa700e5930f7a7e417be4/subcomm-0.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "13fc387965efa14419834d182d797287", "sha256": "6e4a9c830e23f6d2b5105ee1e10ff44e2c0cc166ac328fb52ecae144888e8d11" }, "downloads": -1, "filename": "subcomm-0.2.3.tar.gz", "has_sig": false, "md5_digest": "13fc387965efa14419834d182d797287", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3592, "upload_time": "2016-12-01T03:01:52", "url": "https://files.pythonhosted.org/packages/89/0c/d36c4dcae3f0a3da8f9e76a30f7e502320a361c61fbfdf32df6f5823240c/subcomm-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "cd3c83d3a353fcaf917085343856b39c", "sha256": "67bc953bfbef3afb390518e7fe40126677315c5eaae277d2385c4559baf53605" }, "downloads": -1, "filename": "subcomm-0.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "cd3c83d3a353fcaf917085343856b39c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4593, "upload_time": "2017-03-04T20:46:57", "url": "https://files.pythonhosted.org/packages/2f/b8/c3396db664486d66299e5edd779eff3653702b42c847988e1bd0acb4b407/subcomm-0.2.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "99922f64ac03d4412729ff114b5fc21e", "sha256": "7ce04019bf99fa2401913f7d788397ad475ac40c0c50327ffdd6deac8f56c28a" }, "downloads": -1, "filename": "subcomm-0.2.4.tar.gz", "has_sig": false, "md5_digest": "99922f64ac03d4412729ff114b5fc21e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3616, "upload_time": "2017-03-04T20:46:59", "url": "https://files.pythonhosted.org/packages/48/0d/f821523a8e9432fe7a598ef077d24802124734f2e68d785bd43bdb38d0aa/subcomm-0.2.4.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "31d43cf97c640bcf48098c9563d3c152", "sha256": "8ce244b1dc80a0add570812f38d0d0a935306300ddaf3f59c17618aafd92ae9a" }, "downloads": -1, "filename": "subcomm-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "31d43cf97c640bcf48098c9563d3c152", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4625, "upload_time": "2017-08-11T00:56:14", "url": "https://files.pythonhosted.org/packages/7b/82/94e0360101e966838ce8173313332de9b00099c116ed72f5322ffcb4892c/subcomm-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "44b5bec195181db829c39af4508ebf91", "sha256": "32f1e8bd0943dfe2361391b4efce2f46c232c5a46e435cfb3037f41dc1d1991b" }, "downloads": -1, "filename": "subcomm-0.3.1.tar.gz", "has_sig": false, "md5_digest": "44b5bec195181db829c39af4508ebf91", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3622, "upload_time": "2017-08-11T00:56:16", "url": "https://files.pythonhosted.org/packages/5c/19/01b95d4cb3239de1c2b78becdf9f86eddf5d19bede4fb27e4d00d6082d7f/subcomm-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "64e72f6443ab14bc54a2e5cf51162dee", "sha256": "806147312f054932a0beaaed2ef5cfdb0a28a3e008ba03f4f27e10e87bb2ca21" }, "downloads": -1, "filename": "subcomm-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "64e72f6443ab14bc54a2e5cf51162dee", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4, <3.7", "size": 2886, "upload_time": "2018-04-22T13:32:20", "url": "https://files.pythonhosted.org/packages/0a/04/04d9ad8024c60d2f3e52e014077bbc206d43b870f09215032cdf27d83a4d/subcomm-0.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b80fb4faa919b2beda9129efb7e9e15b", "sha256": "537e8957488fa4ee921bfa83fe4d053e74d626582a999ebb5304999da265f273" }, "downloads": -1, "filename": "subcomm-0.3.2.tar.gz", "has_sig": false, "md5_digest": "b80fb4faa919b2beda9129efb7e9e15b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4, <3.7", "size": 3820, "upload_time": "2018-04-22T13:32:21", "url": "https://files.pythonhosted.org/packages/f1/d4/f44df4ab4565e44098a6423d78f7f41ecc1f9e7eb3362e61b98942365e9e/subcomm-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "7f137c17651ad27905c4dcc9d76366e6", "sha256": "98c9d6d110b86bbf4e74da6fa638acb0f68e126e0133bb388b4dc78a8517815c" }, "downloads": -1, "filename": "subcomm-0.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "7f137c17651ad27905c4dcc9d76366e6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5, <3.8", "size": 4109, "upload_time": "2018-10-21T15:25:34", "url": "https://files.pythonhosted.org/packages/31/68/676b50c1cf2ff65ece6059ab533966f8a90448f99507aa31a9b60538d1cd/subcomm-0.3.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f01cb7e992e83bd4bddf37b815e872dd", "sha256": "b92f7772c87d20a6ac8840c0b7404438fe9961b788b81d05712af732b9726a87" }, "downloads": -1, "filename": "subcomm-0.3.3.tar.gz", "has_sig": false, "md5_digest": "f01cb7e992e83bd4bddf37b815e872dd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5, <3.8", "size": 4156, "upload_time": "2018-10-21T15:25:36", "url": "https://files.pythonhosted.org/packages/e4/c5/663fc7e4af6a45cfeaa224db7a4fee3eb21d665b3f2cb96f915cfe49ba9e/subcomm-0.3.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7f137c17651ad27905c4dcc9d76366e6", "sha256": "98c9d6d110b86bbf4e74da6fa638acb0f68e126e0133bb388b4dc78a8517815c" }, "downloads": -1, "filename": "subcomm-0.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "7f137c17651ad27905c4dcc9d76366e6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5, <3.8", "size": 4109, "upload_time": "2018-10-21T15:25:34", "url": "https://files.pythonhosted.org/packages/31/68/676b50c1cf2ff65ece6059ab533966f8a90448f99507aa31a9b60538d1cd/subcomm-0.3.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f01cb7e992e83bd4bddf37b815e872dd", "sha256": "b92f7772c87d20a6ac8840c0b7404438fe9961b788b81d05712af732b9726a87" }, "downloads": -1, "filename": "subcomm-0.3.3.tar.gz", "has_sig": false, "md5_digest": "f01cb7e992e83bd4bddf37b815e872dd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5, <3.8", "size": 4156, "upload_time": "2018-10-21T15:25:36", "url": "https://files.pythonhosted.org/packages/e4/c5/663fc7e4af6a45cfeaa224db7a4fee3eb21d665b3f2cb96f915cfe49ba9e/subcomm-0.3.3.tar.gz" } ] }