{ "info": { "author": "ae.udahin", "author_email": "aejudakhin@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "\ufeffSeaLant\n================================================================================\n\n\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0443\u0442\u0435\u0447\u0435\u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0442\u0435\u0441\u0442\u043e\u0432 \n\u0432 Chrome \u0438\u043b\u0438 Node.js\n\n# \u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435\n- [\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430](#\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430)\n- [\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f](#\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f)\n - [\u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f](#\u041f\u0440\u0438\u043c\u0435\u0440-\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f)\n - [\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043d\u043e\u0434\u0435](#\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b-\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f-\u043a-\u043d\u043e\u0434\u0435)\n - [\u0412\u044b\u0431\u043e\u0440 \u0442\u0438\u043f\u0430 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0443\u0442\u0435\u0447\u043a\u0438](#\u0412\u044b\u0431\u043e\u0440-\u0442\u0438\u043f\u0430-\u0430\u043d\u0430\u043b\u0438\u0437\u0430-\u0443\u0442\u0435\u0447\u043a\u0438)\n - [\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043e\u0442\u0447\u0435\u0442\u0430 \u0438 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432 \u0442\u0435\u0441\u0442\u0430](#\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435-\u043e\u0442\u0447\u0435\u0442\u0430-\u0438-\u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432-\u0442\u0435\u0441\u0442\u0430)\n- [\u0412\u0435\u0440\u0441\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435](#\u0412\u0435\u0440\u0441\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435)\n- [\u0410\u0432\u0442\u043e\u0440\u044b](#\u0410\u0432\u0442\u043e\u0440\u044b)\n- [\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f](#\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f)\n\n\n# \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\n```\npip install sealant\n```\n\n\n## \u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\n\n### \u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\n\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438:\n```python\nfrom sealant import sealant\nfrom unittest import TestCase\n...\n\n# \u041f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u043c UnitTests \u0438 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \n# \u043d\u0435\u043c \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430\u0445\nclass TestsCaseExample(TestCase):\n\n...\n\n # \u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u0441\u0442\u043e\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0436\u0435 \u0438\u043c\u0435\u0442\u044c \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u0443\u044e \u043d\u043e\u0434\u0443, \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\n # \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a \u043d\u0435\u0439 \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0430 test_case\n @sealant()\n def test_case(self):\n some_actions()\n```\n### \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043d\u043e\u0434\u0435\n\u0412 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e:\n\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u043d\u043e\u0434\u0435 \u043f\u043e localhost:9222 \n\u041f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0445\u043e\u0441\u0442/\u043f\u043e\u0440\u0442 \u043d\u043e\u0434\u044b \u0438\u043b\u0438 \u043f\u0440\u044f\u043c\u0443\u044e\ncc\u044b\u043b\u043a\u0443 websocket\n```python\n @sealant(host='not_localhost', port='2229', ws='ws://direct_ws:9222')\n def test_case(self):\n actions()\n```\n\u0423\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 ws \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043d\u0430\u0434 host/port \n\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0446\u0435\u043b\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430:\n```python\n@sealant(host='not_localhost', port='2229')\nclass TestsCaseExample(TestCase):\n\n...\n @sealant()\n def test_case(self):\n actions()\n```\n\u041c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \n\u0432 config.py.\n### \u0412\u044b\u0431\u043e\u0440 \u0442\u0438\u043f\u0430 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0443\u0442\u0435\u0447\u043a\u0438\n\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0432\u0430\u0436\u043d\u044b\u043c \u044d\u0442\u0430\u043f\u043e\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0431\u043e\u0440\u0430 \u0442\u0438\u043f\u0430 heapfile:\nheaptimeline \u0438\u043b\u0438 heapsnapshot. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f heaptimeline \u043a\u0430\u043a\n\u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0432\u0448\u0438\u0439 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431. \u041d\u043e \u0434\u043b\u044f Node.js\n\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 heapsnapshot:\n```python\n @sealant(timeline=False)\n def test_case(self):\n actions()\n```\n\u041d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u0443\u0442\u0435\u0447\u043a\u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441 \u043e\u0431\u044a\u0435\u043c\u043e\u043c, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u0432 config.py (leak_size_limit).\n\u0415\u0441\u043b\u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u0443\u0442\u0435\u0447\u043a\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0433\u043e \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f 8 \u043f\u0443\u043d\u043a\u0442\u0430, \u0442\u043e \n\u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 LeakError.\n### \u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043e\u0442\u0447\u0435\u0442\u0430 \u0438 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432 \u0442\u0435\u0441\u0442\u0430\n\u0412 config.py \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 heapfiles \u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043b\u0438 \n\u043e\u0442\u0447\u0435\u0442 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0443\u0442\u0435\u0447\u043a\u0438. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043e\u0442\u0447\u0435\u0442 \u0438 \u0441\u043d\u044f\u0442\u044b\u0435 \nheapfiles \u043f\u0430\u043a\u0443\u044e\u0442\u0441\u044f \u0432 zip \u0430\u0440\u0445\u0438\u0432 \u0438 \u043f\u043e\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u0437\u0430\u0434\u0430\u043d\u043d\u0443\u044e \u0432 config.py \u043f\u0430\u043f\u043a\u0443\n(\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u0430\u043f\u043a\u0430 leaks \u0432 \u043f\u0430\u043f\u043a\u0435 \u0441 \u0442\u0435\u0441\u0442\u043e\u043c).\n# \u0412\u0435\u0440\u0441\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\n\u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c [SemVer](http://semver.org/) \u0434\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438\n\u0443\u043a\u0430\u0437\u0430\u043d\u044b \u0432 [\u0442\u044d\u0433\u0430\u0445 \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f](https://github.com/your/project/tags). \n# \u0410\u0432\u0442\u043e\u0440\u044b\n\u042e\u0434\u0430\u0445\u0438\u043d \u0410.\u0415 \ne-mail: aejudakhin@gmail.com \n\n\u0414\u043e\u043a\u0443\u0447\u0430\u0435\u0432 \u0421.\u0412 \ne-mail: sv.dokuchaev@tensor.ru\n\n# \u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f\nThis project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details\n\ntest2\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://pypi.org/project/sealant", "keywords": "", "license": "LICENSE.md", "maintainer": "", "maintainer_email": "", "name": "sealant", "package_url": "https://pypi.org/project/sealant/", "platform": "", "project_url": "https://pypi.org/project/sealant/", "project_urls": { "Homepage": "https://pypi.org/project/sealant" }, "release_url": "https://pypi.org/project/sealant/1.0.2/", "requires_dist": [ "pychrome (>=0.2.2)", "requests (>=2.19.1)", "selenium (>=3.13.0)" ], "requires_python": "", "summary": "\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0443\u0442\u0435\u0447\u0435\u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0442\u0435\u0441\u0442\u043e\u0432 \u0432 Chrome \u0438\u043b\u0438 Node.js", "version": "1.0.2" }, "last_serial": 4543072, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "1da54bd1fbd503de61f9b78669029bca", "sha256": "32e02d42531203b9575df6b95a74a8c1ecbd9beb96de378d3310e2a56b33a55c" }, "downloads": -1, "filename": "sealant-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1da54bd1fbd503de61f9b78669029bca", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13934, "upload_time": "2018-11-21T15:09:05", "url": "https://files.pythonhosted.org/packages/37/ca/5d454e0a40c627a9376f1be9ea75657741836fde6d779d56a3b5475ef559/sealant-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0b16a6e76b35e3568b069b5124c4cf79", "sha256": "b60f05152fbb11a88fb762906530678d3c7b1dd0b0541b47a66ceb395a06562f" }, "downloads": -1, "filename": "sealant-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "0b16a6e76b35e3568b069b5124c4cf79", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14119, "upload_time": "2018-11-29T13:45:47", "url": "https://files.pythonhosted.org/packages/c4/52/9b9fe5612211916174384480b628d9739593389332f32b55b6a5e71b0670/sealant-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5d32b53ca100ac31ecb139049c77e90d", "sha256": "f9de9cfcdb3d8451776a70821967a98a01b834009006223947fc62ca5c16f93f" }, "downloads": -1, "filename": "sealant-1.0.0.tar.gz", "has_sig": false, "md5_digest": "5d32b53ca100ac31ecb139049c77e90d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11354, "upload_time": "2018-11-21T15:09:07", "url": "https://files.pythonhosted.org/packages/8e/a2/cbe639314dd657782d804d6ef553a7b50e5267833af0dae194acb0ab5a9d/sealant-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "42cdf3feff3eab11062ec50b0b2fc42d", "sha256": "1caad467654e9fa893dae5dd1a10e1852a64b09350133650a8ecf3eaf3e86b28" }, "downloads": -1, "filename": "sealant-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "42cdf3feff3eab11062ec50b0b2fc42d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14113, "upload_time": "2018-11-29T13:50:37", "url": "https://files.pythonhosted.org/packages/77/82/f6653361f4f27e900266e29312278c2c0e0e861d87f1a823621b0e34405a/sealant-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "75c4f63427e7839847a9eb3d849ba5fe", "sha256": "7123b02c6b88e990c56d9cc746a44580fcdceb940744c330a45a9dd01105a584" }, "downloads": -1, "filename": "sealant-1.0.1.tar.gz", "has_sig": false, "md5_digest": "75c4f63427e7839847a9eb3d849ba5fe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11536, "upload_time": "2018-11-29T13:50:38", "url": "https://files.pythonhosted.org/packages/af/7a/9aebffeec6c718077e414d268e7c71c64f0303437f2ae458b08a44f6f26f/sealant-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "ed209fe4a856c599615f7dcdaf91c916", "sha256": "419d13a1f8afd5c3f1dfc28a1b9791ebcc5647b0fd74ec0bd4ce8958c0442d7c" }, "downloads": -1, "filename": "SeaLant-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "ed209fe4a856c599615f7dcdaf91c916", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15786, "upload_time": "2018-11-29T13:54:56", "url": "https://files.pythonhosted.org/packages/03/4d/01989b64df186990b8514c2f02ce4033f67eba34283723d2ae1b275d50a3/SeaLant-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d46c8c8cd0f41a2e700ff539ca81dfc3", "sha256": "baad21f554a9340561c248fd6e3db82f2500e29be4e388448dcfeaf9e58e8da4" }, "downloads": -1, "filename": "SeaLant-1.0.2.tar.gz", "has_sig": false, "md5_digest": "d46c8c8cd0f41a2e700ff539ca81dfc3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11953, "upload_time": "2018-11-29T13:54:58", "url": "https://files.pythonhosted.org/packages/5e/c9/978e5d539f70529a985fb1bc880cbb51e4e298f276aab13cbfdb1b658d1f/SeaLant-1.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ed209fe4a856c599615f7dcdaf91c916", "sha256": "419d13a1f8afd5c3f1dfc28a1b9791ebcc5647b0fd74ec0bd4ce8958c0442d7c" }, "downloads": -1, "filename": "SeaLant-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "ed209fe4a856c599615f7dcdaf91c916", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15786, "upload_time": "2018-11-29T13:54:56", "url": "https://files.pythonhosted.org/packages/03/4d/01989b64df186990b8514c2f02ce4033f67eba34283723d2ae1b275d50a3/SeaLant-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d46c8c8cd0f41a2e700ff539ca81dfc3", "sha256": "baad21f554a9340561c248fd6e3db82f2500e29be4e388448dcfeaf9e58e8da4" }, "downloads": -1, "filename": "SeaLant-1.0.2.tar.gz", "has_sig": false, "md5_digest": "d46c8c8cd0f41a2e700ff539ca81dfc3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11953, "upload_time": "2018-11-29T13:54:58", "url": "https://files.pythonhosted.org/packages/5e/c9/978e5d539f70529a985fb1bc880cbb51e4e298f276aab13cbfdb1b658d1f/SeaLant-1.0.2.tar.gz" } ] }