{ "info": { "author": "C Anthony Risinger", "author_email": "c@anthonyrisinger.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows", "Operating System :: OS Independent", "Operating System :: POSIX", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Xacto\n~~~~~\n\n**CLI Analyzer/Generator**\n\nIntrospect, compose, marshal and export arbitrary callables into a unified,\nhierarchical, command-line interface (CLI)\n\nFeatures\n~~~~~~~~\n\nauto-find tools\nscan signatures and export as CLI node\n\nWhy\n---\n\nFAST! EASY! natural import usage! ``--help`` is decent!\n\nQuickstart\n----------\n\n#. Install::\n\n # pip install xacto\n\n#. Prepare::\n\n # ln -s $(which xacto) do\n\n#. Create python file at ``tools/work.py``:\n\n.. code-block:: python\n\n from pprint import pprint\n\n\n __all__ = [\"easy\", \"hard\", \"manual\"]\n\n\n def easy(method, speed=16, *tasks):\n \"\"\"The simple version\"\"\"\n pprint(locals())\n\n\n def hard(method, speed=32, *tasks, **params):\n \"\"\"The difficult version\"\"\"\n pprint(locals())\n\n\n class manual(object):\n \"\"\"The laborious version\"\"\"\n\n def __call__(self, method, speed, *tasks):\n pprint(locals())\n\n def method(self, process):\n \"\"\"Howto perform operation\"\"\"\n\n def speed(self, ops=64):\n \"\"\"Operations per second\"\"\"\n\n def tasks(self, pri, sec, ter):\n \"\"\"Various tasks\"\"\"\n\n#. View ``--help``::\n\n # ./do work --help\n usage: do work OBJECT ...\n\n additional modules:\n OBJECT := { .do.work }\n easy The simple version\n hard The difficult version\n manual\n The laborious version\n\n#. View object-level ``--help``::\n\n # ./do work manual --help\n usage: do work manual --method PROCESS --speed [OPS] [tasks [tasks ...]]\n\n The laborious version\n\n positional arguments:\n tasks Various tasks\n\n optional arguments:\n --method PROCESS Howto perform operation\n --speed [OPS] Operations per second\n\n The laborious version\n\n#. Run tool (function)::\n\n # ./do work hard --method=cheat --code=iddqd taskN\n {'method': 'cheat',\n 'params': {'code': 'iddqd'},\n 'speed': 32,\n 'tasks': ('taskN',)}\n\n#. Run tool (class)::\n\n # ./do work manual --method=cheap --speed=256 taskN\n {'method': 'cheap',\n 'self': ,\n 'speed': '256',\n 'tasks': ('taskN',)}\n\nLimitations\n-----------\n\n- true/false quirkyness (default=True means --default flips to False)\n\nTODO\n----\n\n- RELEASE!\n- testing: set-like functions, import semantics.. everything\n- handle bools better\n- detect output\n- standard output structure\n- prettify to tty\n- lazy load tools\n- lazy import globals (cpython)\n- bytecode cache\n- argument forwarding/chaining\n- integrate with zippy.shell\n- tab-completion\n- auto-reduce common components for aliases\n- make xacto object accessible to tools", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/xtfxme/xacto/archive/0.8.7.zip", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/xtfxme/xacto", "keywords": "cli commandline command introspection generate", "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "xacto", "package_url": "https://pypi.org/project/xacto/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/xacto/", "project_urls": { "Download": "https://github.com/xtfxme/xacto/archive/0.8.7.zip", "Homepage": "http://github.com/xtfxme/xacto" }, "release_url": "https://pypi.org/project/xacto/0.8.7/", "requires_dist": null, "requires_python": null, "summary": "Generate command-line interfaces (CLI) by introspecting callables", "version": "0.8.7" }, "last_serial": 3752813, "releases": { "0.6.2": [ { "comment_text": "", "digests": { "md5": "4b868a6fed690e4c551687ea98f759a6", "sha256": "7943a7fa3e0a397960348a83e5e03f5e8f100e0a4449ddfc648b03defca6d9bc" }, "downloads": -1, "filename": "xacto-0.6.2-py2.7.egg", "has_sig": false, "md5_digest": "4b868a6fed690e4c551687ea98f759a6", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 9026, "upload_time": "2014-07-16T17:09:08", "url": "https://files.pythonhosted.org/packages/08/a9/6f23a81a67eadaa2c14c1f56d106a6fa06c99d28025f5c3c88d2fc4fb2a5/xacto-0.6.2-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "0a99f0c6501dc8139168a8a3f97a6af6", "sha256": "63999df1d099b7c93205a67e6275aa3057c2e052454133e48638b2e46db41d8c" }, "downloads": -1, "filename": "xacto-0.6.2.tar.gz", "has_sig": false, "md5_digest": "0a99f0c6501dc8139168a8a3f97a6af6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10075, "upload_time": "2014-07-16T17:10:13", "url": "https://files.pythonhosted.org/packages/7b/e4/9b6e147133ef27b286c47e86f25416000115b0effc3b2eb0085e23306d7f/xacto-0.6.2.tar.gz" } ], "0.6.3": [ { "comment_text": "", "digests": { "md5": "2e28a3a42e3f0c1b430d036a67030986", "sha256": "479116c6f6c3cde411802eb208eaa54aa20d0798cda465a7faade657076c6867" }, "downloads": -1, "filename": "xacto-0.6.3.tar.gz", "has_sig": false, "md5_digest": "2e28a3a42e3f0c1b430d036a67030986", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10099, "upload_time": "2014-07-16T22:04:01", "url": "https://files.pythonhosted.org/packages/72/26/46cfa69f72510c92a647564a9564d201f03f43363d3bf2376c84d31bf3c6/xacto-0.6.3.tar.gz" } ], "0.8.2": [ { "comment_text": "", "digests": { "md5": "96f3ff15547a86fe56645c1a03d5ade0", "sha256": "e58d0f064846b4b0ed2817ed2f5d1514bdd5ddec4111d7c0576cab2a61996ff6" }, "downloads": -1, "filename": "xacto-0.8.2.tar.gz", "has_sig": false, "md5_digest": "96f3ff15547a86fe56645c1a03d5ade0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13098, "upload_time": "2014-10-03T16:04:14", "url": "https://files.pythonhosted.org/packages/c4/70/094894badbaf1883c6a2ccb552f1392b160d4fc2c7907a22931bd088ff7c/xacto-0.8.2.tar.gz" } ], "0.8.3": [ { "comment_text": "", "digests": { "md5": "51cfd6f8285530c60f6bc952af4c88f0", "sha256": "fe1296d859990baba640e29f5019cca8600defbc079bb3b8e478b46d0a373602" }, "downloads": -1, "filename": "xacto-0.8.3.tar.gz", "has_sig": false, "md5_digest": "51cfd6f8285530c60f6bc952af4c88f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13191, "upload_time": "2014-11-11T20:29:53", "url": "https://files.pythonhosted.org/packages/dd/f2/3c40af34575ce8e44e1a58212a3caa5be638676bc6091a5c3bd43672ca76/xacto-0.8.3.tar.gz" } ], "0.8.4": [ { "comment_text": "", "digests": { "md5": "ce49950032873e56e036c3261fafb589", "sha256": "34c2943055f4bebedfd02682b14ef3cd7999bf64a7ef2eec614f0a1ff70c3a51" }, "downloads": -1, "filename": "xacto-0.8.4.tar.gz", "has_sig": false, "md5_digest": "ce49950032873e56e036c3261fafb589", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13248, "upload_time": "2014-11-12T18:13:16", "url": "https://files.pythonhosted.org/packages/24/aa/835609f193401141902ac21baf81f4c7360b4e61ce99c99a6c949906eb66/xacto-0.8.4.tar.gz" } ], "0.8.5": [ { "comment_text": "", "digests": { "md5": "66df837e749a1fa08864efd83fef2686", "sha256": "f68167a2e322d8fc2b03c08a0d4f4214ad984fcfb03864d0ba200751ca09c343" }, "downloads": -1, "filename": "xacto-0.8.5.tar.gz", "has_sig": false, "md5_digest": "66df837e749a1fa08864efd83fef2686", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13600, "upload_time": "2014-11-17T19:09:51", "url": "https://files.pythonhosted.org/packages/79/31/5dab2f6cc09eaefa8fbddc04096a1a0e984fc333b5dd9aabb96f777a7d3f/xacto-0.8.5.tar.gz" } ], "0.8.6": [ { "comment_text": "", "digests": { "md5": "6b14bb30f48b88cf9bb85399fe81804f", "sha256": "afee4e96b92d56f778fc5c31c2e81b3eba6da207456f1e5685ae4c128ef30be4" }, "downloads": -1, "filename": "xacto-0.8.6.tar.gz", "has_sig": false, "md5_digest": "6b14bb30f48b88cf9bb85399fe81804f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13754, "upload_time": "2014-12-31T18:25:14", "url": "https://files.pythonhosted.org/packages/f8/85/4e8b6eaed566a5c52815f9df1af551ad5d0c47616ded4af56c3d7ea3ae96/xacto-0.8.6.tar.gz" } ], "0.8.7": [ { "comment_text": "", "digests": { "md5": "ce8a16fff48cabf75e72f7bd8ae98513", "sha256": "b126bdd53ec9caa4a772bc08289d8bde603d5680d2a80ac4b80aca1452ae2fd3" }, "downloads": -1, "filename": "xacto-0.8.7-py2-none-any.whl", "has_sig": false, "md5_digest": "ce8a16fff48cabf75e72f7bd8ae98513", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 15151, "upload_time": "2015-12-09T17:30:29", "url": "https://files.pythonhosted.org/packages/eb/b9/45c308286a04be0cede51dbd9f35b0ed02095614f3d397df2182e7e2af53/xacto-0.8.7-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b71edb2883e7797505e177608ae96ea9", "sha256": "30e124ec9a6b1f82d25c7894dfaefe01c539adbc4baa555efdace964b7570e71" }, "downloads": -1, "filename": "xacto-0.8.7-py3-none-any.whl", "has_sig": false, "md5_digest": "b71edb2883e7797505e177608ae96ea9", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 15150, "upload_time": "2015-12-09T17:31:32", "url": "https://files.pythonhosted.org/packages/5e/8d/4b5e48223a90b99f2f2ab25fe437061e97adcde2e26b39fbef2f89e12aa0/xacto-0.8.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fe6e7e174b6081207f83573087d6b0ea", "sha256": "d1a1447f54167ede5be20a62d7c75b92bf690abc91cae68a4f1cf89f5a137f2d" }, "downloads": -1, "filename": "xacto-0.8.7.tar.gz", "has_sig": false, "md5_digest": "fe6e7e174b6081207f83573087d6b0ea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15338, "upload_time": "2015-12-09T17:23:01", "url": "https://files.pythonhosted.org/packages/3e/dc/d05b1c869df146422bd656328c0e041c44437c5a86e30bace2f8e6dd249e/xacto-0.8.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ce8a16fff48cabf75e72f7bd8ae98513", "sha256": "b126bdd53ec9caa4a772bc08289d8bde603d5680d2a80ac4b80aca1452ae2fd3" }, "downloads": -1, "filename": "xacto-0.8.7-py2-none-any.whl", "has_sig": false, "md5_digest": "ce8a16fff48cabf75e72f7bd8ae98513", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 15151, "upload_time": "2015-12-09T17:30:29", "url": "https://files.pythonhosted.org/packages/eb/b9/45c308286a04be0cede51dbd9f35b0ed02095614f3d397df2182e7e2af53/xacto-0.8.7-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b71edb2883e7797505e177608ae96ea9", "sha256": "30e124ec9a6b1f82d25c7894dfaefe01c539adbc4baa555efdace964b7570e71" }, "downloads": -1, "filename": "xacto-0.8.7-py3-none-any.whl", "has_sig": false, "md5_digest": "b71edb2883e7797505e177608ae96ea9", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 15150, "upload_time": "2015-12-09T17:31:32", "url": "https://files.pythonhosted.org/packages/5e/8d/4b5e48223a90b99f2f2ab25fe437061e97adcde2e26b39fbef2f89e12aa0/xacto-0.8.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fe6e7e174b6081207f83573087d6b0ea", "sha256": "d1a1447f54167ede5be20a62d7c75b92bf690abc91cae68a4f1cf89f5a137f2d" }, "downloads": -1, "filename": "xacto-0.8.7.tar.gz", "has_sig": false, "md5_digest": "fe6e7e174b6081207f83573087d6b0ea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15338, "upload_time": "2015-12-09T17:23:01", "url": "https://files.pythonhosted.org/packages/3e/dc/d05b1c869df146422bd656328c0e041c44437c5a86e30bace2f8e6dd249e/xacto-0.8.7.tar.gz" } ] }