Pons, an async Ethereum RPC client library
I've been waiting a long time for async support in `web3`, and now that it started to appear, it only supports `asyncio` (while I use `trio` in my application), and is in general not quite finished. So I decided to write an RPC client of my own with convenient contract calls, simple structure (instead of a hundred levels of indirection in `web3`) and strictly typed. Still a lot of possible enhancements possible, but it is already useful (well, I use it, at least :).

Repo: https://github.com/fjarri/pons

A simple example:

    import trio

    from eth_account import Account
    from pons import Client, HTTPProvider, AccountSigner, Address, Amount

    async def main():

       provider = HTTPProvider("&lt;your provider's https endpoint&gt;")
       client = Client(provider)

       acc = Account.from_key("0x&lt;your secret key&gt;")
       signer = AccountSigner(acc)

       async with client.session() as session:
          my_balance = await session.eth_get_balance(signer.address)
          print(my_balance)

          another_address = Address.from_hex("0x&lt;some address&gt;")
          await session.transfer(signer, another_address, Amount.ether(1.5))

          my_balance = await session.eth_get_balance(signer.address)
          print(my_balance)


    trio.run(main)


More in the [Tutorial](https://pons.readthedocs.io/en/latest/tutorial.html#tutorial) (not very extensive for now, but hopefully gives an idea of how to use it), and of course there's always the [API reference](https://pons.readthedocs.io/en/latest/api.html).

I am sure there are a lot of usage scenarios I haven't even considered, so I would be especially grateful for complaints about this or that method/parameters/naming being inconvenient, counterintuitive, confusing, or out of place.