Metadata-Version: 2.1
Name: web3-async-multi-provider
Version: 0.1.0b0
Summary: Web3.py compatible async providers that supports multiply RPC URLs
Home-page: https://github.com/deknowny/web3-async-multi-provider
License: MIT
Keywords: web3,async,multi,provider
Author: Kurbatov Yan
Author-email: deknowny@gmail.com
Requires-Python: >=3.8,<4.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Provides-Extra: all
Provides-Extra: dev-all
Provides-Extra: dev-check
Provides-Extra: dev-deploy
Provides-Extra: dev-docs
Provides-Extra: dev-style
Provides-Extra: dev-test
Requires-Dist: autoflake (>=1.4,<2.0) ; extra == "dev-style" or extra == "dev-all"
Requires-Dist: black (>=21.11b1,<22.0) ; extra == "dev-style" or extra == "dev-all"
Requires-Dist: bumpversion (>=0.5.3,<0.6.0) ; extra == "dev-deploy" or extra == "dev-all"
Requires-Dist: coverage (>=6.1.2,<7.0.0) ; extra == "dev-test" or extra == "dev-all"
Requires-Dist: coveralls (>=3.3.1,<4.0.0) ; extra == "dev-test" or extra == "dev-all"
Requires-Dist: isort (>=5.10.1,<6.0.0) ; extra == "dev-style" or extra == "dev-all"
Requires-Dist: mike (>=1.1.2,<2.0.0) ; extra == "dev-docs" or extra == "dev-all"
Requires-Dist: mkdocs (>=1.2.3,<2.0.0) ; extra == "dev-docs" or extra == "dev-all"
Requires-Dist: mkdocs-material (>=8.0.2,<9.0.0) ; extra == "dev-docs" or extra == "dev-all"
Requires-Dist: mypy (>=0.930,<0.931) ; extra == "dev-check" or extra == "dev-all"
Requires-Dist: pre-commit (>=2.15.0,<3.0.0) ; extra == "dev-style" or extra == "dev-all"
Requires-Dist: pytest (>=6.2.5,<7.0.0) ; extra == "dev-test" or extra == "dev-all"
Requires-Dist: pytest-cov (>=3.0.0,<4.0.0) ; extra == "dev-test" or extra == "dev-all"
Requires-Dist: web3 (==6.2.0)
Project-URL: Documentation, https://deknowny.github.io/web3-async-multi-provider/latest/
Description-Content-Type: text/markdown

# Web3 async multi provider
> Web3.py compatible async providers that supports multiply RPC URLs

This library allows to create a `w3` instance with multiply RPC URLs to prevent failures when a node is down by choosing another one by cycle.

![PyPI - Python Version](https://img.shields.io/pypi/pyversions/web3_async_multi_provider)
![PyPI - Implementation](https://img.shields.io/pypi/implementation/web3_async_multi_provider)
![PyPI](https://img.shields.io/pypi/v/web3_async_multi_provider)
[![Coverage Status](https://coveralls.io/repos/github/deknowny/web3-async-multi-provider/badge.svg?branch=main)](https://coveralls.io/github/deknowny/web3-async-multi-provider?branch=main)
***

# Features
* HTTP async provider
* WebSockets async provider
## Overview
HTTP w3 provider
```python
import web3
from web3_async_multi_provider import AsyncWSMultiProvider


provider = AsyncHTTPMultiProvider(
    providers=[
        web3.AsyncHTTPProvider("https://eth.llamarpc.com"),
        web3.AsyncHTTPProvider("https://rpc.flashbots.net"),
    ]
)
```

WebSockets provider
```python
import web3
from web3_async_multi_provider import AsyncWSMultiProvider


provider = AsyncWSMultiProvider(
    providers=[
        web3.providers.WebsocketProvider("wss://example.com/"),
        web3.providers.WebsocketProvider("wss://google.com/"),
    ]
)
```

And then add it into `Web3`:
```python
w3 = web3.Web3(
    provider
    modules={"eth": [web3.eth.AsyncEth]},
    middlewares=[]
)
print(await web3.eth.chain_id)
```

# Installation
Via PyPI:
```shell
python -m pip install web3_async_multi_provider
```
Or via GitHub
```shell
python -m pip install https://github.com/deknowny/web3-async-multi-provider/archive/main.zip
```
# Contributing
Check out [site Contributing section](https://deknowny.github.io/web3-async-multi-provider/latest/contributing/)

