Approach#
This section contains guidelines used throughout the code base.
Use asyncio everywhere. Isolate any code that needs to be blocking in a separate worker thread.
Standardize naming. Sources, sinks, and steps are all functions with a suffix on the name indicating what type they are.
Build off existing abstractions. Python already has async iterators which work well, and LangChain has Runnables. Avoid new core abstractions to improve interoperability.