{"id":39355323,"url":"https://github.com/dapper91/simio","last_synced_at":"2026-04-18T20:01:57.451Z","repository":{"id":332995773,"uuid":"1134386122","full_name":"dapper91/simio","owner":"dapper91","description":"Python simple zero-dependency asynchronous IO","archived":false,"fork":false,"pushed_at":"2026-01-17T18:22:13.000Z","size":17,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-01-18T16:44:17.370Z","etag":null,"topics":["async","asyncio","io","networking","python","streaming"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dapper91.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-14T16:42:21.000Z","updated_at":"2026-01-17T18:22:15.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/dapper91/simio","commit_stats":null,"previous_names":["dapper91/python-aio","dapper91/simio"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/dapper91/simio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dapper91%2Fsimio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dapper91%2Fsimio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dapper91%2Fsimio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dapper91%2Fsimio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dapper91","download_url":"https://codeload.github.com/dapper91/simio/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dapper91%2Fsimio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31982755,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T17:30:12.329Z","status":"ssl_error","status_checked_at":"2026-04-18T17:29:59.069Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["async","asyncio","io","networking","python","streaming"],"created_at":"2026-01-18T02:36:40.104Z","updated_at":"2026-04-18T20:01:57.433Z","avatar_url":"https://github.com/dapper91.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Downloads][download-badge]][download-url]\n[![License][licence-badge]][licence-url]\n[![Python Versions][python-version-badge]][python-version-url]\n[![Build status][build-badge]][build-url]\n\n[download-badge]: https://static.pepy.tech/personalized-badge/simio?period=month\u0026units=international_system\u0026left_color=grey\u0026right_color=orange\u0026left_text=Downloads/month\n[download-url]: https://pepy.tech/project/simio\n[licence-badge]: https://img.shields.io/badge/license-Unlicense-blue.svg\n[licence-url]: https://github.com/dapper91/simio/blob/master/LICENSE\n[python-version-badge]: https://img.shields.io/pypi/pyversions/simio.svg\n[python-version-url]: https://pypi.org/project/simio\n[build-badge]: https://github.com/dapper91/simio/actions/workflows/test.yml/badge.svg?branch=master\n[build-url]: https://github.com/dapper91/simio/actions/workflows/test.yml\n\n# simio\n\nPython simple zero-dependency asynchronous IO.\n\n## Motivation\n\nPython 3.4 introduced native support for asynchronous code and announced\n[asyncio](https://docs.python.org/3/library/asyncio.html) standard library. async/await syntax provided a very\nconvenient way to write single-threaded concurrent code but asyncio library itself caused a lot of pain to developers\nsince it was ugly designed and provides very inconvenient api and asynchronous primitives. To fix that problem\ndevelopers implemented some third-party libraries to replace the standard one like [trio](https://trio.readthedocs.io).\n\nYou may use [trio](https://trio.readthedocs.io) or\n[anyio](https://anyio.readthedocs.io), but trio implements its own runtime, anyio although work on top\nof asyncio but provides too high level interface which may be undesirable for small projects.\n\nThis library is intended to solve some of that tensions.\n\n## Features\n\n* Buffered streams\n* TCP stream\n* TCP server\n\n## Installation\n\nYou can install simio with pip:\n\n```shell\npip install simio\n```\n\n## Quickstart\n\n### Buffered stream:\n\n```python\nimport asyncio as aio\n\nfrom simio import net, stream\n\n\nasync def main() -\u003e None:\n    async with await net.open_tcp_stream(\"httpforever.com\", 80) as http_stream:\n        buffered_stream = stream.BufferedStream(http_stream)\n        await buffered_stream.write_all(\n            b'GET / HTTP/1.1\\r\\n'\n            b'Host: httpforever.com\\r\\n'\n            b'\\r\\n',\n        )\n        status = await buffered_stream.read_until(b'\\r\\n')\n        print(status.decode())\n\n        headers = await buffered_stream.read_until(b'\\r\\n\\r\\n')\n        headers = dict(line.split(b':', maxsplit=1) for line in headers.removesuffix(b'\\r\\n\\r\\n').split(b'\\r\\n'))\n\n        body = await buffered_stream.read_exactly(size=int(headers[b'Content-Length']))\n        print(body.decode())\n\n\naio.run(main())\n\n```\n\n### Echo TCP server:\n\n```python\nimport asyncio as aio\nimport logging\n\nfrom simio import net\n\n\nasync def echo(socket: net.TcpSocket) -\u003e None:\n    logging.info(\"client %s connected\", socket.getpeername())\n\n    data = await socket.recv(1024)\n    await socket.sendall(data)\n\n\nasync def main() -\u003e None:\n    logging.basicConfig(level=logging.INFO)\n\n    await net.start_tcp_server(\"127.0.0.1\", 8080, echo, graceful_shutdown=10.0)\n\n\naio.run(main())\n\n```\n\n### TCP client stream:\n\n```python\nimport asyncio as aio\n\nfrom simio import net\n\n\nasync def main() -\u003e None:\n    async with await net.open_tcp_stream(\"127.0.0.1\", 8080) as tcp_stream:\n        await tcp_stream.write(b\"Hello World!!!\")\n\n        while data := await tcp_stream.read(1024):\n            print(data)\n\n\naio.run(main())\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdapper91%2Fsimio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdapper91%2Fsimio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdapper91%2Fsimio/lists"}