aioshim
Description
The main purpose of this lib is to provide asyncio compatible versions of the functions in the standard library. E.g. itertools.chain()
doesn't work with async_generators
, so there is aioshim.itertools.chain()
to fill the gap. Etc.
I'm sure the stdlib will catch up with this sooner or later. This lib is for those who need a shim as soon as possible.
This could be a central repo for all such asyncio related shims.
If there is interest, this repo could be maintained by a github aioshim org or something.
Requirements
aioshim requires Python >= 3.6
Install
pip install aioshim
or
pipenv install aioshim
Development
Just clone the repo and run:
pipenv install --dev
This project uses yapf formatter.
Library Documentation
builtins
aenumerate
Async version of: enumerate
Example:
async for i in aenumerate(chain(a_gen, range(10))):
print(i)
itertools
itertools.chain(*iterables)
Async version of: itertools.chain
This function can handle AsyncGeneratorType
.
Example:
# Use with async_generator:
async for i in chain(my_async_gen1, my_async_gen2):
print(i)
# Allows for mixing normal generators with async generators:
async for i in chain(my_async_gen, range(10)):
print(i)
itertools.chain_from_iterable(iterable)
Async version of: itertools.chain.from_iterable
This function can handle AsyncGeneratorType
.
Example:
# Use with async_generator:
async for i in chain_from_iterable(my_async_generator):
print(i)
# Works with normal items as well:
async for i in chain_from_iterable([range(10)]):
print(i)
More items to come
Pull requests appreciated!