Release Notes

eth-abi v5.1.0 (2024-04-01)

Internal Changes - for eth-abi Contributors

  • Upgrade parsimonious from 0.9 to 0.10, which is 15% faster (#231)

  • Add python 3.12 support, add all-format docs tests and nightly CI runs, reorg tests file structure to match CI grouping (#232)

eth-abi v5.0.1 (2024-03-04)


  • During decoding, verify all pointers in arrays and tuples point to a valid location in the payload (#226)

  • Fix memory leak warning in NodeVisitor and ABIRegistry (#230)

Internal Changes - for eth-abi Contributors

  • Clear mypy misc-type errors and add top-level py.typed file back (#221)

eth-abi v5.0.0 (2024-01-09)

Breaking Changes

  • Drop python 3.7 support (#217)

Internal Changes - for eth-abi Contributors

  • Merge updates from the project template, notably, use pre-commit for linting and change the name of the master branch to main (#217)

  • Corrected format of booleans in pyproject.toml and added a test for the presence of the eth_abi.__version__ attribute (#219)

eth-abi v4.2.1 (2023-09-13)

Internal Changes - for eth-abi contributors

  • Add build.os section to readthedocs build settings (#213)

Miscellaneous changes

eth-abi v4.2.0 (2023-08-28)


  • Allow turning off abi decoder “strict mode” when calling abi.decode(). (#198)


  • Validate against zero-sized tuple types / empty Solidity structs. (#212)

eth-abi v4.1.0 (2023-06-08)


  • updated StringDecoder class to allow user-defined handling of malformed strings, handle with strict by default (#187)

Internal Changes - for eth-abi contributors

  • remove unused docs deps, bump version of remaining (#203)

  • Moved requirements-docs.txt info into .readthedocs.yml (#204)

  • pull in updates from the python project template (#205)

  • Updated CI process to handle tox issue caused by virtualenv update (#208)

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