- Upgrade parsimonious from
0.9
to0.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)
- 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-levelpy.typed
file back (#221)
- Drop python 3.7 support (#217)
- Merge updates from the project template, notably, use
pre-commit
for linting and change the name of themaster
branch tomain
(#217) - Corrected format of booleans in
pyproject.toml
and added a test for the presence of theeth_abi.__version__
attribute (#219)
- Add
build.os
section to readthedocs build settings (#213)
- Allow turning off abi decoder "strict mode" when calling
abi.decode()
. (#198)
- Validate against zero-sized
tuple
types / empty Solidity structs. (#212)
- 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)
No significant changes.
- Upgrade Parsimonious dependency to allow >=0.9,<0.10 (#201)
- Add support for Python 3.11 (#194)
- 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()
, anddecode_abi_single()
. Renameencode_abi()
,encode_abi_packed()
, anddecode_abi()
toencode()
,encode_packed()
, anddecode()
, respectively. (#161)
- Add
DeprecationWarning
forencode_abi()
,encode_single()
,decode_abi()
, anddecode_single()
and add temporary versions ofabi.encode()
andabi.decode()
so users can start making these changes early. (#165)
- 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)
- If subclassing :meth:`eth_abi.decoding.ContextFramesBytesIO.seek`, the new method was not being used by :meth:`~eth_abi.decoding.ContextFramesBytesIO.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 custom stream class in :class:`~eth_abi.codec.ABIDecoder`. See :ref:`custom_stream_class`.
- Includes all changes from v2.0.0 beta and alpha versions.
- Added
eth_abi.tools
submodule with extra requirements installable withpip install eth-abi[tools]
. See :ref:`tools`.
- Added :meth:`~eth_abi.registry.ABIRegistry.has_encoder` and :meth:`~eth_abi.codec.ABIEncoder.is_encodable_type` to facilitate checking for type validity against coder registrations.
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 :ref:`grammar`.
- Updated string API for the :class:`~eth_abi.grammar.ABIType`. Type strings
for :class:`~eth_abi.grammar.ABIType` instances are now obtained via the
:meth:`~eth_abi.grammar.ABIType.to_type_str` method instead of by invoking
the builtin Python
str
function with an instance of :class:`~eth_abi.grammar.ABIType`.
- Added registry copying functionality to facilitate modification of the default registry. See :ref:`copying_an_existing_registry`.
- Update eth-typing requirement to
>=2.0.0,<3.0.0
.
- Added codec API to facilitate use of custom registries. See :ref:`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 :meth:`~eth_abi.abi.encode_single` and :meth:`~eth_abi.abi.decode_single` functions no longer accept type tuples to identify ABI types. Only type strings are accepted.
- The :meth:`~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 :meth:`~eth_abi.utils.parsing.process_type` function has been removed in favor of the :meth:`~eth_abi.grammar.parse` function. This should make the parsing API more consistent with the new parsimonious parser.
Released July 19, 2018
- Backwards Incompatible Changes
- :meth:`~eth_abi.abi.decode_single` called with ABI type 'string' will now return a python :class:`str` instead of :class:`bytes`.
- Support for the legacy
real
andureal
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
.
- Updated eth-typing dependency version to
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
- :meth:`~eth_abi.abi.is_encodable()` now returns
False
if a :class:`~decimal.Decimal` has too many digits to be encoded in the givenfixed<M>x<N>
type. (It was previously raising a :class:`ValueError`) - Raise an :class:`~eth_abi.exceptions.EncodingTypeError` instead of a
:class:`TypeError` when trying to encode a :class:`float` into a
fixed<M>x<N>
type.
- :meth:`~eth_abi.abi.is_encodable()` now returns
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