asyncstdlib library re-implements functions and classes of the Python
standard library to make them compatible with
async callables, iterables
and context managers.
It is fully agnostic to
async event loops and seamlessly works with
asyncio, third-party libraries such as
trio, as well as
async event loop.
Standard Library Modules¶
All re-implementations are located in submodules of
with the same name as those of the Python standard library.
The Async Library Module¶
The core toolset used by
asyncstdlib itself is available
as a separate submodule.
Async Neutral Arguments¶
Many objects of
asyncstdlib are async neutral – they accept
both regular and async arguments.
Type annotations use parentheses to denote this;
for example, “(async) iter T” in the signature zip(*iterables: (async) iter T)
can handle both synchronous and asynchronous iterables.
Whether a callable is regular or async is determined by inspecting its
return type at runtime.
This supports async-producing factories, such as an
function wrapped in
However, this also means that the result must consistently be either
regular or async.
Async Iterator Cleanup¶
Cleanup of async iterables is special in that
aclose() may require
an active event loop. Thus, all utilities of
asyncstdlib that work on async
iterators will eagerly
borrow() to prevent automatic cleanup,
scoped_iter() to guarantee cleanup in custom code.
See the guide on Iterator Scoping for details and usage examples.