- v7 Breaking Changes Summary
- See the :ref:`v7 Migration Guide<migrating_v6_to_v7>`
- 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
finalized
block number. (#3508) - Send
json
, notdata
with CCIP-Read POST requests. (#3512)
- 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)
- Allow a time interval, in seconds, to be used as the
request_cache_validation_threshold
for request caching. Keep a list of internal default values based on the chain id for some of the bigger chains. (#3508)
- Properly wrap
AsyncBeacon.request_timeout
float in aaiohttp.ClientTimeout
when making requests. (#3503) - Changes related to an eth-typing bugfix, input types for
ABIEvent
:ABIComponent
->ABIComponentIndexed
. (#3510)
- Fix
EthereumTesterProvider
signature in docs, added aneth_tester
example. (#3500) - Fix pip install -e ".[dev]" command in linux README. (#3505)
- Update the ENSIP-15 to the latest spec and update the test suite. (#3501)
- Base default
maxFeePerGas
calculation off of existingmaxPriorityFeePerGas
key 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)
- Update
contract.encode_abi
signature in docs and migration guide (#3473) - Update documentation around
SignAndSendRawMiddlewareBuilder
injection 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
test
vstester
install extras. (#3496)
- 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_limit
forAsyncIPCProvider
in order to control the expected message size limit (defaults to 20MB). AddReadBufferLimitReached
for when the read limit is reached, extend fromPersistentConnectionError
. (#3492)
- Test warning cleanup (#3468)
- Re-compile test contracts with recently released Solidity
v0.8.27
. (#3475) - Re-organize the install extras. Re-define the
test
extra to always include thetester
extra since it's needed for testing. (#3495)
- 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)
- Fix a bug with newer
hexbytes
versions that yield non-0x-prefixed hex forHexBytes
:raw_transaction.hex()
->raw_transaction.to_0x_hex()
. (#3471)
- HTTPProvider and AsyncHTTPProvider's get_request_headers is now available on both the class and the instance (#3467)
- Specify a unique
__hash__()
for unhashableWeb3Middleware
types 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)
- Fix bug in filters example code (#3455)
- Update
v6
->v7
migration guide with examples for importing and adding middleware, as well as examples on how to use theMiddlewareBuilder
classes. (#3462)
- Add sync and async support for beacon
/eth/v1/beacon/blob_sidecars
endpoint. (#3407) - Allow user to call ContractFunctions without parentheses (#3444)
- 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.0
from>=5.0.0b1
now that stable has been released. This only matters for thetest
install extra (CI and dev purposes). (#3458)
Update eth-utils and eth-typing to latest major versions
eth-utils v5 and eth-typing v5 (#3450)
- Improve batch request documentation. (#3448)
- Fix Release Notes formatting (#3454)
- Upgrades to use latest
ABI
utilities and typings frometh-utils
andeth-typing
.- Typings for
ABI
components are now available in theeth-typing
package.ABI
types previously inweb3.types
have been removed. - New versions of existing ABI functions were added to
eth-utils
and are now exposed in web3.py viaweb3.utils.abi
. - ABI exceptions have been renamed in
web3.exceptions
. TheABIEventFunctionNotFound
andFallbackNotFound
exceptions have been removed. UseABIEventNotFound
andABIFallbackNotFound
instead. MismatchedABI
exceptions are raised instead of aWeb3ValidationError
for ABI related errors.encode_abi
arguments have been updated to useabi_element_name
instead offn_name
. (#3408)
- Typings for
- Remove
Web3ValidationError
dependence / inheritance from eth-utilsValidationError
. (#3443)
- Use autodoc and update ABI functions with docstrings and doctests. (#3408)
- Utilities to extract function and event
ABI
attributes from a contract. Utilities in theweb3.utils.abi
module parse ABI elements and check encodability of provided arguments. ABI functions ineth-utils
are exposed by theweb3.utils.abi
module.get_abi_element_info
returns anABIElementInfo
TypedDict with theabi
,selector
, andarguments
.get_abi_element
returns theABI
of a function, event, or error given the name and arguments.check_if_arguments_can_be_encoded
returns true if the arguments can be encoded with the given ABI.get_event_abi
returns theABI
of an event given the name.get_event_log_topics
returns the log topics of an event given the name.log_topics_to_bytes
returns the log topics as bytes. (#3408)
- Add explicit stream kwarg to HTTPProvider so that timeout can be more finely tuned. (#3428)
- Implement a
RequestTimedOut
exception, extending fromWeb3RPCError
, for when requests to the node time out. (#3440)
- Run
mypy
locally usingpre-commit
hook, instead of withinpre-commit
container (#3414) - Mitigate inconsistently failing tests for CI runs with appropriate
flaky
orpytest.mark.xfail()
decorators. (#3440)
- Refactor the public
socket
api for persistent connection providers to properly definesend()
,recv()
, andmake_request()
(send and wait for response) methods for interacting with the open socket. (#3433) - Format entries in
accessList
storageKeys
to beHexStr
instead ofHexBytes
(#3434)
- Handle
ConnectionClosedOK
case forWebSocketProvider
. If a persistent connection is closed gracefully, log and raise a silentPersistentConnectionClosedOK
exception, triggering an end to the message listener task and breaking out of theprocess_subscriptions()
iterator. (#3432)
- Add
popitem()
functionality to theSimpleCache
class as well as an async utility method to wait for the next item,async_await_and_popitem()
. (#3433)
- Refactor some common logic for persistent connection providers back into the base
PersistentConnectionProvider
class to reduce code duplication and improve maintainability. (#3433)
- Change the
exception_retry_configuration
typing on http providers to be anOptional
, as setting this property toNone
effectively turns off retries on exceptions for requests. (#3412) - A bugfix, pre-release, to update the
Beacon
APIs (sync and async) to properly use the newHTTPSessionManager
. (#3421)
- Add an
eth_subscribe
example to the events guide (#3403)
- Properly handle
InsufficientDataBytes
errors when processing receipts (#3388) - Provide explicit
__all__
exports for providers in web3/providers/__init__.py; update web3/__init__.py to include all provider classes including base classes. (#3409)
- 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
HTTPSessionManager
to manage sessions for http providers, rather than have them share a single session manager / cache. (#3412)
- Properly propagate exceptions from the message listener task to the main loop for persistent connection providers. (#3378)
- 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)
- Add support for request batching via
w3.batch_requests()
context manager (sync and async). (#3370) - Allow request cache configuration on provider
__init__()
for all provider classes. (#3395)
- Merge the python project template, notably adding python 3.12 support (#3363)
- Increase python-asyncio dependency to be >=0.21.2,<0.23 (#3369)
- Bump to
mypy==1.10.0
forpre-commit
(#3377) - Move signed.rawTransaction -> signed.raw_transaction in eth module tests (#3380)
- Snake-case remaining arguments
fromBlock
,toBlock
, andblockHash
in contract and filter methods where they are passed in as kwargs. (#3353) - Employ an exponential backoff strategy using the
backoff_factor
inExceptionRetryConfiguration
forHTTPProvider
andAsyncHTTPProvider
. Reduce the default initial delay to0.125
seconds. (#3358) - Validate JSON-RPC responses more strictly against the JSON-RPC 2.0 specifications.
BlockNumberOutofRange
->BlockNumberOutOfRange
. (#3359)
messageHash
andrawTransaction
frometh-account
have been deprecated for snake_case versions (#3348)
- Raise
Web3RPCError
on JSON-RPC errors rather thanWeb3ValueError
. RaiseMethodNotSupported
exception when a method is not supported within web3.py; keepMethodUnavailable
for when a method is not available on the current provider (JSON-RPC error). (#3359)
- Bump
eth-account
dependency to>=0.12.2
(#3348)
- Remove the deprecated
personal
namespace and all references to it. (#3350)
- Fix misused call to endpoint_uri for all cases of
PersistentConnectionProvider
by being able to retrieve either theipc_path
or theendpoint_uri
from the base class withendpoint_uri_or_ipc_path
property. (#3319)
- Fix
eth_createAccessList
docs to reflect the correct behavior. (#3327)
- 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
maxFeePerBlobGas
when sending blob transactions. Add formatters forblobGasPrice
andblobGasUsed
for eth_getTransactionReceipt. (#3322) - Add formatters to ensure that the result of a
eth_createAccessList
response can be plugged directly into anaccessList
in a transaction. (#3327) - Add Cancun support to
EthereumTesterProvider
; update Cancun-related fields in some internal types. (#3332)
- Use
pre-commit
for linting, run updated lint tools and fix errors (#3297) - Dependency updates:
eth-abi>=5.0.1
,eth-account>=0.12.0
eth-typing>=4.0.0
andhexbytes>=1.2.0
with relevant changes to support these. (#3298) - Remove code conditionally necessary for
python<=3.7
(#3317)
- 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_log
forHexStr
inputs. Explicit type coercion of entrytopics
anddata
values. (#3293) - Fix typing for json data argument to
eth_signTypedData
. (#3308)
- Add note about middlewares change to v7 migration guide. (#3277)
- Rearrange v7 migration guide and include upgrade path from WebsocketProviderV2 (#3310)
- Add support for
eth_getRawTransactionByHash
RPC method (#3247) - Add
user_message
kwarg for human readableWeb3Exception
messages. (#3263) - Add formatters for type 3 transaction fields
maxFeePerBlobGas
andblobVersionedHashes
. (#3314)
- Importing
ens._normalization
is deferred until the first call ofens.utils.normalize_name
in order to speed upimport web3
. (#3285) - Utilize
async
functionality when popping responses from request manager cache for persistent connection providers. (#3306)
- Remove
Contract.encodeABI()
in favor ofContract.encode_abi()
to follow standard conventions. (#3281)
- Move
middlewares
->middleware
(#3276)
- Fix/update methods and decorators in
web3/_utils/abi.py
to address issues raised bymypy
(#3269) - Catch all types of
eth-abi
DecodingError
inEthereumTesterProvider->_make_request()
(#3271)
- Remove annual user survey prompt from docs (#3218)
- Introduce feedback form banner prompt on docs (#3253)
- Refresh of the middleware docs (#3266)
- Remove the
ethpm
module and related docs, tests, and dependencies (#3261)
- 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
WebsocketProviderV2
rather than relying onws.recv()
blocking. Some breaking changes to API, notablylisten_to_websocket
->process_subscriptions
. (#3179) - Drop dependency on
lru-dict
library. (#3196) - Drop support for python 3.7 (#3198)
- Return iterable of
ABIFunction``s from the ``BaseContractFunctions
iterator. (#3200) - Name changes internal to the library related to
v7
:WebsocketProvider
->LegacyWebSocketProvider
,WebsocketProviderV2
->WebSocketProvider
(#3225) CallOverride
type change toStateOverride
to reflect better the type name for the state override.eth_call
is also not the only method with this param, making the name more generic. (#3227)- Rename beacon/main.py -> beacon/beacon.py (#3233)
EthereumTesterProvider
now returnsinput
for 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.ipc
file exists. (#3245)
- Fix return type of
AsyncContract.constructor
(#3192) - Handle new geth errors related to waiting for a transaction receipt while transactions are still being indexed. (#3216)
- Documentation was updated to reflect early changes to
v7
fromv6
. Av6
->v7
migration guide was also started and will be added to asv7
breaking changes are introduced. (#3211) - Remove ENS v6 breaking change warning from v7 (#3254)
- Add AsyncIPCProvider (#2984)
- Implement
state_override
parameter foreth_estimateGas
method. (#3164) - Upgrade eth-tester to
v0.10.0-b.1
and turn oneth_feeHistory
support forEthereumTesterProvider
. (#3172) - Add formatters for new
Cancun
network upgrade block header fields:blobGasUsed
,excessBlobGas
, andparentBeaconBlockRoot
. (#3223) - Contract event
get_logs
results sorted by eachContractEvent
logIndex
. (#3228)
- Create test fixture for latest
geth
version. Run tests withgeth
in--dev
mode. (#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
WebsocketProviderV2
before 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
v7
has not yet been released. (#3211) - Upgraded geth fixture version (#3231)
- Remove call to
parse_block_identifier
when initializingContractCaller
functions. (#3257)
normalize_request_parameters
middleware was in a stale state and not being used or tested. This middleware has been removed. (#3211)- Remove deprecated
geth.miner
namespace and methods. (#3236)
- Change
fee_history
default behavior. Ifreward_percentiles
arg not included, pass it to the provider as an empty list instead ofNone
. (#3185) - Use
importlib.metadata
for version info if python>=3.8 (#3187)
- Remove docs reference for removed
protocol_version
RPC method (#3183)
- Re-define how async vs sync core test suites are ran. (#3180)
- Add basic import and version tests for the
web3
module (#3187)
- Implement async
eth_createAccessList
RPC method to create an EIP-2930 access list. (#3167)
- Add flaky async Geth integration tests to CI (#3170)
- Fix wrong test reference for
EthereumTesterProvider
integration test suite. (#3171) - Small fix for integration tests for
tox
to recognize independent patterns for each test run. (#3173)
- Make downloadable versions of docs available in
pdf
,htmlzip
, andepub
formats (#3153) - Add 2023 user survey fine art banner in the docs (#3159)
- Polish the community resources docs page (#3162)
- Implement
createAccessList
RPC endpoint to create an EIP-2930 access list. (#2381)
- Fix collision of
w3
variable when initializing contract with function of the same name (#3147)
- 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)
- Adds Discord bot template repo to Resources page (#3143)
- Additional contract
abi
documentation to make it a clear requirement for contract instances. (#2539) - Fix type annotations for
web3
constants. (#3138) - Add upper pin to deprecated dependency
lru-dict
whose new minor version release introduced a typing issue with CI lint builds. (#3144) - Recompile test contracts with new Solidity version
v0.8.23
to ensure compatibility. (#3146)
- Fix formatting in documentation for creating an account. (#3128)
- Fix broken links for Apeworx and Sepolia faucet (#3130)
- 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.22
to 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)
- Update
WebsocketProviderV2
documentation. Document a general overview of theRequestProcessor
class and its internal caches. (#3125)
- Properly define an
__await__()
method on the_PersistentConnectionWeb3
class so a persistent connection may be initialized using theawait
pattern. Integration tests added for initializing the persistent connection using theawait
pattern. (#3125)
- Updates and refactoring for the
WebsocketProviderV2
class 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 adeque
and one-to-one responses in aSimpleCache
class. Provide an async lock around the websocketrecv()
. (#3125) - Add upper pin to
hexbytes
dependency to due incoming breaking change (#3127)
- Refactor the async iterator pattern for message streams from the websocket connection for
WebsocketProviderV2
to a proper async iterator. This allows for a more natural usage of the iterator pattern and mimics the behavior of the underlyingwebsockets
library. (#3116)
- Use hashes to compare equality of two
AttributeDict
classes (#3104) - Fix issues with formatting middleware, such as
async_geth_poa_middleware
and subscription responses forWebsocketProviderV2
. (#3116)
- Change
docker-compose
todocker compose
in the Contributing docs examples. (#3107) - Updates to the
WebsocketProviderV2
documentation 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)
- Allow passing in a
float
for arequest_timeout
for requests for theBeacon
class. Update some Beacon API endpoints (sync and async). (#3106) - Add
allow_list
kwarg forexception_retry_middleware
to allow for a custom list of RPC endpoints. Add a sleep between retries and a customizablebackoff_factor
to control the sleep time between retry attempts. (#3120)
- Refactor logic for the
input_munger()
method on theMethod
class. (#2987) - Pin mypy to v1.4.1, the last to support py37 (#3122)
- Breaking change to the API for interacting with a persistent websocket connection via
AsyncWeb3
andWebsocketProviderV2
. This change internalizes theprovider.ws
property and opts for aw3.ws
API achieved via a newWebsocketConnection
class. With these changes,eth_subscription
messages now return the subscription id as thesubscription
param and the formatted message as theresult
param. (#3096)
- 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_feeHistory
since theMethodUnavailable
error was introduced. (#3084)
- Update
WebsocketProviderV2
documentation to reflect the new public websocket API via theWebsocketConnection
class. (#3096)
- 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_maxPriorityFeePerGas
toexception_retry_middleware
whitelist (#3090) - Sync responses for
WebsocketProviderV2
open connections with requests via matching RPCid
values. (#3096) - Properly JSON encode
AttributeDict
,bytes
, andHexBytes
when sending a JSON-RPC request by utilizing the in-houseWeb3JsonEncoder
class. (#3101)
- Fix an issue with an IPC test present only on MacOSX. (#929)
- Ignore flake8 rule F401 (unused import) in all
__init__.py
files (#3097)
- Fix the type for
input
inTxData
fromHexStr
->HexBytes
. (#3074) - Fix an issue with
WebsocketProviderV2
when responses to a request aren't found in the cache (None
values). (#3075) - Re-expose some websockets constants found in
web3.providers.websocket.websocket
viaweb3.providers.websocket
. (#3076) - Return
NotImplemented
constant, rather than raisingNotImplementedError
forNamedElementOnion.__add__()
, based on Python standards. (#3080) - Only release
async_lock
if it's locked to begin with. (#3083)
- Add MEV blocking tutorial to Resources docs page (#3072)
- Fix documentation around current state of
get_logs()
usage and arguments. (#3073) - Add an Ape hackathon kit to Resources documenation page (#3082)
- Fix the type for the optional param asking for "full transactions" when subscribing to
newPendingTransactions
viaeth_subscribe
tobool
. (#3067)
- Change docs to reflect AsyncHTTPProvider does accept ENS names now (#3070)
- Return structured JSON-RPC errors for missing or unimplemented eth-tester methods. (#3061)
- ENS name-to-address support for
eth_subscribe
. (#3066) - Asynchronous iterator support for
AsyncWeb3
withWebsocketProviderV2
usingasync for
syntax. (#3067)
- Minor fixes to type hinting in the core tests setup fixtures. (#3069)
- Test wheel build in separate directory and virtualenv (#3046)
- Handle case where data gets returned as
None
in 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_strategy
toint
but also only convert thestrategy_based_gas_price
tohex
if it is anint
in thegas_price_strategy_middleware
. (#3065)
- Add note to Release Notes about v5 end-of-life and v6.6.0 yank (#3045)
- Add documentation for
WebsocketProviderV2
(beta). (#3048)
- Add ENSIP-9 (Multichain Address Resolution) support for
address()
andsetup_address()
forENS
andAsyncENS
classes. (#3030) - Support for
eth_subscribe
andeth_unsubscribe
methods has been added with the introduction of a new websocket provider,WebsocketProviderV2
. (#3048)
- Added recursive typing to
ABIFunctionComponents
type (#3063) - Upgrade eth-tester requirement to v0.9.0-b.1 (#3064)
- Add
ens/specs
to MANIFEST.in (#3039)
Note: This release was missing the required ``ens/specs`` directory, so it was yanked from Pypi in favor of v6.6.1
- 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)
- Handle
None
in the formatting middleware (#2546) - Fix for a possible bug in
construct_sign_and_send_raw_middleware
where 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_feeHistory
since theMethodUnavailable
error was introduced. (#3002) - Properly initialize logger in
AsyncHTTPProvider
. (#3026) - Fix
AsyncWeb3.solidity_keccak
to matchWeb3.solidity_keccak
. (#3034)
- 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.eth
withens.eth
. (#3020) - Adds "Hackathon Helpers" section to Resources page (#3035)
- 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)
- Remove some warnings from test output (#2991)
- Introduced the logic for ENSIP-15 ENS name normalization. Originally this was done via a flag in this PR but changed to the default behavior in #3024 before release. (#3000)
- Removed references to deprecated middlewares with new tests to check default middlewares (#2972)
- Properly create a fresh cache for each instance of
simple_cache_middleware
if 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
UnicodeDecodeError
for contract revert messages that cannot be decoded and issue a warning instead, raising aContractLogicError
with the rawdata
from the response. (#2989)
- Introduces resources page to documentation (#2957)
- Completed docstrings for
ContractFunction
andAsyncContractFunction
classes (#2960) - Added 'unsupported by any current clients' note to the
Eth.sign_typed_data
docs (#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
IPCProvider
docs (#2971) - Update Matomo analytics script to move to cloud services (#2978)
- Add the
sign_typed_data
method to theAsyncEth
class (#2920) - Add support for Solidity
Panic
errors, available since Solidity 0.8.0. RaisesContractPanicError
with appropriate messaging based on the known panic error codes. (#2986)
lint-roll
- droppedisort
--recursive
flag, not needed as of theirv5
, added black (#2930)- Moved
ethpm
deprecation 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)
- fix AttributeDicts unhashable if they contain lists recursively tupleizing them (#2908)
- add deprecation notice for the ethPM module (#2953)
- remove reference to the ability to specify a list of providers - you can't anymore (#2949)
- add deprecation notice for the ethPM module (#2953)
- Update
eth-tester
to pull in Shanghai changes and make additional changes to fully support Shanghai witheth-tester
. (#2958)
- bump sphinx and readthedocs py versions (#2945)
- re-compile test contracts with Solidity
v0.8.20
(#2951) - Set towncrier settings in pyproject.toml to match the python project template and change newfragment type "doc" to "docs" (#2959)
- Add support for custom revert errors (#2795)
- Add the
modify_transaction
method to theAsyncEth
class (#2825) - add show_traceback flag to is_connected to allow user to see connection error reason (#2912)
- Add a
data
attribute on theContractLogicError
class that returns raw data returned by the node. (#2922) - Add support via result formatters for
reward
type trace actions on tracing calls. (#2929)
- Typing was being ignored for the
get_ipc_path
andget_dev_ipc_path
functions because of a missingNone
return. Those two methods now explicitly returnNone
and have anOptional
in their type definition. (#2917) - fix AsyncEventFilterBuilder looking for Web3 instead of AsyncWeb3 (#2931)
- Add check for null withdrawal field on get_block response (#2941)
- Add a decision tree guide for sending transactions (#2919)
- Update references to master branch (#2933)
- Cleanup Quickstart guide and next steps (#2935)
- Cleanup Overview page links and context (#2938)
- Added
build
to towncrier commands in Makefile (#2915) - Update win wheel CI builds to use
python -m tox -r
instead of specifying thetox
executable directly. (#2923) - update pip and tox install on CI containers (#2927)
- Adds async version of eth_getUncleCount methods (#2822)
- Add the
sign_transaction
method to theAsyncEth
class (#2827) - Add the
replace_transaction
method to theAsyncEth
class (#2847)
- Use
TraceFilterParams
instead ofFilterParams
fortrace_filter
typing (#2913)
- Add welcome banner for Ethereum newcomers (#2905)
- Added breaking changes from pr2448 to v6 migration guide (#2907)
- Add tracing functionality back in via the
tracing
module, add formatters for human-readable input and output, and attach this module toWeb3
on init / make it a default module. (#2851) - Add result formatters for
withdrawals_root
andwithdrawals
as part ofShanghai
hard fork support. (#2868) - add eth_chainId to exception_retry_middleware whitelist (#2892)
- Mark test_async_eth_sign with @pytest.mark.asyncio (#2858)
- fix readthedocs broken version selector (#2883)
- remove camelCased method deprecation notices from web3.eth docs (#2882)
- Add doc blurb about multiple HTTPProviders with the same URL (#2889)
- fix styling and external link formatting (#2897)
- 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_steps
in 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)
- fix dict_to_namedtuple unable to handle empty dict as input (#2867)
- Add the
sign
method to theAsyncEth
class (#2833)
- More accurately define the
eth_call
return type asHexBytes
since the response is converted toHexBytes
in the pythonic formatters and there are differences betweenHexBytes
andbytes
types. (#2842) - Set default block_identifier in ContractFunction.call() to None (#2846)
- Remove unused module lines to instantiate the AsyncHTTPProvider (#2789)
- Typos fix in docs (#2817)
- Add/cleanup docs for the
AsyncHTTPProvider
in light of the newAsyncWeb3
class (#2821) - Remove user survey banner following close of survey (#2831)
- Do not invoke
setup.py
directly; usepython -m build
where appropriate. (#2714) - clean up ignored unused imports (#2838)
- Recompile test contracts with the new Solidity version
0.8.19
. (#2840) - Update
py-geth
version and re-generate integration test fixture with gethv1.11.2
. (#2841)
- Use
AsyncWeb3
class and preserve typing for the async api calls. (#2819) - Fix typing for
CallOverrideParams
and add proper request formatters for call state overrides. (#2843) - Remove python warning and doc notes related to unstable async providers. (#2845)
- add decode_tuples option to contract instantiation (#2799)
- Fix
ethpm
import issues after makingipfshttpclient
optional. (#2775) - Fix for recently-broken
eth-tester
exception message parsing for some exception cases. (#2783)
- Added a v6 Migraion Guide (#2778)
- Rebrand the library to lowercase "web3.py" (#2804)
- remove references to Rinkeby or replace with Goerli (#2815)
- Organize the
eth
module into separate files for better readability. (#2753) - Rename the newly-split
eth
module 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
isort
andblack
required some formatting changes and isort config refactoring. (#2802) - Compile test contracts using newly-released Solidity version
0.8.18
. (#2803)
- 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_block
if 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 theWeb3
class for turning this feature on and off, as well as a flag on theENS
class for control over a standaloneENS
instance. (#2788) - When a method is not supported by a node provider, raise a MethodUnavailable error instead of the generic ValueError. (#2796)
dict
toAttributeDict
conversion 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_async
and associated methods. (#2810) - removed Rinkeby from list of allowed chains in EthPM (#2815)
- Add async
w3.eth.get_block_transaction_count
(#2687) - Support Python 3.11 (#2699)
- Load the
AsyncHTTPProvider
with 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
CREATE
andCREATE2
opcodes (#2762)
- Fixing abi encoding for multidimensional arrays. (#2764)
- Some minor performance improvements to the
SimpleCache
class and simple cache middlewares (sync and async). (#2719) - Remove unnecessary
await
forgenerate_gas_price()
method as it does not need to be awaited. Move this method toBaseEth
to be used directly by bothEth
andAsyncEth
modules. (#2735)
- Add user survey to docs banner (#2720)
- Document improvements for private key info and account funding. (#2722)
- Include eth-tester install note in quickstart (#2755)
- Removal of Infura auto provider support. (#2706)
- Removal of
version
module. (#2729) - Remove already-deprecated
start_rpc
andstop_rpc
from thew3.geth.admin
module. (#2731)
- Use regex pattern for
black
command fortox
/make lint
linting commands. (#2727) - Use regex pattern for
mypy
command fortox
/make lint
linting commands. (#2734) - Remove internal method
apply_formatter_to_array
and use the method with the same name from theeth-utils
library. (#2737)
- Snakecase the processReceipt, processLog, createFilter, and getLogs methods (#2709)
- Remove Parity module and references. (#2718)
- Make the
ipfshttpclient
library opt-in via a web3 install extra. This only affects theethpm
ipfs
backends, which rely on the library. (#2730)
- Async support for caching certain methods via
async_simple_cache_middleware
as well as constructing custom async caching middleware viaasync_construct_simple_cache_middleware
.SimpleCache
class was also added to the publicutils
module. (#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)
- bump sphinx_rtd_theme version to fix missing unordered list bullets (#2688)
- Fix bug to generate unique cache keys when multi-threading & with unique event loops for async. (#2690)
- Properly release
async_lock
for session requests if an exception is raised during a task. (#2695)
- move definition of RTD install requirements file from their dashboard into .readthedocs.yml, and remove unused sphinx-better-theme from requirements (#2688)
- Remove support for dictionary-based caches, for simple-cache-middleware, in
favor of the internal
SimpleCache
class. (#2579) - Snakecase the clientVersion method (#2686)
- change instances of createFilter to create_filter (#2692)
- Remove
SolidityError
in 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)
- 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)
- Added Chainstack link to quickstart docs. (#2677)
- Remove Ropsten auto provider and the relevant references to Ropsten across the repo (#2672)
- Clean up remaining uses of deprecated
eth_abi
methods. (#2668)
- Protobuf dependency breaks at version
3.20.2
and above; pin to3.20.1
for now. (#2657)
- Add new predefined block identifiers
safe
andfinalized
. (#2652)
- 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_KEY
environment variable in favor ofWEB3_INFURA_PROJECT_ID
. ChangeInfuraKeyNotFound
exception toInfuraProjectIdNotFound
(#2634) - Remove Kovan auto provider (#2635)
- Snakecase the isConnected method (#2643)
- Snakecase the
toWei
andfromWei
methods (#2647)
- Fix
eth-tester
key remapping forlogsBloom
andreceiptsRoot
(#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
Web3
class by attaching modules appropriately. (#2592) - fixed bug in how async_eth_tester_middleware fills default fields (#2600)
- Allow hex for
value
field when validating viavalidate_payable()
contracts method (#2602) - Update Beacon API to v2.3.0 (#2616)
- Move
flaky
option to top-level conftest.py (#2642)
- 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)
- Support for
Account
class access inAsyncEth
viaasync_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)
- sha3 and soliditySha3 were previously deprecated and now removed (#2479)
- Remove deprecated methods from Geth, Parity and Net modules (#2480)
- Provide better messaging to wrong arguments for contract functions,
especially for
tuple
argument types. (#2556)
- Properly format
block_number
foreth_getTransactionCount
when usingEthereumTesterProvider
(#1801) - removed Optional type hints for passphrase arguments that aren't actually optional (#2511)
- Fix is_dynamic_fee_transaction and TRANSACTION_DEFAULTS when gas_price_strategy returns zero (#2562)
- Remove deprecated methods from Geth, Parity, and Net modules (#2480)
- replace double- with single-quotes to make f-string valid (#2504)
- added geth personal_sign and personal_ec_recover documentation (#2511)
- Add transaction result formatters for type and chainId to convert values
to
int
ifhexadecimal
if 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)
- #2345, #2483, #2505, #2513, #2514, #2515, #2516, #2518, #2520, #2521, #2522, #2523, #2524, #2525, #2527, #2530, #2531, #2534, #2542, #2544, #2550, #2551, #2559
- Removed deprecated methods from eth and geth (#1416)
- Fix bug in _is_latest_block_number_request in cache middleware (#2185)
- Increase cache size to allow for 20 entries. (#2477)
- format receipt.type to int and log.data to HexBytes (#2482)
- Only thread lock for methods attempting to access the cache for caching middleware. (#2496)
- Fix typo in simple_cache_middleware example (#2449)
- Fix dict type hints in EventScanner example (#2469)
- Add clarification around ValueError and Local Signing middleware (#2474)
- Add async version of contract functionality (#2270)
- ENSIP-10 / wildcard resolution support for ENS module (#2411)
- CCIP Read support and finalize implementation of and add tests for ENS offchain resolution support (#2457)
- Audit
.rst
and.py
files and convert all Web3 instance variable names tow3
to avoid confusion with theweb3
module. (#1183) - Update dependency requirements: - eth-utils - eth-abi - eth-tester - eth-account - eth-typing (#2342)
- Add
attach_methods()
toModule
class to facilitate attaching methods to modules. (#2383) - Move IOError -> OSError (#2434)
- 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_middleware
when connected to a hosted node (#2410) - Doc fix: Pending transaction filter returns a
TransactionFilter
not aBlockFilter
(#2444)
- Add 'get_text' method to look up ENS text record values (#2286)
- For
ENS.name()
, validate that the forward resolution returns the same address as provided by the user as per the ENS documentation recommendation for Reverse Resolution. (#2420) - Add sync chain_id to
simple_middleware_cache
(#2425)
- Update
websockets
dependency to v10+ (#2324) - Remove support for the unsupported Python 3.6 Also removes outdated Parity tests (#2343)
- Update Sphinx requirement to
>=4.2.0,<5
(#2362)
- Fix types for
gas
, andgasLimit
:Wei -> int
. Also fix types foreffectiveGasPrice
: (int -> Wei
) (#2330)
- Added session caching to the AsyncHTTPProvider (#2016)
- Add support for Python 3.10 (#2175)
- Added 'Breaking Changes' and 'Deprecations' categories to our release notes (#2340)
- Add async eth.get_storage_at method (#2350)
- Upgrade
jsonschema
version to>=4.0.0<5
(#2361)
- Added Async functions for Geth Personal and Admin modules (#1413)
- async support for formatting, validation, and geth poa middlewares (#2098)
- Calculate a default
maxPriorityFeePerGas
usingeth_feeHistory
wheneth_maxPriorityFeePerGas
is 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)
- remove ens.utils.dict_copy decorator (#1423)
- The exception retry middleware whitelist was missing a comma between
txpool
andtesting
(#2327) - Properly initialize external modules that do not inherit from the
web3.module.Module
class (#2328)
- Added Async functions for Geth TxPool (#1413)
- external modules are no longer required to inherit from the
web3.module.Module
class (#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)
- Fixed issues with parsing tuples and nested tuples in event logs (#2211)
- In ENS the contract function to resolve an ENS address was being called twice in error. One of those calls was removed. (#2318)
to_hexbytes
block formatters no longer throw when value isNone
(#2321)
- 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)
- Add
middlewares
property toNamedElementOnion
/web3.middleware_onion
. Returns current middlewares in proper order for importing into a newWeb3
instance (#2239) - Add async
eth.hashrate
method (#2243) - Add async
eth.chain_id
method (#2251) - Add async
eth.mining
method (#2252) - Add async
eth.get_transaction_receipt
andeth.wait_for_transaction_receipt
methods (#2265) - Add async eth.accounts method (#2284)
- Support for attaching external modules to the
Web3
instance when instantiating theWeb3
instance, via theexternal_modules
argument, or via the newattach_modules()
method (#2288)
- Fixed doctest that wasn't running in
docs/contracts.rst
(#2213) - Key mapping fix to eth-tester middleware for access list storage keys (#2224)
- Inherit
Web3
instance middlewares when instantiatingENS
withENS.fromWeb3()
method (#2239)
- Fix example docs to show a TransactionNotFound error, instead of None (#2199)
- fix typo in ethpm.rst (#2277)
- Clarify provider usage in Quickstart docs (#2287)
- Address common BSC usage question (#2289)
- Support for
w3.eth.get_raw_transaction_by_block
, and async support forw3.eth.get_raw_transaction_by_block
(#2209)
- BadResponseFormat error thrown instead of KeyError when a response gets sent
back without a
result
key. (#2188)
- Correct link to Websocket library documentation (#2173)
- Doc update to make it clearer that enable_unstable_package_management() method is on the web3 instance (#2208)
- Add async
eth.send_raw_transaction
method (#2135) - Updated eth-account version to v0.5.6 - adds support for signing typed transactions without needing to explicitly set the transaction type and now accepts correct JSON-RPC structure for accessList for typed transactions (#2157)
- Encode block_count as hex before making eth_feeHistory RPC call (#2117)
- 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
ValueError
error 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)
- Add constants for the zero address, zero hash, max int, and wei per ether. (#2109)
- Renamed "1559 transaction" to "dynamic fee transaction" where appropriate to keep consistency among the general code base for 1559 transaction (type=2) naming (#2118)
- Update AsyncHTTPProvider doc example to include modules and middlewares keyword arguments (#2123)
- Add support for eth_feeHistory RPC method (#2038)
- Add support for eth_maxPriorityFeePerGas RPC method (#2100)
- 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
gasPrice
via the gas price strategy, if one is set, when EIP-1559 transaction params are used forsend_transaction
(#2099)
- Update feeHistory docs (#2104)
- Add support for eth_getRawTransactionByHash RPC method (#2039)
- Add AsyncNet module (#2044)
- Add async
eth.get_balance
,eth.get_code
,eth.get_transaction_count
methods. (#2056) - eth_signTransaction support for eip-1559 params 'maxFeePerGas' and 'maxPriorityFeePerGas' (#2082)
- Add support for async
w3.eth.call
. (#2083)
- 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_hex
method 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 defaultgasPrice
if 1559 fees are present in the transaction parameters. This fixes sign-and-send middleware issues with 1559 fees. (#2092)
- Clarify that
send_transaction
,modify_transaction
, andreplace_transaction
return 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)
- Adds support for EIP 1559 transaction keys: maxFeePerGas and maxPriorityFeePerGas (#2060)
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
None
response should throw aBlockNotFound
error, but was instead throwing anAttributeError
(#2064)
- Added general documentation on unit and integration testing and how to contribute to our test suite. (#2053)
- Have the geth dev IPC auto connection check for the
WEB3_PROVIDER_URI
environment variable. (#2023)
- Remove reference to allowing multiple providers in docs (#2018)
- Update "Contract Deployment Example" docs to use
py-solc-x
assolc
is no longer maintained. (#2020) - Detail using unreleased Geth builds in CI (#2037)
- Clarify that a missing trie node error could occur when using
block_identifier
with.call()
on a node that isn't running in archive mode (#2048)
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)
- Test ethpm caching + bump Sphinx version. (#1977)
- Clarify solidityKeccak documentation. (#1971)
- Improve contributor documentation context and ordering. (#2008)
- Add docs for unstable AsyncHTTPProvider (#2017)
- Handle optional
eth_call
state 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)
- Document
eth_call
state overrides. (#1965)
- Add
w3.eth.modify_transaction
deprecatew3.eth.modifyTransaction
(#1886) - Add
w3.eth.get_transaction_receipt
, deprecatew3.eth.getTransactionReceipt
(#1893) - Add
w3.eth.wait_for_transaction_receipt
deprecatew3.eth.waitForTransactionReceipt
(#1896) - Add
w3.eth.set_contract_factory
deprecatew3.eth.setContractFactory
(#1900) - Add
w3.eth.generate_gas_price
deprecatew3.eth.generateGasPrice
(#1905) - Add
w3.eth.set_gas_price_strategy
deprecatew3.eth.setGasPriceStrategy
(#1906) - Add
w3.eth.estimate_gas
deprecatew3.eth.estimateGas
(#1913) - Add
w3.eth.sign_typed_data
deprecatew3.eth.signTypedData
(#1915) - Add
w3.eth.get_filter_changes
deprecatew3.eth.getFilterChanges
(#1916) - Add
eth.get_filter_logs
, deprecateeth.getFilterLogs
(#1919) - Add
eth.uninstall_filter
, deprecateeth.uninstallFilter
(#1920) - Add
w3.eth.get_logs
deprecatew3.eth.getLogs
(#1925) - Add
w3.eth.submit_hashrate
deprecatew3.eth.submitHashrate
(#1926) - Add
w3.eth.submit_work
deprecatew3.eth.submitWork
(#1927) - Add
w3.eth.get_work
, deprecatew3.eth.getWork
(#1934) - Adds public get_block_number method. (#1937)
- 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)
- 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_transaction
deprecatew3.eth.replaceTransaction
(#1882)
- Fix return type of
send_transaction
in docs. (#686)
- Added
get_block_transaction_count
, and deprecatedgetBlockTransactionCount
(#1841) - Move
defaultAccount
todefault_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_number
property. 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)
- Fix event filter creation if the event ABI contains a
values
key. (#1807)
- 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)
- Add
get_storage_at
method and deprecategetStorageAt
. (#1828) - Add
eth.get_block
method and deprecateeth.getBlock
. (#1829)
- 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
ContractLogicError
for when a contract reverts a transaction.ContractLogicError
will replaceSolidityError
, in v6. (#1814)
- Introduce Beacon API documentation (#1836)
- Remove docs/web3.* from the gitignore to allow for the beacon docs to be added to git,
and add
beacon
to the default web3 modules that get loaded. (#1824) - Remove auto-documenting from the Beacon API (#1825)
- Introduce experimental Ethereum 2.0 beacon node API (#1758)
- Add new get_balance method on Eth class. Deprecated getBalance. (#1806)
- Handle revert reason parsing for Ganache (#1794)
- Document Geth and Parity/OpenEthereum fixture generation (#1787)
- Raise SolidityError exceptions that contain the revert reason when a call fails. (#941)
- Update eth-tester dependency to fix tester environment install version conflict. (#1782)
- Address the use of multiple providers in the docs (#1701)
- Remove stale connection errors from docs (#1737)
- Allow ENS name resolution for methods that use the
Method
class (#1749)
- Update web3.pm and ethpm module to EthPM v3 specification. (#1652)
- Allow consumer to initialize HttpProvider with their own requests.Session. This allows the HttpAdapter connection pool to be tuned as desired. (#1469)
- Use ethpm v3 packages in examples documentation. (#1683)
- Modernize the deploy contract example. (#1679)
- Add contribution guidelines and a code of conduct. (#1691)
- Include ethpm-spec solidity examples in distribution. (#1686)
- Support ethpm-spec submodule in distributions. (#1682)
- Modernize the deploy contract example. (#1679)
- Use ethpm v3 packages in examples documentation. (#1683)
- Allow consumer to initialize HttpProvider with their own requests.Session. This allows the HttpAdapter connection pool to be tuned as desired. (#1469)
- Update web3.pm and ethpm module to EthPM v3 specification. (#1652)
- Update outdated reference url in ethpm docs and tests. (#1680)
- Add a :meth:`~web3.eth.Eth.getBalance` example and provide more context for using the fromWei and toWei utility methods. (#1676)
- Overhaul the Overview documentation to provide a tour of major features. (#1681)
- Added formatter rules for eth_tester middleware to allow :meth:`~web3.eth.Eth.getBalance` by using integer block numbers (#1660)
- Fix type annotations within the
eth.py
module. Several arguments that defaulted toNone
were not declaredOptional
. (#1668) - Fix type annotation warning when using string URI to instantiate an HTTP or WebsocketProvider. (#1669)
- Fix type annotations within the
web3
modules. Several arguments that defaulted toNone
were not declaredOptional
. (#1670)
- Breaks up links into three categories (Intro, Guides, and API) and adds content to the index page: a lib introduction and some "Getting Started" links. (#1671)
- Fills in some gaps in the Quickstart guide and adds provider connection details for local nodes. (#1673)
- Accept a block identifier in the
Contract.estimateGas
method. 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)
- Correct the type annotations of FilterParams.address (#1664)
- Corrects the return value of
getTransactionReceipt
, description of caching middleware, and deprecated method names. (#1663) - Corrects documentation of websocket timeout configuration. (#1665)
- An update of
eth-tester
includes a change of the default fork from Constantinople to Muir Glacier. #1636
my_contract.events.MyEvent
was incorrectly annotated so thatMyEvent
was marked as aContractEvent
instance. Fixed to be a class type, i.e.,Type[ContractEvent]
. (#1646)- IPCProvider correctly handled
pathlib.Path
input, but warned against its type. Fixed to permit Path objects in addition to strings. (#1647)
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)
- Fix local_filter_middleware new entries bug (#1514)
- ENS
name
and ENSaddress
can returnNone
. Fixes return types. (#1633)
Introduced
list_wallets
method to theGethPersonal
class. (#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)
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)
- 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)
Add snake_case methods for the net module
Also moved net module to use ModuleV2 instead of Module (#1592)
- Fix return type of eth_getCode. Changed from Hexstr to HexBytes. (#1601)
- Add snake_case methods to Geth Miner class, deprecate camelCase methods (#1579)
- Add snake_case methods for the net module, deprecate camelCase methods (#1581)
- Add PEP561 type marker (#1583)
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)
- Documents the getUncleCount method. (#1534)
- 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)
- 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)
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)
- Add __str__ to IPCProvider (#1536)
- Add required typing-extensions library to setup.py (#1544)
- Only apply hexbytes formatting to r and s values in transaction if present (#1531)
- Update eth-utils dependency which contains mypy bugfix. (#1537)
- Update Contract Event documentation to show correct example (#1515)
- Add documentation to methods that raise an error in v5 instead of returning
None
(#1527)
- Support handling ENS domains in ERC1319 URIs. (#1489)
- Make local block filter return empty list when when no blocks mined (#1255)
- Google protobuf dependency was updated to 3.10.0 (#1493)
- Infura websocket provider works when no secret key is present (#1501)
- Update Quickstart instructions to use the auto Infura module instead of the more complicated web3 auto module (#1482)
- Remove outdated py.test command from readme (#1483)
- Add poll_latency to waitForTransactionReceipt (#1453)
- Fix flaky Parity whisper module test (#1473)
- Update documentation for unlock account duration (#1464)
- Clarify module installation command for OSX>=10.15 (#1467)
- Add
enable_strict_bytes_type_checking
flag to web3 instance (#1419) - Move Geth Whisper methods to snake case and deprecate camel case methods (#1433)
- Add null check to logsbloom formatter (#1445)
- Reformat autogenerated towncrier release notes (#1460)
- Add
contract_types
property toPackage
class. (#1440)
- Fix flaky parity integration test in the whisper module (#1147)
Remove whitespace, move
topics
key ->topic
in Geth docs (#1425)Enforce stricter doc checking, turning warnings into errors to fail CI builds to catch issues quickly.
Add missing
web3.tools.rst
to the table of contents and fix incorrectly formatted JSON example. (#1437)Add example using Geth POA Middleware with Infura Rinkeby Node (#1444)
Released August 22, 2019
- Bugfixes
- [ethPM] Fix bug in package id and release id fetching strategy - #1427
Released August 15, 2019
- Bugfixes
- Misc
- Eliminate
signTransaction
warning - #1404
- Eliminate
Released August 1, 2019
- Features
web3.eth.chainId
now returns an integer instead of hex - #1394
- Bugfixes
- Deprecation Warnings now show for methods that have a
@combomethod
decorator - #1401
- Deprecation Warnings now show for methods that have a
- Misc
- [ethPM] Add ethPM to the docker file - #1405
- Docs
Released July 31, 2019
This is intended to be the final release before the stable v5 release.
- Features
- Docs
- Remove doctest dependency on ethtoken - #1395
- Bugfixes
- [ethPM] Bypass IPFS validation for large files - #1393
- Misc
Released July 18,2019
- Features
- [ethPM] Update registry uri to support basic uris w/o package id - #1389
- Docs
- Clarify in docs the return of
Eth.sendRawTransaction()
as a HexBytes object, not a string. - #1384
- Clarify in docs the return of
- Misc
- [ethPM] Migrate tests over from pytest-ethereum - #1385
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_formatters
toapply_formatters_to_sequence
- #1360 - Move
pytest.xfail
instances to@pytest.mark.xfail
- #1376 - Change
net.version
toeth.chainId
in default transaction params - #1378
Released May 13, 2019
- Features
- Docs
- Add note about web3[tester] in documentation - #1325
- Misc
- Replace
web3._utils.toolz
imports witheth_utils.toolz
- #1317
- Replace
Released May 6, 2019
- Features
- Docs
Released April 24, 2019
- Docs
- Add documentation for web3.py unit tests - #1324
- Misc
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.version
forweb3.api
- #1290 - Moved Whisper endpoints to applicable Geth or Parity namespace - #1308
- Added support for Goerli provider - #1286
- Added addReservedPeer to Parity module - #1311
- Bugfixes
- Misc
Released March 26, 2019
- Breaking Changes
- Misc
- Upgraded Parity version for integration testing - #1292
Released March 20, 2019
- Breaking Changes
- Removed
web3/utils
directory in favor ofweb3/_utils
- #1282 - Relocated personal RPC endpoints to Parity and Geth class - #1211
- Deprecated
web3.net.chainId()
,web3.eth.getCompilers()
, andweb3.eth.getTransactionFromBlock()
. Removedweb3.eth.enableUnauditedFeatures()
- #1270 - Relocated eth_protocolVersion and web3_clientVersion - #1274
- Relocated
web3.txpool
toweb3.geth.txpool
- #1275 - Relocated admin module to Geth namespace - #1288
- Relocated miner module to Geth namespace - #1287
- Removed
- Features
- Docs
- Added v5 migration docs - #1284
Released March 11, 2019
- Breaking Changes
- Features
- Tuple ABI support - #1235
- Bugfixes
- One last
middleware_stack
was still hanging on. Changed tomiddleware_onion
- #1262
- One last
Released February 25th, 2019
- Features
- New
NoABIFound
error for cases where there is no ABI - #1247
- New
- Misc
Released February 13th, 2019
- Breaking Changes
- Remove deprecated
buildTransaction
,call
,deploy
,estimateGas
, andtransact
methods - #1232
- Remove deprecated
- Features
- Misc
Released January 23rd, 2019
- Breaking Changes
- Bugfixes
- Features
- Misc
Released January 15th, 2019
- Breaking Changes
- Remove
web3.miner.hashrate
andweb3.version.network
- #1198 - Remove
web3.providers.tester.EthereumTesterProvider
andweb3.providers.tester.TestRPCProvider
- #1199 - Change
manager.providers
from list to singlemanager.provider
- #1200 - Replace deprecated
web3.sha3
method withweb3.keccak
method - #1207 - Drop auto detect testnets for IPCProvider - #1206
- Remove
- 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
- Code style improvements - #1194 & #1191
- Convert Web3 instance variables to w3 - #1186
- Update eth-utils dependencies and clean up other dependencies - #1195
Released December 20th, 2018
- Breaking Changes
- Remove support for python3.5, drop support for eth-abi v1 - #1163
- Features
- Support for custom ReleaseManager was fixed - #1165
- Misc
Released December 13th, 2018
- Features
- Add Rinkeby and Kovan Infura networks; made mainnet the default - #1150
- Add parity-specific
listStorageKeys
RPC - #1145 - Deprecated
Web3.soliditySha3
; useWeb3.solidityKeccak
instead. - #1139 - Add default trinity locations to IPC path guesser - #1121
- Add wss to
AutoProvider
- #1110 - Add timeout for
WebsocketProvider
- #1109 - Receipt timeout raises
TimeExhausted
- #1070 - Allow specification of block number for
eth_estimateGas
- #1046
- Misc
Released November 15, 2018
- Misc
- Reduce unneeded memory usage - #1138
Released October 28, 2018
- Features
- Misc
Released September 25th, 2018
- Bugfixes
- IPC paths starting with
~
are appropriately resolved to the home directory - #1072 - You can use the local signing middleware with :class:`bytes`-type addresses - #1069
- IPC paths starting with
Released September 11th, 2018
- Bugfixes
- old pip bug used during release made it impossible for non-windows users to install 4.7.0.
Released September 10th, 2018
- Features
- Add traceFilter method to the parity module. - #1051
- Move :mod:`~web3.utils.datastructures` to public namespace :mod:`~web3.datastructures` to improve support for type checking. - #1038
- Optimization to contract calls - #944
- 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.
Released Aug 24, 2018
Features
- Support for Python 3.7, most notably in :class:`~web3.providers.websocket.WebsocketProvider` - #996
- You can now decode a transaction's data to its original function call and arguments with: :meth:`contract.decode_function_input() <web3.contract.Contract.decode_function_input>` - #991
- Support for :class:`~web3.providers.ipc.IPCProvider` in FreeBSD (and more readme docs) - #1008
Bugfixes
- Fix crash in time-based gas strategies with small number of transactions - #983
- Fx crash when passing multiple addresses to :meth:`w3.eth.getLogs() <web3.eth.Eth.getLogs>` - #1005
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
Released July 30, 2018
- Features
- Accept addresses supplied in :class:`bytes` format (which does not provide checksum validation)
- Improve estimation of gas prices
- Bugfixes
- Can now use a block number with :meth:`~web3.eth.Eth.getCode` when connected to :class:`~web3.providers.eth_tester.EthereumTesterProvider` (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
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
- :class:`~web3.providers.ipc.IPCProvider` now accepts a :class:`pathlib.Path` argument for the IPC path
- Docs explaining the new custom autoproviders in web3
Released June 21, 2018
- Features
- Add support for https in WEB3_PROVIDER_URI environment variable
- Can send websocket connection parameters in :class:`~web3.providers.websocket.WebsocketProvider`
- Two new auto-initialization options:
from web3.auto.gethdev import w3
from web3.auto.infura import w3
(After setting theINFURA_API_KEY
environment variable)
- Alpha support for a new package management tool based on ethpm-spec
- Bugfixes
- Can now receive large responses in :class:`~web3.providers.websocket.WebsocketProvider` by
specifying a large
max_size
in the websocket connection parameters.
- Can now receive large responses in :class:`~web3.providers.websocket.WebsocketProvider` by
specifying a large
- Misc
- Websockets dependency upgraded to v5
- Raise deprecation warning on :meth:`~web3.eth.Eth.getTransactionFromBlock`
- Fix docs for :meth:`~web3.eth.Eth.waitForTransactionReceipt`
- Developer Dockerfile now installs testing dependencies
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_middleware
- New :meth:`~web3.eth.Eth.getUncleByBlock` API
- New name :meth:`~web3.eth.Eth.getTransactionByBlock`, which replaces the deprecated :meth:`~web3.eth.Eth.getTransactionFromBlock`
- 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: :ref:`ambiguous-contract-functions`
- Two functions with the same name that accept similar argument types, like
- 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
publicKey
isNone
) - 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
Released May 9, 2018
- Bugfixes
- When :meth:`getting a transaction <web3.eth.Eth.getTransaction>` with data attached and trying to :meth:`modify it <web3.eth.Eth.modifyTransaction>` (say, to increase the gas price), the data was not being reattached in the new transaction.
- :meth:`web3.personal.sendTransaction` was crashing when using a transaction
generated with
buildTransaction()
- 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
fixedMxN
ABI arguments - Lots 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
Released Apr 25, 2018
- Removed audit warning and opt-in requirement for
w3.eth.account
. See more in: :ref:`eth-account` - Added 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 :attr:`~web3.net.Net.chainId`
- Better 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
Released Apr 9, 2018
- New :class:`~web3.providers.websocket.WebsocketProvider`. If you're looking for better performance than HTTP, check out websockets.
- New :meth:`w3.eth.waitForTransactionReceipt() <web3.eth.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
Released Apr 2, 2018
- Marked beta.13 as stable
- Documentation tweaks
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 :meth:`~web3.eth.Eth.getTransactionReceipt`)
- You can now call a contract method at a specific block
with the
block_identifier
keyword argument, see: :meth:`~web3.contract.ContractFunction.call` - In preparation for stable release, disable
w3.eth.account
by default, until a third-party audit is complete & resolved. - New API for contract deployment, which enables gas estimation, local signing, etc. See :meth:`~web3.contract.Contract.constructor`.
- Find contract events with :ref:`contract.events.$my_event.createFilter() <contract_create_filter>`
- 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: :class:`web3.providers.eth_tester.EthereumTesterProvider`
- A lot of documentation improvements
- Test node integrations over a variety of providers
- geth 1.8 test suite
A little hiccup on release. Skipped.
Released Feb 28, 2018
- New methods to modify or replace pending transactions
- A compatibility option for connecting to
geth --dev
-- see :ref:`geth-poa` - A new :attr:`web3.net.chainId`
- Create a filter object from an existing filter ID.
- eth-utils v1.0.1 (stable) compatibility
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()
to :meth:`~web3.eth.Eth.sendTransaction`. Now, having a chainID key does not crash sendTransaction. - bugfix: a TypeError when estimating gas like:
contract.functions.myFunction().estimateGas()
is fixed - Added parity integration tests to the continuous integration suite!
- Some py3 and docs cleanup
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 :class:`eth_account.account.Account`
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)
Released Jan 29, 2018
- Support for :meth:`web3.eth.Eth.getLogs` in eth-tester with py-evm
- Process transaction receipts with Event ABI, using Contract.events.myEvent(*args, **kwargs).processReceipt(transaction_receipt) see :ref:`event-log-object` for the new type.
- Add timeout parameter to :class:`web3.providers.ipc.IPCProvider`
- bugfix: make sure idna package is always installed
- Replace ethtestrpc with py-evm, in all tests
- Dockerfile fixup
- Test refactoring & cleanup
- Reduced warnings during tests
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 :meth:`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. :class:`web3.providers.eth_tester.main.EthereumTesterProvider` is now a legitimate alternative to :class:`web3.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
Released Dec 28, 2017
- Improvements to working with eth-tester, using :class:`~web3.providers.eth_tester.EthereumTesterProvider`:
- Bugfix the key names in event logging
- Add support for :meth:`~web3.eth.Eth.sendRawTransaction`
- :class:`~web3.providers.ipc.IPCProvider` now automatically retries on a broken connection, like when you restart your node
- New gas price engine API, laying groundwork for more advanced gas pricing strategies
Released Dec 7, 2017
- New :meth:`~web3.contract.Contract.buildTransaction` method to prepare contract transactions, offline
- New automatic provider detection, for
w3 = Web3()
initialization - Set environment variable WEB3_PROVIDER_URI to suggest a provider for automatic detection
- New API to set providers like:
w3.providers = [IPCProvider()]
- Crashfix: :meth:`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.
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
r
ands
) - Autoinit web3 now produces None instead of raising an exception on
from web3.auto import w3
- Clearer errors on formatting failure (includes field name that failed)
- Python modernization, removing Py2 compatibility cruft
- Update dependencies with changed names, now:
eth-abi
eth-keyfile
eth-keys
eth-tester
eth-utils
- Faster Travis CI builds, with cached geth binary
Released Nov 22, 2017
Bug Fixes:
- :meth:`~web3.eth.Eth.sendRawTransaction` accepts raw bytes
- :meth:`~web3.eth.Eth.contract` accepts an ENS name as contract address
- :meth:`~web3.account.Account.signTransaction` returns the expected hash (after signing the transaction)
- :class:`~web3.account.Account` methods can all be called statically, like:
Account.sign(...)
- :meth:`~web3.eth.Eth.getTransactionReceipt` returns the
status
field as anint
- :meth:`Web3.soliditySha3` looks up ENS names if they are supplied with an "address" ABI
- If 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.
- 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: :meth:`~web3.utils.filters.Filter.get_all_entries` and :meth:`~web3.utils.filters.Filter.get_new_entries`
- Quick automatic initialization with
from web3.auto import w3
- All addresses must be supplied with an EIP-55 checksum
- All addresses are returned with a checksum
- Renamed
Web3.toDecimal()
totoInt()
, see: :ref:`overview_type_conversions` - All filter calls are synchronous, gevent integration dropped
- Contract :meth:`~web3.contract.Contract.eventFilter` has replaced both
Contract.on()
andContract.pastEvents()
- Contract arguments of
bytes
ABI type now accept hex strings. - Contract arguments of
string
ABI type now accept pythonstr
. - Contract return values of
string
ABI type now return pythonstr
. - Many methods now return a
bytes
-like object where they used to return a hex string, like in :meth:`Web3.sha3()` - IPC connection left open and reused, rather than opened and closed on each call
- A number of deprecated methods from v3 were removed
- Addition of
ethereum-tester
as a dependency
- 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.
- Change docs to use RTD theme
- Experimental new
EthereumTesterProvider
for theethereum-tester
library. - Bugfix for
function
type abi encoding viaethereum-abi-utils
upgrade tov0.4.1
- Bugfix for
Web3.toHex
to conform to RPC spec.
- Fix PyPi readme text.
- Fix PyPi readme text.
- New
stalecheck_middleware
- Improvements to
Web3.toHex
andWeb3.toText
. - Improvements to
Web3.sha3
signature. - Bugfixes for
Web3.eth.sign
api
- Add experimental
fixture_middleware
- Various bugfixes introduced in middleware API introduction and migration to formatter middleware.
- Bugfix for formatter handling of contract creation transaction.
- Improved testing infrastructure.
- Bugfix for retrieving filter changes for both new block filters and pending transaction filters.
- Fix mispelled
attrdict_middleware
(was spelledattrdict_middlware
).
- 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. Useweb3.provider
now instead. - Deprecated password prompt within
web3.personal.newAccount
.
- Bugfix for abi filtering to correctly handle
constructor
andfallback
type abi entries.
- 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 handleFalse
- Web3 now returns
web3.utils.datastructures.AttributeDict
in places where it previously returned a normaldict
. web3.eth.contract
now performs validation on theaddress
parameter.- Added
web3.eth.getWork
API
- Add validation for the
abi
parameter ofeth
- Contract return values of
bytes
,bytesXX
andstring
are no longer converted to text types and will be returned in their raw byte-string format.
- Bugfix for
eth_sign
double hashing input. - Removed deprecated
DelegatedSigningManager
- Removed deprecate
PrivateKeySigningManager
- Update pyrlp dependency to
>=0.4.7
- Update eth-testrpc dependency to
>=1.2.0
- Deprecate
DelegatedSigningManager
- Deprecate
PrivateKeySigningManager
- upstream version bump for bugfix in eth-abi-utils
- deprecate
eth.defaultAccount
defaulting to the coinbase account.
- Fix error message from contract factory creation.
- Use
ethereum-utils
for utility functions.
- Upgrade
ethereum-abi-utils
dependency for upstream bugfix.
- Deprecate
Contract.code
: replaced byContract.bytecode
- Deprecate
Contract.code_runtime
: replaced byContract.bytecode_runtime
- Deprecate
abi
,code
,code_runtime
andsource
as arguments for theContract
object. - Deprecate
source
as a property of theContract
object - Add
Contract.factory()
API. - Deprecate the
construct_contract_factory
helper function.
- Bugfix for how
requests
library is used. Now reuses session.
- Bugfix for construction of
request_kwargs
within HTTPProvider
- Allow
HTTPProvider
to be imported fromweb3
module. - make
HTTPProvider
accessible as a property ofweb3
instances.
- 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 event log data decoding to properly handle dynamic sized values.
- New
web3.tester
module to access extra RPC functionality frometh-testrpc
- Fix package so that
eth-testrpc
is not required.
- Force gevent<1.2.0 until this issue is fixed: gevent/gevent#916
- 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 thanTestRPCProvider
- Updated underlying eth-testrpc requirement.
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.
- New DelegatedSigningManager and PrivateKeySigningManager classes.
- Bugfix or IPCProvider not handling large JSON responses well.
- Better RPC compliance to be compatable with the Parity JSON-RPC server.
Filter
objects now support controlling the interval through which they poll using thepoll_interval
property
- Bugfix generation of event topics.
- Web3.Iban now allows access to Iban address tools.
- Bugfix for
geth.ipc
path on linux systems.
- Changes to the
Contract
API: Contract.deploy()
parameter arguments renamed to argsContract.deploy()
now takes args and kwargs parameters to allow constructing with keyword arguments or positional arguments.Contract.pastEvents
now allows you to specify afromBlock or ``toBlock.
Previously these were forced to be'earliest'
andweb3.eth.blockNumber
respectively.Contract.call
,Contract.transact
andContract.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
andContract.estimateGas
now allow specifying an alternate address for the transaction.
- Changes to the
RPCProvider
now supports the following constructor arguments.ssl
for enabling SSLconnection_timeout
andnetwork_timeout
for controlling the timeouts for requests.
- Bugfix: Fix KeyError in merge_args_and_kwargs helper fn.
- 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.
- 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 true with transactions initiated from aContract
object.
- Contract functions can now be called using keyword arguments.
- Upstream fixes for filters
- Filter APIs
on
andpastEvents
now callable as both instance and class methods.
- The filters that come back from the contract
on
andpastEvents
methods now call their callbacks with the same data format asweb3.js
.
- Cast RPCProvider port to an integer.
- Remove all monkeypatching
- 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:
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 fromweb3
- Add
eth.admin
interface. - Bugfix: Format the return value of
web3.eth.syncing
- Bugfix: IPCProvider socket interactions are now more robust.
- Downstream package upgrades for
eth-testrpc
andethereum-tester-client
to handle configuration of the Homestead and DAO fork block numbers.
- Rename
web3.contract._Contract
toweb3.contract.Contract
to expose it for static analysis and auto completion tools - Allow passing string parameters to functions
- Automatically compute gas requirements for contract deployment and
- transactions.
- Contract Filters
- Block, Transaction, and Log filters
web3.eth.txpool
interfaceweb3.eth.mining
interface- Fixes for encoding.
- Bugfix to allow address types in constructor arguments.
- Partial implementation of the
web3.eth.contract
interface.
- Restructure project modules to be more flat
- Add ability to run test suite without the slow tests.
- Breakup
encoding
utils 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.0
refactor. - Removal of
web3/solidity
module.
- Add missing
isConnected()
method. - Add test coverage for
setProvider()
- Specify missing
pyrlp
andgevent
dependencies
- Massive refactor to the majority of the app.
- Initial release