NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1578 most downloaded on PyPI
eth_abi: Python utilities for working with Ethereum ABI definitions, especially encoding and decoding
Last release 1 months ago
22 Aug 2026
Release timing varies
gaps range from 2 weeks to 11 months
Nearly every release is documented
notes for 22 of 23 stable releases
Nothing withdrawn
no release was ever pulled
9 years old
40 releases · first in 2017
add funding.json by @wolovim in #242
Full Changelog: v5.2.0...v6.0.0
One column per quarter.
Bump version: 5.2.0 → 6.0.0-beta.1
Bump version: 5.2.0 → 6.0.0-beta.1
Drop support for Python 3.8 & 3.9 ( #250 )
Fix typo in index ( #243 )
Add support for Python 3.14 ( #250 )
Bump version: 5.1.0 → 5.2.0
Bump version: 5.1.0 → 5.2.0
Merge template, adding py313 support, replace bumpversion with bump-my-version , raise required hypothesis versions. ( #241 )
Merge template, fixing docs CI and other various updates ( #236 )
Bump version: 5.0.1 → 5.1.0
Bump version: 5.0.1 → 5.1.0
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 )
Bump version: 5.0.0 → 5.0.1
Bump version: 5.0.0 → 5.0.1
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 )
Clear mypy misc -type errors and add top-level py.typed file back ( #221 )
Bump version: 4.2.1 → 5.0.0
Bump version: 4.2.1 → 5.0.0
Drop python 3.7 support ( #217 )
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 )
Bump version: 4.2.0 → 4.2.1
Bump version: 4.2.0 → 4.2.1
Add build.os section to readthedocs build settings ( #213 )
#214
Bump version: 4.1.0 → 4.2.0
Bump version: 4.1.0 → 4.2.0
Allow turning off abi decoder “strict mode” when calling abi.decode() . ( #198 )
Validate against zero-sized tuple types / empty Solidity structs. ( #212 )
Bump version: 4.0.0 → 4.1.0
Bump version: 4.0.0 → 4.1.0
updated StringDecoder class to allow user-defined handling of malformed strings, handle with strict by default ( #187 )
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 )
Bump version: 4.0.0-beta.3 → 4.0.0
Bump version: 4.0.0-beta.3 → 4.0.0
- Upgrade Parsimonious dependency to allow >=0.9,<0.10
Upgrade Parsimonious dependency to allow >=0.9,<0.10 ( #201 )
### Features - Add support for Python 3.11 ( #194 ) ### Miscellaneous changes - #196
Add support for Python 3.11 ( #194 )
#196
- Reconcile differences in 32-byte padding between eth-abi encoders for dynamic types and Solidity’s abi.encode() for 0 or empty values
Reconcile differences in 32-byte padding between eth-abi encoders for dynamic types and Solidity’s abi.encode() for 0 or empty values ( #158 )
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 )
#161 , #166 , #167 , #168 , #177 , #183 , #186
- Add DeprecationWarning for encode_abi() , encode_single() , decode_abi() , and decode_single() and add temporary versions of abi.encode() and abi.de…
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 )
#165 , #166 , #172 , #177 , #178
- Add support for Python 3.8. Includes updating mypy and flake8 version requirements
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 )
Fix broken badges in README ( #144 )
#123 , #154
Nothing published for this version
- If subclassing eth_abi.decoding.ContextFramesBytesIO.seek() , the new method was not being used by seek_in_frame() . Now it will be.
If subclassing eth_abi.decoding.ContextFramesBytesIO.seek() , the new method was not being used by seek_in_frame() . Now it will be. ( #139 )
Merged in project template, for changes in release scripts, docs, release notes, etc. ( #140 )
- Added support for “byte” alias for “bytes1” type.
Added support for “byte” alias for “bytes1” type.
Added support for custom stream class in ABIDecoder . See Using a Custom Stream Class .
Added support for "byte" alias for "bytes1" type.
Added support for custom stream class in ~eth_abi.codec.ABIDecoder. See custom_stream_class.
- Includes all changes from v2.0.0 beta and alpha versions.
Includes all changes from v2.0.0 beta and alpha versions.
- Added eth_abi.tools submodule with extra requirements installable with pip install eth-abi[tools] . See Tools .
Added eth_abi.tools submodule with extra requirements installable with pip install eth-abi[tools] . See Tools .
- Added has_encoder() and is_encodable_type() to facilitate checking for type validity against coder registrations.
Added has_encoder() and is_encodable_type() to facilitate checking for type validity against coder registrations.
Added ~eth_abi.registry.ABIRegistry.has_encoder and ~eth_abi.codec.ABIEncoder.is_encodable_type to facilitate checking for type validity against coder registrations.
- Fixed an issue that caused custom types containing capital letters to be unparseable.
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 .
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 .
Added the grammar module to the public API. See grammar.
Updated string API for the ~eth_abi.grammar.ABIType. Type strings for ~eth_abi.grammar.ABIType instances are now obtained via the ~eth_abi.grammar.ABIType.to_type_str method instead of by invoking the builtin Python str function with an instance of ~eth_abi.grammar.ABIType.
- Added registry copying functionality to facilitate modification of the default registry. See Copying an Existing Registry .
Added registry copying functionality to facilitate modification of the default registry. See Copying an Existing Registry .
- Update eth-typing requirement to >=2.0.0,<3.0.0 .
Update eth-typing requirement to >=2.0.0,<3.0.0 .
- Added codec API to facilitate use of custom registries. See Codecs .
Added codec API to facilitate use of custom registries. See Codecs .
- Was accidentally allowing eth-typing v2. Now it requires eth-typing v1 only.
Released October 16, 2018
Bugfixes
Was accidentally allowing eth-typing v2. Now it requires eth-typing v1 only.
- Backwards Incompatible Changes
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.
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 ~eth_abi.abi.encode_single and ~eth_abi.abi.decode_single functions no longer accept type tuples to identify ABI types. Only type strings are accepted.
The ~eth_abi.utils.parsing.collapse_type function has been removed. People who still wish to use this function should replicate its logic locally and where needed.
The ~eth_abi.utils.parsing.process_type function has been removed in favor of the ~eth_abi.grammar.parse function. This should make the parsing API more consistent with the new parsimonious parser.
Nothing published for this version
- Backwards Incompatible Changes
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 July 19, 2018
Backwards Incompatible Changes
~eth_abi.abi.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
- Resolved an issue that was preventing discovery of type hints.
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 .
- Expand parsimonious dependency from v0.8.0 to v0.8.*
Released October 18, 2018
Bugfixes
Expand parsimonious dependency from v0.8.0 to v0.8.*
- Was accidentally allowing eth-typing v2. Now it requires eth-typing v1 only. (backport from v2)
Released October 16, 2018
Bugfixes
Was accidentally allowing eth-typing v2. Now it requires eth-typing v1 only. (backport from v2)
- Backported and added support for nested dynamic arrays from the Solidity version 2 ABI
Released August 28, 2018
New Features
Backported and added support for nested dynamic arrays from the Solidity version 2 ABI
- is_encodable() now returns False if a Decimal has too many digits to be encoded in the given fixed x type. (It was previously raising a ValueError )
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 10, 2018
Bugfixes
~eth_abi.abi.is_encodable() now returns False if a ~decimal.Decimal has too many digits to be encoded in the given fixed<M>x<N> type. (It was previously raising a ValueError)
Raise an ~eth_abi.exceptions.EncodingTypeError instead of a TypeError when trying to encode a float into a fixed<M>x<N> type.
- Added a Registry API (docs in progress) for looking up encoders by ABI 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
- Confirmed pypy3 compatibility
Released Feb 28, 2018
Confirmed pypy3 compatibility
Add support for eth-utils v1.0.0-beta2 and v1.0.1 stable
Testing improvements
Nothing published for this version
- Add support for eth-utils v1-beta1
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
Rename to eth-abi for consistency across github/pypi/python-module
Your coding agent can read these notes before it upgrades. Set up the MCP server →