Because asyncio.gather() is not enough!
Project description
aioplus
Key Features
- As easy as built-ins - but asynchronous;
- Early returns never cause unawaited coroutine warnings;
- Nearly the same API as the Python 3.13 standard blocking API.
Getting Started
Installation
The library is available as aioplus on PyPI:
pip install aioplus
Usage
aall
For more, see the documentation.
import asyncio
from aioplus import aall, arange
async def main() -> None:
"""Run the program."""
aiterable = (num > 0 async for num in arange(2304))
flg = await aall(aiterable)
if __name__ == "__main__":
asyncio.run(main())
aany
For more, see the documentation.
import asyncio
from aioplus import aany, arange
async def main() -> None:
"""Run the program."""
aiterable = (num % 2 == 0 async for num in arange(2304))
flg = await aany(aiterable)
if __name__ == "__main__":
asyncio.run(main())
abatched
For more, see the documentation.
import asyncio
from aioplus import abatched, arange
async def main() -> None:
"""Run the program."""
async for batch in abatched(arange(23), n=4):
print(batch)
if __name__ == "__main__":
asyncio.run(main())
acount
For more, see the documentation.
import asyncio
from aioplus import acount
async def main() -> None:
"""Run the program."""
async for num in acount(start=23, step=4):
print(num)
if __name__ == "__main__":
asyncio.run(main())
acycle
For more, see the documentation.
import asyncio
from aioplus import acycle, arange
async def main() -> None:
"""Run the program."""
async for num in acycle(arange(23)):
print(num)
if __name__ == "__main__":
asyncio.run(main())
aenumerate
For more, see the documentation.
import asyncio
from aioplus import aenumerate, arange
async def main() -> None:
"""Run the program."""
async for index, num in aenumerate(arange(2304)):
print(index, num)
if __name__ == "__main__":
asyncio.run(main())
afirst
For more, see the documentation.
import asyncio
from aioplus import afirst, arange
async def main() -> None:
"""Run the program."""
aiterable = arange(4, 23)
num = await afirst(aiterable)
print(f"aiterable[0] = {num}")
if __name__ == "__main__":
asyncio.run(main())
ahead
For more, see the documentation.
import asyncio
from aioplus import ahead, arange
async def main() -> None:
"""Run the program."""
async for num in ahead(arange(23), n=4):
print(num)
if __name__ == "__main__":
asyncio.run(main())
aislice
For more, see the documentation.
import asyncio
from aioplus import aislice, arange
async def main() -> None:
"""Run the program."""
async for num in aislice(arange(23), 4):
print(num)
if __name__ == "__main__":
asyncio.run(main())
alast
For more, see the documentation.
import asyncio
from aioplus import alast, arange
async def main() -> None:
"""Run the program."""
aiterable = arange(4, 23)
num = await alast(aiterable)
print(f"aiterable[-1] = {num}")
if __name__ == "__main__":
asyncio.run(main())
alen
For more, see the documentation.
import asyncio
from aioplus import alen, arange
async def main() -> None:
"""Run the program."""
aiterable = arange(2304)
length = await alen(aiterable)
print(f"len(aiterable) == {length}")
if __name__ == "__main__":
asyncio.run(main())
anth
For more, see the documentation.
import asyncio
from aioplus import anth, arange
async def main() -> None:
"""Run the program."""
aiterable = arange(23)
value = await anth(aiterable, n=4)
print(f"value = {value}")
if __name__ == "__main__":
asyncio.run(main())
apairwise
For more, see the documentation.
import asyncio
from aioplus import apairwise, arange
async def main() -> None:
"""Run the program."""
async for left, right in apairwise(arange(23)):
print(f"pair = ({left}, {right})")
if __name__ == "__main__":
asyncio.run(main())
arange
For more, see the documentation.
import asyncio
from aioplus import arange
async def main() -> None:
"""Run the program."""
async for num in arange(2304):
print(num)
if __name__ == "__main__":
asyncio.run(main())
arepeat
For more, see the documentation.
import asyncio
from aioplus import arepeat
async def main() -> None:
"""Run the program."""
async for num in arepeat(23, times=4):
print(num)
if __name__ == "__main__":
asyncio.run(main())
areversed
For more, see the documentation.
import asyncio
from aioplus import arange, areversed
async def main() -> None:
"""Run the program."""
async for num in areversed(arange(2304)):
print(num)
if __name__ == "__main__":
asyncio.run(main())
atail
For more, see the documentation.
import asyncio
from aioplus import arange, atail
async def main() -> None:
"""Run the program."""
async for num in atail(arange(23), n=4):
print(num)
if __name__ == "__main__":
asyncio.run(main())
atriplewise
For more, see the documentation.
import asyncio
from aioplus import arange, atriplewise
async def main() -> None:
"""Run the program."""
async for left, middle, right in atriplewise(arange(23)):
print(f"window = ({left}, {middle}, {right})")
if __name__ == "__main__":
asyncio.run(main())
awaitify
For more, see the documentation.
import asyncio
from aioplus import awaitify
def func(num: int) -> None:
"""Print the number."""
print(f"Num: {num}")
async def main() -> None:
"""Run the program."""
afunc = awaitify(func)
await afunc(num=2304)
if __name__ == "__main__":
asyncio.run(main())
awindowed
For more, see the documentation.
import asyncio
from aioplus import arange, awindowed
async def main() -> None:
"""Run the program."""
async for window in awindowed(arange(23), n=4):
print(f"window = {window}")
if __name__ == "__main__":
asyncio.run(main())
License
MIT License, Copyright (c) 2025 Sergei Y. Bogdanov. See LICENSE file.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aioplus-0.2.0.tar.gz.
File metadata
- Download URL: aioplus-0.2.0.tar.gz
- Upload date:
- Size: 11.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.13.5 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
98da72415f9ecce19712d79cc103c5f9a665bd9dca6bdb16db4aeb26c9b7825a
|
|
| MD5 |
039a13b266fffc7d7ac5a955558dcd25
|
|
| BLAKE2b-256 |
ddb9f7b88449b550ee26e97c8d77123c3841b5d13cd2849f14b5d8bd8d2c3038
|
File details
Details for the file aioplus-0.2.0-py3-none-any.whl.
File metadata
- Download URL: aioplus-0.2.0-py3-none-any.whl
- Upload date:
- Size: 25.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.13.5 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d8726d4ff2b1602dfe799d55d13bd4c6ee10aaa4571ce383771d3e20c1b8e167
|
|
| MD5 |
49e4f2d6f9adf132ebf11ce9e9565493
|
|
| BLAKE2b-256 |
fac5bd64b191889b8f64871127c405b1b03bf3284a110c362d787299e70b3881
|