{ "info": { "author": "Hansel Dunlop", "author_email": "hansel@interpretthis.org", "bugtrack_url": null, "classifiers": [], "description": "Keteparaha\n==========\n\n[![Join the chat at https://gitter.im/aychedee/keteparaha](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/aychedee/keteparaha?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![PyPI version](https://badge.fury.io/py/keteparaha.svg)](http://badge.fury.io/py/keteparaha) [![Build Status](https://travis-ci.org/aychedee/keteparaha.svg)](https://travis-ci.org/aychedee/keteparaha) [![Coverage Status](https://coveralls.io/repos/aychedee/keteparaha/badge.svg?branch=master)](https://coveralls.io/r/aychedee/keteparaha?branch=master)\n\nKeteparaha is a collection of tools to help when functional testing\n\nIt contains utilities that assist with tasks like running a browser in a\nheadless environment, or checking that emails have been sent, or a file has\nbeen uploaded to a server, or common testing flow control like retrying or\nignoring certain errors.\n\n:copyright: (c) 2015 by Hansel Dunlop.\n\n:license: GPLv3, see LICENSE for more details\n\n\nBrowserTestCase\n---------------\n\nA browser test case for testing web applications. Subclass it and call the\n`start_browser` method with the name of the browser you want to test with.\nClosing the browser is handled automatically. For example:\n\n from test_helpers import BrowserTestCase\n\n\n class YourTestCase(BrowserTestCase):\n\n def setUp(self):\n self.browser = self.start_browser(\"Firefox\")\n\n def test_page_loads(self):\n self.browser.get('127.0.0.1:8080')\n\n self.assertIn(\"Hello, World\", self.body_text)\n\n\nHeadlessBrowserTestCase\n-----------------------\n\nRequires XvFB to be installed (`sudo apt-get install xvfb`).\n\nDesigned for testing web applications on a headless server, probably running\nas part of continuous integration. Usage is exactly like the BrowserTestCase\nexcept that you won't see a browser window open, everything should be done\ninside a virtual display.\n\nThe example below would run Firefox inside a virtual display with a width of\n1200px and height of 900px.\n\n from test_helpers import HeadlessBrowserTestCase\n\n\n class YourTestCase(HeadlessBrowserTestCase):\n\n def setUp(self):\n self.browser = self.start_browser(\"Firefox\", size=(1200, 900))\n\nRemaining keyword arguments to start browser will be passed down to the\nvirtual display driver. But the other defaults are generally sensible.\n\nPage\n----\n\nThe Page class represents a page in your application and should be subclassed\nand extended. Pages are given urls. Whenever you click a component of your\nsite and the URL changes the associated page will be returned. Creating an\ninstance of a class will automatically visit that page.\n\n from test_helpers import Page\n SERVER_URL = 'http://your-site.com/{}'\n\n class LoginPage(Page):\n url = SERVER_URL.format('login/')\n\n def login(self, username, password):\n self.click_button(\"Login\")\n self.enter_text(\"input[name=username]\", username)\n self.enter_text(\"input[name=password]\", password)\n return self.click(\"input[type=submit]\")\n\n class YourDashboard(Page):\n url = SERVER_URL.format('dashboard/')\n\n def assert_logged_in(self):\n # Will raise an exception if component not present\n self.get_component(\".account-details\")\n\n\n class YourTestCase(BrowserTestCase):\n\n def setUp(self):\n self.start_browser()\n\n def test_login_works(self):\n login_page = LoginPage(driver=self._driver)\n dashboard = login_page.login('username', 'password')\n\n dashboard.assert_logged_in()\n\nEmail\n-----\n\nThe email module contains a imap client written to interact with gmail. This\nis especially useful if you use Google Apps and you're running\ntests against it.\n\n\nFlow Control\n------------\n\nThis module contains three functions that are intended to make flow control in\ntesting situations less painful. They can be used as decorators. They are:\n\n* retry\n* ignore\n* fallback", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/aychedee/keteparaha/", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "keteparaha", "package_url": "https://pypi.org/project/keteparaha/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/keteparaha/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/aychedee/keteparaha/" }, "release_url": "https://pypi.org/project/keteparaha/0.0.24/", "requires_dist": null, "requires_python": null, "summary": "Keteparaha is a tool for testing modern JS heavy websites", "version": "0.0.24" }, "last_serial": 1823945, "releases": { "0.0.1": [], "0.0.10": [ { "comment_text": "", "digests": { "md5": "ae331bd21e2d8e82164b2183241005dd", "sha256": "866960083bdfd70dc85faf74186946d7ed6468bd3c92d31e5f6a72264e54a988" }, "downloads": -1, "filename": "keteparaha-0.0.10.tar.gz", "has_sig": false, "md5_digest": "ae331bd21e2d8e82164b2183241005dd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7857, "upload_time": "2015-03-13T17:08:52", "url": "https://files.pythonhosted.org/packages/04/0f/2b3d6ea6a8e712b1904f9589cb983b3a51878a3f570bca4d8a073c2d4858/keteparaha-0.0.10.tar.gz" } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "68aa64b466fbadae1c4de3751e1d1e53", "sha256": "b3e5c2a015a327bac629d2bbf71692019b59e94fcc6ea81a64c449ead24714b3" }, "downloads": -1, "filename": "keteparaha-0.0.11.tar.gz", "has_sig": false, "md5_digest": "68aa64b466fbadae1c4de3751e1d1e53", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7847, "upload_time": "2015-03-15T20:16:54", "url": "https://files.pythonhosted.org/packages/2a/81/4943f6048d35b4a6bdf19dd073a07c2f1c3e929513f620b853be0a7c8884/keteparaha-0.0.11.tar.gz" } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "e41b9e01597f21aca41fb95afe6a7eb6", "sha256": "62b116caf719dcb740b87732c6fb8597a356aa53d9f165cb038edea764b6fcb6" }, "downloads": -1, "filename": "keteparaha-0.0.12.tar.gz", "has_sig": false, "md5_digest": "e41b9e01597f21aca41fb95afe6a7eb6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7866, "upload_time": "2015-03-15T21:20:01", "url": "https://files.pythonhosted.org/packages/3a/9a/dc45ad3bd268af573df3db5622afa5f6d5a47f15c3cdc77e812a67e3183b/keteparaha-0.0.12.tar.gz" } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "91b603e34533e637ff6cddf669811fbc", "sha256": "5df44561882ce85b54e3ea08dc64dea7b3120277a6ffcb59b60e8516341d1102" }, "downloads": -1, "filename": "keteparaha-0.0.13.tar.gz", "has_sig": false, "md5_digest": "91b603e34533e637ff6cddf669811fbc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9050, "upload_time": "2015-03-17T18:07:12", "url": "https://files.pythonhosted.org/packages/69/02/734e25cd6aaf5c5a74d89bcf3a720e8ee861ac6cd5befd6736b15c218769/keteparaha-0.0.13.tar.gz" } ], "0.0.14": [ { "comment_text": "", "digests": { "md5": "90bf3d636aa491cf1cef282fd8097559", "sha256": "dcd7dfa686c002be120973534380ab6cb8b0efa10ac791874a43480e6b1b9870" }, "downloads": -1, "filename": "keteparaha-0.0.14.tar.gz", "has_sig": false, "md5_digest": "90bf3d636aa491cf1cef282fd8097559", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9072, "upload_time": "2015-03-18T12:44:34", "url": "https://files.pythonhosted.org/packages/6c/22/49a1056bcd24df6028df9a92dade473934289272494f35df3f4e2cd46719/keteparaha-0.0.14.tar.gz" } ], "0.0.15": [ { "comment_text": "", "digests": { "md5": "5585c835535023077eda8fb60fea717f", "sha256": "62d015ea34a03c03744d4e586754d1de1b2cac81bfed3fca327499ffb9322bc5" }, "downloads": -1, "filename": "keteparaha-0.0.15.tar.gz", "has_sig": false, "md5_digest": "5585c835535023077eda8fb60fea717f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9128, "upload_time": "2015-03-18T17:42:03", "url": "https://files.pythonhosted.org/packages/15/3c/08e6be3491d13dfff9275cbe786180a427cd0faee539824820eb160c08d5/keteparaha-0.0.15.tar.gz" } ], "0.0.16": [ { "comment_text": "", "digests": { "md5": "89ff91e90b5d420d8a61df646668c527", "sha256": "2e2fab0a9eb28ce260e6f15d8e4e40d551fc7b9fc907915223813f683550a778" }, "downloads": -1, "filename": "keteparaha-0.0.16.tar.gz", "has_sig": false, "md5_digest": "89ff91e90b5d420d8a61df646668c527", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9135, "upload_time": "2015-03-18T18:00:07", "url": "https://files.pythonhosted.org/packages/b1/c2/c39948be6179b1a4a59453044a7826a0e20fa437f5f8c0772b2046a88605/keteparaha-0.0.16.tar.gz" } ], "0.0.17": [ { "comment_text": "", "digests": { "md5": "fdda60a2b2377c565671835b1fc3d7bf", "sha256": "e85f615755d5ec6930c908ed0b51e819a3ff983df804f91829319158a88e50a4" }, "downloads": -1, "filename": "keteparaha-0.0.17.tar.gz", "has_sig": false, "md5_digest": "fdda60a2b2377c565671835b1fc3d7bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11677, "upload_time": "2015-04-02T12:35:01", "url": "https://files.pythonhosted.org/packages/c9/22/123300f83f96d9fb0325f13f87dbdbdd5c213d48803330139ccefca63d05/keteparaha-0.0.17.tar.gz" } ], "0.0.18": [ { "comment_text": "", "digests": { "md5": "c17a04769ac1ee626259a131236ffab5", "sha256": "2a615b450847832f64d2d3f7199678bed735242e57f6416199f2f74b246a6aa5" }, "downloads": -1, "filename": "keteparaha-0.0.18.tar.gz", "has_sig": false, "md5_digest": "c17a04769ac1ee626259a131236ffab5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11596, "upload_time": "2015-04-19T23:28:49", "url": "https://files.pythonhosted.org/packages/34/7c/b9c2cff4ea79d375b6ae690c0e18f719f34fdb6c2be89a20cf74156860d8/keteparaha-0.0.18.tar.gz" } ], "0.0.19": [ { "comment_text": "", "digests": { "md5": "0df98301d8bad35090f0d38856b28d83", "sha256": "d157279a4f7c99a6f09434bcf56b1f77e984c79eae4ee258bb259c35a0e40380" }, "downloads": -1, "filename": "keteparaha-0.0.19.tar.gz", "has_sig": false, "md5_digest": "0df98301d8bad35090f0d38856b28d83", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11808, "upload_time": "2015-06-10T15:53:59", "url": "https://files.pythonhosted.org/packages/1d/21/780ef1c0adcba1be6c7808f81550dc20de4ad9aeffb7a5c33976d5a2b5ce/keteparaha-0.0.19.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "3862dcb5cd73df6b4d9724b5ebe0b319", "sha256": "45fec96da651c0da57b0db0c100f67c47608f5c1f3ff7c43d43033cd09ccbc02" }, "downloads": -1, "filename": "keteparaha-0.0.2.tar.gz", "has_sig": false, "md5_digest": "3862dcb5cd73df6b4d9724b5ebe0b319", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5803, "upload_time": "2015-02-05T17:56:16", "url": "https://files.pythonhosted.org/packages/8b/fe/54e106d784aaba4aedaa05c38fed9f462e0ddb2047da5aa45f801052c0ee/keteparaha-0.0.2.tar.gz" } ], "0.0.20": [ { "comment_text": "", "digests": { "md5": "8e112e8a3c5294cff1d699c350a0f62f", "sha256": "7d67ad2c59ab1defc7a0248da47931ad3d8d952d9ec0d3ab5edd228ae008b439" }, "downloads": -1, "filename": "keteparaha-0.0.20.tar.gz", "has_sig": false, "md5_digest": "8e112e8a3c5294cff1d699c350a0f62f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11693, "upload_time": "2015-08-08T08:49:59", "url": "https://files.pythonhosted.org/packages/05/45/d38ceb088ee6548d70a0808be4da05b7079a58130939c38d0033b55f2e6e/keteparaha-0.0.20.tar.gz" } ], "0.0.21": [ { "comment_text": "", "digests": { "md5": "de21f0f0a4a41c3332d35dd67c9c1217", "sha256": "c0bc2a85987f3f5269eeeb0a945135b635b5ea804814d674e912c751993c5ea9" }, "downloads": -1, "filename": "keteparaha-0.0.21.tar.gz", "has_sig": false, "md5_digest": "de21f0f0a4a41c3332d35dd67c9c1217", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11825, "upload_time": "2015-09-07T09:46:14", "url": "https://files.pythonhosted.org/packages/d1/76/bd4965c9f1cae8180140620207b45b3aa92bd6ca6529791f1e0795335023/keteparaha-0.0.21.tar.gz" } ], "0.0.22": [ { "comment_text": "", "digests": { "md5": "b8e4b618e58d99d6e523cf68448d7122", "sha256": "5977e808651b9f461ba53b4e5aafc043a5b7c21b7c8ed408e4a1b8522c58adf6" }, "downloads": -1, "filename": "keteparaha-0.0.22.tar.gz", "has_sig": false, "md5_digest": "b8e4b618e58d99d6e523cf68448d7122", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11767, "upload_time": "2015-11-13T07:50:14", "url": "https://files.pythonhosted.org/packages/83/fe/abc0b836df3ee7fb802401b999eb4cf849066f8b148edf315feaa5e86489/keteparaha-0.0.22.tar.gz" } ], "0.0.23": [ { "comment_text": "", "digests": { "md5": "97fe1043a0d619ac12a5539e856aaa1b", "sha256": "5b09a14bd7574b6546baf2aa487c91e4bfbd260b62fca395d0f8066a03d5176b" }, "downloads": -1, "filename": "keteparaha-0.0.23-py2-none-any.whl", "has_sig": false, "md5_digest": "97fe1043a0d619ac12a5539e856aaa1b", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 15969, "upload_time": "2015-11-13T07:53:11", "url": "https://files.pythonhosted.org/packages/c0/c5/cd71483639aa072a3f30d852019c33cc4af6f3f5c43fe8e0b140fdd8ef86/keteparaha-0.0.23-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "32f2e91b668c2f4b033ae7432a3c2b87", "sha256": "3e1c628bb278fc0e7ea987870d7281ca447f14d48b7347e9aec9e4e7b7d7dd49" }, "downloads": -1, "filename": "keteparaha-0.0.23.tar.gz", "has_sig": false, "md5_digest": "32f2e91b668c2f4b033ae7432a3c2b87", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11769, "upload_time": "2015-11-13T07:53:06", "url": "https://files.pythonhosted.org/packages/dc/92/f71712261dc3af63267825c480567a11e1c9acfa518ef349e6e197d04a8a/keteparaha-0.0.23.tar.gz" } ], "0.0.24": [ { "comment_text": "", "digests": { "md5": "1d6820478f03af8e4504254c68a5f92a", "sha256": "a2c484fa2fa86ec02db0441c357adf0f69a2e534cec7b1546c31579134e6f6ad" }, "downloads": -1, "filename": "keteparaha-0.0.24-py2-none-any.whl", "has_sig": false, "md5_digest": "1d6820478f03af8e4504254c68a5f92a", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 15839, "upload_time": "2015-11-19T07:49:36", "url": "https://files.pythonhosted.org/packages/05/f0/7e9473bff17456c878f69690ee9425807afa861401023594eb5718be3f44/keteparaha-0.0.24-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9fd1aff33a916653ffbae923d395dcc3", "sha256": "134f5037c3f1efa6b86cc51dc0804f17da66865d7f93cc1d7e2a968150250694" }, "downloads": -1, "filename": "keteparaha-0.0.24.tar.gz", "has_sig": false, "md5_digest": "9fd1aff33a916653ffbae923d395dcc3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11639, "upload_time": "2015-11-19T07:49:31", "url": "https://files.pythonhosted.org/packages/f2/36/f533480c7cafd0fb4b6b102dad90b0e343cef15e5f661b2733d010f47e72/keteparaha-0.0.24.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "995dc276f0436ccb6018e6645a1a1a0a", "sha256": "364083473842e2be05facd07b53e3072e878d8023c9c128eef76df2768feb461" }, "downloads": -1, "filename": "keteparaha-0.0.3.tar.gz", "has_sig": false, "md5_digest": "995dc276f0436ccb6018e6645a1a1a0a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6094, "upload_time": "2015-02-06T17:35:00", "url": "https://files.pythonhosted.org/packages/cb/ec/c2ab1b8d946d58ae3bdb0d27ccf3507d66302ed58cd57e0dc6dc5998757b/keteparaha-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "c6d5580c62c4ce33817980c84b37b739", "sha256": "60a4d68d28444783cdc72ea707133912bd0df79291f1042040765af8e0ca0458" }, "downloads": -1, "filename": "keteparaha-0.0.4.tar.gz", "has_sig": false, "md5_digest": "c6d5580c62c4ce33817980c84b37b739", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6096, "upload_time": "2015-02-09T15:35:28", "url": "https://files.pythonhosted.org/packages/ad/6e/d019d2fc797eb93ba54d40cf27dcb6de6050e2405bf824458f8af913fda6/keteparaha-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "063d970654e3f74ce05772b1fe1413bf", "sha256": "dbfb88513f761fc0bf31b5a8a0746575cd7dfe074e1fe5dab6be2450fc9cb879" }, "downloads": -1, "filename": "keteparaha-0.0.5.tar.gz", "has_sig": false, "md5_digest": "063d970654e3f74ce05772b1fe1413bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6120, "upload_time": "2015-02-12T11:20:49", "url": "https://files.pythonhosted.org/packages/37/47/52464aa05296f6c272603856255640936afee8468ae3026ae671ad8268fb/keteparaha-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "4a0b2a58457cc35b56a5ad17dd0006aa", "sha256": "8aef9dbadc00214c682d0170c7177e3aff9e79bf09207301d85be8716b398dae" }, "downloads": -1, "filename": "keteparaha-0.0.6.tar.gz", "has_sig": false, "md5_digest": "4a0b2a58457cc35b56a5ad17dd0006aa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6129, "upload_time": "2015-02-12T12:00:21", "url": "https://files.pythonhosted.org/packages/61/d1/abf15298be17943586b14feb42b0df1aa436fc9ddd1c9ae29de77bfa066a/keteparaha-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "3f24c1b19781ad4845d588ef47add9c9", "sha256": "ff4a0214e371ff7f697e07fba19433ac1d87eb3180bfa657c0f6920b4491e26d" }, "downloads": -1, "filename": "keteparaha-0.0.7.tar.gz", "has_sig": false, "md5_digest": "3f24c1b19781ad4845d588ef47add9c9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8036, "upload_time": "2015-03-11T08:44:08", "url": "https://files.pythonhosted.org/packages/85/43/ce8c2807ae200ef04294b0180a1e1b7bd74c59152aba00a50e066e292a2d/keteparaha-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "7b0b34449b4a2a857c53a7d6e8c68b9c", "sha256": "9b01547a0a2bba66c494f37ab2967ac5b0511322931620483ae3b5ddebfb719e" }, "downloads": -1, "filename": "keteparaha-0.0.8.tar.gz", "has_sig": false, "md5_digest": "7b0b34449b4a2a857c53a7d6e8c68b9c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8187, "upload_time": "2015-03-11T13:01:23", "url": "https://files.pythonhosted.org/packages/c4/ee/2dd24b91281da6fe3369e22c244eec0eff5442a21a32b7618615b0c7edcc/keteparaha-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "ccdf74a1a70b15fd20c5d95f4edcf95c", "sha256": "337e09b700718475f35591cddb3a9726217692bc55d06f4df8dc0878b356f45f" }, "downloads": -1, "filename": "keteparaha-0.0.9.tar.gz", "has_sig": false, "md5_digest": "ccdf74a1a70b15fd20c5d95f4edcf95c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7774, "upload_time": "2015-03-12T18:07:32", "url": "https://files.pythonhosted.org/packages/21/04/b8f89096b463c9a3e8779556f287a1753def96403e0abdeb2e669ba2c34b/keteparaha-0.0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1d6820478f03af8e4504254c68a5f92a", "sha256": "a2c484fa2fa86ec02db0441c357adf0f69a2e534cec7b1546c31579134e6f6ad" }, "downloads": -1, "filename": "keteparaha-0.0.24-py2-none-any.whl", "has_sig": false, "md5_digest": "1d6820478f03af8e4504254c68a5f92a", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 15839, "upload_time": "2015-11-19T07:49:36", "url": "https://files.pythonhosted.org/packages/05/f0/7e9473bff17456c878f69690ee9425807afa861401023594eb5718be3f44/keteparaha-0.0.24-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9fd1aff33a916653ffbae923d395dcc3", "sha256": "134f5037c3f1efa6b86cc51dc0804f17da66865d7f93cc1d7e2a968150250694" }, "downloads": -1, "filename": "keteparaha-0.0.24.tar.gz", "has_sig": false, "md5_digest": "9fd1aff33a916653ffbae923d395dcc3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11639, "upload_time": "2015-11-19T07:49:31", "url": "https://files.pythonhosted.org/packages/f2/36/f533480c7cafd0fb4b6b102dad90b0e343cef15e5f661b2733d010f47e72/keteparaha-0.0.24.tar.gz" } ] }