{ "info": { "author": "Authentise, Inc.", "author_email": "engineering@authentise.com", "bugtrack_url": null, "classifiers": [], "description": "Eventbus\n========\n\nA library for dealing with getting arbitrary events moving throughout the system\n\nChangelog\n=========\n\n3.17\n----\nAdd the ebosia.sync.start_pump function\n\nThis function will continually push events into the eventbus at a steady interval to ensure\nthat the connection stays alive. This is to fight Docker Swarm's VIP policy that closes\ndown connections with no data traveling across them\n\n3.16\n----\nLoosen up requirements for dev dependencies\n\n3.15\n----\nUpdate to our own aioamqp to get the fix we need for disconnection errors in Python 3.5\n\n3.14 & 3.13 & 3.12\n------------------\nAttempt to bypass a problem with aioamqp https://github.com/Polyconseil/aioamqp/issues/139\n\n3.11\n----\nDon't use release 3.10, it will never ack messages. This is fixed in 3.11\n\n3.10\n----\nAdd require_ack parameter to async subscribe.\n\nI need this for windows so that we can test how to not loose messages\n\n3.9\n---\nRemove ConnectionClosed error from async and never raise it. Instead we want to just loop and attempt to reconnect as normal.\nIf your code is expecting ConnectionClosed in ebosia.async, it will no longer be present, don't use it\n\n3.8\n---\nNow when connecting to RabbitMQ the process will loop indefinitely allowing RabbitMQ to come up. This is for our containerized environments where all containers start at the same time and we don't want containers to fail just because they started first and faster\n\nAlso this bumps up our dependency on aioamqp to the lates (0.8.2) to get some fixes around heartbeats\n\n3.7\n---\nBe less dramatic about failure to sync.publish. Instead of an exception-like error log we emit a warning. If we fail all the way we'll emit a proper exception\n\n3.6\n---\n3.5 is a bad tag, don't use it, don't download it. It has a pdb.set_trace in the setup.py...\n\n3.5\n---\nAdd async publishing and a bridge to allow async code to correct call ebosia.sync.publish. It's wild and wacky, but it should work\n\n3.4\n---\nFix bug with nesting event publishes inside event subscriptions when testing\n\n3.3\n---\nAutomatically serialize UUIDs and datetimes. This means that you can be less careful about what you push through ebosia. No\nI don't currently support a custom formatter, sorry, send me a PR\n\n3.2\n---\nAllow more control when subscribing like specifying the durability and exclusivity. This can be useful for making exchanges\nand queues that last longer than the connection to the client\n\n3.1\n---\nAllow eventbus fixture's published() function to not specify the payload. This is nice if your code emits very large or very complex events\nand you don't want to have to fully check that payload in every test\n\n3.0\n---\nRename the package to ebosia so that I can publish on PyPI\n\n2.3\n---\nFix synchronous subscription. I had broken it in some previous update\n\n2.2\n---\nAllow publishing enums as event topics. This modifies the default JSON serializer a bit so that it attempts to\nconvert anything passed through to a string which is nice for items coming out of a database\n\n2.1\n---\nAutomatically retry on connection failure when synchronously publishing. Also fix the sync-emitter script. And include it on installation\n\n2.0\n---\nUpdate kombo package to 3.0.34\n\n1.9\n---\nMake heartbeat default to 60 seconds but configurable to whatever you want\n\n1.8\n---\n\nAdd default heartbeat for async connections of 60 seconds.\n\n1.7\n---\n\nAdd reconnect logic for async subscribers. Subscribers now need to supply `on_reconnect` when calling `connect`. `on_reconnect` should be a coroutine that sets up the subscriptions whenever a reconnection is made\n\n1.6\n---\n\nMake the connection stateful in the global state. Whenever a connection is made we'll keep it in a global location so that clients can get it via ebosia.get(). This means a client doesn't need to pass the connection around everywhere\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "ebosia", "package_url": "https://pypi.org/project/ebosia/", "platform": "", "project_url": "https://pypi.org/project/ebosia/", "project_urls": null, "release_url": "https://pypi.org/project/ebosia/3.18/", "requires_dist": null, "requires_python": "", "summary": "A library for getting events throughout the system", "version": "3.18" }, "last_serial": 3219352, "releases": { "3.0": [ { "comment_text": "", "digests": { "md5": "d809232e5d131eee7947ae84847543e3", "sha256": "5a751fdb4213fed535409636caefef9441d980fbf7166f420b0905e6e8292a6f" }, "downloads": -1, "filename": "ebosia-3.0.tar.gz", "has_sig": false, "md5_digest": "d809232e5d131eee7947ae84847543e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6066, "upload_time": "2016-11-12T17:27:18", "url": "https://files.pythonhosted.org/packages/f5/61/2b1573af8a32ae14e5ed35979101127d16ab68e76bdffd383cbbb1c73cb1/ebosia-3.0.tar.gz" } ], "3.0.post2": [ { "comment_text": "", "digests": { "md5": "762a8b9a2b4c23bb7b806f2cbcf79e19", "sha256": "bd0ea644bc2aad3e9bc3c22cd5fa97b7fcfe26f8d6f296117aa8c1ec70985a5b" }, "downloads": -1, "filename": "ebosia-3.0.post2.tar.gz", "has_sig": false, "md5_digest": "762a8b9a2b4c23bb7b806f2cbcf79e19", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6223, "upload_time": "2016-11-27T04:59:59", "url": "https://files.pythonhosted.org/packages/d6/42/5f8f8c2b2d1c3b48d7b53b1b81a22d8029d3367bab9c8d99643c75428051/ebosia-3.0.post2.tar.gz" } ], "3.0.post3": [ { "comment_text": "", "digests": { "md5": "e97a70a466532debdb58e150ee29ffa6", "sha256": "0d3b88de42047901484e681b1d0a0d24a08e86b329e6265aef2e42d2a8cc1e07" }, "downloads": -1, "filename": "ebosia-3.0.post3.tar.gz", "has_sig": false, "md5_digest": "e97a70a466532debdb58e150ee29ffa6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6227, "upload_time": "2016-11-27T05:00:24", "url": "https://files.pythonhosted.org/packages/06/9c/b7f10eaa39ef341c0c174fc4bff166194fc0b0b87224e4c786c845696cee/ebosia-3.0.post3.tar.gz" } ], "3.1": [ { "comment_text": "", "digests": { "md5": "733936882717c9531577cda867d9d9f5", "sha256": "f2f5cec8a79c6a1186dd8ef46fa6672ddfe214ef20e3e4be068bc1fe39057258" }, "downloads": -1, "filename": "ebosia-3.1.tar.gz", "has_sig": false, "md5_digest": "733936882717c9531577cda867d9d9f5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6206, "upload_time": "2016-11-27T05:00:59", "url": "https://files.pythonhosted.org/packages/3c/e6/ea45d3435928bd366416793158ff86757f0a4f1d37fc83d7f6799239d0fb/ebosia-3.1.tar.gz" } ], "3.1.post1": [ { "comment_text": "", "digests": { "md5": "65a9489f140e38f7ebeeee6a1a3642a7", "sha256": "2a6707461fb311212f3772877024ebaf1ad7aa91f1bd84f61d424b20df76c82f" }, "downloads": -1, "filename": "ebosia-3.1.post1.tar.gz", "has_sig": false, "md5_digest": "65a9489f140e38f7ebeeee6a1a3642a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6279, "upload_time": "2016-12-14T00:29:01", "url": "https://files.pythonhosted.org/packages/58/5c/04bba68a0e67d35e7dbbc6ac1292c479cc59f208726d6c146baaa374a0fc/ebosia-3.1.post1.tar.gz" } ], "3.1.post2": [ { "comment_text": "", "digests": { "md5": "644028f167bea6c46f947235230fceac", "sha256": "172665d1eaea6f6b8601d44762a57ad91312786240188318d37876e926b1999e" }, "downloads": -1, "filename": "ebosia-3.1.post2.tar.gz", "has_sig": false, "md5_digest": "644028f167bea6c46f947235230fceac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6277, "upload_time": "2016-12-14T15:41:33", "url": "https://files.pythonhosted.org/packages/e8/9d/ea8298be93096fa35ea20c2ed0f34b8ede214c7219742c9180094f6db24f/ebosia-3.1.post2.tar.gz" } ], "3.10": [ { "comment_text": "", "digests": { "md5": "bbe5f71f26b06a99374abdc51124dd2f", "sha256": "5c4a281a266eb5753a9c19c23bde300961704c4b49e0bcfb06a88c13068d809f" }, "downloads": -1, "filename": "ebosia-3.10.tar.gz", "has_sig": false, "md5_digest": "bbe5f71f26b06a99374abdc51124dd2f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8305, "upload_time": "2017-02-23T15:57:28", "url": "https://files.pythonhosted.org/packages/5c/08/44c92269ffb86f96fc72d954152a3b97f3fb9b7383f54366c752c11f1747/ebosia-3.10.tar.gz" } ], "3.11": [ { "comment_text": "", "digests": { "md5": "0fcc77839234db93e840bf9a8b5dfe97", "sha256": "354efa5bdc6a1952f3af3b3c552bce14272f8544378b104718ac1bc5aca67368" }, "downloads": -1, "filename": "ebosia-3.11.tar.gz", "has_sig": false, "md5_digest": "0fcc77839234db93e840bf9a8b5dfe97", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8365, "upload_time": "2017-02-23T16:19:11", "url": "https://files.pythonhosted.org/packages/fb/51/c21f49161430a683a80962983d204c7131dfd169ea70470ff1aa802ab66a/ebosia-3.11.tar.gz" } ], "3.12": [ { "comment_text": "", "digests": { "md5": "36c67d735443ffc80d8045f8c1dce18a", "sha256": "a14c9e573e29a9e8f63cce5c0381c042279778891f3861121ab3440204c2805c" }, "downloads": -1, "filename": "ebosia-3.12.tar.gz", "has_sig": false, "md5_digest": "36c67d735443ffc80d8045f8c1dce18a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8552, "upload_time": "2017-04-18T21:27:37", "url": "https://files.pythonhosted.org/packages/cf/70/73a131ae0d50ca65d4344bb0b339ed8a3286028026e4de367b2a08e53683/ebosia-3.12.tar.gz" } ], "3.13": [ { "comment_text": "", "digests": { "md5": "7ec95f27d6f0f9b1078702213bfa6c7c", "sha256": "e01d0cf5f3344d5936e6e092548fb8237c8d1ea770777ccbebf55e1d968ef2e8" }, "downloads": -1, "filename": "ebosia-3.13.tar.gz", "has_sig": false, "md5_digest": "7ec95f27d6f0f9b1078702213bfa6c7c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8618, "upload_time": "2017-04-19T15:29:34", "url": "https://files.pythonhosted.org/packages/20/77/aff5125051daf7ba1a607b26c3d18a4451df54a792fcb6aa210f55425522/ebosia-3.13.tar.gz" } ], "3.14": [ { "comment_text": "", "digests": { "md5": "fe109cea850ec67875b3ce7a4509df9b", "sha256": "f8e01433989d1071008f90e3675730a2526d9e9e2d986151265a8e3b2ba24ed5" }, "downloads": -1, "filename": "ebosia-3.14.tar.gz", "has_sig": false, "md5_digest": "fe109cea850ec67875b3ce7a4509df9b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8610, "upload_time": "2017-04-19T18:15:56", "url": "https://files.pythonhosted.org/packages/c8/33/438af91c9d8f47be3e891978f6630a263fd8623240d8adc64fc257348d02/ebosia-3.14.tar.gz" } ], "3.15": [ { "comment_text": "", "digests": { "md5": "474ed55d279389b2258e5e45caba690e", "sha256": "c1a305b586e18a4d973da5dc57bc4accd74bc8cfd96272bef48f4db852b2eb79" }, "downloads": -1, "filename": "ebosia-3.15.tar.gz", "has_sig": false, "md5_digest": "474ed55d279389b2258e5e45caba690e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8537, "upload_time": "2017-09-07T21:10:07", "url": "https://files.pythonhosted.org/packages/f5/3c/5f3a73663608165fe9a0629d3287e6455dca31dc9f51366e7a1db6337ca2/ebosia-3.15.tar.gz" } ], "3.16": [ { "comment_text": "", "digests": { "md5": "826ca52f8c4bdd94fd8de8548760fce0", "sha256": "4680a2ebc67ee4d927cf8073e42a22343cb0f99466b7058f1616a2899eb3a24c" }, "downloads": -1, "filename": "ebosia-3.16.tar.gz", "has_sig": false, "md5_digest": "826ca52f8c4bdd94fd8de8548760fce0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8587, "upload_time": "2017-09-26T22:50:28", "url": "https://files.pythonhosted.org/packages/ff/9a/a10762e4ad5a53e983449915e988f4aa4ef4c9802583d32f58b037b446b3/ebosia-3.16.tar.gz" } ], "3.17": [ { "comment_text": "", "digests": { "md5": "b60ffb85b0470999820ad18d8947ec83", "sha256": "ae689b015c2c943218d6870d959a4aae709f30bca707f79cc7623aec721e813c" }, "downloads": -1, "filename": "ebosia-3.17.tar.gz", "has_sig": false, "md5_digest": "b60ffb85b0470999820ad18d8947ec83", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9460, "upload_time": "2017-09-27T16:15:46", "url": "https://files.pythonhosted.org/packages/b5/a9/9e6aaf73ee4737ad8aec8cd9d3a142512066c898ac7433034ff87b7df46f/ebosia-3.17.tar.gz" } ], "3.18": [ { "comment_text": "", "digests": { "md5": "7d86e34e67dca2a62af27b38aa1ea82b", "sha256": "92980bcb284fb795417c53f713ec873a9d4d57f6344f195e2e6f6a5c111150c6" }, "downloads": -1, "filename": "ebosia-3.18.tar.gz", "has_sig": false, "md5_digest": "7d86e34e67dca2a62af27b38aa1ea82b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9635, "upload_time": "2017-10-02T14:45:24", "url": "https://files.pythonhosted.org/packages/3a/92/ef62b2f53d63f5817120a8c562046bcd6ace273ac1e4fc78c6b7521b6d53/ebosia-3.18.tar.gz" } ], "3.2": [ { "comment_text": "", "digests": { "md5": "376c5f2349bbb4190f9fe46f7db688b4", "sha256": "cb6e7600489d91648fedb2b0d5dbd54dd359336c63a55a6b78e49141cb97e96e" }, "downloads": -1, "filename": "ebosia-3.2.tar.gz", "has_sig": false, "md5_digest": "376c5f2349bbb4190f9fe46f7db688b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6353, "upload_time": "2016-12-14T17:43:50", "url": "https://files.pythonhosted.org/packages/91/b3/f61c433679b4465f1ffd9be034c5ed947771cfeeb51d2627e5a35b1e1bf6/ebosia-3.2.tar.gz" } ], "3.2.post7": [ { "comment_text": "", "digests": { "md5": "3b5c83df85f4ac1c3dbb80e469a5a4cd", "sha256": "f7c0a0540cc9b6027e60219779173a39cae88aa13f737bff303262b1c0c735bd" }, "downloads": -1, "filename": "ebosia-3.2.post7.tar.gz", "has_sig": false, "md5_digest": "3b5c83df85f4ac1c3dbb80e469a5a4cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6607, "upload_time": "2017-01-13T21:52:20", "url": "https://files.pythonhosted.org/packages/54/64/5c17151eb47a422b69dbce62678205d544ec9988469b4d8f1f72a1e51953/ebosia-3.2.post7.tar.gz" } ], "3.3": [ { "comment_text": "", "digests": { "md5": "9a10b76815310507e9e514c3cab0a8de", "sha256": "7e6a14ffe50555436adcc0da263da34c1b8eae48eb3513f84c08adb16a5c59b7" }, "downloads": -1, "filename": "ebosia-3.3.tar.gz", "has_sig": false, "md5_digest": "9a10b76815310507e9e514c3cab0a8de", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6591, "upload_time": "2017-01-13T21:53:33", "url": "https://files.pythonhosted.org/packages/be/41/5d1eb820370ab31f3c2739dd0dbf4c5b5b6a44eb539b311cb03b4030cef7/ebosia-3.3.tar.gz" } ], "3.3.post3": [ { "comment_text": "", "digests": { "md5": "4aa2bb85b2768082b7eed1726e1a2484", "sha256": "ce058f20d0ba95f135dd71316e04b07c31c48169a730105c134c67bf07b708f8" }, "downloads": -1, "filename": "ebosia-3.3.post3.tar.gz", "has_sig": false, "md5_digest": "4aa2bb85b2768082b7eed1726e1a2484", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6659, "upload_time": "2017-01-13T22:34:54", "url": "https://files.pythonhosted.org/packages/67/84/80b65f8763e2181004de4af28a6e08b4d89f18cdfd52bd62a6e1c97853dd/ebosia-3.3.post3.tar.gz" } ], "3.3.post4": [ { "comment_text": "", "digests": { "md5": "744d85bdc1744edebb0d5794fac05309", "sha256": "d0dd2956211f390ff75a5938e0646975f6044c0d7525e498f8d0d1014e088e61" }, "downloads": -1, "filename": "ebosia-3.3.post4.tar.gz", "has_sig": false, "md5_digest": "744d85bdc1744edebb0d5794fac05309", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6656, "upload_time": "2017-01-13T22:35:16", "url": "https://files.pythonhosted.org/packages/f3/65/e832c4b3bc935dec3fbf0a8b31f3c410a7012d9703a09ee1d2a303419181/ebosia-3.3.post4.tar.gz" } ], "3.3.post5": [ { "comment_text": "", "digests": { "md5": "36927f49b67124217de5e802c402abe6", "sha256": "d6368812b72f71a732708e2ba84acde7805a12c19284705373421d2726b1358c" }, "downloads": -1, "filename": "ebosia-3.3.post5.tar.gz", "has_sig": false, "md5_digest": "36927f49b67124217de5e802c402abe6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6659, "upload_time": "2017-01-13T22:35:53", "url": "https://files.pythonhosted.org/packages/42/8e/b4a2fec3f5ca60e78f8299d4afffcc424c4b7348ca27544cbcd184bac155/ebosia-3.3.post5.tar.gz" } ], "3.4": [ { "comment_text": "", "digests": { "md5": "a07540f839a87780afcadb81fe6caeb2", "sha256": "6f3f7d6d8cacb46f4cfda835ec3e2aa7a1acbb2cb9a42c08bd2f6f8c316ac6fd" }, "downloads": -1, "filename": "ebosia-3.4.tar.gz", "has_sig": false, "md5_digest": "a07540f839a87780afcadb81fe6caeb2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6646, "upload_time": "2017-01-13T22:36:04", "url": "https://files.pythonhosted.org/packages/30/72/3bce7e23d1c662a9f11c409829d93af916aa84495249360afafa81951d67/ebosia-3.4.tar.gz" } ], "3.5": [ { "comment_text": "", "digests": { "md5": "948c35d1877b78b9bd98103a8619ce6c", "sha256": "be360a529e6ce737e17e7eb423f183eaf951ddba37810d1a67ad771666c3132e" }, "downloads": -1, "filename": "ebosia-3.5.tar.gz", "has_sig": false, "md5_digest": "948c35d1877b78b9bd98103a8619ce6c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7271, "upload_time": "2017-01-14T12:58:45", "url": "https://files.pythonhosted.org/packages/a8/1f/fcbc9e5f18e7bdbfdc0f8342be5f94dce61224aa7d22c830632410d8b3af/ebosia-3.5.tar.gz" } ], "3.6": [ { "comment_text": "", "digests": { "md5": "0d3cc2bb00afea64f71beaa3ed5f8f9d", "sha256": "9d1ef3d06077f8d0c22b329c38eca606c165edb5a6c463fb2b1aee95b42bad55" }, "downloads": -1, "filename": "ebosia-3.6.tar.gz", "has_sig": false, "md5_digest": "0d3cc2bb00afea64f71beaa3ed5f8f9d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7314, "upload_time": "2017-01-14T13:28:41", "url": "https://files.pythonhosted.org/packages/99/88/b004c12bc9636046b92b22cd6ae882f9492254ba012fe0170a75c6b13b1b/ebosia-3.6.tar.gz" } ], "3.7": [ { "comment_text": "", "digests": { "md5": "a4f76d96ca1c94b49da044e02e3a0da2", "sha256": "415f48815666feb941e68950278af61b49e377da44a16752ac751384e7f245e6" }, "downloads": -1, "filename": "ebosia-3.7.tar.gz", "has_sig": false, "md5_digest": "a4f76d96ca1c94b49da044e02e3a0da2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7398, "upload_time": "2017-02-01T23:58:37", "url": "https://files.pythonhosted.org/packages/a8/2b/949e3cd33def9e266553e6262bbabcdf95fdfa9860b3de3d470ee607a1c7/ebosia-3.7.tar.gz" } ], "3.8": [ { "comment_text": "", "digests": { "md5": "c805252337a11c70afa040c6a4f69ec7", "sha256": "aa1562af21d66e2b62ce10e482f75ea61c2f3816f9c126d05ddace2d945e1ddf" }, "downloads": -1, "filename": "ebosia-3.8.tar.gz", "has_sig": false, "md5_digest": "c805252337a11c70afa040c6a4f69ec7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8010, "upload_time": "2017-02-09T19:29:39", "url": "https://files.pythonhosted.org/packages/90/cd/19feb1ddaa3c143acf081af5fd24d8e01b1256704c19305e3c73ae47271f/ebosia-3.8.tar.gz" } ], "3.9": [ { "comment_text": "", "digests": { "md5": "265adcfbbf974cf1ab2f43a1c2aeea68", "sha256": "b3c89c361cdca27cfcac37673cf51d409d83d5b5644fce5d3e7d8aeb91d1189a" }, "downloads": -1, "filename": "ebosia-3.9.tar.gz", "has_sig": false, "md5_digest": "265adcfbbf974cf1ab2f43a1c2aeea68", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8209, "upload_time": "2017-02-20T21:24:31", "url": "https://files.pythonhosted.org/packages/e1/16/375fc997db56a583a7c24a0345629c881995b06e2c3439813c630fccad3e/ebosia-3.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7d86e34e67dca2a62af27b38aa1ea82b", "sha256": "92980bcb284fb795417c53f713ec873a9d4d57f6344f195e2e6f6a5c111150c6" }, "downloads": -1, "filename": "ebosia-3.18.tar.gz", "has_sig": false, "md5_digest": "7d86e34e67dca2a62af27b38aa1ea82b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9635, "upload_time": "2017-10-02T14:45:24", "url": "https://files.pythonhosted.org/packages/3a/92/ef62b2f53d63f5817120a8c562046bcd6ace273ac1e4fc78c6b7521b6d53/ebosia-3.18.tar.gz" } ] }