Skip to main content

Abinator

Define ABI for your smart contract with dataclass-like style.

Quick example

Define your abi as Abi child. Abi.to_abi() returns abi as json, so you can use it with web3py and web3-premium.

from abinator import Abi, uint256, uint8


class ERC20Fragment(Abi):
    decimals: uint8

    @view
    def balanceOf(account: address) -> uint256:
        ...


ERC20Fragment.to_abi() # returns json with abi

Documentation

State mutability

You can use view, pure, payable decoratos for state mutabilty.

from abinator import Abi, uint256


class Contract(Abi):
    @view
    def balanceOf(account: address) -> uint256:
        ...
    
    @payable
    def deposit():
        ...

    @pure
    def safe_add(a: uint256, b: uint256) -> uint256:
        ...

Events

Define events with child class of Event inside your abi class.

You can use indexed decorator for topics.

from abinator import Abi, Event, address, uint256, indexed


class ERC20Fragment(Abi):
    class Transfer(Event):
        from_: indexed(address)
        to: indexed(address)
        value: uint256

Also there is anonymous for event class:

from abinator import Abi, Event, anonymous, uint256


class Contract(Abi):
    @anonymous
    class AnonymousEvent(Event):
        value: uint256

Structs and tuple

Define structs with child class of Struct inside your abi class.

from abinator import Abi, Struct, payable, address, uint24, int24, uint256


class NonfungiblePositionManager(Abi):
    class MintParams(Struct):
        token0: address
        token1: address
        fee: uint24
        tickLower: int24
        tickUpper: int24
        amount0Desired: uint256
        amount1Desired: uint256
        amount0Min: uint256
        amount1Min: uint256
        recipient: address
        deadline: uint256

    @payable
    def mint(params: MintParams) -> tuple[uint256, uint128, uint256, uint256]:
        ...

Release files for abinator 0.0.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for abinator 0.0.6
File Size Uploaded
abinator-0.0.6.tar.gz 6.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for abinator 0.0.6
File Interpreter ABI Platform
abinator-0.0.6-py3-none-any.whl Python 3 none any Details

Total release size:13.9 kB

Release files / abinator-0.0.6.tar.gz

Download URL abinator-0.0.6.tar.gz
Size 6.3 kB
Tags Source
SHA-256 checksum
How to use checksums
575c63b78aa20537f9716c803fb8d518333e0c52ff4425417ec1ebce0ed1343b
BLAKE2b-256 checksum
How to use checksums
3790c156aa8ad4ee9e7668b050be24de4e312069c93dab208f2aa363fd92a780
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-httpx/0.23.0

Release files / abinator-0.0.6-py3-none-any.whl

Download URL abinator-0.0.6-py3-none-any.whl
Size 7.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b89e6c520813e93829d49cd4170ea47f40fde5de19384dc8ea9a19d9b261e6e3
BLAKE2b-256 checksum
How to use checksums
90e244636d055e88a5baf8122ce54d747f509082fb0cdccc24e809de64d9d0e6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-httpx/0.23.0

Release history Release notifications | RSS feed

This release

0.0.6 This release

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page