Skip to content

A simple and limited IO framework "for humans", because raw `asyncio` is not enough simple to use.

License

Notifications You must be signed in to change notification settings

KOLANICH-libs/SaneIO.py

Repository files navigation

SaneIO.py Unlicensed work

wheel (GHA via nightly.link) GitHub Actions N∅ hard dependencies Libraries.io Status Code style: antiflash

A very simplified and limited IO framework.

  1. It is simple to use. It comes at cost.

    1. Count of callback funtions is minimized.
    2. Every object MUST inherit certain classes.
    3. Batteries included.
  2. It is "portable" in the sense the ports of this framework to other languages and platforms should keep the same structure, allowing the programs using it be ported more easily.

    1. The core is decoupled from concrete implementations.
    2. Upper level protocols are "Sans-IO". They don't depend on concrete IO implementations. Instead they depend on the interfaces provided by the framework.
    3. Composition over inheritance -> can be ported C and Rust support
  3. It is composable. The structure is a stack of objects.

    • Wanna change the protocol in the stack? Just replace the layer object!
    • Wanna access the same server using both TCP and UART? Just add a mux!
    • Wanna access multiple upper layer protocols over the same low-level protocol (i.e. TCP)? Again, just add a mux!

About

A simple and limited IO framework "for humans", because raw `asyncio` is not enough simple to use.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages