{ "info": { "author": "Jos\u00e9 S\u00e1nchez-Gallego", "author_email": "gallegoj@uw.edu", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Science/Research", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Topic :: Documentation :: Sphinx", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "`CLU `__\n==========================================\n\n|Build Status| |Coverage Status| |docs| |py37|\n\n\n`CLU `_ implements a new protocol for SDSS actor while providing support for legacy-style actor.\n\n\nFeatures\n--------\n\n- Asynchronous API based on `asyncio `_.\n- New-style actor with message passing based on `AMQP `_ and `RabbitMQ `_.\n- Legacy-style actor for TCP socket communication through ``Tron``.\n- Tools for device handling.\n- Messages are validated JSON strings.\n- `click `__-enabled command parser.\n\n.. warning:: CLU is under active development and it must be considered in beta stage. The API is changing quickly and breaking changes are frequent.\n\n\nInstallation\n------------\n\n``CLU`` can be installed using ``pip`` as ::\n\n pip install sdss-clu\n\nor from source ::\n\n git clone https://github.org/sdss/clu\n cd clu\n python setup.py install\n\nIf you want to install it using `modules `_ you can use `sdss_install `_ ::\n\n sdss_install clu\n\n\nQuick start\n-----------\n\nCreating a new actor with ``CLU`` is easy. To instantiate and run an actor you can simply do ::\n\n import asyncio\n from clu import Actor\n\n async def main(loop):\n actor = Actor('guest', 'localhost', loop=loop).run()\n\n\n loop = asyncio.get_event_loop()\n loop.create_task(main(loop))\n loop.run_forever()\n\nNext, head to the `Getting started `_ section for more information about using actors.\n\n\nWhy a new messaging protocol for SDSS?\n--------------------------------------\n\nSay whatever you want about it, the `current SDSS message passing protocol `_ based on ``Tron``, ``opscore``, and ``actorcore`` is stable and robust. So, why should we replace it? Here is a list of reasons:\n\n- It reinvents the wheel. Ok, in all honesty ``Tron`` and ``opscore`` were written when wheel were still not completely circular, but the truth is that nowadays there are more robust, standard, and better documented technologies out there for message passing.\n- We can remove the need for a central hub product by relying in open-source message brokers such as `RabbitMQ `__.\n- ``Tron`` and ``opscore`` are Python 2 and it's unclear the amount of effort that would be needed to convert them to Python 3.\n- While there is some documentation for ``Tron`` and ``opscore``, and the code is well written, it's also cumbersome and difficult to modify by people that didn't write it. It's ultimately non-maintainable.\n- The ``opsctore``/``actorkeys`` datamodel is custom-built and extremely difficult to maintain. Standard solutions such as JSON with a `JSON schema `__ validator should be preferred.\n- `asyncio `__ provides an asynchronous API that is cleaner and easier to code than using threads. It is also more readable and less convoluted than `twisted `__ and it's a Python core library with very active development.\n- CLU uses `click `__ for parsing commands, providing a well-defined, easy to use parser.\n\n\n.. |Build Status| image:: https://img.shields.io/travis/rtfd/readthedocs.org.svg?style=flat\n :alt: Build Status\n :target: https://travis-ci.org/sdss/clu\n\n.. |Coverage Status| image:: https://codecov.io/gh/sdss/clu/branch/master/graph/badge.svg\n :alt: Coverage Status\n :scale: 100%\n :target: https://codecov.io/gh/sdss/clu\n\n.. |py37| image:: https://img.shields.io/badge/python-3.7-blue.svg\n :alt: Python 3.7\n :target: https://docs.python.org/3/\n\n.. |docs| image:: https://readthedocs.org/projects/docs/badge/?version=latest\n :alt: Documentation Status\n :scale: 100%\n :target: https://clu.readthedocs.io/en/latest/?badge=latest\n\n\n", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "astronomy,software", "license": "BSD 3-Clause License", "maintainer": "", "maintainer_email": "", "name": "sdss-clu", "package_url": "https://pypi.org/project/sdss-clu/", "platform": "", "project_url": "https://pypi.org/project/sdss-clu/", "project_urls": { "Documentation": "https://sdss-clu.readthedocs.org", "Repository": "https://github.com/sdss/clu" }, "release_url": "https://pypi.org/project/sdss-clu/0.1.4/", "requires_dist": [ "numpy (>=1.15.1)", "ruamel.yaml (>=0.15.61)", "pygments (>=2.2.0)", "click (>=7.0)", "aio-pika (>=5.5.3)", "jsonschema (>=3.0.1)", "prompt-toolkit (>=2.0.9)", "asynctest (>=0.13.0) ; extra == 'dev'", "flake8 ; extra == 'dev'", "ipython ; extra == 'dev'", "pytest ; extra == 'dev'", "pytest-asyncio ; extra == 'dev'", "pytest-cov ; extra == 'dev'", "pytest-sugar ; extra == 'dev'", "invoke ; extra == 'dev'", "bump2version ; extra == 'dev'", "wheel ; extra == 'dev'", "Sphinx (>=1.8.0) ; extra == 'docs'", "releases (>=1.6.1) ; extra == 'docs'", "sphinxcontrib-trio (>=1.0.1) ; extra == 'docs'", "sphinx-click (>=1.3.0) ; extra == 'docs'", "semantic-version (==2.6.0) ; extra == 'docs'" ], "requires_python": ">=3.7", "summary": "A new protocol for SDSS actors", "version": "0.1.4" }, "last_serial": 5962558, "releases": { "0.1.2.dev0": [ { "comment_text": "", "digests": { "md5": "bccde6ed066d389ec0be9da9a8a22d33", "sha256": "65c969bb2c30d990ba4f7328ff76437b1e5d26b7f8b6ca7c22a048cd26a095fa" }, "downloads": -1, "filename": "sdss-clu-0.1.2.dev0.tar.gz", "has_sig": false, "md5_digest": "bccde6ed066d389ec0be9da9a8a22d33", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 102893, "upload_time": "2019-10-12T00:52:51", "url": "https://files.pythonhosted.org/packages/40/9e/f6906eaeae2e5fc724df14beba961243b22f0eff129b6e3417a8ce063295/sdss-clu-0.1.2.dev0.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "c7952443af9931006cbe29a89a5d2885", "sha256": "aecf59accf252f581e4602e64f790b9f4b2284dc23a9a9c83941b2ba63885660" }, "downloads": -1, "filename": "sdss_clu-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "c7952443af9931006cbe29a89a5d2885", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 115256, "upload_time": "2019-10-12T01:42:12", "url": "https://files.pythonhosted.org/packages/a8/dd/ca43b09f227cd694beaff559f66f4bd1d8c6c83afdf315e3cfc7e3caaaf2/sdss_clu-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9074aae264376026e72a15ccc0788ce9", "sha256": "d3eb92ffb4a89a18077ea3e3370c02a56181238d1c0b887b96030f5f30ad1b11" }, "downloads": -1, "filename": "sdss-clu-0.1.4.tar.gz", "has_sig": false, "md5_digest": "9074aae264376026e72a15ccc0788ce9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 102867, "upload_time": "2019-10-12T01:42:14", "url": "https://files.pythonhosted.org/packages/0e/2e/67ab8a4c9c2abd296177c0eb8802198a6f1497d3a87cf9b2da2ee4db3ae6/sdss-clu-0.1.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c7952443af9931006cbe29a89a5d2885", "sha256": "aecf59accf252f581e4602e64f790b9f4b2284dc23a9a9c83941b2ba63885660" }, "downloads": -1, "filename": "sdss_clu-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "c7952443af9931006cbe29a89a5d2885", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 115256, "upload_time": "2019-10-12T01:42:12", "url": "https://files.pythonhosted.org/packages/a8/dd/ca43b09f227cd694beaff559f66f4bd1d8c6c83afdf315e3cfc7e3caaaf2/sdss_clu-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9074aae264376026e72a15ccc0788ce9", "sha256": "d3eb92ffb4a89a18077ea3e3370c02a56181238d1c0b887b96030f5f30ad1b11" }, "downloads": -1, "filename": "sdss-clu-0.1.4.tar.gz", "has_sig": false, "md5_digest": "9074aae264376026e72a15ccc0788ce9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 102867, "upload_time": "2019-10-12T01:42:14", "url": "https://files.pythonhosted.org/packages/0e/2e/67ab8a4c9c2abd296177c0eb8802198a6f1497d3a87cf9b2da2ee4db3ae6/sdss-clu-0.1.4.tar.gz" } ] }