{ "info": { "author": "Exahilosys", "author_email": "exahilosys@gmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Utilities" ], "description": "## Server Usage\n```py\nimport aiochat\nimport aiohttp.web\n\nclass Agent(aiochat.ServerAgent):\n\n @aiochat.use\n async def join(self, *args, delimit = ','):\n\n return delimit.join(map(str, args))\n\napp = aiohttp.web.Application()\n\nroutes = aiohttp.web.RouteTableDef()\n\n@routes.get('/connect')\nasync def handle(request):\n\n websocket = aiohttp.web.WebSocketResponse()\n\n await websocket.prepare(request)\n\n agent = Agent()\n\n await agent.start(websocket)\n\n value = 'eggs and bacon and salad'\n\n # remote call\n result = await agent.split(value, delimit = ' and ')\n\n print('result:', result)\n\n # wait until disconnection\n await agent.wait()\n\n return websocket\n\napp.router.add_routes(routes)\n\naiohttp.web.run_app(app)\n```\n## Client Usage\n```py\nimport aiochat\nimport aiohttp\nimport asyncio\n\nclass Agent(aiochat.ClientAgent):\n\n @aiochat.use\n async def split(self, value, delimit = ','):\n\n return value.split(delimit)\n\nloop = asyncio.get_event_loop()\n\nurl = 'http://localhost:8080/connect'\n\nasync def main():\n\n session = aiohttp.ClientSession(loop = loop)\n\n async def connect():\n\n while not session.closed:\n\n try:\n\n websocket = await session.ws_connect(url)\n\n except aiohttp.ClientError:\n\n await asyncio.sleep(0.5)\n\n else:\n\n break\n\n return websocket\n\n agent = Agent(connect)\n\n await agent.start()\n\n values = ('crooked man', 'mile', 'sixpence', 'stile')\n\n # remote call\n result = await agent.join(*values, delimit = ' ')\n\n print('result:', result)\n\n # disconnect\n await agent.stop()\n\n await session.close()\n\ncoroutine = main()\n\nloop.run_until_complete(coroutine)\n```\n## Details\n- Clients will attempt to auto-reconnect until told to stop.\n- Method names have to follow python function name limitations.\n- The reconnection protocol reserves the `hello` `alert` methods.\n- Implementation reserves the `bind` `wait` `start` `stop` methods.\n- Annotations are not considered; schema checking should be done manually.\n- Keyword arguments cannot be passed in a positional manner and vice versa.\n- WebSockets should not be used outside of Agent context while connected.\n## Installing\n```\npython3 -m pip install aiochat\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/Exahilosys/aiochat", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "aiochat", "package_url": "https://pypi.org/project/aiochat/", "platform": "", "project_url": "https://pypi.org/project/aiochat/", "project_urls": { "Homepage": "https://github.com/Exahilosys/aiochat" }, "release_url": "https://pypi.org/project/aiochat/0.0.1/", "requires_dist": null, "requires_python": "", "summary": "Simple RPC server/client framework.", "version": "0.0.1" }, "last_serial": 5172999, "releases": { "0.0.0": [ { "comment_text": "", "digests": { "md5": "b0bf09a87796a47d110dc78f03efa4cb", "sha256": "260946251db0e848c11edd205c1d8f877da5ebb6226219e4d414d42a23b266ce" }, "downloads": -1, "filename": "aiochat-0.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b0bf09a87796a47d110dc78f03efa4cb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6874, "upload_time": "2019-04-22T13:26:17", "url": "https://files.pythonhosted.org/packages/13/08/84f7525bd1f86302c1ee1ef0291827d1466cf896aa855dcca59878ed2bea/aiochat-0.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "45548d01ed84f5a846367739982e1fc2", "sha256": "0568888fa3be5012b068a926fe24d37af326da04e7f7c190f1e8fc9ed702777d" }, "downloads": -1, "filename": "aiochat-0.0.0.tar.gz", "has_sig": false, "md5_digest": "45548d01ed84f5a846367739982e1fc2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5079, "upload_time": "2019-04-22T13:26:19", "url": "https://files.pythonhosted.org/packages/10/1d/8064afc58f9195c90666d2bc2a5ef7171be11737d35098eab183ee4ecdb5/aiochat-0.0.0.tar.gz" } ], "0.0.1": [ { "comment_text": "", "digests": { "md5": "7e819f771f818baac07a9d1f5f729d19", "sha256": "2a578e642aa33e0d7843714ca83146088131e69a3571ee8bf1779fca25e23f59" }, "downloads": -1, "filename": "aiochat-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "7e819f771f818baac07a9d1f5f729d19", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6943, "upload_time": "2019-04-22T13:46:21", "url": "https://files.pythonhosted.org/packages/7a/eb/dafb628fa6e92fa5d314541617b3397a32b538896be16286d740d051a9cb/aiochat-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "104adb13ab1c4ea89990eaf6a842bb18", "sha256": "35e8f9bffca824e312edae32e8afacf60b298a92a1e38e6868ca0dd0b6641d23" }, "downloads": -1, "filename": "aiochat-0.0.1.tar.gz", "has_sig": false, "md5_digest": "104adb13ab1c4ea89990eaf6a842bb18", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5162, "upload_time": "2019-04-22T13:46:23", "url": "https://files.pythonhosted.org/packages/d5/e9/6246dc14df71a27552b0668b7ecdc1f236adf012c542982d5b0a4abf81b8/aiochat-0.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7e819f771f818baac07a9d1f5f729d19", "sha256": "2a578e642aa33e0d7843714ca83146088131e69a3571ee8bf1779fca25e23f59" }, "downloads": -1, "filename": "aiochat-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "7e819f771f818baac07a9d1f5f729d19", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6943, "upload_time": "2019-04-22T13:46:21", "url": "https://files.pythonhosted.org/packages/7a/eb/dafb628fa6e92fa5d314541617b3397a32b538896be16286d740d051a9cb/aiochat-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "104adb13ab1c4ea89990eaf6a842bb18", "sha256": "35e8f9bffca824e312edae32e8afacf60b298a92a1e38e6868ca0dd0b6641d23" }, "downloads": -1, "filename": "aiochat-0.0.1.tar.gz", "has_sig": false, "md5_digest": "104adb13ab1c4ea89990eaf6a842bb18", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5162, "upload_time": "2019-04-22T13:46:23", "url": "https://files.pythonhosted.org/packages/d5/e9/6246dc14df71a27552b0668b7ecdc1f236adf012c542982d5b0a4abf81b8/aiochat-0.0.1.tar.gz" } ] }