# Release Notes

Read up on all the latest improvements.

## eth-utils v5.3.1 (2025-08-27)

### Bugfixes

- Loosen expectation in `test_get_aligned_abi_inputs_raises_type_error_for_incorrect_input_types` (#313)

## eth-utils v5.3.0 (2025-04-14)

### Bugfixes

- Replace `arg["name"]` with `arg.get("name")` to correctly handle optional names. (#299)

### Features

- Add new methods: `to_wei_decimals`, and `from_wei_decimals` which take a number instead of a string (#302)

- Add `CamelModel` pydantic model for validating objects and serializing to camelCase when used with `by_alias=True`, with the general expectation of a well-formed JSON-RPC object. (#303)

## eth-utils v5.2.0 (2025-01-21)

### Bugfixes

- Update types in is_same_address to accept AnyAddress, str, or bytes. (#289)

### Features

- Add Python 3.13 support and other misc. template updates (#296)

## eth-utils v5.1.0 (2024-10-21)

### Bugfixes

- Correct error message in `from_wei` and `to_wei` (#247)

- Remove unused hexbytes dependency that is causing a cyclic dependency issue (#284)

### Features

- Removed `_BaseHasLogger` and `_BaseHasExtendedDebugLogger`, and the `logger` attribute in the `HasLogger` and `HasExtendedDebugLogger` is type hinted directly. (#275)

- Add new humanize_hexstr function (#285)

- Add `memoryview` to accepted input type for `to_hex` , `to_int` , `to_bytes` , and `to_text` (#287)

## eth-utils v5.0.0 (2024-08-15)

### Internal Changes - for eth-utils Contributors

- Run `mypy` locally via `pre-commit` hook, bump to `mypy==1.10.0` (#282)

## eth-utils v5.0.0-beta.1 (2024-07-25)

### Breaking Changes

- Updates to the latest `eth-typing` to use new `ABI` types for improved type checking in existing `ABI` utility functions. (#271)

### Features

- Contract Application Binary Interface (ABI) utilities to obtain type and value information for functions and events. (#271)

### Internal Changes - for eth-utils Contributors

- Merge template to use bump-my-version and update release Make commands. (#280)

## eth-utils v4.1.1 (2024-05-06)

### Features

- Update networks for latest changes and testnets. (#276)

### Internal Changes - for eth-utils Contributors

- Merge template updates, fixing docs CI and setting nightly CI runs for all testing (#272)

- Updated `eth_networks.json` with latest networks. (#273)

- No warning for outdated networks. (#278)

## eth-utils v4.1.0 (2024-04-01)

### Internal Changes - for eth-utils Contributors

- Upgrades from the template with support for Python 3.12 and linting with `blocklint`. (#268)

- Remove `cached_property` dependency, as it was only for `<=py37` (#269)

## eth-utils v4.0.0 (2024-02-22)

### Breaking Changes

- Web3.is_address now returns True for non-checksummed addresses. (#265)

## eth-utils v3.0.0 (2024-01-10)

### Breaking Changes

- Drop python 3.7 support (#261)

### Internal Changes - for eth-utils Contributors

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

- Correct booleans in `pyproject.toml` and add test for the presence of the `eth_utils.__version__` attribute (#263)

## eth-utils v2.3.1 (2023-11-07)

### Bugfixes

- Some users were experiencing encoding issues when parsing the networks json. Use UTF-8 explicitly. (#259)

### Internal Changes - for eth-utils Contributors

- Fix and add new test cases for invalid Network `chain_id` values. (#256)

### Miscellaneous Changes

- #259

## eth-utils v2.3.0 (2023-10-20)

### Features

- Add `Network` utility methods to utilize network metadata for a given `ChainId`. (#253)

## eth-utils v2.2.2 (2023-10-11)

### Improved Documentation

- Add information to docs for utilities which did not have any. (#254)

### Internal Changes - for eth-utils Contributors

- Pull latest from template repo to fix release script, update wording in comments and docs. (#252)

### Miscellaneous Changes

- #242

## eth-utils v2.2.1 (2023-09-13)

### Internal Changes - for eth-utils Contributors

- Add `build.os` config for readthedocs (#250)

## eth-utils v2.2.0 (2023-07-10)

### Features

- Added `humanize_wei` utility to convert common values to more readable units. (#194)

## eth-utils v2.1.1 (2023-06-07)

### Internal Changes - for eth-utils Contributors

- Add currency tests with float ether inputs. (#231)

- remove unused docs deps, bump version of remaining (#239)

- merge updates from the python project template (#240)

## eth-utils v2.1.0 (2022-11-17)

### Features

- Allow a wider eth-hash dependency range (#225)

### Performance improvements

- Performance improvement of up to 65% on `is_0x_prefixed` (#223)

### Improved Documentation

- Fix typo in documentation: hexidecimal -> hexadecimal (#222)

### Internal Changes - for eth-utils Contributors

- Update use of `@cached_property` for debug2 logging. (#232)

### Miscellaneous changes

- #226, #235

### Breaking changes

- Remove support for Python 3.6, add Python 3.11, misc dev internal updates (#227)

## eth-utils v2.0.0 (2021-11-18)

### Features

- Upgrade eth-typing to v3.0+, Add support for python 3.9 and 3.10 Remove support for python 3.5 (#215)

## eth-utils v1.10.0 (2021-01-21)

### Bugfixes

- When a TypeError or ValueError is raised during `apply_formatters_to_dict()`, eth_utils appends some useful contextual information. It was trying to re-create the old exception, but that sometimes fails, like with a `JSONDecodeError`, which expects more arguments in the constructor. So now we raise a basic TypeError or ValueError. (#204)

- Update the type signature of `to_canonical_address()`, `to_checksum_address()`, and `to_normalized_address()` to allow bytes-typed address input. (#205)

### Performance improvements

- Significant speedup of `is_hex()` and `is_hexstr()`. (#202)

- Significant speedup of `is_address()`. Running a test that abi-encodes an array of 10 addresses was about 67% faster. (#203)

### Internal Changes - for eth-utils Contributors

- Upgrade eth-hash to v0.3.1, to use its exported type annotations instead of casting the results. (#208)

### Miscellaneous changes

- #196

- #207

## eth-utils v1.9.5 (2020-08-31)

### Bugfixes

- Added a new type signature of apply_formatter_if to eth_utils curried module. Also added text_if_str and apply_formatters_to_dict. (#201)

### Misc

- #201

## eth-utils v1.9.4 (2020-08-25)

### Bugfixes

- Make sure all the eth_utils.curried methods are importable, plus a fix for curried typing of hexstr_if_str. (#156)

- Pass context to new exception in `replace_exceptions` decorator. (#198)

- Ensure pickling/unpickling an `ExtendedDebugLogger` always gives back an `ExtendedDebugLogger`. (#199)

## eth-utils v1.9.0 (2020-05-11)

### Features

- Add is_hexstr as preferred method of checking if a given value is a hex string. (#137)

- Improve performance of is_hex and is_hexstr by up to 40x (#185)

- Add `humanize_integer_sequence` utility. (#188)

- Add `humanize_bytes` utility. (#189)

### Bugfixes

- Silence a deprecation error by importing from collections.abc, instead of collections. (#186)

## eth-utils 1.8.4 (2019-12-05)

### Bugfixes

- Add missing asterisk to MANIFEST.in (#182)

## eth-utils 1.8.3 (2019-12-04)

### Misc

- #181

## eth-utils 1.8.2 (2019-12-04)

### Misc

- #177, #180

## eth-utils 1.8.1 (2019-11-20)

No significant changes.

## eth-utils 1.8.0-0.1 (2019-11-20)

### Misc

- #175

## eth-utils 1.8.0 (2019-11-04)

### Features

- Add support for python3.8 (#174)

## eth-utils 1.7.0 (2019-09-05)

### Features

- Expose `DEBUG2` log level as top level module import (#117)

- Add `get_logger` and `get_extended_debug_logger` utils (#170)

### Improved Documentation

- Setup towncrier to improve the quality of the release notes (#172)

## v1.6.4

Released: August 5, 2019

- Feature

  - Caching for `ExtendedDebugLogger.show_debug2` property - #167

## v1.6.3

Released: August 5, 2019

- Feature

  - Add support for Python3.7 - #165

- Bugfix

  - Fix `HasLogger` compatibility with other metaclasses. - #165

## v1.6.2

Released: July 24, 2019

- Feature

  - Add support for Python3.7 - #165

  - Add `humanize_ipfs_uri`. - #162

- Bugfix

  - Fix typing of `clamp` numeric utility. - #164

## v1.6.1

Released: June 11, 2019

- Maintenance

  - Use eth-typing types instead of eth-utils types, when available - #163

## v1.6.0

Released: May 16, 2019

- Feature

  - Add logging utilities `HasLogger`, `ExtendedDebugLogger`, `HasExtendedDebugLogger` and `setup_DEBUG2_logging` - #158

## v1.5.2

Released: April 30, 2019

- Bugfix

  - Fix eth_utils.currency.denom to be a real class with proper type declarations. - #154

  - Fix eth_utils.functional.replace_exceptions type declarations. - #155

- Feature

  - Add new eth_utils.clamp - #150

## v1.5.1

Released: April 17, 2019

- Bugfix

  - Fix type declarations for eth_utils.functional.to_dict and eth_utils.funcional.to_ordered_dict - #151

## v1.5.0

Released: April 16, 2019

- Features

  - Add new eth_utils.humanize.humanize_seconds and eth_utils.humanize.humanize_hash. - #149

  - Enable PEP561 type hints

## v1.4.1

Released: Dec 18, 2018

- Bugfixes

  - Fixed eth_utils.abi.collapse_if_tuple not handling fixed-size tuple arrays.

## v1.4.0

Released: Dec 6, 2018

- Features

  - Support tuples in eth_utils.abi.function_abi_to_4byte_selector and a new eth_utils.abi.collapse_if_tuple - #141

## v1.3.0

- Misc

  - Fix linting issues

## v1.3.0-beta.0

- Misc

  - Use eth-typing v2.0.0, which may be a breaking change for downstream packages

## v1.2.2

- Bugfixes

  - Prevent from installing with Python 3.5.2 which has a fatal bug when `...` is used in a type. - #125

- Misc

  - Start using `black` for style checking. - #129

## 1.2.1

- Move docs to RTD/Sphinx, with doctest

- Update eth-typing dependency to 1.3.0

## 1.2.0

- Import more resources from implementation-specific “toolz” library in “toolz” wrapper module

## 1.1.2

- Update eth-typing dependency

## 1.1.1

- Add ValidationError exception

## 1.1.0

- Add abi and address type hints

- Add typehints to more modules

- Add replace_exceptions decorator to decorators.py

- Add type hints to applicators module

- Add type hints to conversions module

- Add import_string util from django

- Add conditional cytoolz or toolz install based on python implementation

## 1.0.3

- Reject str as a primitive in to_hex()

- Faster int_to_big_endian implementation

## 1.0.2

- Update apply key map to catch conflicting keys

- Add validation of 19 byte address

- Support bytearrays in conversion functions

- Apply formatters to sequence

## 1.0.1

- Add autouse fixture to print warnings

- Change hexidecimal -> hexadecimal

- Strictly accept text types for decode_hex

- Remove remaining force_* utils

## 0.8.1

- Convert formatting from force

- Backport pr45 into v0

- Write validate conversion arguments decorator

- Update hex and int conversions to work with new decorator

- Deprecate force bytes/text & formatting utils

## 0.8.0

- Swap in eth-hash for pysha3

- Convert keccak from force_bytes

- Convert address utils from force text/bytes

- Import many of the application functions from web3.py

- Add @combomethod decorator

- Add tool to generate environment info

- Add type conversion helpers

- Convert precision to localcontext

- Remove unnecessary future imports

- Drop support for py27

## 0.7.4

- Constrain dependencies to major version

## 0.7.3

- Support for python 3.6

## 0.7.2

- Minor fix for how __version__ is computed in the eth_utils module.

## 0.7.1

- Futzing with PyPi formatting of README info.

## 0.7.0

- Rename library on pypi to eth_utils

## 0.6.0

- Bugfix for to_wei to handle floating point inputs in a manner consistent with what users would expect.

## 0.5.1

- Bugfix for is_hex to prevent exceptions from being raised for non-hexadecimal inputs.

## 0.5.0

- is_hex now supports both empty string as 0x and odd length hexadecimal strings.

## 0.4.1

- Bugfix for currency conversions which retained too high a precision.

## 0.4.0

- is_address will now verify the checksum on any address which passes the is_checksum_formatted_address check.

## 0.3.2

- Added is_hex.

## 0.3.1

- Added big_endian_to_int and int_to_big_endian.

## 0.3.0

- Deprecate compose

- Bugfix for is_0x_prefixed to correctly detect uppercase X as part of the prefix.

- Added is_hex_address

- Added is_binary_address

- Added is_32byte_address

- Added is_checksum_formatted_address

- Added apply_to_return_value

- Added to_set

- Added is_list

- Added is_tuple

## 0.2.1

- Strip whitespace from event signatures in event_signature_to_log_topic

## 0.2.1

- Strip whitespace from event signatures in function_signature_to_4byte_selector

## 0.2.0

Initial release