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 behing 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