Skip to main content

Python data class-like wrapper for solidity abi specification

Project description

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]:
        ...

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

abinator-0.0.6.tar.gz (6.3 kB view details)

Uploaded Source

Built Distribution

abinator-0.0.6-py3-none-any.whl (7.5 kB view details)

Uploaded Python 3

File details

Details for the file abinator-0.0.6.tar.gz.

File metadata

  • Download URL: abinator-0.0.6.tar.gz
  • Upload date:
  • Size: 6.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.23.0

File hashes

Hashes for abinator-0.0.6.tar.gz
Algorithm Hash digest
SHA256 575c63b78aa20537f9716c803fb8d518333e0c52ff4425417ec1ebce0ed1343b
MD5 9dc025c9fb493694810ef8148e29230c
BLAKE2b-256 3790c156aa8ad4ee9e7668b050be24de4e312069c93dab208f2aa363fd92a780

See more details on using hashes here.

File details

Details for the file abinator-0.0.6-py3-none-any.whl.

File metadata

  • Download URL: abinator-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 7.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.23.0

File hashes

Hashes for abinator-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 b89e6c520813e93829d49cd4170ea47f40fde5de19384dc8ea9a19d9b261e6e3
MD5 645c972a7dfd36c95ece32e38ff1cc1b
BLAKE2b-256 90e244636d055e88a5baf8122ce54d747f509082fb0cdccc24e809de64d9d0e6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page