Metadata-Version: 2.0
Name: aiolib
Version: 0.0.1
Summary: UNKNOWN
Home-page: https://github.com/feluxe/aiolib
Author: Felix Meyer-Wolters
Author-email: felix@meyerwolters.de
Maintainer: Felix Meyer-Wolters
Maintainer-email: felix@meyerwolters.de
License: unlicensed
Download-URL: https://github.com/feluxe/aiolib/tarball/0.0.1
Platform: 
Requires-Dist: aitertools


# aiolib


## Description

The main purpose of this lib is to provide *asyncio* compatbile alternatives for items of the standard library that aren't asyncio compatible. E.g. `itertools.chain.from_iterable()` doesn't work with `async_generators`, etc.

I hope/guess the stdlib will catch up with this sooner or later. This lib is for those who need a shim as soon as possible.

If you find something in the standard lib that doesn't work or play well with asyncio, please go ahead and add your replecement/wrapper!


## Requirements

aiolib requires Python `>= 3.6`


## Install

    pip install aiolib

or

    pipenv install aiolib


## Library Documentation


### builtins

#### `aenumerate`

Async version of: [enumerate](https://docs.python.org/3.6/library/functions.html#enumerate)

Example:

```python

async for i in aenumerate(chain(a_gen, range(10))):
    print(i)

```

### itertools


#### `itertools.chain(*iterables)`

Async version of: [chain](https://docs.python.org/3.6/library/itertools.html#itertools.chain) in the stdlib.

This function can handle `AsyncGeneratorType`.

Example:

```python
# 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: [from_iterable](https://docs.python.org/3.6/library/itertools.html#itertools.chain.from_iterable) in the stdlib.

This function can handle `AsyncGeneratorType`.

Example:

```python
# 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!



## Development

Just clone the repo and run:

    pipenv install --dev

This project uses [yapf](https://github.com/google/yapf), but I don't really care how you format your pull requests. It would be auto-formatted later.





