{ "info": { "author": "Managed by Q, Inc.", "author_email": "open-source@managedbyq.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries" ], "description": "# mbq.pubsub\n\n[![PyPI Version](https://img.shields.io/pypi/v/mbq.pubsub.svg)](repo)\n[![PyPI License](https://img.shields.io/pypi/l/mbq.pubsub.svg)](repo)\n[![Python Versions](https://img.shields.io/pypi/pyversions/mbq.pubsub.svg)](repo)\n[![Travis CI Status](https://img.shields.io/travis/managedbyq/mbq.pubsub/master.svg)](repo)\n\n[repo]: https://pypi.python.org/pypi/mbq.pubsub\n\n\n## Installation\n\n```bash\n$ pip install mbq.pubsub\n\ud83d\ude80\u2728\n```\n\nGuaranteed fresh.\n\n## Configuration\n\n```python\n# settings.py\n\nSERVICE_NAME = \"my-service\"\n\nPUBSUB = {\n \"ENV\": mbq.get_environment(\"ENV_NAME\"),\n \"SERVICE\": SERVICE_NAME,\n \"QUEUES\": [\n \"foo-updates\",\n \"bar-updates\",\n ],\n \"MESSAGE_HANDLERS\": {\n \"foo.updated\": \"path.to.handlers.handle_foo_updated\",\n \"bar.updated\": \"path.to.handlers.handle_bar_updated\",\n },\n}\n\nINSTALLED_APPS = {\n ...\n 'mbq.pubsub',\n ...\n}\n```\n\n```yaml\n# convox.yml\n\nservices:\n foo-consumer:\n image: {{DOCKER_IMAGE_NAME}}\n command: newrelic-admin run-python -m manage pubsub consume --queue foo-updates\n init: true\n environment:\n - \"*\"\n\n bar-consumer:\n image: {{DOCKER_IMAGE_NAME}}\n command: newrelic-admin run-python -m manage pubsub consume --queue bar-updates\n init: true\n environment:\n - \"*\"\n```\n\n### Using PubSub Without a Database\n\nIf your service does not have a database - fear not. The Infra team hath taken pity on you and your brethren. \nSimply add the setting `\"USE_DATABASE\": False` to your `PUBSUB` config. \n\nThings to keep in mind:\n- There will be no Django admin for viewing/deleting/replaying DLQ messages. \n- To replay the DLQ use the management command `./manage.py pubsub replay --queue `.\n\n\n### Local Development\n\nAdd `127.0.0.1 pubsub.lcl.mbq.io` to your `/etc/hosts`.\n\nFind the `env/pubsub/lcl.env` Secure Note in 1Password and copy it to `env/lcl.env`.\n\n```sh\n$ pbpaste > env/lcl.env\n```\n\nRun migrations and bring up admin the server:\n\n```sh\n$ docker-compose run tests-admin python -m manage migrate\n$ docker-compose up tests-admin\n```\n\nTo use the Django admin, you'll need a superuser:\n\n```sh\n$ docker-compose run tests-admin python -m manage createsuperuser\n```\n\nTo end-to-end test mbq.pubsub, you can publish a test message from SNS with:\n```sh\n$ docker-compose run tests-admin python -m manage publish_exception\n```\n\nThen bring up the consumer:\n```sh\n$ docker-compose up pubsub-pubsub-consume-updates\n```\n\nThe test message will eventually land on the DLQ, which you can inspect & replay from http://pubsub.lcl.mbq.io:8080/admin/pubsub/undeliverablemessage", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/managedbyq/mbq.pubsub", "keywords": "", "license": "Apache 2.0", "maintainer": "Managed by Q, Inc.", "maintainer_email": "open-source@managedbyq.com", "name": "mbq.pubsub", "package_url": "https://pypi.org/project/mbq.pubsub/", "platform": "", "project_url": "https://pypi.org/project/mbq.pubsub/", "project_urls": { "Homepage": "https://github.com/managedbyq/mbq.pubsub" }, "release_url": "https://pypi.org/project/mbq.pubsub/2.6.2/", "requires_dist": null, "requires_python": "", "summary": "MBQ PubSub", "version": "2.6.2" }, "last_serial": 5514201, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "68bd48f16445ed17fb7b43ae0f1ffbf9", "sha256": "3c5f0f0fc7799ea0037dff4473b6d5615a21e91863b23576bc13dcc64fe3825b" }, "downloads": -1, "filename": "mbq.pubsub-0.0.1.tar.gz", "has_sig": false, "md5_digest": "68bd48f16445ed17fb7b43ae0f1ffbf9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7931, "upload_time": "2019-01-02T18:31:30", "url": "https://files.pythonhosted.org/packages/37/b4/7223cd0b07a576ea07725de158acbd08c1d1a8602efb34efb003129ef127/mbq.pubsub-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "a280cf8b960f872c3e143f64ce90fd66", "sha256": "70e2c1cbf334ef5d7c2e521cf2fdb478dc9362d579f16e41bea975029db42e18" }, "downloads": -1, "filename": "mbq.pubsub-0.0.2.tar.gz", "has_sig": false, "md5_digest": "a280cf8b960f872c3e143f64ce90fd66", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8019, "upload_time": "2019-01-04T16:21:24", "url": "https://files.pythonhosted.org/packages/46/e8/26d727b9ed21d00350d793abada5932554a4d127ee9873b6f546bf85e222/mbq.pubsub-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "012b05782d285ed2460e138a76f6dd12", "sha256": "a0cb2bad3f41913e5c38d6a1bcdf1e99acd25c5c2ed92684cac8ae4e0736c566" }, "downloads": -1, "filename": "mbq.pubsub-0.0.3.tar.gz", "has_sig": false, "md5_digest": "012b05782d285ed2460e138a76f6dd12", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11974, "upload_time": "2019-01-14T23:37:39", "url": "https://files.pythonhosted.org/packages/4d/7c/fb0e6f1cfd57e89f09104e67b8550147ceeab48754d74d4f73594a507b1a/mbq.pubsub-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "61b9314f5565576ca507d18a084962c7", "sha256": "14838c4ada15681f0b7f680e6394c1a400836d7e325334a0e107cc74f907c775" }, "downloads": -1, "filename": "mbq.pubsub-0.0.4.tar.gz", "has_sig": false, "md5_digest": "61b9314f5565576ca507d18a084962c7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11974, "upload_time": "2019-01-15T21:35:31", "url": "https://files.pythonhosted.org/packages/ad/50/d7bf05aaed6ddacfe9769c7c37298b9561ec7be45eb3a640c58169e6559d/mbq.pubsub-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "bcd7eee596a73fe32d04586a62da3afc", "sha256": "2f66322a257a554e5e763c92ff09649614a03624843a91f51ca75955935e6d41" }, "downloads": -1, "filename": "mbq.pubsub-0.0.5.tar.gz", "has_sig": false, "md5_digest": "bcd7eee596a73fe32d04586a62da3afc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12039, "upload_time": "2019-01-16T19:42:43", "url": "https://files.pythonhosted.org/packages/88/18/e9524fbc56a5492a925fff4f7936d6f98bdccdee68a540f5f502a7258df7/mbq.pubsub-0.0.5.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "7dee725ec38005d0d9770a2c04fe3625", "sha256": "58602619deb5ece36b6c86c0dea0c879c1906d3f57cc641ef30e74dcd380372a" }, "downloads": -1, "filename": "mbq.pubsub-0.1.0.tar.gz", "has_sig": false, "md5_digest": "7dee725ec38005d0d9770a2c04fe3625", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12864, "upload_time": "2019-01-17T17:49:12", "url": "https://files.pythonhosted.org/packages/9c/4c/ae393fef2c9edac8fb2a99c3bf2d131e5989f8fd102b10caa384b86017c3/mbq.pubsub-0.1.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "617a28172a4309e256d85fd0b27e9738", "sha256": "5e7a43962b9f39d3b8b051152760dc3173ef5bef9141f3aaf9d074969d677bcb" }, "downloads": -1, "filename": "mbq.pubsub-1.0.0.tar.gz", "has_sig": false, "md5_digest": "617a28172a4309e256d85fd0b27e9738", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12870, "upload_time": "2019-01-18T18:50:15", "url": "https://files.pythonhosted.org/packages/00/c3/d56485e5a088f6efd1a5d94ac47dd62eec9589a9ac29bba4bbc9751039ab/mbq.pubsub-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "545a813a9d9baf863f3193e4f6c67948", "sha256": "6cd2d2297adee4a6c277dcbea6af0217878e1b9e823c2a43c785b37a0c235f35" }, "downloads": -1, "filename": "mbq.pubsub-1.1.0.tar.gz", "has_sig": false, "md5_digest": "545a813a9d9baf863f3193e4f6c67948", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13271, "upload_time": "2019-02-11T19:46:56", "url": "https://files.pythonhosted.org/packages/b0/4a/42cba0a26594691111c832151101a4b6d60c0d90e920a45a3dafb6120af2/mbq.pubsub-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "26b3136fcbef790fbbfad15a18ac0e9c", "sha256": "c71a1f3a4de6a035e0ec44bb8c02adb49245868c22af62acdf5f053785dea19a" }, "downloads": -1, "filename": "mbq.pubsub-1.2.0.tar.gz", "has_sig": false, "md5_digest": "26b3136fcbef790fbbfad15a18ac0e9c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13429, "upload_time": "2019-02-12T20:53:57", "url": "https://files.pythonhosted.org/packages/1c/99/21b64dfe6ae0c59e7424108fad91b34f813838daf714105d1ebf278f392a/mbq.pubsub-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "8693a98bf7471a67360ee03e0f2311df", "sha256": "f9d337783d91fd4c9ade492e89bbe18f38c6bf2db5167a92705cbb4a9b41ce9a" }, "downloads": -1, "filename": "mbq.pubsub-1.2.1.tar.gz", "has_sig": false, "md5_digest": "8693a98bf7471a67360ee03e0f2311df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13440, "upload_time": "2019-02-12T21:41:49", "url": "https://files.pythonhosted.org/packages/92/dc/75532b9c4dd010133d254936fe07fd3c6d6b9d49c9a03321f428485d627b/mbq.pubsub-1.2.1.tar.gz" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "1525d6d1d91f74ec4b8782f6794cb50c", "sha256": "7b73d116675a5c8bbed2ce7672d7d9c214f1b8208f12e190674cf99aba5af2bc" }, "downloads": -1, "filename": "mbq.pubsub-1.2.2.tar.gz", "has_sig": false, "md5_digest": "1525d6d1d91f74ec4b8782f6794cb50c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13644, "upload_time": "2019-02-19T23:08:20", "url": "https://files.pythonhosted.org/packages/80/a3/a3dd720d17dab4109e510a96f1be4b6c3b04234633091e62b61de0728fd9/mbq.pubsub-1.2.2.tar.gz" } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "3cc409eee7493823cb7b2212e177f386", "sha256": "3db98f1f10f583bc14fcfc6bf5067af8f3a3570eae7f8d2fde780aeead6a4524" }, "downloads": -1, "filename": "mbq.pubsub-1.2.3.tar.gz", "has_sig": false, "md5_digest": "3cc409eee7493823cb7b2212e177f386", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13646, "upload_time": "2019-03-05T21:28:50", "url": "https://files.pythonhosted.org/packages/ee/4c/02f06ada96862bae5dac3b16e14fe02eb0ee965bb0afc3221a08f50d1d20/mbq.pubsub-1.2.3.tar.gz" } ], "1.2.4": [ { "comment_text": "", "digests": { "md5": "dce6d0a7ed32bc1827935af0f6eaa899", "sha256": "ac00e44c8a949392cfa36b3f02f0cc7aef7045f756cf413a6b5f4f0c3fe43d9e" }, "downloads": -1, "filename": "mbq.pubsub-1.2.4.tar.gz", "has_sig": false, "md5_digest": "dce6d0a7ed32bc1827935af0f6eaa899", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13655, "upload_time": "2019-03-05T22:57:15", "url": "https://files.pythonhosted.org/packages/1f/bc/910967bdd71a4518647e00a94cfbba0135dcd6010b673e06d897da60ded1/mbq.pubsub-1.2.4.tar.gz" } ], "1.2.5": [ { "comment_text": "", "digests": { "md5": "2c12e32f413f5ffc0ea2daf5a744f6a9", "sha256": "b481ab259036878c92373c86c5360eed8d2116091a8fbdfe749bcf6ef5178f76" }, "downloads": -1, "filename": "mbq.pubsub-1.2.5.tar.gz", "has_sig": false, "md5_digest": "2c12e32f413f5ffc0ea2daf5a744f6a9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13747, "upload_time": "2019-03-06T22:06:26", "url": "https://files.pythonhosted.org/packages/af/04/4597f403024cb9a22f1ac77cc97a68205857c81c71d9764363527bec8847/mbq.pubsub-1.2.5.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "210e279a807215d556fabcf2fa11559c", "sha256": "4f5f97a277226a7fa77f7429ac097e59fcadfb59b383b7665624a6c89e74ec7b" }, "downloads": -1, "filename": "mbq.pubsub-1.3.0.tar.gz", "has_sig": false, "md5_digest": "210e279a807215d556fabcf2fa11559c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14354, "upload_time": "2019-04-03T19:37:52", "url": "https://files.pythonhosted.org/packages/59/b0/ca05f2ca37ddb5749902cff218c1309952fee54cdec125b7e286209eb72b/mbq.pubsub-1.3.0.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "bc4085f183363a8558c0fa613fad8c63", "sha256": "2a8e52d6b38fa1985f40bc9146556450801a4bf703e2c9286841c059b9347707" }, "downloads": -1, "filename": "mbq.pubsub-1.3.1.tar.gz", "has_sig": false, "md5_digest": "bc4085f183363a8558c0fa613fad8c63", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14344, "upload_time": "2019-04-04T14:48:16", "url": "https://files.pythonhosted.org/packages/ea/75/6f2de2e488261b6642a3f04aa3525d793360c29f0c5712c356187865b98b/mbq.pubsub-1.3.1.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "3e132bf03b50a44f6465d4b2dcb8704b", "sha256": "ffefcd68e5e511e5993618a7edf8b7108ac92635d43f96c40b56ecd156b0d95e" }, "downloads": -1, "filename": "mbq.pubsub-2.0.0.tar.gz", "has_sig": false, "md5_digest": "3e132bf03b50a44f6465d4b2dcb8704b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15352, "upload_time": "2019-04-08T21:13:38", "url": "https://files.pythonhosted.org/packages/60/22/b731e5c7f15d4646da84b737df34d348a96d9cf146e6c7d9dbc6b73c3f10/mbq.pubsub-2.0.0.tar.gz" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "0d3c1f269f8afa2a69205d7c3d80decc", "sha256": "bada925b1839f8c67c01dc188a37f1178b2a687399563cb5151ee4b4060d3d1f" }, "downloads": -1, "filename": "mbq.pubsub-2.1.0.tar.gz", "has_sig": false, "md5_digest": "0d3c1f269f8afa2a69205d7c3d80decc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15734, "upload_time": "2019-04-09T16:48:17", "url": "https://files.pythonhosted.org/packages/94/b8/9e2e75cdb578c06432f6af904bb5679ea791710d92dde71ffd69ca6e94da/mbq.pubsub-2.1.0.tar.gz" } ], "2.1.1": [ { "comment_text": "", "digests": { "md5": "7bbedbc42164676cde63e0ad2d412111", "sha256": "6696203bd21546bbd5125948c004fb09263b58bbb545937e7433ffbd03103284" }, "downloads": -1, "filename": "mbq.pubsub-2.1.1.tar.gz", "has_sig": false, "md5_digest": "7bbedbc42164676cde63e0ad2d412111", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15741, "upload_time": "2019-04-09T20:53:54", "url": "https://files.pythonhosted.org/packages/65/28/fb0dba4d10dc9c6606887fd4859bb21fd640c7634e7450be2b36208d3164/mbq.pubsub-2.1.1.tar.gz" } ], "2.1.2": [ { "comment_text": "", "digests": { "md5": "47a355bb045f4ffa831a033191aeb747", "sha256": "f7363effeda589a9d44e11a3ae8737777d1c10e4a720ff663d9da77bde162fc8" }, "downloads": -1, "filename": "mbq.pubsub-2.1.2.tar.gz", "has_sig": false, "md5_digest": "47a355bb045f4ffa831a033191aeb747", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15727, "upload_time": "2019-04-09T21:06:36", "url": "https://files.pythonhosted.org/packages/f7/5c/57874cf4fb1612fd02f4765df232a119acd2619d0224e0853367ee096f11/mbq.pubsub-2.1.2.tar.gz" } ], "2.2.0": [ { "comment_text": "", "digests": { "md5": "4bd78b3dddcb6ad01dc6801405cdc9d7", "sha256": "357ea4d7291343da18b98b51c44edefb016ee851417c3a5a67ecb36ed2f6c212" }, "downloads": -1, "filename": "mbq.pubsub-2.2.0.tar.gz", "has_sig": false, "md5_digest": "4bd78b3dddcb6ad01dc6801405cdc9d7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15769, "upload_time": "2019-04-10T18:20:38", "url": "https://files.pythonhosted.org/packages/24/76/e5869b8d42ea618c8cc22dc461aa348d5d511f2da02385695effcc7e2188/mbq.pubsub-2.2.0.tar.gz" } ], "2.2.1": [ { "comment_text": "", "digests": { "md5": "e15d00ddaa08ef37860fac33e60e854f", "sha256": "06fc3ddefa144da3982997709757c34fe6a7a6c6d7ff670e0c74d06a1e57509e" }, "downloads": -1, "filename": "mbq.pubsub-2.2.1.tar.gz", "has_sig": false, "md5_digest": "e15d00ddaa08ef37860fac33e60e854f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15881, "upload_time": "2019-04-12T17:58:24", "url": "https://files.pythonhosted.org/packages/65/ca/0d30972377728c7e5edddfdf210a476b68f0f2ded90a7493c9678e76f0c3/mbq.pubsub-2.2.1.tar.gz" } ], "2.3.0": [ { "comment_text": "", "digests": { "md5": "02871a4e3b7e098657a53dbae1eb3e6d", "sha256": "ec1b5e23eeca13fa6f57630a439858929dee15eb230ed972e4b0baa06d53ce23" }, "downloads": -1, "filename": "mbq.pubsub-2.3.0.tar.gz", "has_sig": false, "md5_digest": "02871a4e3b7e098657a53dbae1eb3e6d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16440, "upload_time": "2019-04-16T17:41:21", "url": "https://files.pythonhosted.org/packages/db/99/01523bbbaf77d9937982921567f228181f4dc5c1fa4e0f4645d3d0de4ed2/mbq.pubsub-2.3.0.tar.gz" } ], "2.4.0": [ { "comment_text": "", "digests": { "md5": "3c004dca9b6843a9d033d922b4213807", "sha256": "1dd6f152df3b2e071f01749ce7f206dc928a05b9588db1f6889d9807c779383f" }, "downloads": -1, "filename": "mbq.pubsub-2.4.0.tar.gz", "has_sig": false, "md5_digest": "3c004dca9b6843a9d033d922b4213807", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16676, "upload_time": "2019-04-18T16:33:32", "url": "https://files.pythonhosted.org/packages/db/10/a61b60fee3878f9475fae901011a1ffa72a8d8d6fa691c0331dd6b4d987a/mbq.pubsub-2.4.0.tar.gz" } ], "2.5.0": [ { "comment_text": "", "digests": { "md5": "0f1c96a2f8c2646033cf303bfcdb18e1", "sha256": "fb690a6a78212c3d90f55380896d2bc0f500b8c9f9dc8692fdec9be4492a081e" }, "downloads": -1, "filename": "mbq.pubsub-2.5.0.tar.gz", "has_sig": false, "md5_digest": "0f1c96a2f8c2646033cf303bfcdb18e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16726, "upload_time": "2019-04-22T20:24:32", "url": "https://files.pythonhosted.org/packages/d7/b7/9f7c9c1d2f6777416a43ba13876b12e19aac32b94c465c5bb84bf9384b56/mbq.pubsub-2.5.0.tar.gz" } ], "2.6.0": [ { "comment_text": "", "digests": { "md5": "77797b2627b9b77689c27ddcfe9e9e2e", "sha256": "b68e841883944c09261a69aa2a95598cb0020970cb72b4bf09c2103d68ff3c4b" }, "downloads": -1, "filename": "mbq.pubsub-2.6.0.tar.gz", "has_sig": false, "md5_digest": "77797b2627b9b77689c27ddcfe9e9e2e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17908, "upload_time": "2019-04-25T19:56:35", "url": "https://files.pythonhosted.org/packages/2e/ce/0d83ae15a61b699a5accf72c552e75f21397eba236ed643beacaf02ea918/mbq.pubsub-2.6.0.tar.gz" } ], "2.6.1": [ { "comment_text": "", "digests": { "md5": "28c3607b9aebaea8a41e5b6506247f0b", "sha256": "29b042287e2b18d96add4d77d56c8bd525fc3218b4ee8ddd80c6ffab3b1354ca" }, "downloads": -1, "filename": "mbq.pubsub-2.6.1.tar.gz", "has_sig": false, "md5_digest": "28c3607b9aebaea8a41e5b6506247f0b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17910, "upload_time": "2019-05-06T20:57:56", "url": "https://files.pythonhosted.org/packages/3d/a2/d07b600e69b311459b61d8e07d473ba62ea4163e6da84185242df7f0aa74/mbq.pubsub-2.6.1.tar.gz" } ], "2.6.2": [ { "comment_text": "", "digests": { "md5": "c7b0b0705db820975a77e179bea2bfb8", "sha256": "3f438d6ef0215bf68daa6456532838eabb0f716fab4a241038590b790170d266" }, "downloads": -1, "filename": "mbq.pubsub-2.6.2.tar.gz", "has_sig": false, "md5_digest": "c7b0b0705db820975a77e179bea2bfb8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18178, "upload_time": "2019-07-10T22:00:21", "url": "https://files.pythonhosted.org/packages/88/9e/71a260ab252813be49a71f2fc3df1eb1e247c7bdd438048346c886bef2be/mbq.pubsub-2.6.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c7b0b0705db820975a77e179bea2bfb8", "sha256": "3f438d6ef0215bf68daa6456532838eabb0f716fab4a241038590b790170d266" }, "downloads": -1, "filename": "mbq.pubsub-2.6.2.tar.gz", "has_sig": false, "md5_digest": "c7b0b0705db820975a77e179bea2bfb8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18178, "upload_time": "2019-07-10T22:00:21", "url": "https://files.pythonhosted.org/packages/88/9e/71a260ab252813be49a71f2fc3df1eb1e247c7bdd438048346c886bef2be/mbq.pubsub-2.6.2.tar.gz" } ] }