{ "info": { "author": "Dobromir Marinov", "author_email": "dobromir@swim.it", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# Swim System Python Implementation\n[![PyPI version](https://badge.fury.io/py/swimai.svg)](https://badge.fury.io/py/swimai)\n[![Build Status](https://travis-ci.com/swimos/swim-system-python.svg?branch=master)](https://travis-ci.com/swimos/swim-system-python)\n[![codecov](https://codecov.io/gh/swimos/swim-system-python/branch/master/graph/badge.svg)](https://codecov.io/gh/swimos/swim-system-python)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE)\n[![Code of Conduct](https://img.shields.io/badge/code-of%20conduct-green.svg)](CODE_OF_CONDUCT.md)\n[![chat](https://img.shields.io/badge/chat-Gitter-green.svg)](https://gitter.im/swimos/community)\n\n\nThe **Swim System** Python implementation provides a standalone set of\nframeworks for building massively real-time streaming WARP clients.\n\nThe **Swim Python Client** is a streaming API client for linking to lanes \nof stateful Web Agents using the WARP protocol, enabling massively \nreal-time applications that continuously synchronize all shared states \nwith ping latency. WARP is like pub-sub without the broker, \nenabling every state of a Web API to be streamed, without \ninterference from billions of queues.\n
\n## Installation\n`pip install swimai`\n## Usage\n```python\n# Setting the value of a value lane on a remote agent.\nimport time\n\nfrom swimai import SwimClient\n\nwith SwimClient() as swim_client:\n host_uri = 'ws://localhost:9001'\n node_uri = '/unit/foo'\n lane_uri = 'info'\n\n value_downlink = swim_client.downlink_value()\n value_downlink.set_host_uri('ws://localhost:9001')\n value_downlink.set_node_uri('/unit/foo')\n value_downlink.set_lane_uri('info')\n value_downlink.open()\n\n new_value = 'Hello from Python!'\n value_downlink.set(new_value)\n\n print('Stopping the client in 2 seconds')\n time.sleep(2)\n```\n## Development\n\n### Dependencies\n##### Code dependencies\n`pip install -r requirements.txt`\n##### Development tools dependencies\n`pip install -r requirements-dev.txt`\n### Run unit tests\n##### Basic:\n1) Install async test package: `pip install aiounittest`\n2) Run tests: `python -m unittest`\n\n##### With coverage:\n1) Install async test package: `pip install aiounittest`\n2) Install coverage package: `pip install coverage`\n3) Generate report: `coverage run --source=swimai -m unittest`\n4) View report: `coverage report -m`\n\n### Run Lint\n##### Manual\n1) Install lint package: `pip install flake8`\n2) Run checks: `flake8`\n##### Automatic (before commit)\n1) Install commit hook package: `pip install pre-commit`\n2) Run hook installation: `pre-commit install`\n### Build package\n##### Building source distribution\n1) Run: `python setup.py sdist`\n##### Building wheel\n1) Install wheel package: `pip install wheel`\n2) Run: `python setup.py sdist`\n\n\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://github.com/swimos/swim-system-python", "keywords": "swim client", "license": "", "maintainer": "", "maintainer_email": "", "name": "swimai", "package_url": "https://pypi.org/project/swimai/", "platform": "", "project_url": "https://pypi.org/project/swimai/", "project_urls": { "Homepage": "https://github.com/swimos/swim-system-python" }, "release_url": "https://pypi.org/project/swimai/1.2.0a0/", "requires_dist": [ "websockets" ], "requires_python": "", "summary": "Standalone Python framework for building massively real-time streaming WARP clients.", "version": "1.2.0a0", "yanked": false, "yanked_reason": null }, "last_serial": 10265601, "releases": { "0.0.1.dev1": [ { "comment_text": "", "digests": { "md5": "5fb2a85679a23f3e2461ccba55acdb40", "sha256": "ded0280110843f23a68540da5a5717b9932e9147e8bd40fbd0b6e9b513408d18" }, "downloads": -1, "filename": "swimai-0.0.1.dev1-py3-none-any.whl", "has_sig": false, "md5_digest": "5fb2a85679a23f3e2461ccba55acdb40", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18089, "upload_time": "2019-10-21T14:59:16", "upload_time_iso_8601": "2019-10-21T14:59:16.582780Z", "url": "https://files.pythonhosted.org/packages/b3/8e/ce87e3eb1f5e2d2a58afa26849e8554eb98a319dc8648e8bf261a7f71f85/swimai-0.0.1.dev1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "39bf2460d338cd366b22579a535356ae", "sha256": "0d2670810e9caace5fea2feef319abb17de24eaa849cf6b925b7a9d9bb92c50d" }, "downloads": -1, "filename": "swimai-0.0.1.dev1.tar.gz", "has_sig": false, "md5_digest": "39bf2460d338cd366b22579a535356ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10846, "upload_time": "2019-10-21T14:59:20", "upload_time_iso_8601": "2019-10-21T14:59:20.600011Z", "url": "https://files.pythonhosted.org/packages/53/e7/bc80f23c42fe7cd3faf00710634843960ca6b240c6f9e5240aa6b111d54e/swimai-0.0.1.dev1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.1.dev2": [ { "comment_text": "", "digests": { "md5": "8af04d623f03fcab7743bad5fe6ff3f3", "sha256": "59c2b70d10a79f16387a2dc7cc1080415dcb2b5f8729b6c00049fed9375ae8d5" }, "downloads": -1, "filename": "swimai-0.0.1.dev2-py3-none-any.whl", "has_sig": false, "md5_digest": "8af04d623f03fcab7743bad5fe6ff3f3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20329, "upload_time": "2019-10-23T15:02:22", "upload_time_iso_8601": "2019-10-23T15:02:22.394999Z", "url": "https://files.pythonhosted.org/packages/04/0a/8cb5fb4cd6e6c284745ef704f402f549dae0b769ce4e66968f2bad08238c/swimai-0.0.1.dev2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2a7fab55bb5c708fd2c1689a2d2cf5a2", "sha256": "ae765cb8388330f9f87dfca02cda5e2f121ccc49a3ae3c804c2aecf9a6bf31b6" }, "downloads": -1, "filename": "swimai-0.0.1.dev2.tar.gz", "has_sig": false, "md5_digest": "2a7fab55bb5c708fd2c1689a2d2cf5a2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12793, "upload_time": "2019-10-23T15:02:23", "upload_time_iso_8601": "2019-10-23T15:02:23.906851Z", "url": "https://files.pythonhosted.org/packages/69/5f/74a0860d0d592ad3eeff460c2466ffda3876e223dc577199f7d9a455d7c6/swimai-0.0.1.dev2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.2.dev1": [ { "comment_text": "", "digests": { "md5": "cc093307917eaed651612193aef765d4", "sha256": "4af398011aabaee35c9e46056e41827076bd09280a0590856ed0a0c9f6578098" }, "downloads": -1, "filename": "swimai-0.0.2.dev1-py3-none-any.whl", "has_sig": false, "md5_digest": "cc093307917eaed651612193aef765d4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20093, "upload_time": "2019-10-24T09:36:18", "upload_time_iso_8601": "2019-10-24T09:36:18.430434Z", "url": "https://files.pythonhosted.org/packages/a9/f7/a1e561a0f9e7a0b0b4b5d37d807eb35d8e7e4635fcdf4689c3c55003d0e7/swimai-0.0.2.dev1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "eff5b76e7e13cea7a98bebc68fd586dc", "sha256": "06acd24027026bfcbdc264be602271c8f8d06430ede1728d117f08dce0ceb427" }, "downloads": -1, "filename": "swimai-0.0.2.dev1.tar.gz", "has_sig": false, "md5_digest": "eff5b76e7e13cea7a98bebc68fd586dc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12746, "upload_time": "2019-10-24T09:36:19", "upload_time_iso_8601": "2019-10-24T09:36:19.742891Z", "url": "https://files.pythonhosted.org/packages/ee/0c/53d1a713e3c5808c971909532c63a77d5742ca6483f72f35a3c8220d655f/swimai-0.0.2.dev1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.2.dev2": [ { "comment_text": "", "digests": { "md5": "5b8bbd0ee5d45bdf7cd25d91d33cd337", "sha256": "f23b564643dff1f6271026ff1c6c8c27a5599630111ec783cfaf25d35e83beb0" }, "downloads": -1, "filename": "swimai-0.0.2.dev2-py3-none-any.whl", "has_sig": false, "md5_digest": "5b8bbd0ee5d45bdf7cd25d91d33cd337", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20089, "upload_time": "2019-10-24T09:59:05", "upload_time_iso_8601": "2019-10-24T09:59:05.830778Z", "url": "https://files.pythonhosted.org/packages/29/83/22da29d2c6d2fb1067a77f04f0826f586889cf6e163a287286214be8194f/swimai-0.0.2.dev2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "0cf9c25bcdb824bd147812104e3c21c6", "sha256": "6a6f56d61af9b959d85905f3589fee8d33b3a901cc29f3e9d2d9901b007c5470" }, "downloads": -1, "filename": "swimai-0.0.2.dev2.tar.gz", "has_sig": false, "md5_digest": "0cf9c25bcdb824bd147812104e3c21c6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12651, "upload_time": "2019-10-24T09:59:06", "upload_time_iso_8601": "2019-10-24T09:59:06.844830Z", "url": "https://files.pythonhosted.org/packages/77/bf/17f4a55fca680af0f7e3f11fca1ee78273881b5f470f627285a8d843ed8b/swimai-0.0.2.dev2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.3.dev1": [ { "comment_text": "", "digests": { "md5": "4a43124e74950f6a51569c3d55c67174", "sha256": "f0c1b1172a875c7e6bad6d741001cdfacb2786bbb68735395d8dafe2cc4e834f" }, "downloads": -1, "filename": "swimai-0.0.3.dev1-py3-none-any.whl", "has_sig": false, "md5_digest": "4a43124e74950f6a51569c3d55c67174", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25386, "upload_time": "2019-10-30T13:15:55", "upload_time_iso_8601": "2019-10-30T13:15:55.046660Z", "url": "https://files.pythonhosted.org/packages/87/2f/a42827dcff37a95d3877fc997878d19b20f941bce809ef3344482f0da62e/swimai-0.0.3.dev1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "80f2d0c26cc08eccec417eebc1bc9e43", "sha256": "9c80364f1db895c08f86ddb1cd0faf9610a46346bbec226dff234487cf09ea30" }, "downloads": -1, "filename": "swimai-0.0.3.dev1.tar.gz", "has_sig": false, "md5_digest": "80f2d0c26cc08eccec417eebc1bc9e43", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16504, "upload_time": "2019-10-30T13:15:56", "upload_time_iso_8601": "2019-10-30T13:15:56.232651Z", "url": "https://files.pythonhosted.org/packages/59/1f/cd16f9858c9182fb70c6911c7fbe2f22f362cefb60ef2e624afb1f053251/swimai-0.0.3.dev1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.0.dev1": [ { "comment_text": "", "digests": { "md5": "6a68e99159528436615bc975f7f4154b", "sha256": "a808eba6fb4a31132120c4c16028350fbf319910693de44fb21e701ba29925b6" }, "downloads": -1, "filename": "swimai-0.1.0.dev1-py3-none-any.whl", "has_sig": false, "md5_digest": "6a68e99159528436615bc975f7f4154b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33779, "upload_time": "2019-11-05T13:52:01", "upload_time_iso_8601": "2019-11-05T13:52:01.524552Z", "url": "https://files.pythonhosted.org/packages/7c/c7/bd528bc42bc581b3dc0a81280cf8511099480fff4a89c912ecdb49287de3/swimai-0.1.0.dev1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e4842597876f4ba7d65142cd706ba67c", "sha256": "15e23f5ced42de242b62ddd976bc5a941333c8b44031ded462dd7710a910e770" }, "downloads": -1, "filename": "swimai-0.1.0.dev1.tar.gz", "has_sig": false, "md5_digest": "e4842597876f4ba7d65142cd706ba67c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24085, "upload_time": "2019-11-05T13:52:02", "upload_time_iso_8601": "2019-11-05T13:52:02.531179Z", "url": "https://files.pythonhosted.org/packages/72/70/c36f0d519d5c70055a38f63d637d159dfd47fe74e1b58a13c0dd11726c9d/swimai-0.1.0.dev1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.1.dev1": [ { "comment_text": "", "digests": { "md5": "bf3171d9442b29e71caddcae09df50a3", "sha256": "354fb3d031b4478107822dd02adc6097a374fbd31bcfb9d1055ac8e259c2c105" }, "downloads": -1, "filename": "swimai-0.1.1.dev1-py3-none-any.whl", "has_sig": false, "md5_digest": "bf3171d9442b29e71caddcae09df50a3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 66012, "upload_time": "2019-12-20T14:58:30", "upload_time_iso_8601": "2019-12-20T14:58:30.395839Z", "url": "https://files.pythonhosted.org/packages/64/73/a0518147361be4d06588999d7516dba9048d6cbaea7363a13de775e4d97b/swimai-0.1.1.dev1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "d98676f6ecae31d771c20b208c375ce9", "sha256": "e4167207c7170ccc8d9f4544f2114f06221d20706c2f5ac22a1bd81aa0d7ce15" }, "downloads": -1, "filename": "swimai-0.1.1.dev1.tar.gz", "has_sig": false, "md5_digest": "d98676f6ecae31d771c20b208c375ce9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44651, "upload_time": "2019-12-20T14:58:31", "upload_time_iso_8601": "2019-12-20T14:58:31.679018Z", "url": "https://files.pythonhosted.org/packages/ab/5b/da19a9ef177f8665043af313be9e5528a7cbc4096e1abdd2298a1d490bdc/swimai-0.1.1.dev1.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.0a0": [ { "comment_text": "", "digests": { "md5": "2955f77fbc7391d72dc63a14a4545770", "sha256": "10239dd00caed2841778a2f34d6be5121a421cc1c224a901158bbf0352c17343" }, "downloads": -1, "filename": "swimai-1.0.0a0-py3-none-any.whl", "has_sig": false, "md5_digest": "2955f77fbc7391d72dc63a14a4545770", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 84119, "upload_time": "2020-02-13T12:13:54", "upload_time_iso_8601": "2020-02-13T12:13:54.977087Z", "url": "https://files.pythonhosted.org/packages/36/7f/d883b23b6d3433b37d5668ed712c692dc0851863cacd2261e7fae41ef24e/swimai-1.0.0a0-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "1.0.1a0": [ { "comment_text": "", "digests": { "md5": "6f09344b2e35ae1232c5a763816560fa", "sha256": "d4ac80d5c5c0f9da7d0451e94ca4544714e02bf70b9d4e606aa480168df84800" }, "downloads": -1, "filename": "swimai-1.0.1a0-py3-none-any.whl", "has_sig": false, "md5_digest": "6f09344b2e35ae1232c5a763816560fa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 84117, "upload_time": "2020-05-21T10:47:00", "upload_time_iso_8601": "2020-05-21T10:47:00.226340Z", "url": "https://files.pythonhosted.org/packages/fc/03/c469356709b58c0c5011b0d093a23dbc2aac69040d595649b33ad76718a6/swimai-1.0.1a0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "763daa84716a4c22335900251a0b1942", "sha256": "a759c9c830c260fff46c274f02043ef2df84327908a2a8a455c0b1e15812f53c" }, "downloads": -1, "filename": "swimai-1.0.1a0.tar.gz", "has_sig": false, "md5_digest": "763daa84716a4c22335900251a0b1942", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 66943, "upload_time": "2020-05-21T10:47:01", "upload_time_iso_8601": "2020-05-21T10:47:01.390780Z", "url": "https://files.pythonhosted.org/packages/91/5f/233ea83dfc9ba5cc3cafa50c92b72875c34adc0200accf0806112510913c/swimai-1.0.1a0.tar.gz", "yanked": false, "yanked_reason": null } ], "1.1.0a0": [ { "comment_text": "", "digests": { "md5": "f1543ac299864daef1f1bd5c523640d7", "sha256": "0fde8f3de73532319609cac821fdf03f672d961df7970a2d9b9f33f27f8b1813" }, "downloads": -1, "filename": "swimai-1.1.0a0-py3-none-any.whl", "has_sig": false, "md5_digest": "f1543ac299864daef1f1bd5c523640d7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 83769, "upload_time": "2020-08-27T11:27:45", "upload_time_iso_8601": "2020-08-27T11:27:45.259092Z", "url": "https://files.pythonhosted.org/packages/e6/b5/5c7285916448cb02a1b2a63fe7ba389fd93df542c79125e28d585ebfc922/swimai-1.1.0a0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2a184729a5bd6a37e9b628a9091a0eee", "sha256": "09ec0110d51ae6722f33170c9f145eab0c756662b4dfbc284ad9c352ab3e3484" }, "downloads": -1, "filename": "swimai-1.1.0a0.tar.gz", "has_sig": false, "md5_digest": "2a184729a5bd6a37e9b628a9091a0eee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 66661, "upload_time": "2020-08-27T11:27:46", "upload_time_iso_8601": "2020-08-27T11:27:46.329507Z", "url": "https://files.pythonhosted.org/packages/5b/6f/a5d2e7ebbeb5a0cbaeae7820138fc4a86a2f8c43b8d756998fcb9dd4b926/swimai-1.1.0a0.tar.gz", "yanked": false, "yanked_reason": null } ], "1.2.0a0": [ { "comment_text": "", "digests": { "md5": "0f24d35d7f1fc3c817d2c1f1ede7511e", "sha256": "77002c11135902721ee004634aeadb36785c73a7da1d1af8da2635221361dd1e" }, "downloads": -1, "filename": "swimai-1.2.0a0-py3-none-any.whl", "has_sig": false, "md5_digest": "0f24d35d7f1fc3c817d2c1f1ede7511e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 84011, "upload_time": "2021-05-05T13:30:42", "upload_time_iso_8601": "2021-05-05T13:30:42.987143Z", "url": "https://files.pythonhosted.org/packages/c3/3b/2fc6c65348a1a056614cfc0ded0173c867645d3876bd6dd88a2e987c9829/swimai-1.2.0a0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "0d4c55396a5720e63bcf07f18873be0b", "sha256": "0e2aa3c5aa42faa82856064fb5103cd6a154d78ff3a4888fb2d1075ec31ca9d9" }, "downloads": -1, "filename": "swimai-1.2.0a0.tar.gz", "has_sig": false, "md5_digest": "0d4c55396a5720e63bcf07f18873be0b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 66892, "upload_time": "2021-05-05T13:30:44", "upload_time_iso_8601": "2021-05-05T13:30:44.253009Z", "url": "https://files.pythonhosted.org/packages/79/18/10f26a4c0fcb8fc163e34097160d8c8d9ea8548efaa1806051e87a529b8c/swimai-1.2.0a0.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0f24d35d7f1fc3c817d2c1f1ede7511e", "sha256": "77002c11135902721ee004634aeadb36785c73a7da1d1af8da2635221361dd1e" }, "downloads": -1, "filename": "swimai-1.2.0a0-py3-none-any.whl", "has_sig": false, "md5_digest": "0f24d35d7f1fc3c817d2c1f1ede7511e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 84011, "upload_time": "2021-05-05T13:30:42", "upload_time_iso_8601": "2021-05-05T13:30:42.987143Z", "url": "https://files.pythonhosted.org/packages/c3/3b/2fc6c65348a1a056614cfc0ded0173c867645d3876bd6dd88a2e987c9829/swimai-1.2.0a0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "0d4c55396a5720e63bcf07f18873be0b", "sha256": "0e2aa3c5aa42faa82856064fb5103cd6a154d78ff3a4888fb2d1075ec31ca9d9" }, "downloads": -1, "filename": "swimai-1.2.0a0.tar.gz", "has_sig": false, "md5_digest": "0d4c55396a5720e63bcf07f18873be0b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 66892, "upload_time": "2021-05-05T13:30:44", "upload_time_iso_8601": "2021-05-05T13:30:44.253009Z", "url": "https://files.pythonhosted.org/packages/79/18/10f26a4c0fcb8fc163e34097160d8c8d9ea8548efaa1806051e87a529b8c/swimai-1.2.0a0.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }