This package provides a way to parse Human Readable ABI introduced by ethers.js to the Python world. It's still pretty much a WIP. The goal is to be fully compatible with ethers.js and ethers-rs.
$ pip install eth-abi-parser
from eth_abi_parser import HumanReadableParser
parser = HumanReadableParser('event TestEvent(uint indexed id, (string, uint16, (uint8, uint8)) value)')
print(parser.take_event())
# {'type': 'event', 'name': 'TestEvent', 'anonymous': False, 'inputs': [{'type': 'uint', 'name': 'id', 'indexed': True}, {'type': 'tuple', 'name': 'value', 'indexed': False, 'components': [{'type': 'string'}, {'type': 'uint16'}, {'type': 'tuple', 'components': [{'type': 'uint8'}, {'type': 'uint8'}]}]}]}
This library is still a work-in-progress. Features are being implemented as needed. But if you find it lacks what you need, feel free to submit a pull request!
Apache License 2.0