NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1761 most downloaded on PyPI
web3: A Python library for interacting with Ethereum
Last release 16 days ago
31 Aug 2026
Ships fairly regularly
a new release about every 2 months
Most releases are documented
notes for 43 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
10 years old
253 releases · first in 2016
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
One column per quarter.
- Addition of ethereum-tester as a dependency
Addition of ethereum-tester as a dependency
- Addition of named middlewares for easier manipulation of middleware stack.
Addition of named middlewares for easier manipulation of middleware stack.
Provider middlewares can no longer be modified during runtime.
Experimental custom ABI normalization API for Contract objects.
- Experimental new EthereumTesterProvider for the ethereum-tester library.
Change docs to use RTD theme
Experimental new EthereumTesterProvider for the ethereum-tester library.
Bugfix for function type abi encoding via ethereum-abi-utils upgrade to v0.4.1
Bugfix for Web3.toHex to conform to RPC spec.
- Fix PyPi readme text.
Fix PyPi readme text.
- Fix PyPi readme text.
Fix PyPi readme text.
- Improvements to Web3.toHex and Web3.toText .
New stalecheck_middleware
Improvements to Web3.toHex and Web3.toText .
Improvements to Web3.sha3 signature.
Bugfixes for Web3.eth.sign api
- Add experimental fixture_middleware
Add experimental fixture_middleware
Various bugfixes introduced in middleware API introduction and migration to formatter middleware.
- Bugfix for formatter handling of contract creation transaction.
Bugfix for formatter handling of contract creation transaction.
- Improved testing infrastructure.
Improved testing infrastructure.
- Bugfix for retrieving filter changes for both new block filters and pending transaction filters.
Bugfix for retrieving filter changes for both new block filters and pending transaction filters.
- Fix mispelled attrdict_middleware (was spelled attrdict_middlware ).
Fix mispelled attrdict_middleware (was spelled attrdict_middlware ).
- Deprecated web3.currentProvider accessor. Use web3.provider now instead.
New Middleware API
Support for multiple providers
New web3.soliditySha3
Remove multiple functions that were never implemented from the original web3.
Deprecated web3.currentProvider accessor. Use web3.provider now instead.
Deprecated password prompt within web3.personal.newAccount .
Nothing published for this version
- All web3 apis which accept address parameters now enforce checksums if the address looks like it is checksummed.
All web3 apis which accept address parameters now enforce checksums if the address looks like it is checksummed.
Improvements to error messaging with when calling a contract on a node that may not be fully synced
Bugfix for web3.eth.syncing to correctly handle False
- Web3 now returns web3.utils.datastructures.AttributeDict in places where it previously returned a normal dict .
Web3 now returns web3.utils.datastructures.AttributeDict in places where it previously returned a normal dict .
web3.eth.contract now performs validation on the address parameter.
Added web3.eth.getWork API
- Add validation for the abi parameter of eth
Add validation for the abi parameter of eth
Contract return values of bytes , bytesXX and string are no longer converted to text types and will be returned in their raw byte-string format.
- Removed deprecated DelegatedSigningManager
Bugfix for eth_sign double hashing input.
Removed deprecated DelegatedSigningManager
Removed deprecate PrivateKeySigningManager
- Deprecate DelegatedSigningManager
Update pyrlp dependency to >=0.4.7
Update eth-testrpc dependency to >=1.2.0
Deprecate DelegatedSigningManager
Deprecate PrivateKeySigningManager
Nothing published for this version
- upstream version bump for bugfix in eth-abi-utils
upstream version bump for bugfix in eth-abi-utils
- deprecate eth.defaultAccount defaulting to the coinbase account.
deprecate eth.defaultAccount defaulting to the coinbase account.
- Fix error message from contract factory creation.
Fix error message from contract factory creation.
Use ethereum-utils for utility functions.
- Upgrade ethereum-abi-utils dependency for upstream bugfix.
Upgrade ethereum-abi-utils dependency for upstream bugfix.
- Deprecate Contract.code : replaced by Contract.bytecode
Deprecate Contract.code : replaced by Contract.bytecode
Deprecate Contract.code_runtime : replaced by Contract.bytecode_runtime
Deprecate abi , code , code_runtime and source as arguments for the Contract object.
Deprecate source as a property of the Contract object
Add Contract.factory() API.
Deprecate the construct_contract_factory helper function.
- Bugfix for how requests library is used. Now reuses session.
Bugfix for how requests library is used. Now reuses session.
- Bugfix for construction of request_kwargs within HTTPProvider
Bugfix for construction of request_kwargs within HTTPProvider
- Allow HTTPProvider to be imported from web3 module.
Allow HTTPProvider to be imported from web3 module.
make HTTPProvider accessible as a property of web3 instances.
- Deprecate web3.providers.rpc.RPCProvider
Deprecate web3.providers.rpc.RPCProvider
Deprecate web3.providers.rpc.KeepAliveRPCProvider
Add new web3.providers.rpc.HTTPProvider
Remove hard dependency on gevent.
- Bugfix for web3.eth.getTransaction when the hash is unknown.
Bugfix for web3.eth.getTransaction when the hash is unknown.
- Bugfix for event log data decoding to properly handle dynamic sized values.
Bugfix for event log data decoding to properly handle dynamic sized values.
New web3.tester module to access extra RPC functionality from eth-testrpc
- Fix package so that eth-testrpc is not required.
Fix package so that eth-testrpc is not required.
- Force gevent<1.2.0 until this issue is fixed: https://github.com/gevent/gevent/issues/916
Force gevent<1.2.0 until this issue is fixed: https://github.com/gevent/gevent/issues/916
- Bugfix for contract instances to respect web3.eth.defaultAccount
Bugfix for contract instances to respect web3.eth.defaultAccount
Better error reporting when ABI decoding fails for contract method response.
- New EthereumTesterProvider now available. Faster test runs than TestRPCProvider
New EthereumTesterProvider now available. Faster test runs than TestRPCProvider
Updated underlying eth-testrpc requirement.
- Introduced KeepAliveRPCProvider to correctly recycle HTTP connections and use HTTP keep alive
web3.shh is now implemented.
Introduced KeepAliveRPCProvider to correctly recycle HTTP connections and use HTTP keep alive
- Bugfix for contract transaction sending not respecting the web3.eth.defaultAccount configuration.
Bugfix for contract transaction sending not respecting the web3.eth.defaultAccount configuration.
- New DelegatedSigningManager and PrivateKeySigningManager classes.
New DelegatedSigningManager and PrivateKeySigningManager classes.
- Bugfix or IPCProvider not handling large JSON responses well.
Bugfix or IPCProvider not handling large JSON responses well.
- Better RPC compliance to be compatable with the Parity JSON-RPC server.
Better RPC compliance to be compatable with the Parity JSON-RPC server.
- Filter objects now support controlling the interval through which they poll using the poll_interval property
Filter objects now support controlling the interval through which they poll using the poll_interval property
- Bugfix generation of event topics.
Bugfix generation of event topics.
Web3.Iban now allows access to Iban address tools.
- Bugfix for geth.ipc path on linux systems.
Bugfix for geth.ipc path on linux systems.
Changes to the Contract API: - Contract.deploy() parameter arguments renamed to args
Contract.deploy() parameter arguments renamed to args
Contract.deploy() now takes args and kwargs parameters to allow constructing with keyword arguments or positional arguments.
Contract.pastEvents now allows you to specify a fromBlock or ``toBlock. Previously these were forced to be 'earliest' and web3.eth.blockNumber respectively.
Contract.call , Contract.transact and Contract.estimateGas are now callable as class methods as well as instance methods. When called this way, an address must be provided with the transaction parameter.
Contract.call , Contract.transact and Contract.estimateGas now allow specifying an alternate address for the transaction.
ssl for enabling SSL
connection_timeout and network_timeout for controlling the timeouts for requests.
- Bugfix: Fix KeyError in merge_args_and_kwargs helper fn.
Bugfix: Fix KeyError in merge_args_and_kwargs helper fn.
- Bugfix for usage of block identifiers ‘latest’, ‘earliest’, ‘pending’
Bugfix for usage of block identifiers ‘latest’, ‘earliest’, ‘pending’
Sphinx documentation
Non-data transactions now default to 90000 gas.
Web3 object now has helpers set as static methods rather than being set at initialization.
RPCProvider now takes a path parameter to allow configuration for requests to go to paths other than / .
- TestRPCProvider no longer dumps logging output to stdout and stderr.
TestRPCProvider no longer dumps logging output to stdout and stderr.
Bugfix for return types of address[]
Bugfix for event data types of address
- All transactions which contain a data element will now have their gas automatically estimated with 100k additional buffer. This was previously only
All transactions which contain a data element will now have their gas automatically estimated with 100k additional buffer. This was previously only true with transactions initiated from a Contract object.
- Contract functions can now be called using keyword arguments.
Contract functions can now be called using keyword arguments.
- Filter APIs on and pastEvents now callable as both instance and class methods.
Upstream fixes for filters
Filter APIs on and pastEvents now callable as both instance and class methods.
- The filters that come back from the contract on and pastEvents methods now call their callbacks with the same data format as web3.js .
The filters that come back from the contract on and pastEvents methods now call their callbacks with the same data format as web3.js .
- Cast RPCProvider port to an integer.
Cast RPCProvider port to an integer.
- Remove all monkeypatching
Remove all monkeypatching
- Pull in downstream updates to proper gevent usage.
Pull in downstream updates to proper gevent usage.
Fix eth_sign
Bugfix with contract operations mutating the transaction object that is passed in.
More explicit linting ignore statements.
- BugFix: fix for python3 only json.JSONDecodeError handling.
BugFix: fix for python3 only json.JSONDecodeError handling.
- BugFix: RPCProvider not sending a content-type header
BugFix: RPCProvider not sending a content-type header
Bugfix: web3.toWei now returns an integer instead of a decimal.Decimal
- TestRPCProvider can now be imported directly from web3
TestRPCProvider can now be imported directly from web3
Your coding agent can read these notes before it upgrades. Set up the MCP server →