Release Notes¶
v5.31.4 (2023-03-13)¶
Improved Documentation¶
Deprecations and Removals¶
- Deprecate
isConnectedin favor ofis_connected. (#2866) - Deprecate
clientVersionin favor ofclient_version(#2869) - deprecate and snakecase toJSON (#2870)
- deprecate and snakecase toText (#2871)
- Deprecate and snake_case
processLogandgetLogs(#2872) - deprecate and snakecase toHex and toInt (#2873)
- deprecate and snakecase isAddress, isChecksumAddress, toChecksumAddress (#2874)
- Deprecate
Web3.solidityKeccak()in favor of the snaked_casedWeb3.solidity_keccak(). Update the deprecation forWeb3.soliditySha3()to this snake_cased version as well. (#2875) - Deprecate createFilter and processReceipt, in favor of create_filter and process_receipt (#2876)
- Snake case and deprecate
ENS.fromWeb3()method. (#2877) - snakecase and deprecate toBytes, toWei, fromWei (#2878)
v5.31.3 (2022-12-02)¶
v5.31.2 (2022-12-01)¶
Bugfixes¶
- Improve upon issues with session caching and cache locking, especially for multi-threading. (#2691)
v5.31.1 (2022-10-06)¶
Bugfixes¶
- Protobuf dependency breaks at version
3.20.2and above; pin to3.19.4for now since that is the last non-breaking version for python 3.6. (#2659) - Protobuf dependency had a DoS-able bug. It was fixed in 3.19.5. See: https://nvd.nist.gov/vuln/detail/CVE-2022-1941 (#2667)
v5.31.0 (2022-09-19)¶
Features¶
Bugfixes¶
- Fix
is_dynamic_fee_transactionandTRANSACTION_DEFAULTSwhengas_price_strategyreturns zero (#2570) - Allow classes to inherit from the
Web3class by attaching modules appropriately. (#2587) - Bump eth-account requirement to >=0.5.9,<0.6.0 to incorporate fix for ReDOS-able regex (#2607)
- Allow hex for
valuefield when validating viavalidate_payable()contracts method (#2609)
v5.30.0 (2022-07-07)¶
v5.29.2 (2022-06-01)¶
v5.29.1 (2022-05-16)¶
Bugfixes¶
v5.29.0 (2022-04-13)¶
Features¶
- Added session caching to the AsyncHTTPProvider (#2016)
- Add ‘get_text’ method to look up ENS text record values (#2286)
- Add async eth.get_storage_at method (#2350)
- Upgrade
jsonschemaversion range to >=3.2.0<5 (#2360) - Add an optional
strictflag forENS.name()that will perform a validation, recommended by ENS, against the forward resolution to make sure the address matches. This will be default behavior in v6. (#2419) - Add sync chain_id to
simple_middleware_cache(#2425)
v5.28.0 (2022-02-09)¶
Features¶
- Added Async functions for Geth Personal and Admin modules (#1413)
- async support for formatting, validation, and geth poa middlewares (#2098)
- Calculate a default
maxPriorityFeePerGasusingeth_feeHistorywheneth_maxPriorityFeePerGasis not available, since the latter is not a part of the Ethereum JSON-RPC specs and only supported by certain clients. (#2259) - Allow NamedTuples in ABI inputs (#2312)
- Add async eth.syncing method (#2331)
v5.27.0 (2022-01-31)¶
Features¶
- Added Async functions for Geth TxPool (#1413)
- external modules are no longer required to inherit from the
web3.module.Moduleclass (#2304) - Add async eth.get_logs method (#2310)
- add Async access to default_account and default_block (#2315)
- Update eth-tester and eth-account dependencies to pull in bugfix from eth-keys (#2320)
Bugfixes¶
Improved Documentation¶
- fix typo in eth.account docs (#2111)
- explicitly add output_values to contracts example (#2293)
- update imports for AsyncHTTPProvider sample code (#2302)
- fixed broken link to filter schema (#2303)
- add github link to the main docs landing page (#2313)
- fix typos and update referenced geth version (#2326)
v5.26.0 (2022-01-06)¶
Features¶
- Add
middlewaresproperty toNamedElementOnion/web3.middleware_onion. Returns current middlewares in proper order for importing into a newWeb3instance (#2239) - Add async
eth.hashratemethod (#2243) - Add async
eth.chain_idmethod (#2251) - Add async
eth.miningmethod (#2252) - Add async
eth.get_transaction_receiptandeth.wait_for_transaction_receiptmethods (#2265) - Add async eth.accounts method (#2284)
- Support for attaching external modules to the
Web3instance when instantiating theWeb3instance, via theexternal_modulesargument, or via the newattach_modules()method (#2288)
Bugfixes¶
Improved Documentation¶
v5.25.0 (2021-11-19)¶
Features¶
- Support for
w3.eth.get_raw_transaction_by_block, and async support forw3.eth.get_raw_transaction_by_block(#2209)
Bugfixes¶
- BadResponseFormat error thrown instead of KeyError when a response gets sent
back without a
resultkey. (#2188)
Improved Documentation¶
v5.24.0 (2021-09-27)¶
Features¶
Improved Documentation¶
- Fix typo in AsyncHTTPProvider docs (#2131)
- Update AsyncHTTPProvider doc Supported Methods to include
web3.eth.send_raw_transaction(). (#2135) - Improve messaging around usage and implementation questions, directing users to the appropriate channel (#2138)
- Clarify some contract
ValueErrorerror messages. (#2146) - Updated docs for w3.eth.account.sign_transaction to reflect that transaction type is no longer needed to successfully sign typed transactions and to illustrate how to structure an optional accessList parameter in a typed transaction (#2157)
v5.23.0 (2021-08-12)¶
Features¶
Bugfixes¶
- Hot fix for string interpolation issue with contract function call decoding exception to facilitate extracting a meaningful message from the eth_call response (#2096)
- Bypass adding a
gasPricevia the gas price strategy, if one is set, when EIP-1559 transaction params are used forsend_transaction(#2099)
v5.22.0 (2021-08-02)¶
Features¶
- Add support for eth_getRawTransactionByHash RPC method (#2039)
- Add AsyncNet module (#2044)
- Add async
eth.get_balance,eth.get_code,eth.get_transaction_countmethods. (#2056) - eth_signTransaction support for eip-1559 params ‘maxFeePerGas’ and ‘maxPriorityFeePerGas’ (#2082)
- Add support for async
w3.eth.call. (#2083)
Bugfixes¶
- If a transaction hash was passed as a string rather than a HexByte to
w3.eth.wait_for_transaction_receipt, and the time was exhausted before the transaction is in the chain, the error being raised was a TypeError instead of the correct TimeExhausted error. This is because theto_hexmethod in the TimeExhausted error message expects a primitive as the first argument, and a string doesn’t qualify as a primitive. Fixed by converting the transaction_hash to HexBytes instead. (#2068) - Hot fix for a string interpolation issue in message when BadFunctionCallOutput is raised for call_contract_function() (#2069)
fill_transaction_defaults()no longer sets a defaultgasPriceif 1559 fees are present in the transaction parameters. This fixes sign-and-send middleware issues with 1559 fees. (#2092)
Improved Documentation¶
- Clarify that
send_transaction,modify_transaction, andreplace_transactionreturn HexByte objects instead of strings. (#2058) - Added troubleshooting section for Microsoft Visual C++ error on Windows machines (#2077)
- Updated the sign-and-send middleware docs to include EIP-1559 as well as legacy transaction examples (#2092)
v5.21.0 (2021-07-12)¶
Bugfixes¶
Bugfix where an error response got passed to a function expecting a block identifier.
Split out null result formatters from the error formatters and added some tests. (#2022)
Fix broken tests and use the new 1559 params for most of our test transactions. (#2053)
Set a default maxFeePerGas value consistent with Geth (#2055)
Fix bug in geth PoA middleware where a
Noneresponse should throw aBlockNotFounderror, but was instead throwing anAttributeError(#2064)
v5.20.1 (2021-07-01)¶
Bugfixes¶
- Have the geth dev IPC auto connection check for the
WEB3_PROVIDER_URIenvironment variable. (#2023)
Improved Documentation¶
- Remove reference to allowing multiple providers in docs (#2018)
- Update “Contract Deployment Example” docs to use
py-solc-xassolcis no longer maintained. (#2020) - Detail using unreleased Geth builds in CI (#2037)
- Clarify that a missing trie node error could occur when using
block_identifierwith.call()on a node that isn’t running in archive mode (#2048)
v5.20.0 (2021-06-09)¶
Features¶
Add new AsyncHTTPProvider. No middleware or session caching support yet.
Also adds async
w3.eth.gas_price, and asyncw3.isConnected()methods. (#1978)Add ability for AsyncHTTPProvider to accept middleware
Also adds async gas_price_strategy middleware, and moves gas estimate to middleware.
AsyncEthereumTesterProvider now inherits from AsyncBase (#1999)
Support state_override in contract function call. (#2005)
Improved Documentation¶
v5.19.0 (2021-04-28)¶
Features¶
- Handle optional
eth_callstate override param. (#1921) - Add list_storage_keys deprecate listStorageKeys (#1944)
- Add net_peers deprecate netPeers (#1946)
- Add trace_replay_transaction deprecate traceReplayTransaction (#1949)
- Add add_reserved_peer deprecate addReservedPeer (#1951)
- Add
parity.set_mode, deprecateparity.setMode(#1954) - Add
parity.trace_raw_transaction, deprecateparity.traceRawTransaction(#1955) - Add
parity.trace_call, deprecateparity.traceCall(#1957) - Add trace_filter deprecate traceFilter (#1960)
- Add trace_block, deprecate traceBlock (#1961)
- Add trace_replay_block_transactions, deprecate traceReplayBlockTransactions (#1962)
- Add
parity.trace_transaction, deprecateparity.traceTransaction(#1963)
v5.18.0 (2021-04-08)¶
Features¶
- Add
w3.eth.modify_transactiondeprecatew3.eth.modifyTransaction(#1886) - Add
w3.eth.get_transaction_receipt, deprecatew3.eth.getTransactionReceipt(#1893) - Add
w3.eth.wait_for_transaction_receiptdeprecatew3.eth.waitForTransactionReceipt(#1896) - Add
w3.eth.set_contract_factorydeprecatew3.eth.setContractFactory(#1900) - Add
w3.eth.generate_gas_pricedeprecatew3.eth.generateGasPrice(#1905) - Add
w3.eth.set_gas_price_strategydeprecatew3.eth.setGasPriceStrategy(#1906) - Add
w3.eth.estimate_gasdeprecatew3.eth.estimateGas(#1913) - Add
w3.eth.sign_typed_datadeprecatew3.eth.signTypedData(#1915) - Add
w3.eth.get_filter_changesdeprecatew3.eth.getFilterChanges(#1916) - Add
eth.get_filter_logs, deprecateeth.getFilterLogs(#1919) - Add
eth.uninstall_filter, deprecateeth.uninstallFilter(#1920) - Add
w3.eth.get_logsdeprecatew3.eth.getLogs(#1925) - Add
w3.eth.submit_hashratedeprecatew3.eth.submitHashrate(#1926) - Add
w3.eth.submit_workdeprecatew3.eth.submitWork(#1927) - Add
w3.eth.get_work, deprecatew3.eth.getWork(#1934) - Adds public get_block_number method. (#1937)
Improved Documentation¶
- Add ABI type examples to docs (#1890)
- Promote the new Ethereum Python Discord server on the README. (#1898)
- Escape reserved characters in install script of Contributing docs. (#1909)
- Add detailed event filtering examples. (#1910)
- Add docs example for tuning log levels. (#1928)
- Add some performance tips in troubleshooting docs. (#1929)
- Add existing contract interaction to docs examples. (#1933)
- Replace Gitter links with the Python Discord server. (#1936)
v5.17.0 (2021-02-24)¶
Features¶
- Added
get_transaction_count, and deprecatedgetTransactionCount(#1844) - Add
w3.eth.send_transaction, deprecatew3.eth.sendTransaction(#1878) - Add
web3.eth.sign_transaction, deprecateweb3.eth.signTransaction(#1879) - Add
w3.eth.send_raw_transaction, deprecatew3.eth.sendRawTransaction(#1880) - Add
w3.eth.replace_transactiondeprecatew3.eth.replaceTransaction(#1882)
v5.16.0 (2021-02-04)¶
Features¶
- Added
get_block_transaction_count, and deprecatedgetBlockTransactionCount(#1841) - Move
defaultAccounttodefault_account. DeprecatedefaultAccount. (#1848) - Add
eth.default_block, deprecateeth.defaultBlock. Also addsparity.default_block, and deprecatesparity.defaultBlock. (#1849) - Add
eth.gas_price, deprecateeth.gasPrice(#1850) - Added
eth.block_numberproperty. Deprecatedeth.blockNumber(#1851) - Add
eth.chain_id, deprecateeth.chainId(#1852) - Add
eth.protocol_version, deprecateeth.protocolVersion(#1853) - Add
eth.get_code, deprecateeth.getCode(#1856) - Deprecate
eth.getProof, addeth.get_proof(#1857) - Add
eth.get_transaction, deprecateeth.getTransaction(#1858) - Add
eth.get_transaction_by_block, deprecateeth.getTransactionByBlock(#1859) - Add get_uncle_by_block, deprecate getUncleByBlock (#1862)
- Add get_uncle_count, deprecate getUncleCount (#1863)
Improved Documentation¶
- Remove v5 breaking changes link from the top of the release notes. (#1837)
- Add account creation troubleshooting docs. (#1855)
- Document passing a struct into a contract function. (#1860)
- Add instance configuration troubleshooting docs. (#1865)
- Clarify nonce lookup in sendRawTransaction docs. (#1866)
- Updated docs for web3.eth methods: eth.getTransactionReceipt and eth.waitForTransactionReceipt (#1868)
v5.15.0 (2021-01-15)¶
Features¶
Bugfixes¶
- PR #1585 changed the error that was coming back from eth-tester when the Revert opcode was called, which broke some tests in downstream libraries. This PR reverts back to raising the original error. (#1813)
- Added a new
ContractLogicErrorfor when a contract reverts a transaction.ContractLogicErrorwill replaceSolidityError, in v6. (#1814)
v5.13.1 (2020-12-03)¶
v5.13.0 (2020-10-29)¶
v5.12.0-beta.3 (2020-07-15)¶
v5.12.0-beta.2 (2020-07-14)¶
v5.12.0-beta.1 (2020-07-09)¶
Features¶
Improved Documentation¶
- Add a
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)
v5.11.1 (2020-06-17)¶
Bugfixes¶
- Added formatter rules for eth_tester middleware to allow
getBalance()by using integer block numbers (#1660) - Fix type annotations within the
eth.pymodule. Several arguments that defaulted toNonewere not declaredOptional. (#1668) - Fix type annotation warning when using string URI to instantiate an HTTP or WebsocketProvider. (#1669)
- Fix type annotations within the
web3modules. Several arguments that defaulted toNonewere not declaredOptional. (#1670)
v5.11.0 (2020-06-03)¶
Features¶
- Accept a block identifier in the
Contract.estimateGasmethod. Includes a related upgrade of eth-tester to v0.5.0-beta.1. (#1639) - Introduce a more specific validation error,
ExtraDataLengthError. This enables tools to detect when someone may be connected to a POA network, for example, and provide a smoother developer experience. (#1666)
v5.10.0 (2020-05-18)¶
Features¶
- An update of
eth-testerincludes a change of the default fork from Constantinople to Muir Glacier. #1636
Bugfixes¶
my_contract.events.MyEventwas incorrectly annotated so thatMyEventwas marked as aContractEventinstance. Fixed to be a class type, i.e.,Type[ContractEvent]. (#1646)- IPCProvider correctly handled
pathlib.Pathinput, but warned against its type. Fixed to permit Path objects in addition to strings. (#1647)
v5.9.0 (2020-04-30)¶
v5.8.0 (2020-04-23)¶
Features¶
Introduced
list_walletsmethod to theGethPersonalclass. (#1516)Added block_identifier parameter to ContractConstructor.estimateGas method. (#1588)
Add snake_case methods to Geth and Parity Personal Modules.
Deprecate camelCase methods. (#1589)
Added new weighted keyword argument to the time based gas price strategy.
If
True, it will more give more weight to more recent block times. (#1614)Adds support for Solidity’s new(ish) receive function.
Adds a new contract API that mirrors the existing fallback API:
contract.receive(#1623)
Bugfixes¶
Fixed hasattr overloader method in the web3.ContractEvent, web3.ContractFunction, and web3.ContractCaller classes by implementing a try/except handler that returns False if an exception is raised in the __getattr__ overloader method (since __getattr__ HAS to be called in every __hasattr__ call).
Created two new Exception classes, ‘ABIEventFunctionNotFound’ and ‘ABIFunctionNotFound’, which inherit from both AttributeError and MismatchedABI, and replaced the MismatchedABI raises in ContractEvent, ContractFunction, and ContractCaller with a raise to the created class in the __getattr__ overloader method of the object. (#1594)
Change return type of rpc_gas_price_strategy from int to Wei (#1612)
Improved Documentation¶
- Fix typo in “Internals” docs. Changed asyncronous –> asynchronous (#1607)
- Improve documentation that introduces and troubleshoots Providers. (#1609)
- Add documentation for when to use each transaction method. (#1610)
- Remove incorrect web3 for w3 in doc example (#1615)
- Add examples for using web3.contract via the ethpm module. (#1617)
- Add dark mode to documentation. Also fixes a bunch of formatting issues in docs. (#1626)
v5.7.0 (2020-03-16)¶
v5.5.1 (2020-02-10)¶
v5.5.0 (2020-02-03)¶
Features¶
- ENS had to release a new registry to push a bugfix. See this article for background information. Web3.py uses the new registry for all default ENS interactions, now. (#1573)
Bugfixes¶
- Minor bugfix in how ContractCaller looks up abi functions. (#1552)
- Update modules to use compatible typing-extensions import. (#1554)
- Make ‘from’ and ‘to’ fields checksum addresses in returned transaction receipts (#1562)
- Use local Trinity’s IPC socket if it is available, for newer versions of Trinity. (#1563)
Improved Documentation¶
Add Matomo Tracking to Docs site.
Matomo is an Open Source web analytics platform that allows us to get better insights and optimize for our audience without the negative consequences of other compareable platforms.
Read more: https://matomo.org/why-matomo/ (#1541)
Fix web3 typo in docs (#1559)
v5.4.0 (2019-12-06)¶
v5.2.2 (2019-10-21)¶
Web3 5.1.0 (2019-09-18)¶
Improved Documentation¶
Remove whitespace, move
topicskey ->topicin Geth docs (#1425)Enforce stricter doc checking, turning warnings into errors to fail CI builds to catch issues quickly.
Add missing
web3.tools.rstto the table of contents and fix incorrectly formatted JSON example. (#1437)Add example using Geth POA Middleware with Infura Rinkeby Node (#1444)
v5.0.2¶
Released August 22, 2019
- Bugfixes
- [ethPM] Fix bug in package id and release id fetching strategy - #1427
v5.0.1¶
Released August 15, 2019
v5.0.0¶
Released August 1, 2019
v5.0.0-beta.5¶
Released July 31, 2019
This is intended to be the final release before the stable v5 release.
v5.0.0-beta.4¶
Released July 18,2019
v5.0.0-beta.3¶
Released July 15, 2019
- Features
- Bugfixes
- Remove full IDNA processing in favor of UTS46 - #1364
- Misc
- Migrate py-ethpm library to web3/ethpm - #1379
- Relax canonical address requirement in ethPM - #1380
- Replace ethPM’s infura strategy with web3’s native infura support - #1383
- Change
combine_argument_formatterstoapply_formatters_to_sequence- #1360 - Move
pytest.xfailinstances to@pytest.mark.xfail- #1376 - Change
net.versiontoeth.chainIdin default transaction params - #1378
v5.0.0-beta.2¶
Released May 13, 2019
v5.0.0-beta.1¶
Released May 6, 2019
v5.0.0-alpha.11¶
Released April 24, 2019
v5.0.0-alpha.10¶
Released April 15, 2019
- Features
- Add getLogs by blockHash - #1269
- Implement chainId endpoint - #1295
- Moved non-standard JSON-RPC endpoints to applicable
Parity/Geth docs. Deprecated
web3.versionforweb3.api- #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
v5.0.0-alpha.9¶
Released March 26, 2019
v5.0.0-alpha.8¶
Released March 20, 2019
- Breaking Changes
- Removed
web3/utilsdirectory in favor ofweb3/_utils- #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.txpooltoweb3.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
v5.0.0-alpha.7¶
Released March 11, 2019
v5.0.0-alpha.6¶
Released February 25th, 2019
v5.0.0-alpha.5¶
Released February 13th, 2019
- Breaking Changes
- Remove deprecated
buildTransaction,call,deploy,estimateGas, andtransactmethods - #1232
- Remove deprecated
- Features
- Misc
v5.0.0-alpha.3¶
Released January 15th, 2019
- Breaking Changes
- Remove
web3.miner.hashrateandweb3.version.network- #1198 - Remove
web3.providers.tester.EthereumTesterProviderandweb3.providers.tester.TestRPCProvider- #1199 - Change
manager.providersfrom list to singlemanager.provider- #1200 - Replace deprecated
web3.sha3method withweb3.keccakmethod - #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
v5.0.0-alpha.2¶
Released December 20th, 2018
v5.0.0-alpha.1¶
Released December 13th, 2018
- Features
- Add Rinkeby and Kovan Infura networks; made mainnet the default - #1150
- Add parity-specific
listStorageKeysRPC - #1145 - Deprecated
Web3.soliditySha3; useWeb3.solidityKeccakinstead. - #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
v4.7.2¶
Released September 25th, 2018
v4.7.1¶
Released September 11th, 2018
- Bugfixes
- old pip bug used during release made it impossible for non-windows users to install 4.7.0.
v4.7.0¶
Released September 10th, 2018
- Features
- Bugfixes
- Misc - Upgrade eth-tester to 0.1.0-beta.32, and remove integration tests for py-ethereum. - Upgrade eth-hash to 0.2.0 with pycryptodome 3.6.6 which resolves a vulnerability.
v4.6.0¶
Released Aug 24, 2018
Features
- Support for Python 3.7, most notably in
WebsocketProvider- #996 - You can now decode a transaction’s data to its original function call and arguments with:
contract.decode_function_input()- #991 - Support for
IPCProviderin FreeBSD (and more readme docs) - #1008
- Support for Python 3.7, most notably in
Bugfixes
- Fix crash in time-based gas strategies with small number of transactions - #983
- Fx crash when passing multiple addresses to
w3.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
v4.5.0¶
Released July 30, 2018
- Features
- Accept addresses supplied in
bytesformat (which does not provide checksum validation) - Improve estimation of gas prices
- Accept addresses supplied in
- Bugfixes
- Can now use a block number with
getCode()when connected toEthereumTesterProvider(without crashing)
- Can now use a block number with
- Misc
- Test Parity 1.11.7
- Parity integration tests upgrade to use sha256 instead of md5
- Fix some filter docs
- eth-account upgrade to v0.3.0
- eth-tester upgrade to v0.1.0-beta.29
v4.4.1¶
Released June 29, 2018
- Bugfixes
- eth-pm package was renamed (old one deleted) which broke the web3 release. eth-pm was removed from the web3.py install until it’s stable.
- Misc
IPCProvidernow accepts apathlib.Pathargument for the IPC path- Docs explaining the new custom autoproviders in web3
v4.4.0¶
Released June 21, 2018
- Features
- Add support for https in WEB3_PROVIDER_URI environment variable
- Can send websocket connection parameters in
WebsocketProvider - Two new auto-initialization options:
from web3.auto.gethdev import w3from web3.auto.infura import w3(After setting theINFURA_API_KEYenvironment variable)
- Alpha support for a new package management tool based on ethpm-spec, see Package Manager API
- Bugfixes
- Can now receive large responses in
WebsocketProviderby specifying a largemax_sizein the websocket connection parameters.
- Can now receive large responses in
- Misc
- Websockets dependency upgraded to v5
- Raise deprecation warning on
getTransactionFromBlock() - Fix docs for
waitForTransactionReceipt() - Developer Dockerfile now installs testing dependencies
v4.3.0¶
Released June 6, 2018
- Features
- Support for the ABI types like: fixedMxN which is used by Vyper.
- In-flight transaction-signing middleware: Use local keys as if they were hosted keys
using the new
sign_and_send_raw_middleware - New
getUncleByBlock()API - New name
getTransactionByBlock(), which replaces the deprecatedgetTransactionFromBlock() - Add several new Parity trace functions
- New API to resolve ambiguous function calls, for example:
- Two functions with the same name that accept similar argument types, like
myfunc(uint8)andmyfunc(int8), and you want to callcontract.functions.myfunc(1).call() - See how to use it at: Invoke Ambiguous Contract Functions Example
- 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
publicKeyisNone) - Doc fixes: addresses must be checksummed (or ENS names on mainnet)
- Enable local integration testing of parity on non-Debian OS
- README:
- Testing setup for devs
- Change the build badge from Travis to Circle CI
- Cache the parity binary in Circle CI, to reduce the impact of their binary API going down
- Dropped the dot:
py.test->pytest
v4.2.1¶
Released May 9, 2018
- Bugfixes
- When
getting a transactionwith data attached and trying tomodify it(say, to increase the gas price), the data was not being reattached in the new transaction. web3.personal.sendTransaction()was crashing when using a transaction generated withbuildTransaction()
- When
- Misc
- Improved error message when connecting to a geth-style PoA network
- Improved error message when address is not checksummed
- Started in on support for
fixedMxNABI 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
v4.2.0¶
Released Apr 25, 2018
- Removed audit warning and opt-in requirement for
w3.eth.account. See more in: Working with Local Private Keys - 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
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
v4.1.0¶
Released Apr 9, 2018
- New
WebsocketProvider. If you’re looking for better performance than HTTP, check out websockets. - New
w3.eth.waitForTransactionReceipt() - Added name collision detection to ConciseContract and ImplicitContract
- Bugfix to allow fromBlock set to 0 in createFilter, like
contract.events.MyEvent.createFilter(fromBlock=0, ...) - Bugfix of ENS automatic connection
- eth-tester support for Byzantium
- New migration guide for v3 -> v4 upgrade
- Various documentation updates
- Pinned eth-account to older version
v4.0.0-beta.13¶
Released Mar 27, 2018
This is intended to be the final release before the stable v4 release.
- Add support for geth 1.8 (fixed error on
getTransactionReceipt()) - You can now call a contract method at a specific block
with the
block_identifierkeyword argument, see:call() - In preparation for stable release, disable
w3.eth.accountby default, until a third-party audit is complete & resolved. - New API for contract deployment, which enables gas estimation, local signing, etc.
See
constructor(). - Find contract events with contract.events.$my_event.createFilter()
- Support auto-complete for contract methods.
- Upgrade most dependencies to stable
- eth-abi
- eth-utils
- hexbytes
- not included: eth-tester and eth-account
- Switch the default EthereumTesterProvider backend from eth-testrpc to eth-tester:
web3.providers.eth_tester.EthereumTesterProvider - A lot of documentation improvements
- Test node integrations over a variety of providers
- geth 1.8 test suite
v4.0.0-beta.12¶
A little hiccup on release. Skipped.
v4.0.0-beta.11¶
Released Feb 28, 2018
- New methods to modify or replace pending transactions
- A compatibility option for connecting to
geth --dev– see Proof of Authority - A new
web3.net.chainId - Create a filter object from an existing filter ID.
- eth-utils v1.0.1 (stable) compatibility
v4.0.0-beta.10¶
Released Feb 21, 2018
- bugfix: Compatibility with eth-utils v1-beta2 (the incompatibility was causing fresh web3.py installs to fail)
- bugfix: crash when sending the output of
contract.functions.myFunction().buildTransaction()tosendTransaction(). Now, having a chainID key does not crash sendTransaction. - bugfix: a TypeError when estimating gas like:
contract.functions.myFunction().estimateGas()is fixed - Added parity integration tests to the continuous integration suite!
- Some py3 and docs cleanup
v4.0.0-beta.9¶
Released Feb 8, 2018
- Access event log parameters as attributes
- Support for specifying nonce in eth-tester
- Bugfix dependency conflicts between eth-utils, eth-abi, and eth-tester
- Clearer error message when invalid keywords provided to contract constructor function
- New docs for working with private keys + set up doctests
- First parity integration tests
- replace internal implementation of w3.eth.account with
eth_account.account.Account
v4.0.0-beta.8¶
Released Feb 7, 2018, then recalled. It added 32MB of test data to git history, so the tag was deleted, as well as the corresponding release. (Although the release would not have contained that test data)
v4.0.0-beta.7¶
Released Jan 29, 2018
- Support for
web3.eth.Eth.getLogs()in eth-tester with py-evm - Process transaction receipts with Event ABI, using Contract.events.myEvent(*args, **kwargs).processReceipt(transaction_receipt) see Event Log Object for the new type.
- Add timeout parameter to
web3.providers.ipc.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
v4.0.0-beta.6¶
Released Jan 18, 2018
- New contract function call API: my_contract.functions.my_func().call() is preferred over the now deprecated my_contract.call().my_func() API.
- A new, sophisticated gas estimation algorithm, based on the https://ethgasstation.info approach.
You must opt-in to the new approach, because it’s quite slow. We recommend using the new caching middleware.
See
web3.gas_strategies.time_based.construct_time_based_gas_price_strategy() - New caching middleware that can cache based on time, block, or indefinitely.
- Automatically retry JSON-RPC requests over HTTP, a few times.
- ConciseContract now has the address directly
- Many eth-tester fixes.
web3.providers.eth_tester.main.EthereumTesterProvideris now a legitimate alternative toweb3.providers.tester.EthereumTesterProvider. - ethtest-rpc removed from testing. Tests use eth-tester only, on pyethereum. Soon it will be eth-tester with py-evm.
- Bumped several dependencies, like eth-tester
- Documentation updates
v4.0.0-beta.5¶
Released Dec 28, 2017
- Improvements to working with eth-tester, using
EthereumTesterProvider:- Bugfix the key names in event logging
- Add support for
sendRawTransaction()
IPCProvidernow automatically retries on a broken connection, like when you restart your node- New gas price engine API, laying groundwork for more advanced gas pricing strategies
v4.0.0-beta.4¶
Released Dec 7, 2017
- New
buildTransaction()method to prepare contract transactions, 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:
web3.eth.Eth.filter()when retrieving logs with the argument ‘latest’ - Bump eth-tester to v0.1.0-beta.5, with bugfix for filtering by topic
- Removed GPL lib
pylru, now believed to be in full MIT license compliance.
v4.0.0-beta.3¶
Released Dec 1, 2017
- Fix encoding of ABI types:
bytes[]andstring[] - Windows connection error bugfix
- Bugfix message signatures that were broken ~1% of the time (zero-pad
rands) - Autoinit web3 now produces None instead of raising an exception on
from web3.auto import w3 - Clearer errors on formatting failure (includes field name that failed)
- Python modernization, removing Py2 compatibility cruft
- Update dependencies with changed names, now:
eth-abieth-keyfileeth-keyseth-testereth-utils
- Faster Travis CI builds, with cached geth binary
v4.0.0-beta.2¶
Released Nov 22, 2017
Bug Fixes:
sendRawTransaction()accepts raw bytescontract()accepts an ENS name as contract addresssignTransaction()returns the expected hash (after signing the transaction)Accountmethods can all be called statically, like:Account.sign(...)getTransactionReceipt()returns thestatusfield as anintWeb3.soliditySha3()looks up ENS names if they are supplied with an “address” 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.
v4.0.0-beta.1¶
- Python 3 is now required
- ENS names can be used anywhere that a hex address can
- Sign transactions and messages with local private keys
- New filter mechanism:
get_all_entries()andget_new_entries() - Quick automatic initialization with
from web3.auto import w3 - All addresses must be supplied with an EIP-55 checksum
- All addresses are returned with a checksum
- Renamed
Web3.toDecimal()totoInt(), see: Encoding and Decoding Helpers - All filter calls are synchronous, gevent integration dropped
- Contract
eventFilter()has replaced bothContract.on()andContract.pastEvents() - Contract arguments of
bytesABI type now accept hex strings. - Contract arguments of
stringABI type now accept pythonstr. - Contract return values of
stringABI type now return pythonstr. - Many methods now return a
bytes-like object where they used to return a hex string, like inWeb3.sha3() - IPC connection left open and reused, rather than opened and closed on each call
- A number of deprecated methods from v3 were removed
3.16.1¶
- Addition of
ethereum-testeras a dependency
3.16.0¶
- Addition of named middlewares for easier manipulation of middleware stack.
- Provider middlewares can no longer be modified during runtime.
- Experimental custom ABI normalization API for Contract objects.
3.15.0¶
- Change docs to use RTD theme
- Experimental new
EthereumTesterProviderfor theethereum-testerlibrary. - Bugfix for
functiontype abi encoding viaethereum-abi-utilsupgrade tov0.4.1 - Bugfix for
Web3.toHexto conform to RPC spec.
3.14.2¶
- Fix PyPi readme text.
3.14.1¶
- Fix PyPi readme text.
3.14.0¶
- New
stalecheck_middleware - Improvements to
Web3.toHexandWeb3.toText. - Improvements to
Web3.sha3signature. - Bugfixes for
Web3.eth.signapi
3.13.5¶
- Add experimental
fixture_middleware - Various bugfixes introduced in middleware API introduction and migration to formatter middleware.
3.13.4¶
- Bugfix for formatter handling of contract creation transaction.
3.13.3¶
- Improved testing infrastructure.
3.13.2¶
- Bugfix for retrieving filter changes for both new block filters and pending transaction filters.
3.13.1¶
- Fix mispelled
attrdict_middleware(was spelledattrdict_middlware).
3.13.0¶
- New Middleware API
- Support for multiple providers
- New
web3.soliditySha3 - Remove multiple functions that were never implemented from the original web3.
- Deprecated
web3.currentProvideraccessor. Useweb3.providernow instead. - Deprecated password prompt within
web3.personal.newAccount.
3.12.0¶
- Bugfix for abi filtering to correctly handle
constructorandfallbacktype abi entries.
3.11.0¶
- All web3 apis which accept
addressparameters now enforce checksums if the address looks like it is checksummed. - Improvements to error messaging with when calling a contract on a node that may not be fully synced
- Bugfix for
web3.eth.syncingto correctly handleFalse
3.10.0¶
- Web3 now returns
web3.utils.datastructures.AttributeDictin places where it previously returned a normaldict. web3.eth.contractnow performs validation on theaddressparameter.- Added
web3.eth.getWorkAPI
3.9.0¶
- Add validation for the
abiparameter ofeth - Contract return values of
bytes,bytesXXandstringare no longer converted to text types and will be returned in their raw byte-string format.
3.8.1¶
- Bugfix for
eth_signdouble hashing input. - Removed deprecated
DelegatedSigningManager - Removed deprecate
PrivateKeySigningManager
3.8.0¶
- Update pyrlp dependency to
>=0.4.7 - Update eth-testrpc dependency to
>=1.2.0 - Deprecate
DelegatedSigningManager - Deprecate
PrivateKeySigningManager
3.7.1¶
- upstream version bump for bugfix in eth-abi-utils
3.7.0¶
- deprecate
eth.defaultAccountdefaulting to the coinbase account.
3.6.2¶
- Fix error message from contract factory creation.
- Use
ethereum-utilsfor utility functions.
3.6.1¶
- Upgrade
ethereum-abi-utilsdependency for upstream bugfix.
3.6.0¶
- Deprecate
Contract.code: replaced byContract.bytecode - Deprecate
Contract.code_runtime: replaced byContract.bytecode_runtime - Deprecate
abi,code,code_runtimeandsourceas arguments for theContractobject. - Deprecate
sourceas a property of theContractobject - Add
Contract.factory()API. - Deprecate the
construct_contract_factoryhelper function.
3.5.3¶
- Bugfix for how
requestslibrary is used. Now reuses session.
3.5.2¶
- Bugfix for construction of
request_kwargswithin HTTPProvider
3.5.1¶
- Allow
HTTPProviderto be imported fromweb3module. - make
HTTPProvideraccessible as a property ofweb3instances.
3.5.0¶
- Deprecate
web3.providers.rpc.RPCProvider - Deprecate
web3.providers.rpc.KeepAliveRPCProvider - Add new
web3.providers.rpc.HTTPProvider - Remove hard dependency on gevent.
3.4.4¶
- Bugfix for
web3.eth.getTransactionwhen the hash is unknown.
3.4.3¶
- Bugfix for event log data decoding to properly handle dynamic sized values.
- New
web3.testermodule to access extra RPC functionality frometh-testrpc
3.4.2¶
- Fix package so that
eth-testrpcis not required.
3.4.1¶
- Force gevent<1.2.0 until this issue is fixed: https://github.com/gevent/gevent/issues/916
3.4.0¶
- Bugfix for contract instances to respect
web3.eth.defaultAccount - Better error reporting when ABI decoding fails for contract method response.
3.3.0¶
- New
EthereumTesterProvidernow available. Faster test runs thanTestRPCProvider - Updated underlying eth-testrpc requirement.
3.2.0¶
web3.shhis now implemented.- Introduced
KeepAliveRPCProviderto correctly recycle HTTP connections and use HTTP keep alive
3.1.1¶
- Bugfix for contract transaction sending not respecting the
web3.eth.defaultAccountconfiguration.
3.1.0¶
- New DelegatedSigningManager and PrivateKeySigningManager classes.
3.0.2¶
- Bugfix or IPCProvider not handling large JSON responses well.
3.0.1¶
- Better RPC compliance to be compatable with the Parity JSON-RPC server.
3.0.0¶
Filterobjects now support controlling the interval through which they poll using thepoll_intervalproperty
2.9.0¶
- Bugfix generation of event topics.
- Web3.Iban now allows access to Iban address tools.
2.8.1¶
- Bugfix for
geth.ipcpath on linux systems.
2.8.0¶
- Changes to the
ContractAPI: Contract.deploy()parameter arguments renamed to argsContract.deploy()now takes args and kwargs parameters to allow constructing with keyword arguments or positional arguments.Contract.pastEventsnow allows you to specify afromBlock or ``toBlock.Previously these were forced to be'earliest'andweb3.eth.blockNumberrespectively.Contract.call,Contract.transactandContract.estimateGasare now callable as class methods as well as instance methods. When called this way, an address must be provided with the transaction parameter.Contract.call,Contract.transactandContract.estimateGasnow allow specifying an alternate address for the transaction.
- Changes to the
RPCProvidernow supports the following constructor arguments.sslfor enabling SSLconnection_timeoutandnetwork_timeoutfor controlling the timeouts for requests.
2.7.1¶
- Bugfix: Fix KeyError in merge_args_and_kwargs helper fn.
2.7.0¶
- Bugfix for usage of block identifiers ‘latest’, ‘earliest’, ‘pending’
- Sphinx documentation
- Non-data transactions now default to 90000 gas.
- Web3 object now has helpers set as static methods rather than being set at initialization.
- RPCProvider now takes a
pathparameter to allow configuration for requests to go to paths other than/.
2.6.0¶
- TestRPCProvider no longer dumps logging output to stdout and stderr.
- Bugfix for return types of
address[] - Bugfix for event data types of
address
2.5.0¶
- All transactions which contain a
dataelement will now have their gas automatically estimated with 100k additional buffer. This was previously only true with transactions initiated from aContractobject.
2.4.0¶
- Contract functions can now be called using keyword arguments.
2.3.0¶
- Upstream fixes for filters
- Filter APIs
onandpastEventsnow callable as both instance and class methods.
2.2.0¶
- The filters that come back from the contract
onandpastEventsmethods now call their callbacks with the same data format asweb3.js.
2.1.1¶
- Cast RPCProvider port to an integer.
2.1.0¶
- Remove all monkeypatching
2.0.0¶
- Pull in downstream updates to proper gevent usage.
- Fix
eth_sign - Bugfix with contract operations mutating the transaction object that is passed in.
- More explicit linting ignore statements.
1.9.0¶
- BugFix: fix for python3 only
json.JSONDecodeErrorhandling.
1.8.0¶
- BugFix:
RPCProvidernot sending a content-type header - Bugfix:
web3.toWeinow returns an integer instead of a decimal.Decimal
1.7.1¶
TestRPCProvidercan now be imported directly fromweb3
1.7.0¶
- Add
eth.admininterface. - Bugfix: Format the return value of
web3.eth.syncing - Bugfix: IPCProvider socket interactions are now more robust.
1.6.0¶
- Downstream package upgrades for
eth-testrpcandethereum-tester-clientto handle configuration of the Homestead and DAO fork block numbers.
1.5.0¶
- Rename
web3.contract._Contracttoweb3.contract.Contractto expose it for static analysis and auto completion 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.txpoolinterfaceweb3.eth.mininginterface- Fixes for encoding.
1.4.0¶
- Bugfix to allow address types in constructor arguments.
1.3.0¶
- Partial implementation of the
web3.eth.contractinterface.
1.2.0¶
- Restructure project modules to be more flat
- Add ability to run test suite without the slow tests.
- Breakup
encodingutils into smaller modules. - Basic pep8 formatting.
- Apply python naming conventions to internal APIs
- Lots of minor bugfixes.
- Removal of dead code left behing from
1.0.0refactor. - Removal of
web3/soliditymodule.
1.1.0¶
- Add missing
isConnected()method. - Add test coverage for
setProvider()
1.0.1¶
- Specify missing
pyrlpandgeventdependencies
1.0.0¶
- Massive refactor to the majority of the app.
0.1.0¶
- Initial release