{ "info": { "author": "Yingbo Gu", "author_email": "tensiongyb@gmail.com", "bugtrack_url": null, "classifiers": [ "Framework :: AsyncIO", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# iofree\n\n[![Build Status](https://travis-ci.org/guyingbo/iofree.svg?branch=master)](https://travis-ci.org/guyingbo/iofree)\n[![Python Version](https://img.shields.io/pypi/pyversions/iofree.svg)](https://pypi.python.org/pypi/iofree)\n[![Version](https://img.shields.io/pypi/v/iofree.svg)](https://pypi.python.org/pypi/iofree)\n[![Format](https://img.shields.io/pypi/format/iofree.svg)](https://pypi.python.org/pypi/iofree)\n[![License](https://img.shields.io/pypi/l/iofree.svg)](https://pypi.python.org/pypi/iofree)\n[![codecov](https://codecov.io/gh/guyingbo/iofree/branch/master/graph/badge.svg)](https://codecov.io/gh/guyingbo/iofree)\n\nio-free stream parser inspired by [ohneio](https://github.com/acatton/ohneio).\n\n## Installation\n\n~~~\npip install iofree\n~~~\n\n## Usage Examples:\n\n* [shadowsocks parser](https://github.com/guyingbo/shadowproxy/blob/master/shadowproxy/proxies/shadowsocks/parser.py)\n* [shadowsocks aead parser](https://github.com/guyingbo/shadowproxy/blob/master/shadowproxy/proxies/aead/parser.py)\n* [socks5 parser](https://github.com/guyingbo/shadowproxy/blob/master/shadowproxy/proxies/socks/parser.py)\n* [simple http parser](https://github.com/guyingbo/shadowproxy/blob/master/shadowproxy/proxies/http/parser.py)\n* [TLS1.3 parser](https://github.com/guyingbo/tls1.3/blob/master/tls/__init__.py)\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/guyingbo/iofree", "keywords": "", "license": "MIT", "maintainer": "Yingbo Gu", "maintainer_email": "tensiongyb@gmail.com", "name": "iofree", "package_url": "https://pypi.org/project/iofree/", "platform": "", "project_url": "https://pypi.org/project/iofree/", "project_urls": { "Homepage": "https://github.com/guyingbo/iofree" }, "release_url": "https://pypi.org/project/iofree/0.1.3/", "requires_dist": null, "requires_python": ">=3.6", "summary": "io-free stream parser which helps implementing network protocols the `Sans-IO` way", "version": "0.1.3" }, "last_serial": 5606007, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "79853eba8db7510d03482700243884f6", "sha256": "476d5a970a7511eedcfec075094ce496b961311225c25449497166af42c81687" }, "downloads": -1, "filename": "iofree-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "79853eba8db7510d03482700243884f6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 2848, "upload_time": "2018-08-22T08:11:25", "url": "https://files.pythonhosted.org/packages/92/4b/b79525ddd8c3cbab82d6a483c705025711aafbec56d3cd8176721f2312bf/iofree-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3fbc1910116dd746c707b9b18b957045", "sha256": "3fef7ce420e2ab7d25ba93295b269fa0c31dc826b04fe800b4d48f0436725bee" }, "downloads": -1, "filename": "iofree-0.1.0.tar.gz", "has_sig": false, "md5_digest": "3fbc1910116dd746c707b9b18b957045", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 2816, "upload_time": "2018-08-22T08:14:54", "url": "https://files.pythonhosted.org/packages/80/c4/01b0dcbe91f61d07d08b36824b896238666352d7f5dd30410e5c6830a080/iofree-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "7a9a209c8b797b82d6323d48d95faae5", "sha256": "9a655229f6d53e220a413dbdd48decd0bc6e0180e22ecbb27f8a8476de052a57" }, "downloads": -1, "filename": "iofree-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "7a9a209c8b797b82d6323d48d95faae5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 3197, "upload_time": "2018-08-23T03:10:42", "url": "https://files.pythonhosted.org/packages/50/c7/57af4b70b386b15bf0777f22a1df067128e7c1802d7b640ea44d8c428400/iofree-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cf73b5dc4055170b8dc836227622f9dd", "sha256": "8261dc289c0adda376f66f7010f761463720228908d26af5edcc5c084e3a648b" }, "downloads": -1, "filename": "iofree-0.1.1.tar.gz", "has_sig": false, "md5_digest": "cf73b5dc4055170b8dc836227622f9dd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 3223, "upload_time": "2018-08-23T03:11:05", "url": "https://files.pythonhosted.org/packages/dc/77/5c8fa0cdca978cb6f3e7d764c25b6eaeb147d28f850e6e65f7fee143bb5b/iofree-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "33916c0ebc13457416ddc9446a25ec42", "sha256": "5de050e0ccbf4dc2996d0aad4c1c3ab88a4dd76aa087185881391d39873f016e" }, "downloads": -1, "filename": "iofree-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "33916c0ebc13457416ddc9446a25ec42", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 4247, "upload_time": "2019-03-01T02:23:48", "url": "https://files.pythonhosted.org/packages/3a/e5/58d14a8e075625bddcaa768bf4be28b500c5d95e73c261a755bee4c796e6/iofree-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7821956e2f0622a5afdf153ea8856054", "sha256": "7d40a58bb12df4bfb45beca70032bb99e419c01df40e7a998e5114469fbd7a39" }, "downloads": -1, "filename": "iofree-0.1.2.tar.gz", "has_sig": false, "md5_digest": "7821956e2f0622a5afdf153ea8856054", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 3477, "upload_time": "2019-03-01T02:23:49", "url": "https://files.pythonhosted.org/packages/ff/e8/06e5ace2dac098d24ddd51e5167e798bbf57e71d214e122f8c2a4e212c9f/iofree-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "edd786a8ff9094e6b00d9599aa42da7c", "sha256": "56b617111ac0afdbe6f10a3d6fb7638b6137e5c0a493ad5b87ee9f5d99547635" }, "downloads": -1, "filename": "iofree-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "edd786a8ff9094e6b00d9599aa42da7c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 4248, "upload_time": "2019-07-30T06:28:09", "url": "https://files.pythonhosted.org/packages/e9/fe/cd2b30c624bf02edfc03c4277d69724a0266f3951f436a0ce2aae7cdadb4/iofree-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8efdfb1c5b4edd03863d1080740ebb80", "sha256": "161f0a268705b8213426c1647d8a8c2330c1bb009b7223984b764229a005747a" }, "downloads": -1, "filename": "iofree-0.1.3.tar.gz", "has_sig": false, "md5_digest": "8efdfb1c5b4edd03863d1080740ebb80", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 3485, "upload_time": "2019-07-30T06:28:11", "url": "https://files.pythonhosted.org/packages/e8/9f/34908af09c172b740fb75f2e70d9d69e86a20594489c72088832d986b70a/iofree-0.1.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "edd786a8ff9094e6b00d9599aa42da7c", "sha256": "56b617111ac0afdbe6f10a3d6fb7638b6137e5c0a493ad5b87ee9f5d99547635" }, "downloads": -1, "filename": "iofree-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "edd786a8ff9094e6b00d9599aa42da7c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 4248, "upload_time": "2019-07-30T06:28:09", "url": "https://files.pythonhosted.org/packages/e9/fe/cd2b30c624bf02edfc03c4277d69724a0266f3951f436a0ce2aae7cdadb4/iofree-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8efdfb1c5b4edd03863d1080740ebb80", "sha256": "161f0a268705b8213426c1647d8a8c2330c1bb009b7223984b764229a005747a" }, "downloads": -1, "filename": "iofree-0.1.3.tar.gz", "has_sig": false, "md5_digest": "8efdfb1c5b4edd03863d1080740ebb80", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 3485, "upload_time": "2019-07-30T06:28:11", "url": "https://files.pythonhosted.org/packages/e8/9f/34908af09c172b740fb75f2e70d9d69e86a20594489c72088832d986b70a/iofree-0.1.3.tar.gz" } ] }