Release Notesο
- v7 Breaking Changes Summary
See the v7 Migration Guide
web3.py v7.16.0 (2026-05-01)ο
Bugfixesο
Fixed
ens.utils.is_none_or_zero_addressnot detecting bytes-form zero addresses (b"\x00" * 20) β the function compared against the hex stringEMPTY_ADDR_HEXonly, even though its signature acceptsAddress(which isbytes). This causedens.address(name, coin_type=N)to return the zero-address checksum string instead ofNonewhen the resolver recorded a zero address. (#3830)
Featuresο
ENS read operations now use the Universal Resolver (
0xeEeEEEeE14D718C2B47D9923Deab1335E144EeEe) instead of querying the ENS Registry directly, aligning with ENSv2 readiness requirements. (#3830)
web3.py v7.15.0 (2026-04-02)ο
Featuresο
Added configurations for CCIP-Read, defaulting to a more secure configuration based on the EIP recommendations. (#3818)
web3.py v7.14.1 (2026-02-03)ο
Bugfixesο
Wrap timeout in ClientTimeout for AsyncBeacon post request (#3784)
Fix
HTTPProviderto share an explicitly providedsessionacross all threads, rather than only the creating thread. (#3800)Fix TypedDict field names to use camelCase (
validatorIndex,yParity) matching JSON-RPC conventions and formatter outputs. (#3801)Exclude type checking in Sphinx module and submodules (#3803)
Improved Documentationο
Added documentation for formatters explaining how they work, what the default formatters do, and how to customize them. (#2994)
Internal Changes - for web3.py Contributorsο
Upgrade geth version in CI (#3787)
web3.py v7.14.0 (2025-10-16)ο
Bugfixesο
Fix tests flakiness due to slow data generation from hypothesis triggering a timeout. (#3730)
Fix
topicstype forLogsSubscriptionto reflect AND / OR nested list conditions on log filters. (#3748)Make AsyncWeb3 with respect to the provider it is instantiated with, fixing static type issues. (#3761)
Improved Documentationο
Featuresο
Add the
TopicFiltertype to better describe the cases for filtering logs by topics. (#3748)
Internal Changes - for web3.py Contributorsο
Resolve the DeprecationWarning for the usage of datetime.datetime.utcnow() (#3751)
web3.py v7.13.0 (2025-08-04)ο
Bugfixesο
Raise
BadResponseFormatfrom withinFormattingMiddlewareif the raw response is not a dict. (#3735)
Improved Documentationο
Fix broken link to external
eth_gasPricedocumentation. (#3717)
Featuresο
Support parallelization of subscription handling globally via the subscription manager
parallelizeflag, and on a per-subscription basis via theparallelizeflag on the subscription itself. (#3709)
Internal Changes - for web3.py Contributorsο
web3.py v7.12.1 (2025-07-14)ο
Bugfixesο
Fix
AutoProviderbatching setup by adding a proxy batch request. (#3712)
Internal Changes - for web3.py Contributorsο
Update integrations tests to use geth
v1.16.0. (#3727)
Miscellaneous Changesο
web3.py v7.12.0 (2025-05-22)ο
Bugfixesο
Thread safety for batching and better consistency with
PersistentConnectionProviderimplementations:Make request batching threadsafe by using
contextvars.ContextVarrather than a global flag for setting the batching state.Deterministically match responses with request ids for
PersistentConnectionProviderbatch requests. (#3705)
Deprecationsο
Deprecate
ens_encode_namein favor ofdns_encode_name. (#3700)
Featuresο
Introduce
ens.utils.dns_encode_nameas a rename of the currentens_encode_name, for consistency across other language implementations and with the ENS docs. ReturnsHexBytesinstead ofbytes. (#3700)
Internal Changes - for web3.py Contributorsο
Performance Improvementsο
web3.py v7.11.1 (2025-05-12)ο
Bugfixesο
Deprecationsο
Deprecate eth.get_uncle* methods. Will be removed in v8. (#3683)
Internal Changes - for web3.py Contributorsο
web3.py v7.11.0 (2025-04-29)ο
Bugfixesο
Checks that
PersistentConnectionProviderresponse cache value is a dict before attempting to access it like one. Also adds checks tomake_batch_requestto make sure it is in batching mode before being called and is not after. (#3642)Moves base providersβ
_is_batchingand_batch_request_func_cachefrom class to instance attrs to help with thread safety. (#3661)
Featuresο
Support for Prague network upgrade, mainly
requests_hashandauthorization_listformatters. Add support for serializingSignedSetCodeTransaction(eth-account pydantic model) directly added to transaction dicts. (#3659)Allow setting the
request_information_cache_sizeforPersistentConnectionProviderimplementations. (#3662)
Internal Changes - for web3.py Contributorsο
Update some outdated TODO notes in code & remove old un-tested uncles tests as no longer relevant post-merge. (#3605)
Run each integration test in isolation and parallelize, instead of running them all within a single geth (for example) process. This prevents muddied test contexts. (#3659)
Bound hypothesis integers in some tests to a max of uint256 value (#3665)
AsyncENS tests were xfailing for the wrong reason. (#3675)
Performance Improvementsο
web3.py v7.10.0 (2025-03-27)ο
Miscellaneous Changesο
web3.py v7.9.0 (2025-03-12)ο
Bugfixesο
Improved Documentationο
Update and clean up Contributing docs. (#3610)
Featuresο
Internal Changes - for web3.py Contributorsο
Renames a test so pytest finds it. (#3606)
Merge template, replacing
bumpversionwithbump-my-version. (#3610)Update integration test fixture to use latest geth version
v1.15.5. (#3636)Use
-Uto install latest py-geth version for CI geth steps. This is usually a requirement if weβre missing the binary for the newly-generated fixture geth version. (#3637)Re-compile test contracts with newly released Solidity
v0.8.29. (#3640)
Miscellaneous Changesο
web3.py v7.8.0 (2025-02-03)ο
Breaking Changesο
The bugfix to match
unsubscribetosubscribefor multiple subscriptions breaks the function signature forunsubscribe, changing thesubscriptionargument tosubscriptions. (#3585)
Bugfixesο
Handle the case when a single RPC error response is returned for a batch request, instead of always expecting a list of responses. (#3585)
Donβt raise on non-unique default subscription labels (no label provided). Only raise if a non-unique custom label is explicitly set for a subscription. (#3594)
Fix bugs related to subscription manager:
run_forevercan start with0subscriptions and remains alive,unsubscribeaccepts single or multiple subs as objects or hexstrs,subscribefor many subs returns a list of hexstr ids. (#3595)Fix issue where
.values()raised aKeyErrorinNamedTupledOnion(#3596)
Improved Documentationο
Featuresο
New
BeaconandAsyncBeaconendpoints:get_peer_count,get_attester_duties,get_block_proposer_duties,get_sync_committee_duties, andget_attestation_rewards. (#3504)
Internal Changes - for web3.py Contributorsο
Performance Improvementsο
Avoid unnecessary extra call to resolver when resolving an ENS address with no
coin_typespecified (default). (#3584)
web3.py v7.7.0 (2025-01-15)ο
Bugfixesο
Featuresο
Miscellaneous Changesο
Performance Improvementsο
Improve
AttributeDict.recursive()andAttributeDictMiddlewareperformance, effectively speeding up response processing for attrdict middleware by nearly 2x. (#3575)
web3.py v7.6.1 (2024-12-18)ο
Bugfixesο
Include an end-of-line delimiter when sending messages via IPC with the
IPCProviderandAsyncIPCProvider. (#3537)Contract functions and events no longer initialize for each call. Retrieval of overloaded functions and events is now deterministic. Any ambiguity will result in an exception being raised. (#3540)
Bump the eth-tester version to one that works in the tester dependency extras (#3555)
Improved Documentationο
Update ENS-related links (#3563)
Internal Changes - for web3.py Contributorsο
Miscellaneous Changesο
web3.py v7.6.0 (2024-11-22)ο
Bugfixesο
Update the ContractEvents class to raise a NoABIFound exception if the Contract is initialized without an ABI and an attempt to access an event is made. This exception makes ContractEvents consistent with ContractFunctions. (#3491)
Featuresο
Contracts with overloaded functions or events are now supported. The Contract initializes functions and events using an identifier to distinguish between them. The identifier is the function or event signature, which consists of the name and the parameter types. (#3491)
Support for
w3.eth.blob_base_feeAsync support for
w3.eth.blob_base_fee(#3527)
Internal Changes - for web3.py Contributorsο
Pin
websockets<14due to breaking changes (#3529)
Miscellaneous Changesο
web3.py v7.5.0 (2024-11-06)ο
Improved Documentationο
Polish docs index page (#3522)
Featuresο
Internal Changes - for web3.py Contributorsο
web3.py v7.4.0 (2024-10-16)ο
Bugfixesο
Fix a bug where CCIP-Read expected a
{sender}in the url for a POST request. If{data}is missing from the url, assume a POST request is being made regardless of whether{sender}is present. (#3291)Fix a bug where non-mainnet chains could not cache requests based on missing
finalizedblock number. (#3508)Send
json, notdatawith CCIP-Read POST requests. (#3512)
Improved Documentationο
Update the request caching documentation to clarify on when to reach for request caching and how to configure the request validation threshold for certain endpoints. (#3508)
Featuresο
Allow a time interval, in seconds, to be used as the
request_cache_validation_thresholdfor request caching. Keep a list of internal default values based on the chain id for some of the bigger chains. (#3508)
web3.py v7.3.1 (2024-10-14)ο
Bugfixesο
Improved Documentationο
Internal Changes - for web3.py Contributorsο
Update the ENSIP-15 to the latest spec and update the test suite. (#3501)
web3.py v7.3.0 (2024-09-25)ο
Bugfixesο
Base default
maxFeePerGascalculation off of existingmaxPriorityFeePerGaskey instead of separate RPC call (#3052)Add back dependency extra for βtesterβ. (#3480)
Fix a bug where sensitive requests that make use of block data should not be cached until some validation threshold deems it is safe to do so, when request caching is turned on. (#3483)
Improved Documentationο
Update
contract.encode_abisignature in docs and migration guide (#3473)Update documentation around
SignAndSendRawMiddlewareBuilderinjection into the middleware onion. It should be injected lower in the stack than any middleware that modifies the transaction, in order to ensure those modified fields are signed. (#3488)Docs cleanups related to
testvstesterinstall extras. (#3496)
Featuresο
Add a configuration for request caching that sets a threshold for validating cached requests that make use of block data. This can be turned off altogether by setting the threshold to
None. (#3483)Add a configuration option for the
read_buffer_limitforAsyncIPCProviderin order to control the expected message size limit (defaults to 20MB). AddReadBufferLimitReachedfor when the read limit is reached, extend fromPersistentConnectionError. (#3492)
Internal Changes - for web3.py Contributorsο
Miscellaneous Changesο
Performance Improvementsο
Improve logic for reading from the async IPC socket in order to properly handle and adjust the handling of large messages. This improves reading speeds in general. (#3492)
web3.py v7.2.0 (2024-08-29)ο
Bugfixesο
Fix a bug with newer
hexbytesversions that yield non-0x-prefixed hex forHexBytes:raw_transaction.hex()->raw_transaction.to_0x_hex(). (#3471)
Featuresο
HTTPProvider and AsyncHTTPProviderβs get_request_headers is now available on both the class and the instance (#3467)
web3.py v7.1.0 (2024-08-28)ο
Bugfixesο
Specify a unique
__hash__()for unhashableWeb3Middlewaretypes and use this hash as the middleware onion key when a name is not provided for the middleware. This fixes a bug where different middleware were given the same name and therefore raised errors. (#3463)
Improved Documentationο
Featuresο
Internal Changes - for web3.py Contributorsο
Refactor and DRY up CI run setup and reduce surface area for errors. Include pre-releases in CI runs for internally maintained libraries to try and catch any conflicts. (#3452)
Bump py-geth to
>=5.0.0from>=5.0.0b1now that stable has been released. This only matters for thetestinstall extra (CI and dev purposes). (#3458)
web3.py v7.0.0 (2024-08-21)ο
Breaking Changesο
Update eth-utils and eth-typing to latest major versions
eth-utils v5 and eth-typing v5 (#3450)
Improved Documentationο
Improve batch request documentation. (#3448)
Internal Changes - for web3.py Contributorsο
Fix Release Notes formatting (#3454)
web3.py v7.0.0-beta.9 (2024-08-01)ο
Breaking Changesο
Upgrades to use latest
ABIutilities and typings frometh-utilsandeth-typing.Typings for
ABIcomponents are now available in theeth-typingpackage.ABItypes previously inweb3.typeshave been removed.New versions of existing ABI functions were added to
eth-utilsand are now exposed in web3.py viaweb3.utils.abi.ABI exceptions have been renamed in
web3.exceptions. TheABIEventFunctionNotFoundandFallbackNotFoundexceptions have been removed. UseABIEventNotFoundandABIFallbackNotFoundinstead.MismatchedABIexceptions are raised instead of aWeb3ValidationErrorfor ABI related errors.encode_abiarguments have been updated to useabi_element_nameinstead offn_name. (#3408)
Remove
Web3ValidationErrordependence / inheritance from eth-utilsValidationError. (#3443)
Improved Documentationο
Use autodoc and update ABI functions with docstrings and doctests. (#3408)
Featuresο
Utilities to extract function and event
ABIattributes from a contract. Utilities in theweb3.utils.abimodule parse ABI elements and check encodability of provided arguments. ABI functions ineth-utilsare exposed by theweb3.utils.abimodule.get_abi_element_inforeturns anABIElementInfoTypedDict with theabi,selector, andarguments.get_abi_elementreturns theABIof a function, event, or error given the name and arguments.check_if_arguments_can_be_encodedreturns true if the arguments can be encoded with the given ABI.get_event_abireturns theABIof an event given the name.get_event_log_topicsreturns the log topics of an event given the name.log_topics_to_bytesreturns the log topics as bytes. (#3408)
Internal Changes - for web3.py Contributorsο
Miscellaneous Changesο
web3.py v7.0.0-beta.8 (2024-07-24)ο
Breaking Changesο
Bugfixesο
Handle
ConnectionClosedOKcase forWebSocketProvider. If a persistent connection is closed gracefully, log and raise a silentPersistentConnectionClosedOKexception, triggering an end to the message listener task and breaking out of theprocess_subscriptions()iterator. (#3432)
Featuresο
Add
popitem()functionality to theSimpleCacheclass as well as an async utility method to wait for the next item,async_await_and_popitem(). (#3433)
Internal Changes - for web3.py Contributorsο
Refactor some common logic for persistent connection providers back into the base
PersistentConnectionProviderclass to reduce code duplication and improve maintainability. (#3433)
web3.py v7.0.0-beta.7 (2024-06-26)ο
Bugfixesο
Change the
exception_retry_configurationtyping on http providers to be anOptional, as setting this property toNoneeffectively turns off retries on exceptions for requests. (#3412)A bugfix, pre-release, to update the
BeaconAPIs (sync and async) to properly use the newHTTPSessionManager. (#3421)
Improved Documentationο
Add an
eth_subscribeexample to the events guide (#3403)
Featuresο
Internal Changes - for web3.py Contributorsο
Re-compile test contracts with Solidity v0.8.25 to ensure compatibility. (#3307)
Increase allowable range of eth-tester: 0.11.x and 0.12.x (#3400)
Remove uses of signHash in tests, require eth-account >=0.13.0 in doctests (#3404)
Use a
HTTPSessionManagerto manage sessions for http providers, rather than have them share a single session manager / cache. (#3412)
web3.py v7.0.0-beta.6 (2024-05-15)ο
Bugfixesο
Properly propagate exceptions from the message listener task to the main loop for persistent connection providers. (#3378)
Improved Documentationο
Prunes the node onboarding text (#3371)
Stale example cleanup (#3374)
Merge migration guides into one page (#3379)
Simplify titles of docs guides (#3381)
Move ABI Types guide into the Troubleshooting page (#3382)
Distribute examples into relevant guides and delete Example page (#3383)
Add subscribe/unsubscribe API (#3386)
Introduces batch request API (#3393)
Featuresο
Internal Changes - for web3.py Contributorsο
web3.py v7.0.0-beta.5 (2024-04-26)ο
Breaking Changesο
Snake-case remaining arguments
fromBlock,toBlock, andblockHashin contract and filter methods where they are passed in as kwargs. (#3353)Employ an exponential backoff strategy using the
backoff_factorinExceptionRetryConfigurationforHTTPProviderandAsyncHTTPProvider. Reduce the default initial delay to0.125seconds. (#3358)Validate JSON-RPC responses more strictly against the JSON-RPC 2.0 specifications.
BlockNumberOutofRange->BlockNumberOutOfRange. (#3359)
Deprecationsο
messageHashandrawTransactionfrometh-accounthave been deprecated for snake_case versions (#3348)
Featuresο
Raise
Web3RPCErroron JSON-RPC errors rather thanWeb3ValueError. RaiseMethodNotSupportedexception when a method is not supported within web3.py; keepMethodUnavailablefor when a method is not available on the current provider (JSON-RPC error). (#3359)
Internal Changes - for web3.py Contributorsο
Bump
eth-accountdependency to>=0.12.2(#3348)
Removalsο
Remove the deprecated
personalnamespace and all references to it. (#3350)
web3.py v7.0.0-beta.4 (2024-04-11)ο
Bugfixesο
Fix misused call to endpoint_uri for all cases of
PersistentConnectionProviderby being able to retrieve either theipc_pathor theendpoint_urifrom the base class withendpoint_uri_or_ipc_pathproperty. (#3319)
Improved Documentationο
Fix
eth_createAccessListdocs to reflect the correct behavior. (#3327)
Featuresο
Use in-house exception wrappers for common Python exceptions, such as
ValueError,TypeError,AttributeError, andAssertionError, for better control over exception handling. (#3300)Add request formatter for
maxFeePerBlobGaswhen sending blob transactions. Add formatters forblobGasPriceandblobGasUsedfor eth_getTransactionReceipt. (#3322)Add formatters to ensure that the result of a
eth_createAccessListresponse can be plugged directly into anaccessListin a transaction. (#3327)Add Cancun support to
EthereumTesterProvider; update Cancun-related fields in some internal types. (#3332)
Internal Changes - for web3.py Contributorsο
web3.py v7.0.0-beta.3 (2024-03-28)ο
Bugfixesο
Fix
process_log()when parsing logs for events with indexed and non-indexed inputs.get_event_data()now compares log topics and event ABIs as hex values. (#3289)Fix
process_logforHexStrinputs. Explicit type coercion of entrytopicsanddatavalues. (#3293)Fix typing for json data argument to
eth_signTypedData. (#3308)
Improved Documentationο
Featuresο
Internal Changes - for web3.py Contributorsο
Miscellaneous Changesο
Performance Improvementsο
Removalsο
Remove
Contract.encodeABI()in favor ofContract.encode_abi()to follow standard conventions. (#3281)
web3.py v7.0.0-beta.2 (2024-03-11)ο
Breaking Changesο
Move
middlewares->middleware(#3276)
Bugfixesο
Improved Documentationο
Miscellaneous Changesο
Removalsο
Remove the
ethpmmodule and related docs, tests, and dependencies (#3261)
web3.py v7.0.0-beta.1 (2024-02-28)ο
Breaking Changesο
Refactor the middleware setup so that request processors and response processors are separated. This will allow for more flexibility in the future and aid in the implementation of features such as batched requests. This PR also closes out a few outstanding issues and will be the start of the breaking changes for web3.py
v7. Review PR for a full list of changes. (#3169)Use a message listener background task for
WebsocketProviderV2rather than relying onws.recv()blocking. Some breaking changes to API, notablylisten_to_websocket->process_subscriptions. (#3179)Drop dependency on
lru-dictlibrary. (#3196)Drop support for python 3.7 (#3198)
Return iterable of
ABIFunction``s from the ``BaseContractFunctionsiterator. (#3200)Name changes internal to the library related to
v7:WebsocketProvider->LegacyWebSocketProvider,WebsocketProviderV2->WebSocketProvider(#3225)CallOverridetype change toStateOverrideto reflect better the type name for the state override.eth_callis also not the only method with this param, making the name more generic. (#3227)Rename beacon/main.py -> beacon/beacon.py (#3233)
EthereumTesterProvidernow returnsinputfor eth_getTransaction* for better consistency with JSON-RPC spec. (#3235)Change the signature for the async version of
wait_for_transaction_receipt()to useOptional[float]instead offloat. (#3237)get_default_ipc_path()andget_dev_ipc_path()now return the path value without checking if thegeth.ipcfile exists. (#3245)
Bugfixesο
Improved Documentationο
Featuresο
Add AsyncIPCProvider (#2984)
Implement
state_overrideparameter foreth_estimateGasmethod. (#3164)Upgrade eth-tester to
v0.10.0-b.1and turn oneth_feeHistorysupport forEthereumTesterProvider. (#3172)Add formatters for new
Cancunnetwork upgrade block header fields:blobGasUsed,excessBlobGas, andparentBeaconBlockRoot. (#3223)Contract event
get_logsresults sorted by eachContractEventlogIndex. (#3228)
Internal Changes - for web3.py Contributorsο
Create test fixture for latest
gethversion. Run tests withgethin--devmode. (#3191)Validate geth version used to generate the integration test fixture against the version in the binary that is used to run the tests. (#3193)
Internal change to
WebsocketProviderV2before release: raise exceptions in message listener task by default; opting to silence them via a flag. (#3202)Compile contracts with and test against new Solidity version
v0.8.24. (#3204)Formatting updates for
black==24.1.0. (#3207)Allow HTTP provider request retry configuration to be turned off appropriately. Internal change since
v7has not yet been released. (#3211)Upgraded geth fixture version (#3231)
Miscellaneous Changesο
Performance Improvementsο
Remove call to
parse_block_identifierwhen initializingContractCallerfunctions. (#3257)
Removalsο
web3.py v6.14.0 (2024-01-10)ο
Bugfixesο
Improved Documentationο
Remove docs reference for removed
protocol_versionRPC method (#3183)
Internal Changes - for web3.py Contributorsο
web3.py v6.13.0 (2023-12-20)ο
Featuresο
Implement async
eth_createAccessListRPC method to create an EIP-2930 access list. (#3167)
Internal Changes - for web3.py Contributorsο
web3.py v6.12.0 (2023-12-11)ο
Improved Documentationο
Featuresο
Implement
createAccessListRPC endpoint to create an EIP-2930 access list. (#2381)
Internal Changes - for web3.py Contributorsο
web3.py v6.11.4 (2023-11-27)ο
Bugfixesο
Fix collision of
w3variable when initializing contract with function of the same name (#3147)
Miscellaneous Changesο
web3.py v6.11.3 (2023-11-08)ο
Bugfixesο
When coming back through the middleware onion after a request is made, we have the response
id. Use it to match to the cached request information and process the response accordingly. (#3140)
Improved Documentationο
Adds Discord bot template repo to Resources page (#3143)
Internal Changes - for web3.py Contributorsο
Additional contract
abidocumentation to make it a clear requirement for contract instances. (#2539)Fix type annotations for
web3constants. (#3138)Add upper pin to deprecated dependency
lru-dictwhose new minor version release introduced a typing issue with CI lint builds. (#3144)Recompile test contracts with new Solidity version
v0.8.23to ensure compatibility. (#3146)
web3.py v6.11.2 (2023-10-30)ο
Improved Documentationο
Internal Changes - for web3.py Contributorsο
Speed up the core test suite by splitting up sync and async tests. This reduces the CI build times to ~8min from ~12min. (#3111)
Re-compile test contracts with Solidity
v0.8.22to ensure compatibility with this latest Solidity version. (#3134)Improvements on yielding to the event loop while searching in response caches and calling
recv()on the websocket connection forWebSocketProviderV2. (#3135)
web3.py v6.11.1 (2023-10-18)ο
Improved Documentationο
Update
WebsocketProviderV2documentation. Document a general overview of theRequestProcessorclass and its internal caches. (#3125)
Featuresο
Properly define an
__await__()method on the_PersistentConnectionWeb3class so a persistent connection may be initialized using theawaitpattern. Integration tests added for initializing the persistent connection using theawaitpattern. (#3125)
Internal Changes - for web3.py Contributorsο
Updates and refactoring for the
WebsocketProviderV2class and its internal supporting classes and logic. Separation of one-to-one and one-to-many request responses. Storing of one-to-many responses in adequeand one-to-one responses in aSimpleCacheclass. Provide an async lock around the websocketrecv(). (#3125)Add upper pin to
hexbytesdependency to due incoming breaking change (#3127)
Miscellaneous Changesο
web3.py v6.11.0 (2023-10-11)ο
Breaking Changes (to Beta APIs)ο
Refactor the async iterator pattern for message streams from the websocket connection for
WebsocketProviderV2to a proper async iterator. This allows for a more natural usage of the iterator pattern and mimics the behavior of the underlyingwebsocketslibrary. (#3116)
Bugfixesο
Improved Documentationο
Change
docker-composetodocker composein the Contributing docs examples. (#3107)Updates to the
WebsocketProviderV2documentation async iterator example for iterating over a persistent stream of messages from the websocket connection viaasync for. (#3116)Update outdated node and private key management verbiage. (#3117)
Featuresο
Allow passing in a
floatfor arequest_timeoutfor requests for theBeaconclass. Update some Beacon API endpoints (sync and async). (#3106)Add
allow_listkwarg forexception_retry_middlewareto allow for a custom list of RPC endpoints. Add a sleep between retries and a customizablebackoff_factorto control the sleep time between retry attempts. (#3120)
Internal Changes - for web3.py Contributorsο
web3.py v6.10.0 (2023-09-21)ο
Breaking Changes (to Beta APIs)ο
Breaking change to the API for interacting with a persistent websocket connection via
AsyncWeb3andWebsocketProviderV2. This change internalizes theprovider.wsproperty and opts for aw3.wsAPI achieved via a newWebsocketConnectionclass. With these changes,eth_subscriptionmessages now return the subscription id as thesubscriptionparam and the formatted message as theresultparam. (#3096)
Bugfixesο
Return w3.eth.gas_price when calculating time based gas price strategy for an empty chain. (#1149)
Update LogReceipt and TxReceipt declarations. Remove LogReceiptβs payload and topic attributes. Refactor LogEntry to LogReceipt. (#3043)
Fixes
AsyncEth.max_priority_fee_per_gas. It wasnβt falling back toeth_feeHistorysince theMethodUnavailableerror was introduced. (#3084)
Improved Documentationο
Update
WebsocketProviderV2documentation to reflect the new public websocket API via theWebsocketConnectionclass. (#3096)
Featuresο
Improved error messaging for exceptions from malformed JSON-RPC responses. (#3053)
Enable filtering by non-indexed arguments for contract event
get_logs(). (#3078)Add
eth_maxPriorityFeePerGastoexception_retry_middlewarewhitelist (#3090)Sync responses for
WebsocketProviderV2open connections with requests via matching RPCidvalues. (#3096)Properly JSON encode
AttributeDict,bytes, andHexByteswhen sending a JSON-RPC request by utilizing the in-houseWeb3JsonEncoderclass. (#3101)
Internal Changes - for web3.py Contributorsο
web3.py v6.9.0 (2023-08-23)ο
Bugfixesο
Fix the type for
inputinTxDatafromHexStr->HexBytes. (#3074)Fix an issue with
WebsocketProviderV2when responses to a request arenβt found in the cache (Nonevalues). (#3075)Re-expose some websockets constants found in
web3.providers.websocket.websocketviaweb3.providers.websocket. (#3076)Return
NotImplementedconstant, rather than raisingNotImplementedErrorforNamedElementOnion.__add__(), based on Python standards. (#3080)Only release
async_lockif itβs locked to begin with. (#3083)
Improved Documentationο
web3.py v6.8.0 (2023-08-02)ο
Bugfixesο
Fix the type for the optional param asking for βfull transactionsβ when subscribing to
newPendingTransactionsviaeth_subscribetobool. (#3067)
Improved Documentationο
Change docs to reflect AsyncHTTPProvider does accept ENS names now (#3070)
Featuresο
Internal Changes - for web3.py Contributorsο
Minor fixes to type hinting in the core tests setup fixtures. (#3069)
web3.py v6.7.0 (2023-07-26)ο
Bugfixesο
Test wheel build in separate directory and virtualenv (#3046)
Handle case where data gets returned as
Nonein a JSON-RPC error response (#3054)Fixed default windows IPC provider path to work with python 3.11 (#3058)
Fix return type for
rpc_gas_price_strategytointbut also only convert thestrategy_based_gas_pricetohexif it is anintin thegas_price_strategy_middleware. (#3065)
Improved Documentationο
Featuresο
Internal Changes - for web3.py Contributorsο
web3.py v6.6.1 (2023-07-12)ο
Bugfixesο
Add
ens/specsto MANIFEST.in (#3039)
web3.py v6.6.0 (2023-07-12)ο
Note: This release was missing the required ``ens/specs`` directory, so it was yanked from Pypi in favor of v6.6.1
Breaking Changesο
ENS name normalization now uses ENSIP-15 by default. This is technically a breaking change introduced by ENS but, according to ENSIP-15, 99% of existing names should be unaffected. (#3024)
Bugfixesο
Handle
Nonein the formatting middleware (#2546)Fix for a possible bug in
construct_sign_and_send_raw_middlewarewhere the signed transaction was sent as bytes and expected to be converted to hex by formatting later on. It is now explicitly sent as the hex string hash within the middleware. (#2936)Fixes
max_priority_fee_per_gas. It wasnβt falling back toeth_feeHistorysince theMethodUnavailableerror was introduced. (#3002)Properly initialize logger in
AsyncHTTPProvider. (#3026)Fix
AsyncWeb3.solidity_keccakto matchWeb3.solidity_keccak. (#3034)
Improved Documentationο
Replaced transaction examples with unused account addresses. (#2011)
Removed obsolete docs for camelCase miner methods and
deploy(#2039)Update documentation relating to ENS only being available on mainnet. ENS is available on all networks where the ENS contracts are deployed. (#3012)
Add first steps section and tidy up learning resources (#3013)
Replace references to
jasoncarver.ethwithens.eth. (#3020)Adds βHackathon Helpersβ section to Resources page (#3035)
Featuresο
Update ENS Resolver ABI (#1839)
async_http_retry_request_middleware, an async http request retry middleware forAsyncHTTPProvider. (#3009)Add
eth_getStorageAt()support forEthereumTesterProvider. (#3011)Add async support for ENS name-to-address resolution via
async_name_to_address_middleware. (#3012)Add async support for the sign-and-send raw transaction middleware via
construct_async_sign_and_send_raw_middleware(). (#3025)
Internal Changes - for web3.py Contributorsο
Miscellaneous Changesο
Removalsο
Removed references to deprecated middlewares with new tests to check default middlewares (#2972)
web3.py v6.5.0 (2023-06-15)ο
Bugfixesο
Properly create a fresh cache for each instance of
simple_cache_middlewareif no cache is provided. Fixes a bug when using this middleware with multiple instances ofWeb3. (#2979)Fix potential race condition when writing cache entries in
simple_cache_middleware(#2981)Catch
UnicodeDecodeErrorfor contract revert messages that cannot be decoded and issue a warning instead, raising aContractLogicErrorwith the rawdatafrom the response. (#2989)
Improved Documentationο
Introduces resources page to documentation (#2957)
Completed docstrings for
ContractFunctionandAsyncContractFunctionclasses (#2960)Added βunsupported by any current clientsβ note to the
Eth.sign_typed_datadocs (#2961)Removed list of
AsyncHTTPProvider-supported methods, it supports them all now (#2962)Modernize the filtering guide, emphasizing
get_logs(#2968)Removed references to defunct providers in
IPCProviderdocs (#2971)Update Matomo analytics script to move to cloud services (#2978)
Featuresο
Internal Changes - for web3.py Contributorsο
lint-roll- droppedisort--recursiveflag, not needed as of theirv5, added black (#2930)Moved
ethpmdeprecation warning to only show when the module is explicitly enabled (#2983)Update make release to check remote upstream is pointing to ethereum/web3.py. (#2988)
Removed pluggy from dev requirements (#2992)
Miscellaneous Changesο
web3.py v6.4.0 (2023-05-15)ο
Bugfixesο
fix AttributeDicts unhashable if they contain lists recursively tupleizing them (#2908)
Deprecationsο
add deprecation notice for the ethPM module (#2953)
Improved Documentationο
Featuresο
Update
eth-testerto pull in Shanghai changes and make additional changes to fully support Shanghai witheth-tester. (#2958)
Internal Changes - for web3.py Contributorsο
v6.3.0 (2023-05-03)ο
Featuresο
Add support for custom revert errors (#2795)
Add the
modify_transactionmethod to theAsyncEthclass (#2825)add show_traceback flag to is_connected to allow user to see connection error reason (#2912)
Add a
dataattribute on theContractLogicErrorclass that returns raw data returned by the node. (#2922)Add support via result formatters for
rewardtype trace actions on tracing calls. (#2929)
Bugfixesο
Typing was being ignored for the
get_ipc_pathandget_dev_ipc_pathfunctions because of a missingNonereturn. Those two methods now explicitly returnNoneand have anOptionalin their type definition. (#2917)fix AsyncEventFilterBuilder looking for Web3 instead of AsyncWeb3 (#2931)
Add check for null withdrawal field on get_block response (#2941)
Improved Documentationο
Internal Changes - for web3.py Contributorsο
v6.2.0 (2023-04-12)ο
Featuresο
Bugfixesο
Use
TraceFilterParamsinstead ofFilterParamsfortrace_filtertyping (#2913)
Improved Documentationο
v6.1.0 (2023-04-05)ο
Featuresο
Add tracing functionality back in via the
tracingmodule, add formatters for human-readable input and output, and attach this module toWeb3on init / make it a default module. (#2851)Add result formatters for
withdrawals_rootandwithdrawalsas part ofShanghaihard fork support. (#2868)add eth_chainId to exception_retry_middleware whitelist (#2892)
Bugfixesο
Improved Documentationο
Internal Changes - for web3.py Contributorsο
Bump pytest from 6.2.5 to 7+ because of CI
DeprecationWarning(#2863)Require eth-abi v4 stable (#2886)
remove unused docs dependencies and bump version of remaining (#2890)
Update go-ethereum integration test fixture to use the latest version of geth -
v1.11.5. (#2896)Update
geth_stepsin CircleCI builds to pip install the proper version ofpy-geth. (#2898)Update CircleCI windows orb path since it now uses python 3.11. (#2899)
Bump go version used in CI jobs that install and run go-ethereum and parameterize the version in circleci config file for ease of configuration. (#2900)
Miscellaneous changesο
v6.0.0 (2023-03-14)ο
Bugfixesο
fix dict_to_namedtuple unable to handle empty dict as input (#2867)
v6.0.0-beta.11 (2023-02-24)ο
Featuresο
Add the
signmethod to theAsyncEthclass (#2833)
Bugfixesο
Improved Documentationο
Internal Changes - for web3.py Contributorsο
Breaking changesο
v6.0.0-beta.10 (2023-02-15)ο
Featuresο
add decode_tuples option to contract instantiation (#2799)
Bugfixesο
Improved Documentationο
Internal Changes - for web3.py Contributorsο
Organize the
ethmodule into separate files for better readability. (#2753)Rename the newly-split
ethmodule files to match convention. (#2772)Re-compile all test contracts with latest Solidity version. Refactor test fixtures. Adds a script that compiles all test contracts to the same directory with selected Solidity version. (#2797)
Updates to
isortandblackrequired some formatting changes and isort config refactoring. (#2802)Compile test contracts using newly-released Solidity version
0.8.18. (#2803)
Breaking changesο
All exceptions inherit from a custom class. EthPM exceptions inherit from EthPMException, ENS exceptions inherit from ENSException, and all other web3.py exceptions inherit from Web3Exception (#1478)
Reorganized contract to contract.py, async_contract.py, base_contract.py and utils.py. In this change there was a small breaking change where the constructor of BaseContractCaller contract_function_class was defaulting to a ContractFunction now there is no default. This was done to separate the base class from the implementation. (#2567)
When calling a contract, use
w3.eth.default_blockif no block_identifier is specified instead oflatest. (#2777)Strict bytes type checking is now default for
web3.py. This change also adds a boolean flag on theWeb3class for turning this feature on and off, as well as a flag on theENSclass for control over a standaloneENSinstance. (#2788)When a method is not supported by a node provider, raise a MethodUnavailable error instead of the generic ValueError. (#2796)
dicttoAttributeDictconversion is no longer a default result formatter. This conversion is now done via a default middleware that may be removed. (#2805)Removed deprecated
manager.request_asyncand associated methods. (#2810)removed Rinkeby from list of allowed chains in EthPM (#2815)
v6.0.0-beta.9 (2023-01-03)ο
Featuresο
Add async
w3.eth.get_block_transaction_count(#2687)Support Python 3.11 (#2699)
Load the
AsyncHTTPProviderwith default async middleware and default async modules, just as theHTTPProvider. (#2736)Add support for Nethermind/Gnosis revert reason formatting (#2739)
Added async functionality to filter (#2744)
Get contract address from
CREATEandCREATE2opcodes (#2762)
Bugfixesο
Fixing abi encoding for multidimensional arrays. (#2764)
Performance improvementsο
Improved Documentationο
Deprecations and Removalsο
Internal Changes - for web3.py Contributorsο
Miscellaneous changesο
Breaking changesο
v6.0.0-beta.8 (2022-11-14)ο
Featuresο
Async support for caching certain methods via
async_simple_cache_middlewareas well as constructing custom async caching middleware viaasync_construct_simple_cache_middleware.SimpleCacheclass was also added to the publicutilsmodule. (#2579)Remove upper pins on dependencies (#2648)
Async support for beacon api. (#2689)
If the loop for a cached async session is closed, or the session itself was closed, create a new session at that cache key and properly close and evict the stale session. (#2713)
Bugfixesο
Internal Changes - for web3.py Contributorsο
move definition of RTD install requirements file from their dashboard into .readthedocs.yml, and remove unused sphinx-better-theme from requirements (#2688)
Miscellaneous changesο
Breaking changesο
Remove support for dictionary-based caches, for simple-cache-middleware, in favor of the internal
SimpleCacheclass. (#2579)Snakecase the clientVersion method (#2686)
change instances of createFilter to create_filter (#2692)
Remove
SolidityErrorin favor ofContractLogicError(#2697)Snakecase the solidityKeccak method (#2702)
Snakecase the fromWeb3 method (#2703)
Snakecase the toBytes, toHex, toInt, toJSON, and toText methods (#2707)
Snakecase the toAddress, isChecksumAddress, and toChecksumAddress methods (#2708)
v6.0.0-beta.7 (2022-10-19)ο
Bugfixesο
Protobuf dependency had a DoS-able bug. It was fixed in v4.21.6. See: https://nvd.nist.gov/vuln/detail/CVE-2022-1941 (#2666)
Improved Documentationο
Added Chainstack link to quickstart docs. (#2677)
Deprecations and Removalsο
Remove Ropsten auto provider and the relevant references to Ropsten across the repo (#2672)
Internal Changes - for web3.py Contributorsο
Clean up remaining uses of deprecated
eth_abimethods. (#2668)
Miscellaneous changesο
v6.0.0-beta.6 (2022-09-26)ο
Bugfixesο
Protobuf dependency breaks at version
3.20.2and above; pin to3.20.1for now. (#2657)
Featuresο
Add new predefined block identifiers
safeandfinalized. (#2652)
v6.0.0-beta.5 (2022-09-19)ο
Breaking Changesο
Removed IBAN since it was an unused feature (#2537)
Update eth-tester dependency to v0.7.0-beta.1; Update eth-account version to >=0.7.0,<0.8.0 (#2623)
Remove
WEB3_INFURA_API_KEYenvironment variable in favor ofWEB3_INFURA_PROJECT_ID. ChangeInfuraKeyNotFoundexception toInfuraProjectIdNotFound(#2634)Remove Kovan auto provider (#2635)
Snakecase the isConnected method (#2643)
Snakecase the
toWeiandfromWeimethods (#2647)
Bugfixesο
Fix
eth-testerkey remapping forlogsBloomandreceiptsRoot(#1630)Improve upon issues with session caching - better support for multithreading and make sure session eviction from cache does not happen prematurely. (#2409)
Allow classes to inherit from the
Web3class by attaching modules appropriately. (#2592)fixed bug in how async_eth_tester_middleware fills default fields (#2600)
Allow hex for
valuefield when validating viavalidate_payable()contracts method (#2602)Update Beacon API to v2.3.0 (#2616)
Move
flakyoption to top-level conftest.py (#2642)
Documentation Updatesο
Update Proof of Authority middleware (geth_poa_middleware) documentation for better clarity. (#2538)
Add some missing supported async middlewares to docs. (#2574)
Introduce AsyncENS and availability on w3 instance in ENS guide. (#2585)
Fix typo in eth.call docs (#2613)
remove section for deleted account.recoverHash method (#2615)
examples docs gave incorrect return type for eth.get_transaction, fixed (#2617)
minor typo fix in contracts overview (#2628)
fix bug in Deploying new contracts example (#2646)
Featuresο
Support for
Accountclass access inAsyncEthviaasync_w3.eth.account(#2580)Expose public abi utility methods:
get_abi_output_names()andget_abi_input_names()(#2596)update all references to deprecated eth_abi.encode_abi to eth_abi.encode (#2621)
update all references to deprecated eth_abi.decode_abi to eth_abi.decode (#2636)
Add Sepolia auto provider (#2639)
Miscο
v6.0.0-beta.4 (2022-07-13)ο
Breaking Changesο
Bugfixesο
Documentation Updatesο
Featuresο
Add transaction result formatters for type and chainId to convert values to
intifhexadecimalif the field is not null (#2491)Add a global flag on the provider for enabling / disabling CCIP Read for calls:
global_ccip_read_enabled(defaults toTrue). (#2499)Deprecate Geth Admin StartRPC and StopRPC for StartHTTP and StopHTTP (#2507)
Added Async support for ENS (#2547)
support multi-dimensional arrays for ABI tuples types (#2555)
Miscο
v6.0.0-beta.3 (2022-06-01)ο
Breaking Changesο
Removed deprecated methods from eth and geth (#1416)
Bugfixesο
Documentation Updatesο
Featuresο
Miscο
v6.0.0-beta.2 (2022-04-27)ο
Breaking Changesο
Audit
.rstand.pyfiles and convert all Web3 instance variable names tow3to avoid confusion with theweb3module. (#1183)Update dependency requirements: - eth-utils - eth-abi - eth-tester - eth-account - eth-typing (#2342)
Add
attach_methods()toModuleclass to facilitate attaching methods to modules. (#2383)Move IOError -> OSError (#2434)
Documentation Updatesο
Clarify info about Infura filters over HTTP (#2322)
Document reading private keys from environment variables (#2380)
Add example for the
construct_sign_and_send_raw_middlewarewhen connected to a hosted node (#2410)Doc fix: Pending transaction filter returns a
TransactionFilternot aBlockFilter(#2444)
Featuresο
Miscο
v6.0.0-beta.1 (2022-02-28)ο
Breaking Changesο
Bugfixesο
Fix types for
gas, andgasLimit:Wei -> int. Also fix types foreffectiveGasPrice: (int -> Wei) (#2330)
Featuresο
Miscο
v5.28.0 (2022-02-09)ο
Featuresο
Added Async functions for Geth Personal and Admin modules (#1413)
async support for formatting, validation, and geth poa middlewares (#2098)
Calculate a default
maxPriorityFeePerGasusingeth_feeHistorywheneth_maxPriorityFeePerGasis not available, since the latter is not a part of the Ethereum JSON-RPC specs and only supported by certain clients. (#2259)Allow NamedTuples in ABI inputs (#2312)
Add async eth.syncing method (#2331)
Bugfixesο
v5.27.0 (2022-01-31)ο
Featuresο
Added Async functions for Geth TxPool (#1413)
external modules are no longer required to inherit from the
web3.module.Moduleclass (#2304)Add async eth.get_logs method (#2310)
add Async access to default_account and default_block (#2315)
Update eth-tester and eth-account dependencies to pull in bugfix from eth-keys (#2320)
Bugfixesο
Improved Documentationο
fix typo in eth.account docs (#2111)
explicitly add output_values to contracts example (#2293)
update imports for AsyncHTTPProvider sample code (#2302)
fixed broken link to filter schema (#2303)
add github link to the main docs landing page (#2313)
fix typos and update referenced geth version (#2326)
Miscο
v5.26.0 (2022-01-06)ο
Featuresο
Add
middlewaresproperty toNamedElementOnion/web3.middleware_onion. Returns current middlewares in proper order for importing into a newWeb3instance (#2239)Add async
eth.hashratemethod (#2243)Add async
eth.chain_idmethod (#2251)Add async
eth.miningmethod (#2252)Add async
eth.get_transaction_receiptandeth.wait_for_transaction_receiptmethods (#2265)Add async eth.accounts method (#2284)
Support for attaching external modules to the
Web3instance when instantiating theWeb3instance, via theexternal_modulesargument, or via the newattach_modules()method (#2288)
Bugfixesο
Improved Documentationο
Miscο
v5.25.0 (2021-11-19)ο
Featuresο
Support for
w3.eth.get_raw_transaction_by_block, and async support forw3.eth.get_raw_transaction_by_block(#2209)
Bugfixesο
BadResponseFormat error thrown instead of KeyError when a response gets sent back without a
resultkey. (#2188)
Improved Documentationο
Miscο
v5.24.0 (2021-09-27)ο
Featuresο
Bugfixesο
Encode block_count as hex before making eth_feeHistory RPC call (#2117)
Improved Documentationο
Fix typo in AsyncHTTPProvider docs (#2131)
Update AsyncHTTPProvider doc Supported Methods to include
web3.eth.send_raw_transaction(). (#2135)Improve messaging around usage and implementation questions, directing users to the appropriate channel (#2138)
Clarify some contract
ValueErrorerror messages. (#2146)Updated docs for w3.eth.account.sign_transaction to reflect that transaction type is no longer needed to successfully sign typed transactions and to illustrate how to structure an optional accessList parameter in a typed transaction (#2157)
Miscο
v5.23.1 (2021-08-27)ο
Featuresο
Add constants for the zero address, zero hash, max int, and wei per ether. (#2109)
Improved Documentationο
Miscο
v5.23.0 (2021-08-12)ο
Featuresο
Bugfixesο
Hot fix for string interpolation issue with contract function call decoding exception to facilitate extracting a meaningful message from the eth_call response (#2096)
Bypass adding a
gasPricevia the gas price strategy, if one is set, when EIP-1559 transaction params are used forsend_transaction(#2099)
Improved Documentationο
Update feeHistory docs (#2104)
v5.22.0 (2021-08-02)ο
Featuresο
Add support for eth_getRawTransactionByHash RPC method (#2039)
Add AsyncNet module (#2044)
Add async
eth.get_balance,eth.get_code,eth.get_transaction_countmethods. (#2056)eth_signTransaction support for eip-1559 params βmaxFeePerGasβ and βmaxPriorityFeePerGasβ (#2082)
Add support for async
w3.eth.call. (#2083)
Bugfixesο
If a transaction hash was passed as a string rather than a HexByte to
w3.eth.wait_for_transaction_receipt, and the time was exhausted before the transaction is in the chain, the error being raised was a TypeError instead of the correct TimeExhausted error. This is because theto_hexmethod in the TimeExhausted error message expects a primitive as the first argument, and a string doesnβt qualify as a primitive. Fixed by converting the transaction_hash to HexBytes instead. (#2068)Hot fix for a string interpolation issue in message when BadFunctionCallOutput is raised for call_contract_function() (#2069)
fill_transaction_defaults()no longer sets a defaultgasPriceif 1559 fees are present in the transaction parameters. This fixes sign-and-send middleware issues with 1559 fees. (#2092)
Improved Documentationο
Clarify that
send_transaction,modify_transaction, andreplace_transactionreturn HexByte objects instead of strings. (#2058)Added troubleshooting section for Microsoft Visual C++ error on Windows machines (#2077)
Updated the sign-and-send middleware docs to include EIP-1559 as well as legacy transaction examples (#2092)
Miscο
v5.21.0 (2021-07-12)ο
Featuresο
Adds support for EIP 1559 transaction keys: maxFeePerGas and maxPriorityFeePerGas (#2060)
Bugfixesο
Bugfix where an error response got passed to a function expecting a block identifier.
Split out null result formatters from the error formatters and added some tests. (#2022)
Fix broken tests and use the new 1559 params for most of our test transactions. (#2053)
Set a default maxFeePerGas value consistent with Geth (#2055)
Fix bug in geth PoA middleware where a
Noneresponse should throw aBlockNotFounderror, but was instead throwing anAttributeError(#2064)
Improved Documentationο
Added general documentation on unit and integration testing and how to contribute to our test suite. (#2053)
v5.20.1 (2021-07-01)ο
Bugfixesο
Have the geth dev IPC auto connection check for the
WEB3_PROVIDER_URIenvironment variable. (#2023)
Improved Documentationο
Remove reference to allowing multiple providers in docs (#2018)
Update βContract Deployment Exampleβ docs to use
py-solc-xassolcis no longer maintained. (#2020)Detail using unreleased Geth builds in CI (#2037)
Clarify that a missing trie node error could occur when using
block_identifierwith.call()on a node that isnβt running in archive mode (#2048)
Miscο
v5.20.0 (2021-06-09)ο
Featuresο
Add new AsyncHTTPProvider. No middleware or session caching support yet.
Also adds async
w3.eth.gas_price, and asyncw3.isConnected()methods. (#1978)Add ability for AsyncHTTPProvider to accept middleware
Also adds async gas_price_strategy middleware, and moves gas estimate to middleware.
AsyncEthereumTesterProvider now inherits from AsyncBase (#1999)
Support state_override in contract function call. (#2005)
Bugfixesο
Test ethpm caching + bump Sphinx version. (#1977)
Improved Documentationο
Miscο
v5.19.0 (2021-04-28)ο
Featuresο
Handle optional
eth_callstate override param. (#1921)Add list_storage_keys deprecate listStorageKeys (#1944)
Add net_peers deprecate netPeers (#1946)
Add trace_replay_transaction deprecate traceReplayTransaction (#1949)
Add add_reserved_peer deprecate addReservedPeer (#1951)
Add
parity.set_mode, deprecateparity.setMode(#1954)Add
parity.trace_raw_transaction, deprecateparity.traceRawTransaction(#1955)Add
parity.trace_call, deprecateparity.traceCall(#1957)Add trace_filter deprecate traceFilter (#1960)
Add trace_block, deprecate traceBlock (#1961)
Add trace_replay_block_transactions, deprecate traceReplayBlockTransactions (#1962)
Add
parity.trace_transaction, deprecateparity.traceTransaction(#1963)
Improved Documentationο
Document
eth_callstate overrides. (#1965)
Miscο
v5.18.0 (2021-04-08)ο
Featuresο
Add
w3.eth.modify_transactiondeprecatew3.eth.modifyTransaction(#1886)Add
w3.eth.get_transaction_receipt, deprecatew3.eth.getTransactionReceipt(#1893)Add
w3.eth.wait_for_transaction_receiptdeprecatew3.eth.waitForTransactionReceipt(#1896)Add
w3.eth.set_contract_factorydeprecatew3.eth.setContractFactory(#1900)Add
w3.eth.generate_gas_pricedeprecatew3.eth.generateGasPrice(#1905)Add
w3.eth.set_gas_price_strategydeprecatew3.eth.setGasPriceStrategy(#1906)Add
w3.eth.estimate_gasdeprecatew3.eth.estimateGas(#1913)Add
w3.eth.sign_typed_datadeprecatew3.eth.signTypedData(#1915)Add
w3.eth.get_filter_changesdeprecatew3.eth.getFilterChanges(#1916)Add
eth.get_filter_logs, deprecateeth.getFilterLogs(#1919)Add
eth.uninstall_filter, deprecateeth.uninstallFilter(#1920)Add
w3.eth.get_logsdeprecatew3.eth.getLogs(#1925)Add
w3.eth.submit_hashratedeprecatew3.eth.submitHashrate(#1926)Add
w3.eth.submit_workdeprecatew3.eth.submitWork(#1927)Add
w3.eth.get_work, deprecatew3.eth.getWork(#1934)Adds public get_block_number method. (#1937)
Improved Documentationο
Add ABI type examples to docs (#1890)
Promote the new Ethereum Python Discord server on the README. (#1898)
Escape reserved characters in install script of Contributing docs. (#1909)
Add detailed event filtering examples. (#1910)
Add docs example for tuning log levels. (#1928)
Add some performance tips in troubleshooting docs. (#1929)
Add existing contract interaction to docs examples. (#1933)
Replace Gitter links with the Python Discord server. (#1936)
Miscο
v5.17.0 (2021-02-24)ο
Featuresο
Added
get_transaction_count, and deprecatedgetTransactionCount(#1844)Add
w3.eth.send_transaction, deprecatew3.eth.sendTransaction(#1878)Add
web3.eth.sign_transaction, deprecateweb3.eth.signTransaction(#1879)Add
w3.eth.send_raw_transaction, deprecatew3.eth.sendRawTransaction(#1880)Add
w3.eth.replace_transactiondeprecatew3.eth.replaceTransaction(#1882)
Improved Documentationο
Fix return type of
send_transactionin docs. (#686)
v5.16.0 (2021-02-04)ο
Featuresο
Added
get_block_transaction_count, and deprecatedgetBlockTransactionCount(#1841)Move
defaultAccounttodefault_account. DeprecatedefaultAccount. (#1848)Add
eth.default_block, deprecateeth.defaultBlock. Also addsparity.default_block, and deprecatesparity.defaultBlock. (#1849)Add
eth.gas_price, deprecateeth.gasPrice(#1850)Added
eth.block_numberproperty. Deprecatedeth.blockNumber(#1851)Add
eth.chain_id, deprecateeth.chainId(#1852)Add
eth.protocol_version, deprecateeth.protocolVersion(#1853)Add
eth.get_code, deprecateeth.getCode(#1856)Deprecate
eth.getProof, addeth.get_proof(#1857)Add
eth.get_transaction, deprecateeth.getTransaction(#1858)Add
eth.get_transaction_by_block, deprecateeth.getTransactionByBlock(#1859)Add get_uncle_by_block, deprecate getUncleByBlock (#1862)
Add get_uncle_count, deprecate getUncleCount (#1863)
Bugfixesο
Fix event filter creation if the event ABI contains a
valueskey. (#1807)
Improved Documentationο
Remove v5 breaking changes link from the top of the release notes. (#1837)
Add account creation troubleshooting docs. (#1855)
Document passing a struct into a contract function. (#1860)
Add instance configuration troubleshooting docs. (#1865)
Clarify nonce lookup in sendRawTransaction docs. (#1866)
Updated docs for web3.eth methods: eth.getTransactionReceipt and eth.waitForTransactionReceipt (#1868)
v5.15.0 (2021-01-15)ο
Featuresο
Bugfixesο
PR #1585 changed the error that was coming back from eth-tester when the Revert opcode was called, which broke some tests in downstream libraries. This PR reverts back to raising the original error. (#1813)
Added a new
ContractLogicErrorfor when a contract reverts a transaction.ContractLogicErrorwill replaceSolidityError, in v6. (#1814)
Improved Documentationο
Introduce Beacon API documentation (#1836)
Miscο
v5.14.0 (2021-01-05)ο
Bugfixesο
Featuresο
Miscο
v5.13.1 (2020-12-03)ο
Bugfixesο
Handle revert reason parsing for Ganache (#1794)
Improved Documentationο
Document Geth and Parity/OpenEthereum fixture generation (#1787)
Miscο
v5.13.0 (2020-10-29)ο
Featuresο
Raise SolidityError exceptions that contain the revert reason when a call fails. (#941)
Bugfixesο
Update eth-tester dependency to fix tester environment install version conflict. (#1782)
Miscο
v5.12.3 (2020-10-21)ο
Miscο
v5.12.2 (2020-10-12)ο
Bugfixesο
Miscο
v5.12.1 (2020-09-02)ο
Miscο
v5.12.0 (2020-07-16)ο
Featuresο
Improved Documentationο
Miscο
v5.12.0-beta.3 (2020-07-15)ο
Bugfixesο
Include ethpm-spec solidity examples in distribution. (#1686)
v5.12.0-beta.2 (2020-07-14)ο
Bugfixesο
Support ethpm-spec submodule in distributions. (#1682)
Improved Documentationο
v5.12.0-beta.1 (2020-07-09)ο
Featuresο
Bugfixesο
Update outdated reference url in ethpm docs and tests. (#1680)
Improved Documentationο
v5.11.1 (2020-06-17)ο
Bugfixesο
Added formatter rules for eth_tester middleware to allow
getBalance()by using integer block numbers (#1660)Fix type annotations within the
eth.pymodule. Several arguments that defaulted toNonewere not declaredOptional. (#1668)Fix type annotation warning when using string URI to instantiate an HTTP or WebsocketProvider. (#1669)
Fix type annotations within the
web3modules. Several arguments that defaulted toNonewere not declaredOptional. (#1670)
Improved Documentationο
v5.11.0 (2020-06-03)ο
Featuresο
Accept a block identifier in the
Contract.estimateGasmethod. Includes a related upgrade of eth-tester to v0.5.0-beta.1. (#1639)Introduce a more specific validation error,
ExtraDataLengthError. This enables tools to detect when someone may be connected to a POA network, for example, and provide a smoother developer experience. (#1666)
Bugfixesο
Correct the type annotations of FilterParams.address (#1664)
Improved Documentationο
v5.10.0 (2020-05-18)ο
Featuresο
An update of
eth-testerincludes a change of the default fork from Constantinople to Muir Glacier. #1636
Bugfixesο
my_contract.events.MyEventwas incorrectly annotated so thatMyEventwas marked as aContractEventinstance. Fixed to be a class type, i.e.,Type[ContractEvent]. (#1646)IPCProvider correctly handled
pathlib.Pathinput, but warned against its type. Fixed to permit Path objects in addition to strings. (#1647)
Miscο
v5.9.0 (2020-04-30)ο
Featuresο
Upgrade eth-account to use v0.5.2+. eth-account 0.5.2 adds support for hd accounts
Also had to pin eth-keys to get dependencies to resolve. (#1622)
Bugfixesο
v5.8.0 (2020-04-23)ο
Featuresο
Introduced
list_walletsmethod to theGethPersonalclass. (#1516)Added block_identifier parameter to ContractConstructor.estimateGas method. (#1588)
Add snake_case methods to Geth and Parity Personal Modules.
Deprecate camelCase methods. (#1589)
Added new weighted keyword argument to the time based gas price strategy.
If
True, it will more give more weight to more recent block times. (#1614)Adds support for Solidityβs new(ish) receive function.
Adds a new contract API that mirrors the existing fallback API:
contract.receive(#1623)
Bugfixesο
Fixed hasattr overloader method in the web3.ContractEvent, web3.ContractFunction, and web3.ContractCaller classes by implementing a try/except handler that returns False if an exception is raised in the __getattr__ overloader method (since __getattr__ HAS to be called in every __hasattr__ call).
Created two new Exception classes, βABIEventFunctionNotFoundβ and βABIFunctionNotFoundβ, which inherit from both AttributeError and MismatchedABI, and replaced the MismatchedABI raises in ContractEvent, ContractFunction, and ContractCaller with a raise to the created class in the __getattr__ overloader method of the object. (#1594)
Change return type of rpc_gas_price_strategy from int to Wei (#1612)
Improved Documentationο
Fix typo in βInternalsβ docs. Changed asyncronous β> asynchronous (#1607)
Improve documentation that introduces and troubleshoots Providers. (#1609)
Add documentation for when to use each transaction method. (#1610)
Remove incorrect web3 for w3 in doc example (#1615)
Add examples for using web3.contract via the ethpm module. (#1617)
Add dark mode to documentation. Also fixes a bunch of formatting issues in docs. (#1626)
Miscο
v5.7.0 (2020-03-16)ο
Featuresο
Add snake_case methods for the net module
Also moved net module to use ModuleV2 instead of Module (#1592)
Bugfixesο
Fix return type of eth_getCode. Changed from Hexstr to HexBytes. (#1601)
Miscο
v5.6.0 (2020-02-26)ο
Featuresο
Bugfixesο
Increase replacement tx minimum gas price bump
Parity/OpenEthereum requires a replacement transactionβs gas to be a minimum of 12.5% higher than the original (vs. Gethβs 10%). (#1570)
v5.5.1 (2020-02-10)ο
Improved Documentationο
Documents the getUncleCount method. (#1534)
Miscο
v5.5.0 (2020-02-03)ο
Featuresο
ENS had to release a new registry to push a bugfix. See this article for background information. web3.py uses the new registry for all default ENS interactions, now. (#1573)
Bugfixesο
Minor bugfix in how ContractCaller looks up abi functions. (#1552)
Update modules to use compatible typing-extensions import. (#1554)
Make βfromβ and βtoβ fields checksum addresses in returned transaction receipts (#1562)
Use local Trinityβs IPC socket if it is available, for newer versions of Trinity. (#1563)
Improved Documentationο
Add Matomo Tracking to Docs site.
Matomo is an Open Source web analytics platform that allows us to get better insights and optimize for our audience without the negative consequences of other compareable platforms.
Read more: https://matomo.org/why-matomo/ (#1541)
Fix web3 typo in docs (#1559)
Miscο
v5.4.0 (2019-12-06)ο
Featuresο
Add __str__ to IPCProvider (#1536)
Bugfixesο
Add required typing-extensions library to setup.py (#1544)
v5.3.1 (2019-12-05)ο
Bugfixesο
Improved Documentationο
Miscο
v5.3.0 (2019-11-14)ο
Featuresο
Support handling ENS domains in ERC1319 URIs. (#1489)
Bugfixesο
Improved Documentationο
Miscο
v5.2.2 (2019-10-21)ο
Featuresο
Add poll_latency to waitForTransactionReceipt (#1453)
Bugfixesο
Fix flaky Parity whisper module test (#1473)
Miscο
v5.2.1 (2019-10-17)ο
Improved Documentationο
Miscο
v5.2.0 (2019-09-26)ο
Featuresο
Bugfixesο
Add null check to logsbloom formatter (#1445)
Improved Documentationο
Reformat autogenerated towncrier release notes (#1460)
Web3 5.1.0 (2019-09-18)ο
Featuresο
Add
contract_typesproperty toPackageclass. (#1440)
Bugfixesο
Fix flaky parity integration test in the whisper module (#1147)
Improved Documentationο
Remove whitespace, move
topicskey ->topicin Geth docs (#1425)Enforce stricter doc checking, turning warnings into errors to fail CI builds to catch issues quickly.
Add missing
web3.tools.rstto the table of contents and fix incorrectly formatted JSON example. (#1437)Add example using Geth POA Middleware with Infura Rinkeby Node (#1444)
Miscο
v5.0.2ο
Released August 22, 2019
Bugfixes
[ethPM] Fix bug in package id and release id fetching strategy - #1427
v5.0.1ο
Released August 15, 2019
v5.0.0ο
Released August 1, 2019
v5.0.0-beta.5ο
Released July 31, 2019
This is intended to be the final release before the stable v5 release.
v5.0.0-beta.4ο
Released July 18,2019
v5.0.0-beta.3ο
Released July 15, 2019
Features
Bugfixes
Remove full IDNA processing in favor of UTS46 - #1364
Misc
Migrate py-ethpm library to web3/ethpm - #1379
Relax canonical address requirement in ethPM - #1380
Replace ethPMβs infura strategy with web3βs native infura support - #1383
Change
combine_argument_formatterstoapply_formatters_to_sequence- #1360Move
pytest.xfailinstances to@pytest.mark.xfail- #1376Change
net.versiontoeth.chainIdin default transaction params - #1378
v5.0.0-beta.2ο
Released May 13, 2019
v5.0.0-beta.1ο
Released May 6, 2019
v5.0.0-alpha.11ο
Released April 24, 2019
v5.0.0-alpha.10ο
Released April 15, 2019
Features
Add getLogs by blockHash - #1269
Implement chainId endpoint - #1295
Moved non-standard JSON-RPC endpoints to applicable Parity/Geth docs. Deprecated
web3.versionforweb3.api- #1290Moved Whisper endpoints to applicable Geth or Parity namespace - #1308
Added support for Goerli provider - #1286
Added addReservedPeer to Parity module - #1311
Bugfixes
Misc
v5.0.0-alpha.9ο
Released March 26, 2019
v5.0.0-alpha.8ο
Released March 20, 2019
Breaking Changes
Removed
web3/utilsdirectory in favor ofweb3/_utils- #1282Relocated personal RPC endpoints to Parity and Geth class - #1211
Deprecated
web3.net.chainId(),web3.eth.getCompilers(), andweb3.eth.getTransactionFromBlock(). Removedweb3.eth.enableUnauditedFeatures()- #1270Relocated eth_protocolVersion and web3_clientVersion - #1274
Relocated
web3.txpooltoweb3.geth.txpool- #1275Relocated admin module to Geth namespace - #1288
Relocated miner module to Geth namespace - #1287
Features
Docs
Added v5 migration docs - #1284
v5.0.0-alpha.7ο
Released March 11, 2019
v5.0.0-alpha.6ο
Released February 25th, 2019
v5.0.0-alpha.5ο
Released February 13th, 2019
Breaking Changes
Remove deprecated
buildTransaction,call,deploy,estimateGas, andtransactmethods - #1232
Features
Misc
v5.0.0-alpha.4ο
Released January 23rd, 2019
Breaking Changes
Bugfixes
Features
Misc
v5.0.0-alpha.3ο
Released January 15th, 2019
Breaking Changes
Remove
web3.miner.hashrateandweb3.version.network- #1198Remove
web3.providers.tester.EthereumTesterProviderandweb3.providers.tester.TestRPCProvider- #1199Change
manager.providersfrom list to singlemanager.provider- #1200Replace deprecated
web3.sha3method withweb3.keccakmethod - #1207Drop auto detect testnets for IPCProvider - #1206
Bugfixes
Add check to make sure blockHash exists - #1158
Misc
Remove some unreachable code in providers/base.py - #1160
Migrate tester provider results from middleware to defaults - #1188
Fix doc formatting for build_filter method - #1187
Add ERC20 example in docs - #1178
Convert Web3 instance variables to w3 - #1186
Update eth-utils dependencies and clean up other dependencies - #1195
v5.0.0-alpha.2ο
Released December 20th, 2018
v5.0.0-alpha.1ο
Released December 13th, 2018
Features
Add Rinkeby and Kovan Infura networks; made mainnet the default - #1150
Add parity-specific
listStorageKeysRPC - #1145Deprecated
Web3.soliditySha3; useWeb3.solidityKeccakinstead. - #1139Add default trinity locations to IPC path guesser - #1121
Add wss to
AutoProvider- #1110Add timeout for
WebsocketProvider- #1109Receipt timeout raises
TimeExhausted- #1070Allow specification of block number for
eth_estimateGas- #1046
Misc
v4.8.2ο
Released November 15, 2018
Misc
Reduce unneeded memory usage - #1138
v4.8.1ο
Released October 28, 2018
Features
Misc
v4.7.2ο
Released September 25th, 2018
v4.7.1ο
Released September 11th, 2018
Bugfixes
old pip bug used during release made it impossible for non-windows users to install 4.7.0.
v4.7.0ο
Released September 10th, 2018
Features
Bugfixes
Misc - Upgrade eth-tester to 0.1.0-beta.32, and remove integration tests for py-ethereum. - Upgrade eth-hash to 0.2.0 with pycryptodome 3.6.6 which resolves a vulnerability.
v4.6.0ο
Released Aug 24, 2018
Features
Support for Python 3.7, most notably in
WebsocketProvider- #996You can now decode a transactionβs data to its original function call and arguments with:
contract.decode_function_input()- #991Support for
IPCProviderin FreeBSD (and more readme docs) - #1008
Bugfixes
Misc
Disallow configuring filters with both manual and generated topic lists - #976
Add support for the upcoming eth-abi v2, which does ABI string decoding differently - #974
Add a lot more filter tests - #997
Add more tests for filtering with
None. Note that geth & parity differ here. - #985Follow-up on Parity bug that we reported upstream (parity#7816): they resolved in 1.10. We removed xfail on that test. - #992
Docs: add an example of interacting with an ERC20 contract - #995
A couple doc typo fixes
v4.5.0ο
Released July 30, 2018
Features
Accept addresses supplied in
bytesformat (which does not provide checksum validation)Improve estimation of gas prices
Bugfixes
Can now use a block number with
getCode()when connected toEthereumTesterProvider(without crashing)
Misc
Test Parity 1.11.7
Parity integration tests upgrade to use sha256 instead of md5
Fix some filter docs
eth-account upgrade to v0.3.0
eth-tester upgrade to v0.1.0-beta.29
v4.4.1ο
Released June 29, 2018
Bugfixes
eth-pm package was renamed (old one deleted) which broke the web3 release. eth-pm was removed from the web3.py install until itβs stable.
Misc
IPCProvidernow accepts apathlib.Pathargument for the IPC pathDocs explaining the new custom autoproviders in web3
v4.4.0ο
Released June 21, 2018
Features
Add support for https in WEB3_PROVIDER_URI environment variable
Can send websocket connection parameters in
WebsocketProviderTwo new auto-initialization options:
from web3.auto.gethdev import w3from web3.auto.infura import w3(After setting theINFURA_API_KEYenvironment variable)
Alpha support for a new package management tool based on ethpm-spec
Bugfixes
Can now receive large responses in
WebsocketProviderby specifying a largemax_sizein the websocket connection parameters.
Misc
Websockets dependency upgraded to v5
Raise deprecation warning on
getTransactionFromBlock()Fix docs for
waitForTransactionReceipt()Developer Dockerfile now installs testing dependencies
v4.3.0ο
Released June 6, 2018
Features
Support for the ABI types like: fixedMxN which is used by Vyper.
In-flight transaction-signing middleware: Use local keys as if they were hosted keys using the new
sign_and_send_raw_middlewareNew
getUncleByBlock()APINew name
getTransactionByBlock(), which replaces the deprecatedgetTransactionFromBlock()Add several new Parity trace functions
New API to resolve ambiguous function calls, for example:
Two functions with the same name that accept similar argument types, like
myfunc(uint8)andmyfunc(int8), and you want to callcontract.functions.myfunc(1).call()See how to use it at: Invoke Ambiguous Contract Functions
Bugfixes
Gas estimation doesnβt crash, when 0 blocks are available. (ie~ on the genesis block)
Close out all HTTPProvider sessions, to squash warnings on exit
Stop adding Contract address twice to the filter. It was making some nodes unhappy
Misc
Friendlier json encoding/decoding failure error messages
Performance improvements, when the responses from the node are large (by reducing the number of times we evaluate if the response is valid json)
Parity CI test fixes (ugh, environment setup hell, thanks to the community for cleaning this up!)
Donβt crash when requesting a transaction that was created with the parity bug (which allowed an unsigned transaction to be included, so
publicKeyisNone)Doc fixes: addresses must be checksummed (or ENS names on mainnet)
Enable local integration testing of parity on non-Debian OS
README:
Testing setup for devs
Change the build badge from Travis to Circle CI
Cache the parity binary in Circle CI, to reduce the impact of their binary API going down
Dropped the dot:
py.test->pytest
v4.2.1ο
Released May 9, 2018
Bugfixes
When
getting a transactionwith data attached and trying tomodify it(say, to increase the gas price), the data was not being reattached in the new transaction.web3.personal.sendTransaction()was crashing when using a transaction generated withbuildTransaction()
Misc
Improved error message when connecting to a geth-style PoA network
Improved error message when address is not checksummed
Started in on support for
fixedMxNABI argumentsLots of documentation upgrades, including:
Guide for understanding nodes/networks/connections
Simplified Quickstart with notes for common issues
A new Troubleshooting section
Potential pypy performance improvements (use toolz instead of cytoolz)
eth-tester upgraded to beta 24
v4.2.0ο
Released Apr 25, 2018
Removed audit warning and opt-in requirement for
w3.eth.account. See more in: AccountsAdded an API to look up contract functions:
fn = contract.functions['function_name_here']Upgrade Whisper (shh) module to use v6 API
Bugfix: set βtoβ field of transaction to empty when using
transaction = contract.constructor().buildTransaction()You can now specify nonce in
buildTransaction()Distinguish between chain id and network id β currently always return None for
chainIdBetter error message when trying to use a contract function that has 0 or >1 matches
Better error message when trying to install on a python version <3.5
Installs pypiwin32 during pip install, for a better Windows experience
Cleaned up a lot of test warnings by upgrading from deprecated APIs, especially from the deprecated
contract.deploy(txn_dict, args=contract_args)to the newcontract.constructor(*contract_args).transact(txn_dict)Documentation typo fixes
Better template for Pull Requests
v4.1.0ο
Released Apr 9, 2018
New
WebsocketProvider. If youβre looking for better performance than HTTP, check out websockets.New
w3.eth.waitForTransactionReceipt()Added name collision detection to ConciseContract and ImplicitContract
Bugfix to allow fromBlock set to 0 in createFilter, like
contract.events.MyEvent.createFilter(fromBlock=0, ...)Bugfix of ENS automatic connection
eth-tester support for Byzantium
New migration guide for v3 -> v4 upgrade
Various documentation updates
Pinned eth-account to older version
v4.0.0ο
Released Apr 2, 2018
Marked beta.13 as stable
Documentation tweaks
v4.0.0-beta.13ο
Released Mar 27, 2018
This is intended to be the final release before the stable v4 release.
Add support for geth 1.8 (fixed error on
getTransactionReceipt())You can now call a contract method at a specific block with the
block_identifierkeyword argument, see:call()In preparation for stable release, disable
w3.eth.accountby default, until a third-party audit is complete & resolved.New API for contract deployment, which enables gas estimation, local signing, etc. See
constructor().Find contract events with contract.events.$my_event.createFilter()
Support auto-complete for contract methods.
Upgrade most dependencies to stable
eth-abi
eth-utils
hexbytes
not included: eth-tester and eth-account
Switch the default EthereumTesterProvider backend from eth-testrpc to eth-tester:
web3.providers.eth_tester.EthereumTesterProviderA lot of documentation improvements
Test node integrations over a variety of providers
geth 1.8 test suite
v4.0.0-beta.12ο
A little hiccup on release. Skipped.
v4.0.0-beta.11ο
Released Feb 28, 2018
New methods to modify or replace pending transactions
A compatibility option for connecting to
geth --devβ see Proof of AuthorityA new
web3.net.chainIdCreate a filter object from an existing filter ID.
eth-utils v1.0.1 (stable) compatibility
v4.0.0-beta.10ο
Released Feb 21, 2018
bugfix: Compatibility with eth-utils v1-beta2 (the incompatibility was causing fresh web3.py installs to fail)
bugfix: crash when sending the output of
contract.functions.myFunction().buildTransaction()tosendTransaction(). Now, having a chainID key does not crash sendTransaction.bugfix: a TypeError when estimating gas like:
contract.functions.myFunction().estimateGas()is fixedAdded parity integration tests to the continuous integration suite!
Some py3 and docs cleanup
v4.0.0-beta.9ο
Released Feb 8, 2018
Access event log parameters as attributes
Support for specifying nonce in eth-tester
Bugfix dependency conflicts between eth-utils, eth-abi, and eth-tester
Clearer error message when invalid keywords provided to contract constructor function
New docs for working with private keys + set up doctests
First parity integration tests
replace internal implementation of w3.eth.account with
eth_account.account.Account
v4.0.0-beta.8ο
Released Feb 7, 2018, then recalled. It added 32MB of test data to git history, so the tag was deleted, as well as the corresponding release. (Although the release would not have contained that test data)
v4.0.0-beta.7ο
Released Jan 29, 2018
Support for
web3.eth.Eth.getLogs()in eth-tester with py-evmProcess transaction receipts with Event ABI, using Contract.events.myEvent(*args, **kwargs).processReceipt(transaction_receipt) see Event Log Object for the new type.
Add timeout parameter to
web3.providers.ipc.IPCProviderbugfix: make sure idna package is always installed
Replace ethtestrpc with py-evm, in all tests
Dockerfile fixup
Test refactoring & cleanup
Reduced warnings during tests
v4.0.0-beta.6ο
Released Jan 18, 2018
New contract function call API: my_contract.functions.my_func().call() is preferred over the now deprecated my_contract.call().my_func() API.
A new, sophisticated gas estimation algorithm, based on the https://ethgasstation.info approach. You must opt-in to the new approach, because itβs quite slow. We recommend using the new caching middleware. See
web3.gas_strategies.time_based.construct_time_based_gas_price_strategy()New caching middleware that can cache based on time, block, or indefinitely.
Automatically retry JSON-RPC requests over HTTP, a few times.
ConciseContract now has the address directly
Many eth-tester fixes.
web3.providers.eth_tester.main.EthereumTesterProvideris now a legitimate alternative toweb3.providers.tester.EthereumTesterProvider.ethtest-rpc removed from testing. Tests use eth-tester only, on pyethereum. Soon it will be eth-tester with py-evm.
Bumped several dependencies, like eth-tester
Documentation updates
v4.0.0-beta.5ο
Released Dec 28, 2017
Improvements to working with eth-tester, using
EthereumTesterProvider:Bugfix the key names in event logging
Add support for
sendRawTransaction()
IPCProvidernow automatically retries on a broken connection, like when you restart your nodeNew gas price engine API, laying groundwork for more advanced gas pricing strategies
v4.0.0-beta.4ο
Released Dec 7, 2017
New
buildTransaction()method to prepare contract transactions, offlineNew automatic provider detection, for
w3 = Web3()initializationSet environment variable WEB3_PROVIDER_URI to suggest a provider for automatic detection
New API to set providers like:
w3.providers = [IPCProvider()]Crashfix:
web3.eth.Eth.filter()when retrieving logs with the argument βlatestβBump eth-tester to v0.1.0-beta.5, with bugfix for filtering by topic
Removed GPL lib
pylru, now believed to be in full MIT license compliance.
v4.0.0-beta.3ο
Released Dec 1, 2017
Fix encoding of ABI types:
bytes[]andstring[]Windows connection error bugfix
Bugfix message signatures that were broken ~1% of the time (zero-pad
rands)Autoinit web3 now produces None instead of raising an exception on
from web3.auto import w3Clearer errors on formatting failure (includes field name that failed)
Python modernization, removing Py2 compatibility cruft
Update dependencies with changed names, now:
eth-abieth-keyfileeth-keyseth-testereth-utils
Faster Travis CI builds, with cached geth binary
v4.0.0-beta.2ο
Released Nov 22, 2017
Bug Fixes:
sendRawTransaction()accepts raw bytescontract()accepts an ENS name as contract addresssignTransaction()returns the expected hash (after signing the transaction)Accountmethods can all be called statically, like:Account.sign(...)getTransactionReceipt()returns thestatusfield as anintWeb3.soliditySha3()looks up ENS names if they are supplied with an βaddressβ ABIIf running multiple threads with the same w3 instance,
ValueError: Recursively called ...is no longer raised
Plus, various python modernization code cleanups, and testing against geth 1.7.2.
v4.0.0-beta.1ο
Python 3 is now required
ENS names can be used anywhere that a hex address can
Sign transactions and messages with local private keys
New filter mechanism:
get_all_entries()andget_new_entries()Quick automatic initialization with
from web3.auto import w3All addresses must be supplied with an EIP-55 checksum
All addresses are returned with a checksum
Renamed
Web3.toDecimal()totoInt(), see: Encoding and Decoding HelpersAll filter calls are synchronous, gevent integration dropped
Contract
eventFilter()has replaced bothContract.on()andContract.pastEvents()Contract arguments of
bytesABI type now accept hex strings.Contract arguments of
stringABI type now accept pythonstr.Contract return values of
stringABI type now return pythonstr.Many methods now return a
bytes-like object where they used to return a hex string, like inWeb3.sha3()IPC connection left open and reused, rather than opened and closed on each call
A number of deprecated methods from v3 were removed
3.16.1ο
Addition of
ethereum-testeras a dependency
3.16.0ο
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.
3.15.0ο
Change docs to use RTD theme
Experimental new
EthereumTesterProviderfor theethereum-testerlibrary.Bugfix for
functiontype abi encoding viaethereum-abi-utilsupgrade tov0.4.1Bugfix for
Web3.toHexto conform to RPC spec.
3.14.2ο
Fix PyPi readme text.
3.14.1ο
Fix PyPi readme text.
3.14.0ο
New
stalecheck_middlewareImprovements to
Web3.toHexandWeb3.toText.Improvements to
Web3.sha3signature.Bugfixes for
Web3.eth.signapi
3.13.5ο
Add experimental
fixture_middlewareVarious bugfixes introduced in middleware API introduction and migration to formatter middleware.
3.13.4ο
Bugfix for formatter handling of contract creation transaction.
3.13.3ο
Improved testing infrastructure.
3.13.2ο
Bugfix for retrieving filter changes for both new block filters and pending transaction filters.
3.13.1ο
Fix mispelled
attrdict_middleware(was spelledattrdict_middlware).
3.13.0ο
New Middleware API
Support for multiple providers
New
web3.soliditySha3Remove multiple functions that were never implemented from the original web3.
Deprecated
web3.currentProvideraccessor. Useweb3.providernow instead.Deprecated password prompt within
web3.personal.newAccount.
3.12.0ο
Bugfix for abi filtering to correctly handle
constructorandfallbacktype abi entries.
3.11.0ο
All web3 apis which accept
addressparameters 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.syncingto correctly handleFalse
3.10.0ο
Web3 now returns
web3.utils.datastructures.AttributeDictin places where it previously returned a normaldict.web3.eth.contractnow performs validation on theaddressparameter.Added
web3.eth.getWorkAPI
3.9.0ο
Add validation for the
abiparameter ofethContract return values of
bytes,bytesXXandstringare no longer converted to text types and will be returned in their raw byte-string format.
3.8.1ο
Bugfix for
eth_signdouble hashing input.Removed deprecated
DelegatedSigningManagerRemoved deprecate
PrivateKeySigningManager
3.8.0ο
Update pyrlp dependency to
>=0.4.7Update eth-testrpc dependency to
>=1.2.0Deprecate
DelegatedSigningManagerDeprecate
PrivateKeySigningManager
3.7.1ο
upstream version bump for bugfix in eth-abi-utils
3.7.0ο
deprecate
eth.defaultAccountdefaulting to the coinbase account.
3.6.2ο
Fix error message from contract factory creation.
Use
ethereum-utilsfor utility functions.
3.6.1ο
Upgrade
ethereum-abi-utilsdependency for upstream bugfix.
3.6.0ο
Deprecate
Contract.code: replaced byContract.bytecodeDeprecate
Contract.code_runtime: replaced byContract.bytecode_runtimeDeprecate
abi,code,code_runtimeandsourceas arguments for theContractobject.Deprecate
sourceas a property of theContractobjectAdd
Contract.factory()API.Deprecate the
construct_contract_factoryhelper function.
3.5.3ο
Bugfix for how
requestslibrary is used. Now reuses session.
3.5.2ο
Bugfix for construction of
request_kwargswithin HTTPProvider
3.5.1ο
Allow
HTTPProviderto be imported fromweb3module.make
HTTPProvideraccessible as a property ofweb3instances.
3.5.0ο
Deprecate
web3.providers.rpc.RPCProviderDeprecate
web3.providers.rpc.KeepAliveRPCProviderAdd new
web3.providers.rpc.HTTPProviderRemove hard dependency on gevent.
3.4.4ο
Bugfix for
web3.eth.getTransactionwhen the hash is unknown.
3.4.3ο
Bugfix for event log data decoding to properly handle dynamic sized values.
New
web3.testermodule to access extra RPC functionality frometh-testrpc
3.4.2ο
Fix package so that
eth-testrpcis not required.
3.4.1ο
Force gevent<1.2.0 until this issue is fixed: https://github.com/gevent/gevent/issues/916
3.4.0ο
Bugfix for contract instances to respect
web3.eth.defaultAccountBetter error reporting when ABI decoding fails for contract method response.
3.3.0ο
New
EthereumTesterProvidernow available. Faster test runs thanTestRPCProviderUpdated underlying eth-testrpc requirement.
3.2.0ο
web3.shhis now implemented.Introduced
KeepAliveRPCProviderto correctly recycle HTTP connections and use HTTP keep alive
3.1.1ο
Bugfix for contract transaction sending not respecting the
web3.eth.defaultAccountconfiguration.
3.1.0ο
New DelegatedSigningManager and PrivateKeySigningManager classes.
3.0.2ο
Bugfix or IPCProvider not handling large JSON responses well.
3.0.1ο
Better RPC compliance to be compatable with the Parity JSON-RPC server.
3.0.0ο
Filterobjects now support controlling the interval through which they poll using thepoll_intervalproperty
2.9.0ο
Bugfix generation of event topics.
Web3.Iban now allows access to Iban address tools.
2.8.1ο
Bugfix for
geth.ipcpath on linux systems.
2.8.0ο
- Changes to the
ContractAPI: Contract.deploy()parameter arguments renamed to argsContract.deploy()now takes args and kwargs parameters to allow constructing with keyword arguments or positional arguments.Contract.pastEventsnow allows you to specify afromBlock or ``toBlock.Previously these were forced to be'earliest'andweb3.eth.blockNumberrespectively.Contract.call,Contract.transactandContract.estimateGasare 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.transactandContract.estimateGasnow allow specifying an alternate address for the transaction.
- Changes to the
RPCProvidernow supports the following constructor arguments.sslfor enabling SSLconnection_timeoutandnetwork_timeoutfor controlling the timeouts for requests.
2.7.1ο
Bugfix: Fix KeyError in merge_args_and_kwargs helper fn.
2.7.0ο
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
pathparameter to allow configuration for requests to go to paths other than/.
2.6.0ο
TestRPCProvider no longer dumps logging output to stdout and stderr.
Bugfix for return types of
address[]Bugfix for event data types of
address
2.5.0ο
All transactions which contain a
dataelement will now have their gas automatically estimated with 100k additional buffer. This was previously only true with transactions initiated from aContractobject.
2.4.0ο
Contract functions can now be called using keyword arguments.
2.3.0ο
Upstream fixes for filters
Filter APIs
onandpastEventsnow callable as both instance and class methods.
2.2.0ο
The filters that come back from the contract
onandpastEventsmethods now call their callbacks with the same data format asweb3.js.
2.1.1ο
Cast RPCProvider port to an integer.
2.1.0ο
Remove all monkeypatching
2.0.0ο
Pull in downstream updates to proper gevent usage.
Fix
eth_signBugfix with contract operations mutating the transaction object that is passed in.
More explicit linting ignore statements.
1.9.0ο
BugFix: fix for python3 only
json.JSONDecodeErrorhandling.
1.8.0ο
BugFix:
RPCProvidernot sending a content-type headerBugfix:
web3.toWeinow returns an integer instead of a decimal.Decimal
1.7.1ο
TestRPCProvidercan now be imported directly fromweb3
1.7.0ο
Add
eth.admininterface.Bugfix: Format the return value of
web3.eth.syncingBugfix: IPCProvider socket interactions are now more robust.
1.6.0ο
Downstream package upgrades for
eth-testrpcandethereum-tester-clientto handle configuration of the Homestead and DAO fork block numbers.
1.5.0ο
Rename
web3.contract._Contracttoweb3.contract.Contractto expose it for static analysis and auto completion toolsAllow passing string parameters to functions
Automatically compute gas requirements for contract deployment and
transactions.
Contract Filters
Block, Transaction, and Log filters
web3.eth.txpoolinterfaceweb3.eth.mininginterfaceFixes for encoding.
1.4.0ο
Bugfix to allow address types in constructor arguments.
1.3.0ο
Partial implementation of the
web3.eth.contractinterface.
1.2.0ο
Restructure project modules to be more flat
Add ability to run test suite without the slow tests.
Breakup
encodingutils into smaller modules.Basic pep8 formatting.
Apply python naming conventions to internal APIs
Lots of minor bugfixes.
Removal of dead code left behind from
1.0.0refactor.Removal of
web3/soliditymodule.
1.1.0ο
Add missing
isConnected()method.Add test coverage for
setProvider()
1.0.1ο
Specify missing
pyrlpandgeventdependencies
1.0.0ο
Massive refactor to the majority of the app.
0.1.0ο
Initial release