{ "info": { "author": "Beno\u00eet Mendousse", "author_email": "benoit@mendous.se", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Framework :: AsyncIO", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "|Build Status| |codecov| |PyPi|\n\n**Caution, this is a 0.x.y version, the public interfaces might break at\nany time.**\n\nSweetasync\n==========\n\nA collection of simple functions, decorators and classes to make your\nasynchronous python code sweeter.\n\n* only compatible with 3.5.2+ and 3.6+\n* use `Semantic Versioning `__\n* the `documentation`_ is extracted with sphinx from the\n source's docstrings: ``sphinx-build ./ doc``\n* to run the test suite, use (adapt accordingly to your installation of\n python): ``python3.6 setup.py test``\n\nFeatures\n========\n\n* remove the boilerplate that comes with setting up and using\n an event loop with the ``aiorunner`` context manager and the\n ``@sync`` decorator for async functions; they also clean up\n after an exception happens so you don't get useless warnings\n about an unclosed event loop and the like\n* easily communicate between coroutines or between coroutines and threads\n with the ``Channel`` and ``BufferedChannel`` classes; they can be used as\n async iterators from coroutines and blocking iterators from threads\n* receive data from multiple channels with a ``Bundle`` by iterating on it\n* dispatch events to callbacks and async functions with ``EventEmitter``;\n it even handles backpressure and errors\n* make your code sweeter with these small functions: ``aiter``, ``asyncify``,\n and ``as_await``\n* implement synchronization primitives with ``waiter`` (such as channels!)\n\nExamples\n========\n\nSee `the example directory`_ for runnable examples.\n\n.. |Build Status| image:: https://travis-ci.org/bmds-blhdr/sweetasync.svg?branch=master\n :target: https://travis-ci.org/bmds-blhdr/sweetasync\n.. |codecov| image:: https://codecov.io/gh/bmds-blhdr/sweetasync/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/bmds-blhdr/sweetasync\n.. |PyPi| image:: https://badge.fury.io/py/sweetasync.svg\n :target: https://badge.fury.io/py/sweetasync\n.. _documentation: https://bmds-blhdr.github.io/sweetasync/doc/\n.. _the example directory: https://github.com/bmds-blhdr/sweetasync/tree/master/examples\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "https://github.com/bmds-blhdr/sweetasync/archive/v0.7.0.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/bmds-blhdr/sweetasync", "keywords": "asyncio decorators utils", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "sweetasync", "package_url": "https://pypi.org/project/sweetasync/", "platform": "", "project_url": "https://pypi.org/project/sweetasync/", "project_urls": { "Download": "https://github.com/bmds-blhdr/sweetasync/archive/v0.7.0.tar.gz", "Homepage": "https://github.com/bmds-blhdr/sweetasync" }, "release_url": "https://pypi.org/project/sweetasync/0.7.0/", "requires_dist": null, "requires_python": "", "summary": "Make your async code sweeter.", "version": "0.7.0" }, "last_serial": 4010451, "releases": { "0.5.0": [ { "comment_text": "", "digests": { "md5": "3cb4db415c0d301fbdeedc8ae88a6164", "sha256": "24a56d30171b1a14f2323003b4a090651c3e72eb7d58b227f051e4ffccb36c0a" }, "downloads": -1, "filename": "sweetasync-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3cb4db415c0d301fbdeedc8ae88a6164", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 12663, "upload_time": "2017-09-16T19:57:17", "url": "https://files.pythonhosted.org/packages/b4/85/7431cf7421bbcaa595165a1b02a23f262c970d935b9d4d0b8349743aae48/sweetasync-0.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cfae6b8bf4bf2ba4c1af125c678ff8d2", "sha256": "6fd768f06b342e39e81405f93e8c5fbabbb49de5714d2fdc85dfa9c9660306ab" }, "downloads": -1, "filename": "sweetasync-0.5.0.tar.gz", "has_sig": false, "md5_digest": "cfae6b8bf4bf2ba4c1af125c678ff8d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8963, "upload_time": "2017-09-16T19:57:14", "url": "https://files.pythonhosted.org/packages/62/33/2f41aa3f4924a99d671e028d9dd94613182222257837eb1bfe77a443e14f/sweetasync-0.5.0.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "202896f47b74656ae4daea1283172416", "sha256": "830474d81b78cc3bdc6dd1865126da925f10192d03f37fc428db71de4642d6ca" }, "downloads": -1, "filename": "sweetasync-0.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "202896f47b74656ae4daea1283172416", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10067, "upload_time": "2018-05-25T17:02:24", "url": "https://files.pythonhosted.org/packages/34/01/106691c4e744b90c19948cea5a78408e1238ead9ad50dd458127018e75c0/sweetasync-0.6.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ac92c7da30c1181cf2b7493ec0af810b", "sha256": "bdf7540fa0eda5e29ded7ae82ddc895774258d19a8b49be69202ea2829d3866f" }, "downloads": -1, "filename": "sweetasync-0.6.0.tar.gz", "has_sig": false, "md5_digest": "ac92c7da30c1181cf2b7493ec0af810b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9400, "upload_time": "2018-05-25T17:02:26", "url": "https://files.pythonhosted.org/packages/4b/93/9f7045bb4d15ec987427ec7772be62ce1a6b1b82605f3c1793fee15e678a/sweetasync-0.6.0.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "117a4ef98e026da3b0809474382d9c4e", "sha256": "f03e1f88931742daed0eb4c8ae5c163a5b16e36b188b17eb205d82322933ab3f" }, "downloads": -1, "filename": "sweetasync-0.7.0-py3-none-any.whl", "has_sig": false, "md5_digest": "117a4ef98e026da3b0809474382d9c4e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10064, "upload_time": "2018-06-28T08:47:08", "url": "https://files.pythonhosted.org/packages/15/35/d4995739cf75be259b37f40721e199eff55ee992ca76969613f3fbd00acd/sweetasync-0.7.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1a1997089a290b8d955de8f5edfca8fa", "sha256": "a050e05ba0e5dcf33b043686551798a9d587b6232646f9115c15102437ae1628" }, "downloads": -1, "filename": "sweetasync-0.7.0.tar.gz", "has_sig": false, "md5_digest": "1a1997089a290b8d955de8f5edfca8fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9349, "upload_time": "2018-06-28T08:47:10", "url": "https://files.pythonhosted.org/packages/e3/75/ea64dcaa5be95ff7969f202b3d578b50888ba7e8c3265ad5ec8b923977d0/sweetasync-0.7.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "117a4ef98e026da3b0809474382d9c4e", "sha256": "f03e1f88931742daed0eb4c8ae5c163a5b16e36b188b17eb205d82322933ab3f" }, "downloads": -1, "filename": "sweetasync-0.7.0-py3-none-any.whl", "has_sig": false, "md5_digest": "117a4ef98e026da3b0809474382d9c4e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10064, "upload_time": "2018-06-28T08:47:08", "url": "https://files.pythonhosted.org/packages/15/35/d4995739cf75be259b37f40721e199eff55ee992ca76969613f3fbd00acd/sweetasync-0.7.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1a1997089a290b8d955de8f5edfca8fa", "sha256": "a050e05ba0e5dcf33b043686551798a9d587b6232646f9115c15102437ae1628" }, "downloads": -1, "filename": "sweetasync-0.7.0.tar.gz", "has_sig": false, "md5_digest": "1a1997089a290b8d955de8f5edfca8fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9349, "upload_time": "2018-06-28T08:47:10", "url": "https://files.pythonhosted.org/packages/e3/75/ea64dcaa5be95ff7969f202b3d578b50888ba7e8c3265ad5ec8b923977d0/sweetasync-0.7.0.tar.gz" } ] }