{ "info": { "author": "Andrew Svetlov", "author_email": "andrew.svetlov@gmail.com", "bugtrack_url": null, "classifiers": [ "Framework :: AsyncIO", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries" ], "description": "=======\n janus\n=======\n.. image:: https://travis-ci.com/aio-libs/janus.svg?branch=master\n :target: https://travis-ci.com/aio-libs/janus\n.. image:: https://codecov.io/gh/aio-libs/janus/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/aio-libs/janus\n.. image:: https://img.shields.io/pypi/v/janus.svg\n :target: https://pypi.python.org/pypi/janus\n.. image:: https://badges.gitter.im/Join%20Chat.svg\n :target: https://gitter.im/aio-libs/Lobby\n :alt: Chat on Gitter\n\n\n\nMixed sync-async queue, supposed to be used for communicating between\nclassic synchronous (threaded) code and asynchronous (in terms of\nasyncio_) one.\n\nLike `Janus god `_ the queue\nobject from the library has two faces: synchronous and asynchronous\ninterface.\n\nSynchronous is fully compatible with `standard queue\n`_, asynchronous one\nfollows `asyncio queue design\n`_.\n\nUsage example\n=============\n\n.. code:: python\n\n import asyncio\n import janus\n\n loop = asyncio.get_event_loop()\n queue = janus.Queue(loop=loop)\n\n\n def threaded(sync_q):\n for i in range(100):\n sync_q.put(i)\n sync_q.join()\n\n\n async def async_coro(async_q):\n for i in range(100):\n val = await async_q.get()\n assert val == i\n async_q.task_done()\n\n\n fut = loop.run_in_executor(None, threaded, queue.sync_q)\n loop.run_until_complete(async_coro(queue.async_q))\n loop.run_until_complete(fut)\n\n\nCommunication channels\n======================\n\n*aio-libs* google group: https://groups.google.com/forum/#!forum/aio-libs\n\nFeel free to post your questions and ideas here.\n\n*gitter chat* https://gitter.im/aio-libs/Lobby\n\n\nLicense\n=======\n\n``janus`` library is offered under Apache 2 license.\n\nThanks\n======\n\nThe library development is sponsored by DataRobot (https://datarobot.com)\n\n.. _asyncio: https://docs.python.org/3/library/asyncio.html\n\nChanges\n=======\n\n0.4.0 (2018-07-28)\n------------------\n\n- Add ``py.typed`` macro #89\n\n- Drop python 3.4 support and fix minimal version python3.5.3 #88\n\n- Add property with that indicates if queue is closed #86\n\n0.3.2 (2018-07-06)\n------------------\n\n- Fixed python 3.7 support #97\n\n0.3.1 (2018-01-30)\n------------------\n\n- Fixed bug with join() in case tasks are added by sync_q.put() #75\n\n0.3.0 (2017-02-21)\n------------------\n\n- Expose `unfinished_tasks` property #34\n\n0.2.4 (2016-12-05)\n------------------\n\n- Restore tarball deploying\n\n0.2.3 (2016-07-12)\n------------------\n\n- Fix exception type\n\n0.2.2 (2016-07-11)\n------------------\n\n- Update asyncio.async() to use asyncio.ensure_future() #6\n\n0.2.1 (2016-03-24)\n------------------\n\n- Fix `python setup.py test` command #4\n\n0.2.0 (2015-09-20)\n------------------\n\n- Support Python 3.5\n\n0.1.5 (2015-07-24)\n------------------\n\n- Use loop.time() instead of time.monotonic()\n\n0.1.1 (2015-06-12)\n------------------\n\n- Fix some typos in README and setup.py\n\n- Add addtional checks for loop closing\n\n- Mention DataRobot\n\n0.1.0 (2015-06-11)\n------------------\n\n- Initial release\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/aio-libs/janus/", "keywords": "", "license": "Apache 2", "maintainer": "", "maintainer_email": "", "name": "janus", "package_url": "https://pypi.org/project/janus/", "platform": "", "project_url": "https://pypi.org/project/janus/", "project_urls": { "Homepage": "https://github.com/aio-libs/janus/" }, "release_url": "https://pypi.org/project/janus/0.4.0/", "requires_dist": null, "requires_python": ">=3.5.3", "summary": "Mixed sync-async queue to interoperate between asyncio tasks and classic threads", "version": "0.4.0" }, "last_serial": 4111389, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "017f7cc99032a27a574154e88088183b", "sha256": "e99c6e3d2737d4446668ecc02670c38a3cef4d34bf347c5bff49a66b21dd20b2" }, "downloads": -1, "filename": "janus-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "017f7cc99032a27a574154e88088183b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6838, "upload_time": "2015-06-11T11:51:21", "url": "https://files.pythonhosted.org/packages/a7/d8/e0e4335f06ba04e812aa8cc7a480768cdc9758355e4b73cc711bb566b02a/janus-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d874a866f512060e28b70ba8564b9230", "sha256": "3a96430ef47c44f6925c5d17b4a948ab6e7e5203bdc094e690f653033ff9c80a" }, "downloads": -1, "filename": "janus-0.0.1.tar.gz", "has_sig": false, "md5_digest": "d874a866f512060e28b70ba8564b9230", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5662, "upload_time": "2015-06-11T11:51:25", "url": "https://files.pythonhosted.org/packages/e3/c3/bc2240ddc59a187a47affdcdeeac1c0d777b60b8a12142d49fe27bae95db/janus-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "17390b2a400b4512406edca184966278", "sha256": "1e45e4c9015c34f10d9512351b0a4f67de8ea696b0a28bea4444923a72b68496" }, "downloads": -1, "filename": "janus-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "17390b2a400b4512406edca184966278", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7162, "upload_time": "2015-06-11T21:46:56", "url": "https://files.pythonhosted.org/packages/98/ea/0d8582422a430b3940b1b12655ec384cc63b8df53d18b9d80c2cffaf879f/janus-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1977d206f1a1082cf7aa3558ce639d44", "sha256": "651831e2f7f8f54a9cb19bcbdeeb64b8dc15126827054f6cf18fee3539c634a7" }, "downloads": -1, "filename": "janus-0.0.2.tar.gz", "has_sig": false, "md5_digest": "1977d206f1a1082cf7aa3558ce639d44", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5857, "upload_time": "2015-06-11T21:47:01", "url": "https://files.pythonhosted.org/packages/f3/ca/6fa306d93c9499e70eda3c0c174cab62d7a050dbccb2223b5d64d516f035/janus-0.0.2.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "f295a53309142ca52eecfa182db9203d", "sha256": "b55c1dae43cc20267cd455253c2d9a982598c725bd7b0e27f37b538353e6bfc5" }, "downloads": -1, "filename": "janus-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "f295a53309142ca52eecfa182db9203d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7156, "upload_time": "2015-06-22T13:23:58", "url": "https://files.pythonhosted.org/packages/42/b0/ed154319bff7007e4275e69808a6a3e33605d077415b15e312594c504769/janus-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fa897d940db4b62fae7d251b60a99a20", "sha256": "0b0a787b878ccde67aad8f6569230555090a1016d40b57bd35053998a9481dbf" }, "downloads": -1, "filename": "janus-0.1.4.tar.gz", "has_sig": false, "md5_digest": "fa897d940db4b62fae7d251b60a99a20", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5862, "upload_time": "2015-06-22T13:24:02", "url": "https://files.pythonhosted.org/packages/48/c2/0c709d81521f574255486ad15168fc70cc380eaafc67aae2245188aa9893/janus-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "d24a41adf4c4db2d90d0c671dba6a751", "sha256": "641d7a4c6ef5596c349b1c19abb48c1b8a55a3e35b49062cfb4053be40240b93" }, "downloads": -1, "filename": "janus-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "d24a41adf4c4db2d90d0c671dba6a751", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7162, "upload_time": "2015-07-24T10:54:26", "url": "https://files.pythonhosted.org/packages/ae/a6/3eccf6a82db824fb071c8ffc3cbb8b92a099f99cd20c8a49829002e6bfca/janus-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "225c5d2e5c79a56efaf9b192737299db", "sha256": "0ad8372e065ad587ee52d43a10b90db581601b9d595cf5e735bc604ba1cb22b6" }, "downloads": -1, "filename": "janus-0.1.5.tar.gz", "has_sig": false, "md5_digest": "225c5d2e5c79a56efaf9b192737299db", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5939, "upload_time": "2015-07-24T10:54:29", "url": "https://files.pythonhosted.org/packages/9c/c1/113fcc9c39a20738b6727e0f3dde4495575677ac81defd49c4498380ff31/janus-0.1.5.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "248299871d654bf73c5e3d4c034826fb", "sha256": "edadab771a7137293aa68a45eb31a855b6015ee546c1db3ac4ebcb1a13fd974f" }, "downloads": -1, "filename": "janus-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "248299871d654bf73c5e3d4c034826fb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7252, "upload_time": "2015-09-20T00:34:17", "url": "https://files.pythonhosted.org/packages/25/89/e6a1d0b6ea108f8137711ed361c94b3a3b6e5e9f16aaad1153c2d4881be6/janus-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dc075225a3aabb51de75fba575e76b24", "sha256": "98e8c6c734d5809430a289cd79e664829a3b43f10fd296b6227204e5174e7321" }, "downloads": -1, "filename": "janus-0.2.0.tar.gz", "has_sig": false, "md5_digest": "dc075225a3aabb51de75fba575e76b24", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17060, "upload_time": "2015-09-20T00:34:27", "url": "https://files.pythonhosted.org/packages/ae/64/1d1ad91e4d7ff5adae88bed0f3ddbb3f2ea8dd57649028dd38af9d882d03/janus-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "ae29b9e24ffafc7d025321a9b6fd972f", "sha256": "46048a562222507d3279589f72d5e5582461483039e932151aecfcecb894258f" }, "downloads": -1, "filename": "janus-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ae29b9e24ffafc7d025321a9b6fd972f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7316, "upload_time": "2016-03-24T12:08:49", "url": "https://files.pythonhosted.org/packages/7e/87/1560cc5f1c60c57079fa31a776918cdf97a4461b785ebe6be29e62e24dd3/janus-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6da0224d59ac6f3d73610fbcf20fb9b9", "sha256": "332c782828440485cf6c26021faabd27887713480e12ee9013a258c7a068febd" }, "downloads": -1, "filename": "janus-0.2.1.tar.gz", "has_sig": false, "md5_digest": "6da0224d59ac6f3d73610fbcf20fb9b9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15863, "upload_time": "2016-03-24T12:09:20", "url": "https://files.pythonhosted.org/packages/96/04/737c77de209858d5b3fec1c4bfcc2e4b151463b620eb7afa647ae4d31a0c/janus-0.2.1.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "d43107d7d03ff1e619760df0a890645b", "sha256": "82012c12c2e506ecc0ef34b6efa5e8987358ab66b16e1504acbc395f231d34ed" }, "downloads": -1, "filename": "janus-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "d43107d7d03ff1e619760df0a890645b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7455, "upload_time": "2016-07-12T08:02:50", "url": "https://files.pythonhosted.org/packages/18/78/48d30d794a851869c5800f36c4fca50611ae55fabe11c88ab012bff2a1fd/janus-0.2.3-py3-none-any.whl" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "4709a9e93746c6da79e742f045c8ebb7", "sha256": "d7416707317b58f725e885845496dad63a581da8f3ebcedbb41c084b0912181d" }, "downloads": -1, "filename": "janus-0.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "4709a9e93746c6da79e742f045c8ebb7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8100, "upload_time": "2016-12-05T21:19:24", "url": "https://files.pythonhosted.org/packages/6d/b2/9b4a85c380264f0aca717acc98b5b62f5c13576b4dc13073320f6715a94b/janus-0.2.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3dcf60d3a1b28c49b70d667f1015f5d3", "sha256": "e6885efbe87b40ec235cd73becb20dde965a2efb0a3f53544159add7d102d3f7" }, "downloads": -1, "filename": "janus-0.2.4.tar.gz", "has_sig": false, "md5_digest": "3dcf60d3a1b28c49b70d667f1015f5d3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17271, "upload_time": "2016-12-05T21:19:26", "url": "https://files.pythonhosted.org/packages/b7/b5/2226831b6be4ad134138fbeb059984602fcf976cacdd26f783ce56d0e37f/janus-0.2.4.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "49716594748508e23b6a83e1e65726cc", "sha256": "1a6b1d1e521a91fcaf3e064b65d0ae133dd6d3dc8102e49a86ada25c6286dd48" }, "downloads": -1, "filename": "janus-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "49716594748508e23b6a83e1e65726cc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8194, "upload_time": "2017-02-22T02:49:39", "url": "https://files.pythonhosted.org/packages/5f/81/231bd92a8f74d99c936ef5d916f87884444d59a7483a3529cedfcec38d5b/janus-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b5dea5b88eaef043d686a533fd2c1f5a", "sha256": "512664f442f31c9559a3d162e63c5a9b1f146b3e9b9e3442f9b4791284347b21" }, "downloads": -1, "filename": "janus-0.3.0.tar.gz", "has_sig": false, "md5_digest": "b5dea5b88eaef043d686a533fd2c1f5a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17392, "upload_time": "2017-02-22T02:49:41", "url": "https://files.pythonhosted.org/packages/0c/ae/308fe0b5f6babc164913e479bec835f90496136e3c22a6fbbdb00af381f7/janus-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "ababbd92118a6f736da145fc1d580831", "sha256": "ceccb46adc15635b9e33a13ee340d461dc9ce68475f056b20459f9715baf064e" }, "downloads": -1, "filename": "janus-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ababbd92118a6f736da145fc1d580831", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8819, "upload_time": "2018-01-30T21:52:36", "url": "https://files.pythonhosted.org/packages/21/07/0b7f5ecb654e783ed8c9f603185917f3c35431b98784d81d858ec9f70e79/janus-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "884b26551b1102caae8da315829460cd", "sha256": "c8d48023096a961b673cf5a1b49ba79810cb29e5fbc4dab478522e79ee7424b7" }, "downloads": -1, "filename": "janus-0.3.1.tar.gz", "has_sig": false, "md5_digest": "884b26551b1102caae8da315829460cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18164, "upload_time": "2018-01-30T21:52:37", "url": "https://files.pythonhosted.org/packages/2b/85/6a09cd7afa4e327050f4b94147e92a05e2800fef01a4120dbdda88f03c0f/janus-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "51371ceae7858b8b392a0a66a092d20b", "sha256": "e763ab580580010862ffeec49dbe5c1fee232d361994fd43fb11c13cbb527594" }, "downloads": -1, "filename": "janus-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "51371ceae7858b8b392a0a66a092d20b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6730, "upload_time": "2018-07-06T20:10:00", "url": "https://files.pythonhosted.org/packages/3e/4c/d7d25bd2cddd5298291622dc6e19fd8c23a833255fe53bfa40f1349ba53f/janus-0.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c877ce8fa03cbefcdfdb76ee03c8f01a", "sha256": "a90e86b4ac848d0608700713ed671bf8d9adc6f9ecbcabfab0f5cd95b869e274" }, "downloads": -1, "filename": "janus-0.3.2.tar.gz", "has_sig": false, "md5_digest": "c877ce8fa03cbefcdfdb76ee03c8f01a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18199, "upload_time": "2018-07-06T20:10:01", "url": "https://files.pythonhosted.org/packages/ec/6d/74e1a36758617a9ecfa023f08e2c7f596e640c91c37c70db8d8aec752066/janus-0.3.2.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "d12cb49d2630eb425c07db5fdb3b9237", "sha256": "86878806559274376b83193bfd992ad94576d1024ddfc69cf1a908bf20d6b37d" }, "downloads": -1, "filename": "janus-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d12cb49d2630eb425c07db5fdb3b9237", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5.3", "size": 6984, "upload_time": "2018-07-28T10:31:58", "url": "https://files.pythonhosted.org/packages/1d/9e/e52b01cca283a6b75e817cb85121ad921a70d129581d89190ef584296180/janus-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "26283b122439fbca4ae1db18ff839b7c", "sha256": "cfc221683160b91b35bae1917e2957b78dad10a2e634f4f8ed119ed72e2a88ef" }, "downloads": -1, "filename": "janus-0.4.0.tar.gz", "has_sig": false, "md5_digest": "26283b122439fbca4ae1db18ff839b7c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.3", "size": 18594, "upload_time": "2018-07-28T10:31:59", "url": "https://files.pythonhosted.org/packages/e2/39/41fd545b99eac81d47fe346b8c78c09a3b187ce2fd9f3c9656dfe035e39a/janus-0.4.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d12cb49d2630eb425c07db5fdb3b9237", "sha256": "86878806559274376b83193bfd992ad94576d1024ddfc69cf1a908bf20d6b37d" }, "downloads": -1, "filename": "janus-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d12cb49d2630eb425c07db5fdb3b9237", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5.3", "size": 6984, "upload_time": "2018-07-28T10:31:58", "url": "https://files.pythonhosted.org/packages/1d/9e/e52b01cca283a6b75e817cb85121ad921a70d129581d89190ef584296180/janus-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "26283b122439fbca4ae1db18ff839b7c", "sha256": "cfc221683160b91b35bae1917e2957b78dad10a2e634f4f8ed119ed72e2a88ef" }, "downloads": -1, "filename": "janus-0.4.0.tar.gz", "has_sig": false, "md5_digest": "26283b122439fbca4ae1db18ff839b7c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.3", "size": 18594, "upload_time": "2018-07-28T10:31:59", "url": "https://files.pythonhosted.org/packages/e2/39/41fd545b99eac81d47fe346b8c78c09a3b187ce2fd9f3c9656dfe035e39a/janus-0.4.0.tar.gz" } ] }