Release Notes

eth-abi v4.0.0 (2023-03-22)

No significant changes.

eth-abi v4.0.0-beta.3 (2023-03-20)

Breaking Changes

  • Upgrade Parsimonious dependency to allow >=0.9,<0.10 (#201)

eth-abi v4.0.0-beta.2 (2022-11-21)


  • Add support for Python 3.11 (#194)

Miscellaneous changes

eth-abi v4.0.0-beta.1 (2022-09-27)


  • Reconcile differences in 32-byte padding between eth-abi encoders for dynamic types and Solidity’s abi.encode() for 0 or empty values (#158)

Breaking Changes

  • Remove encode_abi_single(), encode_packed_single(), and decode_abi_single(). Rename encode_abi(), encode_abi_packed(), and decode_abi() to encode(), encode_packed(), and decode(), respectively. (#161)

Miscellaneous changes

eth-abi v3.0.1 (2022-07-18)


  • Add DeprecationWarning for encode_abi(), encode_single(), decode_abi(), and decode_single() and add temporary versions of abi.encode() and abi.decode() so users can start making these changes early. (#165)

Miscellaneous changes

eth_abi 3.0.0 (2022-01-19)


  • Add support for python 3.8 (#145)
  • Add support for Python 3.8. Includes updating mypy and flake8 version requirements (#155)
  • Drop Python 3.6 support, add Python 3.9 and 3.10 support. Update any dependencies accordingly (#156)


  • Catch ABITypeError exceptions when checking has_encoder (#148)

Improved Documentation

  • Fix broken badges in README (#144)

Miscellaneous changes

eth-abi v2.1.1 (2020-02-27)


  • If subclassing, the new method was not being used by seek_in_frame(). Now it will be. (#139)

Internal Changes - for eth_abi contributors

  • Merged in project template, for changes in release scripts, docs, release notes, etc. (#140)



  • Includes all changes from v2.0.0 beta and alpha versions.


  • Added submodule with extra requirements installable with pip install eth-abi[tools]. See Tools.



Released March 24, 2019

  • Fixed an issue that caused custom types containing capital letters to be unparseable.
  • Removed PyPy support.
  • Added Python 3.7 support.


  • Added the grammar module to the public API. See Grammar.
  • Updated string API for the ABIType. Type strings for ABIType instances are now obtained via the to_type_str() method instead of by invoking the builtin Python str function with an instance of ABIType.



  • Update eth-typing requirement to >=2.0.0,<3.0.0.


  • Added codec API to facilitate use of custom registries. See Codecs.


Released October 16, 2018

  • Bugfixes
    • Was accidentally allowing eth-typing v2. Now it requires eth-typing v1 only.


  • New Features
    • Added support for nested dynamic arrays from the Solidity version 2 ABI
    • Added support for non-standard packed mode encoding
    • Added support for tuple array types e.g. (int,int)[]
  • Backwards Incompatible Changes
    • The encode_single() and decode_single() functions no longer accept type tuples to identify ABI types. Only type strings are accepted.
    • The collapse_type() function has been removed. People who still wish to use this function should replicate its logic locally and where needed.
    • The process_type() function has been removed in favor of the parse() function. This should make the parsing API more consistent with the new parsimonious parser.


Released July 19, 2018

  • Backwards Incompatible Changes
    • decode_single() called with ABI type ‘string’ will now return a python str instead of bytes.
    • Support for the legacy real and ureal types has been removed
  • Bugfixes
    • Simple callable encoders work again
  • Misc
    • Various documentation updates and type annotations


Released December 6, 2018

  • Bugfixes
    • Resolved an issue that was preventing discovery of type hints.
  • Misc
    • Updated eth-typing dependency version to >=2.0.0,<3.0.0.


Released October 18, 2018

  • Bugfixes
    • Expand parsimonious dependency from v0.8.0 to v0.8.*


Released October 16, 2018

  • Bugfixes
    • Was accidentally allowing eth-typing v2. Now it requires eth-typing v1 only. (backport from v2)


Released August 28, 2018

  • New Features
    • Backported and added support for nested dynamic arrays from the Solidity version 2 ABI


Released May 10, 2018

  • Bugfixes
    • is_encodable() now returns False if a Decimal has too many digits to be encoded in the given fixed<M>x<N> type. (It was previously raising a ValueError)
    • Raise an EncodingTypeError instead of a TypeError when trying to encode a float into a fixed<M>x<N> type.


Released May 8, 2018

  • New Features
    • Added a Registry API (docs in progress) for looking up encoders by ABI type
    • Added support for types: tuple and fixedMxN
    • Added new is_encodable check for whether a value can be encoded with the given ABI type
  • Bugfixes
    • Fix RealDecoder bug that allowed values other than 32 bytes
    • Fix bug that accepted stringN as a valid ABI type. Strings may not have a fixed length.
    • Stricter value checking when encoding a Decimal (Make sure it’s not a NaN)
    • Fix typos in “missing property” exceptions
  • Misc
    • Precompile regexes, for performance & clarity
    • Test fixups and switch to CircleCI
    • Readme improvements
    • Performance improvements
    • Drop Python 2 support cruft


Released Feb 28, 2018

  • Confirmed pypy3 compatibility
  • Add support for eth-utils v1.0.0-beta2 and v1.0.1 stable
  • Testing improvements


Released Feb 5, 2018

  • Drop py2 support
  • Add support for eth-utils v1-beta1


  • Rename to eth-abi for consistency across github/pypi/python-module


  • Better error messages for decoder errors.


  • Bugfix for process_type to support byte string type arrguments


  • process_type now auto-expands all types which have omittied their sizes.


  • Support for function types.


  • Bugfix for small signed integer and real encoding/decoding


  • Bugfix for faulty release.


  • Depart from the original pyethereum encoding/decoding logic.
  • Fully rewritten encoder and decoder functionality.


  • Fix a handful of bytes encoding issues.


  • Use pyrlp utility functions for big_endian int operations


  • Bugfixes from upstream pyethereum repository for encoding/decoding
  • Python 3 Support


  • Initial release