{ "info": { "author": "Antoine Catton", "author_email": "devel@antoine.catton.fr", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "Intended Audience :: Telecommunications Industry", "License :: OSI Approved :: ISC License (ISCL)", "Operating System :: OS Independent", "Programming Language :: Python :: 3.5" ], "description": "Ohne I/O\n========\n\nUtility library to write network protocol parser, `sans I/O `_.\n\n`Ohne `_ I/O (without I/O in German) is a library using\n`asyncio `_ corouting programming style.\n\n``ohneio`` allows you to write protocol parsers the way you would write an asyncio protocol:\n\n.. code-block:: python\n\n >>> import base64\n >>> import ohneio\n >>>\n >>> def wait_for(s):\n ... while True:\n ... data = yield from ohneio.peek()\n ... pos = data.find(s)\n ... if pos >= 0:\n ... return pos\n ... yield from ohneio.wait()\n ...\n >>> def read_until(s):\n ... pos = yield from wait_for(s)\n ... data = yield from ohneio.read(pos)\n ... return data\n ...\n >>> @ohneio.protocol\n ... def echo_base64(separator):\n ... while True:\n ... segment = yield from read_until(separator)\n ... yield from ohneio.read(len(separator))\n ... yield from ohneio.write(base64.b64encode(segment) + separator)\n ...\n >>> connection = echo_base64(b'\\r\\n')\n >>> connection.send(b'hello')\n >>> connection.read()\n b''\n >>> connection.send(b'\\r\\nworld\\r\\n')\n >>> connection.read()\n b'aGVsbG8=\\r\\nd29ybGQ=\\r\\n'\n\n\nThe example above also shows how ``ohneio`` allows you to combine primitives\ninto bigger parsing functions (like ``wait_for`` and ``read_until``).", "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/acatton/ohneio", "keywords": null, "license": "ISC", "maintainer": null, "maintainer_email": null, "name": "ohneio", "package_url": "https://pypi.org/project/ohneio/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/ohneio/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/acatton/ohneio" }, "release_url": "https://pypi.org/project/ohneio/0.8.1/", "requires_dist": null, "requires_python": null, "summary": "Utility to write network protocol parser without any I/O", "version": "0.8.1" }, "last_serial": 2293167, "releases": { "0.8": [ { "comment_text": "", "digests": { "md5": "299400d24729ccb5a045903706854aa4", "sha256": "93f8a49b676a485d0a504bb767aa65decb1dd2e99c8523270a455c4975015f2a" }, "downloads": -1, "filename": "ohneio-0.8.tar.gz", "has_sig": false, "md5_digest": "299400d24729ccb5a045903706854aa4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3477, "upload_time": "2016-08-19T21:03:55", "url": "https://files.pythonhosted.org/packages/72/be/3374889e83911f9d36a82c3d6e452696530e30d26772dda0cfc3cc2c6ae2/ohneio-0.8.tar.gz" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "1129414f3990e7477090fcc88517cc1a", "sha256": "4d09754ddc90a7785e1c3457b7b8a5654badd7e1611dc0f42ee5a70ca5b4fdc7" }, "downloads": -1, "filename": "ohneio-0.8.1.tar.gz", "has_sig": false, "md5_digest": "1129414f3990e7477090fcc88517cc1a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3472, "upload_time": "2016-08-20T21:48:17", "url": "https://files.pythonhosted.org/packages/78/4f/bf2d82f575ac8122e86d55c2a78afa23e442f56d15e78b3edb6134732390/ohneio-0.8.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1129414f3990e7477090fcc88517cc1a", "sha256": "4d09754ddc90a7785e1c3457b7b8a5654badd7e1611dc0f42ee5a70ca5b4fdc7" }, "downloads": -1, "filename": "ohneio-0.8.1.tar.gz", "has_sig": false, "md5_digest": "1129414f3990e7477090fcc88517cc1a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3472, "upload_time": "2016-08-20T21:48:17", "url": "https://files.pythonhosted.org/packages/78/4f/bf2d82f575ac8122e86d55c2a78afa23e442f56d15e78b3edb6134732390/ohneio-0.8.1.tar.gz" } ] }