All notable changes to this project are documented in this file.
This changelog format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.20.6 - 2024-06-22
include
kwarg for address strategy, type-dependent strategy overloads (#1780)
1.20.5 - 2024-05-22
- Handle missing
blockNumber
while awaiting confirmation (#1774) - Search parent paths for file import during source verification (#1776)
1.20.4 - 2024-05-08
- Fall back to ABI when
Contract.from_explorer
compilation fails (#1772)
1.20.3 - 2024-05-05
- Config setting to disable short-term caching (#1767)
- Support for blast chain contract verification (#1765)
- Support for additional anvil cmdline args (#1756)
- Target different blocks for live/dev networks when adding POA middleware (#1769)
- Dict keys for nested tuples in returndata (#1768)
- Solidity error code decoding (#1758)
1.20.2 - 2024-02-24
- Support for vyper
0.3.10
new pragma format (#1747)
- Loosen package installation restrictions (#1753)
- Reset
multicall
call code even if call reverts (#1746) TypeError
when outputting custom errors (#1751)
1.20.1 - 2024-02-12
- verbose option for
multicall
debugging (#1743)
- handle exceptions within caching middleware (#1742)
- update
docopt-ng
to support latest python (#1738) camelCase
tosnake_case
updates (#1737)
1.20.0 - 2024-02-02
- Add support for Python 3.12, drop support for Python 3.9 (#1735)
1.19.5 - 2024-01-31
- Support for custom / typed errors (#1728)
- Default to EIP1559-style transactions on live networks (#1727)
- Readthedocs missing config file (#1729)
1.19.4 - 2024-01-29
viaIR
optimizer support (#1572)- Silent transactions when calling a contract (#1636)
- Include encoded return data in transaction trace (#1715)
--no-compile
flag to avoid project recompilation (#1507)- Support for various new EVM chains
- set default vyper EVM version to
paris
(#1684)
- Force using utf-8 for reading contracts (#1712)
- Fix verification for same named files (#1677)
KeyError
when removing a contract (#1689)
1.19.3 - 2023-01-29
- Ganache 7.7.x support (#1652)
- Anvil support, you can now access trace, events and return_value for anvil transactions (#1652)
- Removes
eth-abi
depreciation warnings (#1639) - Bump web3.py dep to support async provider in threaded applications (#1664)
1.19.2 - 2022-10-16
- Support for remappings in
from_explorer
(#1596)
1.19.1 - 2022-08-07
- Handle version bytecode for Vyper
>=0.3.4
(#1578) - Handle Vyper
>=0.3.4
coverage data generation breaking project compilation (#1586) - Handle null value of
to
field in transaction receipt so that contract deploying with Anvil works properly (#1573) - Avoid removing dependencies from the build (#1564)
1.19.0 - 2022-05-29
- Initial support for Anvil, a blazing-fast local testnet node implementation in Rust (#1541)
- Support configurable initial wallet balance, chain id, and gas limit.
StopIteration
when compiling some Vyperv0.3.3
contracts (#1547)
1.18.2 - 2022-05-15
- Subscribe to events, with callbacks, using the corresponding contract instance (#1453)
- Retrieve events that have occurred between two blocks using the corresponding contract instance (#1453)
- Listening for an event using the associated contract instance (#1453)
- Allow cache disabling when forking with ganache (#1473)
- Detect 0xsplits clone proxies (#1524)
- Fix download of dependencies with special characters in tag/version (#1470)
- Deepcopy config so that disconnecting and reconnecting to networks works fully (#1466)
- Hardhat integration on Windows (#1482)
- Handle equal sign in network RPC address (#1450)
ReturnValue
comparison on tuples containing strings (#1476)- Ensure
.env
file exists on installed packages (#1504) - Bug when highlighting source code in GUI (#1512)
- Bug when highlighting opcodes in GUI (#1513)
1.18.1 - 2022-02-15
- Correctly modify chain time when using
chain.mine
with Ganache v7 (#1438) - Ensure
.env
file exists for installed packages (#1504)
1.18.0 - 2022-02-14
- Support for Ganache v7 (#1409, #1410)
- Add
override
argument to contract methods which allows changing the state before the call (#1412) - Allow to override EVM version per language (#1418)
- Support for Alchemy via
WEB3_ALCHEMY_PROJECT_ID
environment var (#1401) - Support Ganache unlimited contract size (#1424)
- Added a new solidity compiler setting
use_latest_patch
inbrownie-config.yaml
to use the latest patch version of a compiler based on the pragma version of the contract (#1383) - Add cli flag
-r
for raising exceptions to the caller instead of doing a system exit (#1394)
- Force files to be opened as UTF-8 (#1377)
- Fix incremental compilation failing because of mismatching compiler versions (#1411)
1.17.2 - 2021-12-04
- Bump deps to support vyper
v0.3.1
- Support linked libraries in source verification (#1335)
- Check for regex match when locating contract names in source (#1363)
1.17.1 - 2021-11-07
- Add support for
ARBISCAN_TOKEN
env var (#1319) - Add Avalanche to default networks and support for snowtrace (#1332)
- Transactions are rebroadcasted until they appear in the mempool (#1327)
- Avoid caching on chains with short blocktimes (#1297)
- Match single/double quote paths in source verification (#1323)
- Change use of
getcontext()
(#1310) - IPv6-aware Hardhat (#1309)
1.17.0 - 2021-10-13
- Arguments from the command line can now be passed to brownie scripts. (#398)
- Fix etherscan verification w/ new solidity flattener (#1283)
- Drop py36 support and add py39 to CI/dev tooling (#1289)
- Bump dependencies (#1277)
- Fix missing source in source object, grab from filesystem (#1290)
- Add harmony mainnet to default network config(#1286)
- Better panic messages for contract calls (#1275)
- Handle missing
gasPrice
ineth_getTransaction
(#1285)
1.16.4 - 2021-09-21
- Add
only_confirmed
as an optional kwarg forhistory.clear
(#1251) - Add
.env
to default project gitignore (#1249)
- Allow numbers in project names (#1254)
- Various Arbitrum related fixes (#1255)
- Pass solc version when compiling ABI (#1243)
- Correctly handle Erigon traces (#1245)
- Replace EIP1559 tx's with the same tx type (#1250)
1.16.3 - 2021-09-04
- Add API token to verify sources on ftmscan (#1226)
- Add
arbitrum-main
to default networks innetwork-config.yaml
(#1235)
- Prevent brownie from crashing when skipping tests with -s (#1220)
- Thread safety for
multicall
(#1233)
1.16.2 - 2021-08-24
- Allow specifying password when saving an account (#1216)
1.16.1 - 2021-08-16
- Set default values for
max_fee
andpriority_fee
(#1206)
- Recursively kill all RPC child processes on exit (#1200)
- Issue with testing reverted contracts not found in deployment map (#1195)
- Fix issue with missing contracts in coverage report (#1178)
- Use
eth.get_block
to avoid deprecated method warning (#1203) - Correctly handle functions outside contracts when generating pcMap (#1205)
1.16.0 - 2021-08-08
- Initial support for Hardhat Network as an alternative to Ganache (#1043)
- Support for EIP-1559 transactions (#1179)
- Added
LocalAccount.sign_defunct_message
method to signEIP-191
text messages (#1163)
-Preserve active input when writing to the console (#1181) -Modifications to internal flow when handling transactions, fixes some threadlock issues (#1182)
1.15.2 - 2021-07-26
- Bump
py-solc-ast
version to fix AST issues with solc>=0.8.3
(#1165)
1.15.1 - 2021-07-23
- Bugfix with caching
eth_sendTransaction
and related RPC calls (#1160)
1.15.0 - 2021-07-22
- Add support remapping with a sub-folder (like OpenZeppelin/openzeppelin-contracts-upgradeable, ref: #1137)
- Add polygon network integration (#1119)
- Add support for
POLYGONSCAN_TOKEN
env var (#1135) - Add Multicall context manager (#1125)
- Add initial support for Solidity 0.8's typed errors (#1110)
- Add xdai network integration (#1136)
- Added
LocalAccount.sign_message
method to signEIP712Message
objects (#1097) - Accept password as a kwarg in
Account.load
(#1099) - Basic support for clef as an account manager (allows hardware wallets) (#1104)
- Updates to support Vyper
v0.2.14
(#1155)
- Fixed subcalls to empty accounts not appearing in the subcalls property of
TransactionReceipts
(#1106) - Alert message bug (#1094)
- Do not assume latest nonce is highest nonce when handling multiple pending tx's (#1098)
- Accept
Wei
objects in gas strategies (#1113) - Do not warn when using
no_call_coverage
as a pytest mark (#1150)
1.14.6 - 2021-04-20
- Upgraded web3 dependency to version 5.18.0 (#1064)
- Upgraded pytest dependency to version 6.2.3 (#1065)
- Upgraded hypothesis dependency to version 6.10.0 (#1066)
1.14.5 - 2021-04-16
- Added documentation detailing how private Github repositories can be used as a package installation source.
- Add passphrase kwarg to
Account.from_mnemonic
(#1050)
- Include
chainId
field when signing transactions (#1056)
- Fixed a formatting issue on the new environment variable section (#1038)
- Fixed Github package installation failing for private repositories (#1055).
- Adjusted Github API token error message so that it correctly emits when auth failure occurs (#1052)
- Remove
__ret_value__
prior to writing console output (#1057) - Handle missing contract when generating transaction receipt (#1058)
StopIteration
issues within receipts (#1059)- Do not cache
eth_newBlockFilter
(#1061)
1.14.4 - 2021-04-05
- Gas report also shows average price for only confirmed txs (#1020)
- Add project to brownie namespace within console (#1029)
- Balance contract member override (#1030)
- Correct frame in pytest interactive debug mode (#1034)
1.14.3 - 2021-03-27
- Support for
BSCSCAN_TOKEN
env var (#1017)
- Ensure node client supports filters before enabling caching middleware (#1009)
- Support
abicoder v2
pragma when verifying source code (#1018)
1.14.2 - 2021-03-20
- Attaching to dockerized RPC-clients works on OSX without sudo (#995)
- Bug when calling
chain.mine
without a timestamp (#1005)
1.14.1 - 2021-03-19
- Improve logic around
eth_getCode
caching to consider selfdestruct via delegate call (#1002) - Standardize process of adding middlewares upon connection (#1001)
1.14.0 - 2021-03-18
- Generalized RPC logic allowing (limited) use of
geth --dev
as a local test network (#998) - RPC call caching via web3 middleware (#997)
- Allow tests to target project outside the current working directory via
--brownie-project
cli flag (#996) - Add BSC mainnet and fork-mode to default networks (#961)
export BROWNIE_LIB=1
to install brownie with soft pins. Also ensured hard pins for all dependencies are set. (#993)
1.13.4 - 2021-03-14
- During pytest interactive debugging ,
continue
now exits the console to run the next test (#989)
- Issue around the "optimizer revert" in solidity 0.8.2 (#988)
1.13.3 - 2021-03-08
- Option to choose console editting mode (#970)
- Strip whitespace from
address_or_alias
(#978) - Automatic source code verification on BscScan (#962)
- Heuristic for nonpayable function revert in Vyper
v0.2.11
(#979)
1.13.2 - 2021-02-28
- Load installed packages via
project.load
(#971)
brownie run --interactive
enters the console with the namespace of the successfully executed function (#976)
- Bump dependency version for eth-event to 1.2.1 to mitigate the topic generation bug for events with dynamic/fixed size tuple array inputs (#957)
- Iterate over network connections instead of local process list to support RPC-attaching with host-based and dockerized RPC clients (#972)
- Resolve hostnames provided in host network field to the actual IP when RPC-attaching (#972)
- Correctly handle non-push instructions when parsing compiler outputs (#952)
- Issue with implementation contract addresses pulled from
eth_getStorageAt
using Ganachev6.12.2
(#974)
1.13.1 - 2021-01-31
- Verify that instruction is
PUSH
before popping pushed bytes (#935) - Handle empty return value from
eth_getStorageAt
(#946) - Do not decode event logs immediately (#947)
1.13.0 - 2021-01-09
- Automatic source code verification on Etherscan (#914)
- Allow replacing transactions that were broadcasted outside of Brownie (#922)
- Add
decode_input
,decode_output
andinfo
methods toOverloadedMethod
object (#925)
- Lazily decode events for confirmed transactions (#926)
1.12.4 - 2021-01-03
- Use
ReturnType
instead oflist
for some_EventItem
return values (#919) - Only decode events in reverting transactions upon request (#920)
- Correctly handle malformed calldata in subcalls (#913)
- Brownie bake uses the default branch instead of assuming
master
(#917)
1.12.3 - 2020-12-26
- Exposed
chain_id
andnetwork_id
ganache-cli parameters. Forked networks retainchain_id
. (#908) - Show more information about events in
TransactionReceipt.info
(#898) - Support for Solidity error codes (#906)
TxHistory.wait
to wait for all pending transactions (#910)
- Handle missing source nodes due to Yul optimizer (#895)
- Typo in link to mixes (#886)
- Fixes for tracebacks and dev revert strings in Solidity 0.8.x (#907)
- Console output for automatically repriced transactions (#909)
1.12.2 - 2020-12-04
- Detect EIP1822 proxies
Contract.from_explorer
(#881) - Support for EIP 1967 proxy pattern in
Contract.from_explorer
(#876) ContractContainer.decode_input
(#879)
- Build artifacts for dependencies are now saved at
build/contracts/dependencies
(#878)
- Ensure receiver address is checksummed when calling
eth_estimateGas
(#880)
1.12.1 - 2020-11-28
- Append zero-bytes when expected size of memory exceeds actual size (#868)
1.12.0 - 2020-11-24
TransactionReceipt.replace
for rebroadcasting pending transactions (#846)- Gas strategies for automatic transaction pricing and replacement (#847)
- Allow broadcasting reverting transactions in a live environment (#854)
- Add
timedelta
as a kwarg inchain.mine
(#856) require_network
pytest marker (#858)TransactionReceipt.dev_revert_msg
to access the dev revert string when there is a regular revert message (#860)- Allow targetting dev revert string in
brownie.reverts
(#861) - Support regex in
brownie.reverts
(#864)
- Improved handling of trace queries and related exceptions (#853)
- Disallow assignment over contract functions (#855)
skip_coverage
andno_call_coverage
are now markers, the fixtures have been deprecated (#859)- Improved exception messages for contract calls missing the
"from"
field (864)
- Address resolution in
Contract.at
(#842) - Handle undecodable revert messages within subcalls (#843)
- Bug when installed packages contain an
interfaces
folder (#857)
1.11.12 - 2020-11-04
timestamp
kwarg forchain.mine
(#838)ETH_ADDRESS
constant (#835)- show nonce in console output for pending transactions (#833)
- Allow use of
ProjectContract
in tx "from" field on development networks (#836) - Do not attempt to open debugging console when the failing test has not been collected due to a
SyntaxError
(#834)
1.11.11 - 2020-10-31
ZERO_ADDRESS
constant is now available from main namespace (#830)- Include nonce in
stdout
output when broadcasting a transaction (#833)
brownie bake
project names are no longer case sensetive (#829)
1.11.10 - 2020-10-23
- During testing, do not connect to network until immediately before running tests (#819)
- Vyper 0.2.5 non-payable revert error no longer displays the entire contract (#812)
- Handle correct
ConnectionError
when pulling Vyper versions (#815) - Typo in
gasPrice
during gas estimation (#817) - Handle
0x
when parsing tuples with black for call trace (#818) - Console completions for
Contract.deploy
(#820)
1.11.9 - 2020-10-11
- Include
vyper
library version in installed versions, after installing a new version (#803) - Understand
Contract
objects in thefrom
field of a transaction dict (#801)
1.11.8 - 2020-10-07
- Automatically add
tx
as a local variable during interactive debugging (#796)
- Gas buffer is not applied to transactions between EOAs (#798)
- Use
vyper
instead ofvvm
for compilation, where possible (#797)
- Correctly highlight skipped, previously failing tests in red when using
-U
flag (#795)
1.11.7 - 2020-10-02
- Support for Etherscan's multi-file source output (#786)
- Improvements to console hinting and autocompletion (#788)
- Bump suggested Ganache version to
v6.11.0
(#787)
- Update non-payable heuristic for Vyper
v0.2.5
(#784)
1.11.6 - 2020-09-26
Account.get_deployment_address
(#763)- Use
eth_unlockUnkonwnAccount
to unlock arbitrary accounts in development mode (#776)
- Generalize
sys.argv
handling forbrownie test
to allow arbitrary flags (#773) - Disable
stdout
capture when compiling a project prior to running tests (#774) - Attempt to determine proxy implementation without relying on Etherscan APi output (#777)
- Add
gas_limit
kwarg forAccount.estimate_gas
(#764) - Improve exception message on bytecode exceeding 24kb limit (#767)
- Properly handle no installed compiler when using
compile_source
(#768)
1.11.5 - 2020-09-16
EthAddress
is now hashable (#756)- Warn instead of raising when an event has an incorrect number of topics (#759)
- More trace fixes (#760)
1.11.4 - 2020-09-13
- Default interfaces in
InterfaceContainer
(#754) --size
flag forbrownie compile
to see deployed bytecode sizes (#750)
- Improve error message for
AttributeError
fromProjectContract
(#753)
- Check min solc version when using
Contract.from_explorer
(#752) - Issues related to interfaces and contracts using the same name (#751)
1.11.3 - 2020-09-11
InterfaceConstructor.selectors
(#748)
- Ensure
VirtualMachineError.__str__
always returns a string (#747) - Expanding traces when the contract is unknown (#745)
1.11.2 - 2020-09-07
chain.new_blocks
for iterating over new blocks (#742)
- Various fixes involving transaction traces and subcalls (#741)
1.11.1 - 2020-09-06
gas_buffer
setting for transactions (#739)
- Formatting issue when expanding call traces (#737)
1.11.0 - 2020-08-28
- Support for multiple Vyper versions (#731)
- Use
solcx
v1.0.0 (#733) - Always enter console when using
brownie run -I
(#732) - Allow namespace collisions between interfaces (#734)
- Ignore
TempProject
contracts when calculating coverage (#730)
1.10.6 - 2020-08-18
- Warn instead of raising when contract has a
balance
function (#721) brownie run
can run scripts outside of projects (#722)
- Allow using contract types in conftest (#719)
1.10.5 - 2020-08-07
- Container repr outside of console (#707)
- Do not shift gas values for
ganache-cli>=6.10.1
(#704) - Handle multiple pragma statements in a single source (#708)
- Do not call undo on general exceptions during call-as-tx (#713)
- Correctly handle structs and enums outside of contracts (#715)
1.10.4 - 2020-07-30
--version
cli flag (#705)
- Do not mutate hypothesis settings (#704)
1.10.3 - 2020-07-20
- Do not show stateful spinner when stdout is not suppressed (#696)
- Decoding error with internal revert message (#697)
- Transaction verbosity during tests (#695)
- Check for
__getitem__
/__call__
prior to showing type hints (#694)
1.10.2 - 2020-07-18
- Decoding error on internal call to an invalid function in a known contract (#691)
chain.redo
across multiple transactions (#692)
1.10.1 - 2020-07-17
chain
fixture returns expected object (#689)
1.10.0 - 2020-07-16
TransactionReceipt.call_trace
includes inputs and return values (#679)chain
object (#681)--silent
flag forbrownie run
(#680)address
member for decoded events (#682)
- Various
rpc
methods have been deprecated in favor of the newchain
object (#681) - Improvements to console autocompletion / type hints (#683)
- Properly handle Solidity source maps that are too long (#684)
1.9.8 - 2020-07-09
- Infinite loop when querying implementation contract from Etherscan (#672)
- Check return status before streaming brownie mix (#673)
- Meaningful error message on failed trace (#674)
- Handle incomplete Solidity source map (#676)
1.9.7 - 2020-07-05
- Iterate trace in reverse when looking for revert reason (#663)
TransactionReceipt
verbosity and minor fixes (#665)
1.9.6 - 2020-07-04
- Reduce length of traceback on failed Vyper compilation (#661)
- Run calls as transactions when catching dev revert string (#659)
- Do not reset local chain when closing Brownie (#660)
1.9.5 - 2020-07-03
- Support for Vyper
v0.2.1
(#656) - Updated development network config to match mainnet's latest gas limits (#650)
- Heuristic for non-payable function reverts based on changes in Solidity
v0.6.9
(#647) brownie run
exit status when using--interactive
flag (#655)
1.9.4 - 2020-06-21
- Http Requests now send a custom User-Agent (Fixes Kovan api requests) (#643)
- Ensure nonce increments prior to sending a new transaction (#645)
1.9.3 - 2020-06-19
- Accounts can now be unlocked on development networks (#633)
- Parity error messages (#631)
- Geth error messages on reverted
eth_call
(#639) - Etherscan source code returned as compiler JSON input (#637)
- Enter correct frame on exception with
brownie run -I
(#638) - Always exit with non-zero status on an unhandled exception (#640)
1.9.2 - 2020-06-08
- Filter report outputs by source path or contract name (#626)
- Delete
required_confs
from transaction parameters prior to making a call (#620) - Handle coverage data and gas profile as
pytest
reports, fixes Windows formatting issues (#620) - Filter fixtures from namespace when using interactive test debugger (#627)
1.9.1 - 2020-06-07
- Return actual call when running calls as transactions (#614)
- Non-zero exit status when using
brownie test
(#616)
1.9.0 - 2020-06-05
- Project folder structure is now configurable (#581)
- Deployment artifacts can now be saved via project setting
dev_deployment_artifacts: true
(#590) - All deployment artifacts are tracked in
deployments/map.json
(#590) required_confs = n / {'required_confs: n}
argument for transactions. Will wait for n confirmations before processing the tx receipt.n = 0
will immediately return a pending receipt. (#587)tx.confirmations
shows number of confirmations,tx.wait(n)
waits untiltx
hasn
or more confirmations. (#587)load_source
hook point (#584)- Support for BIP39 mnemonics (#585)
- Expose
block_identifier
for contract calls (#596) length
kwarg forstrategy('address')
(#607)
tx.call_trace()
now displays internal and total gas usage (#564)- Default nonce for transactions now takes pending transactions into account. (#597)
- Raise more expressive exception on stale fork (#598)
- Automatically add middleware when connecting to POA networks (#602)
- Hypothesis output includes code highlights (#605)
- Geth Traces depth reduced (#562)
- Ganache gasCost in traces (ganache bug) (#562)
- Decoding error when contracts use the same event signature with different argument indexing (#575)
- Repeated alerts will now run indefinitely, instead of twice (#608)
- Catch
ZombieProcess
andNoSuchProcess
when attaching to ganache in OSX (#574) - Snapshotting during failed
@given
tests (#591) Rpc.undo
correctly rewinds to immediately before a transaction (#604)
A big thank you to @matnad for many contributions during this release!
1.8.9 - 2020-05-26
- Raise
ValueError
instead ofVirtualMachineError
when the returned RPC error does not contain a data field (#555) - Improve readability of exception when compilation fails while running pytest (#556)
1.8.8 - 2020-05-24
- Check
web3.eth.accounts
for new unlocked accounts when callingAccounts.at
(#551)
- Apply timeout setting to all web3 provider types (#549)
KeyError
when handling certain types of RPC errors (#550)
1.8.7 - 2020-05-23
--interactive
flag when usingbrownie run
(#547)
- Allow connections to
wss://
endpoints (#542) - Improved
--gas
report (#543) - Adjust how gas prices are handled to allow use of web3 gas price API (#530)
- Compiler error when on moving contracts (#545)
- Allow
timeout
as a field inbrownie networks
CLI (#533) - Issues with interactive debugging in Windows (#544)
- Handle selfdestructed contract during deployment (#546)
1.8.6 - 2020-05-19
contract_strategy
for drawing objects from aContractContainer
(#528)
- Warn on direct import of
hypothesis.given
(#526) - Standardize revert exceptions between calls and transactions (#527)
- Ensure correct frame for locals and globals with pytest console debugging (#523)
- Add failed tx's to undo buffer prior to raising (#524)
1.8.5 - 2020-05-14
Account.gas_used
(#518)
- Decoding error with arrays of tuples (#517)
- Allow pasting multiple commands into the console (#519)
- Minor pytest fixes (#521)
1.8.4 - 2020-05-09
Wei.to
for unit conversion (#501)- Exposed
block_time
,default_balance
andtime
ganache-cli parameters (#501) TransactionReceipt.timestamp
(#504)
brownie-config.yaml
can now specify ganache-cli parameters (#501)- Global variables are now available when using the console for debugging (#506)
- Simplified syntax for calling overloaded methods (#507)
1.8.3 - 2020-05-06
- Exposed
nonce
parameter to deploy, transfer and transact methods (#488) - Obtain EVM compiler version and proxy information from Etherscan API (#492)
- Better sorting of gas used output (#491)
Rpc.undo
/Rpc.redo
with non-instant confirmations (#483)- Minimum solc version when using
Contract.from_explorer
on OSX (#490) - Allow path remappings and imports from packages in interfaces (#495)
1.8.2 - 2020-05-04
- Allow leading underscores in project root path (#478)
- Handle non-string values in pytest print function (#479)
- Do not display
.None
for functions name of proxied contract calls (#481)
1.8.1 - 2020-05-02
- Exposed
silent
parameter toAccount.transfer
(#472)
- Import statements within project interfaces (#475)
1.8.0 - 2020-04-30
- Interactive debugging mode when running tests (#456)
Rpc.undo
andRpc.redo
(#457)InterfaceContainer
andInterfaceConstructor
(#463)- Allow contract deployment via
Account.transfer
(#464)
- Do not raise on non-zero block height (#461)
- When fetching source code, call
getabi
ifgetsourcecode
fails (#462)
- Add missing args to pytest
print
method (#460)
1.7.5 - 2020-04-26
- Importing keystore files from CLI without
.json
suffix (#448) - Properly display reports in GUI (#449)
1.7.4 - 2020-04-25
- Do not repeat queries for unverified source (#445)
KeyError
when usingautofetch_sources
(#445)- "No owner" issue with contract call during coverage evaluation (#446)
1.7.3 - 2020-04-23
- Expanded support for use of
--fork
with Ganache (#437)
- Remove outdated check for project-inside-project (#438)
1.7.2 - 2020-04-22
- Properly handle undecodable events (#433)
1.7.1 - 2020-04-20
- Do not allow
brownie init
on a directory that isn't empty (#428) - Missing dev revert strings on
require
as last statement in a function (#424) - Colorful output when skipping tests without
xdist
(#422)
1.7.0 - 2020-04-17
- Install packages from Github or ethPM using
brownie pm
CLI commands (#390) - Manage network settings using
brownie networks
CLI commands (#408) - Fetch contract sources from Etherscan API with
Contract.from_explorer
(#413) - Maintain persistent deployment records in SQLite database (#413)
- Use
prompt_toolkit
in console to enable autocompletion, input suggestions and code highlights (#416) - View NatSpec documentation for contract functions with
ContractCall.info
(#395) Accounts.default
to set default account for contract deployments (#391)- Cleaner output when using the
-s
flag with pytest (#397)
- All configuration file settings are now optional and no config file is added when creating a new project (#408)
- Network settings are handled independently of projects (#408)
- Paths are referenced via pointers in build artifacts (#403)
Contract
init method deprecated in favor offrom_ethpm
orfrom_abi
class methods (#413)brownie ethpm
CLI tool temporarily deprecated in favor ofbrownie pm
until ethPM v3 is official (#390)
- Source minification (#384)
- Recursion errors when a library references itself (#393)
- Incorrect source highlights when running tests across multiple projects at once (#402)
1.6.9 - 2020-04-03
- Encoding bug for lists of tuples
- Allow transfer to unchecksummed hexstring address
- Color output for
dir
in console - Ignore json files in contracts folder
ZeroDivisionError
during coverage evaluation when nothing has changed
1.6.8 - 2020-03-30
- Use Vyper v0.1.0-beta17
- Bug when determining dependencies of a
Contract
object
1.6.7 - 2020-03-09
INVALID
instructions with no related ast node (assembly)- Missing f-strings in compiler output
1.6.6 - 2020-03-03
- MythX plugin update (PR)[eth-brownie#365]
- MythX plugin documentation update (PR)[eth-brownie#366]
1.6.5 - 2020-02-19
- Fix issues from missing source offsets in Solidity v0.6.3
- Do not assume pytest will run test functions sequentially (adds support for
-k
flag)
1.6.4 - 2020-02-11
- Show progress spinner when running stateful tests
- Update
brownie analyze
based on updates to MythX API
- Allow import of project
ContractContainer
instances frombrownie
when running tests
1.6.3 - 2020-02-09
--stateful
flag to only run or skip stateful test cases- EIP-170 size limits: warn on compile, give useful error message on failed deployment
- Unexpanded transaction trace is available for deployment transactions
- Warn instead of raising when an import spec cannot be found
- Handle
REVERT
outside of function when generating revert map
1.6.2 - 2020-02-05
- Retrieve config file from brownie/data when generating new project
1.6.1 - 2020-02-03
- Bump dependency versions, notably web3.py v5.5.0 to support the new ENS registry
1.6.0 - 2020-02-02
- Hypothesis integration for property-based and stateful testing
TransactionReceipt.new_contracts
- list of contracts deployed during a contract callTransactionReceipt.internal_transfers
- information on internal ether transfers during a transaction
- Refactor
brownie.convert
into sub-modules - Use
eth_abi.grammar.parse
when formatting contract inputs and outputs - Replace
docopt
withdocopt-ng
(fixes deprecation warnings) ContractContainer.at
compares actual bytecode to expected, returnsContract
object if they do not match
- Custom color settings in the project config file
- bug preventing
pytest.default_contract_owner
config setting from having any effect - threading exception when contract deployment fails
1.5.1 - 2020-01-21
- Correctly isolate path and nodeid from test cases inside classes
- Allow
""
and"0x"
when converting to bytes, disallow booleans - Tests can run from inside a project subfolder
- Preserve pytest
rootdir
when a Brownie project is in a subfolder of a Python project
1.5.0 - 2020-01-20
interfaces/
folder for interface sources- Support for
pytest-xdist
- Tested support for Vyper with ethPM
- Progress bar when downloading a Brownie mix
get_abi
method for Solidity and Vyper compilers- Create
.gitignore
and.gitattributes
when initializing new project
- Move check for new contract sources from
Project.__init__
toProject.load
- Set
istanbul
as default EVM ruleset, run tests againstganache-cli
v6.8.2
pytest.reverts
is deprecated in favor ofbrownie.reverts
- Check pragma statements when determining if a contract should be recompiled
- Understand
abstract contract
when regexing contract source
1.4.2 - 2020-01-10
- Add Ethereum Classic networks in
brownie-config.yaml
- Accept
atlantis
andagharta
as EVM ruleset options inbrownie-config.yaml
- Use Vyper v0.1.0-beta16
- Create
~/.brownie/accounts
whenaccounts
commandline interface is called
1.4.1 - 2020-01-09
- Do not install solc until required for compilation
- Adjust compiler config settings to be less Solidity-centric
- Compiler bug when generating Vyper branch paths
- Permission error when launching Brownie with Ganache already running on OSX
1.4.0 - 2020-01-07
- support for Vyper smart contracts (v0.1.0-beta15)
brownie accounts
commandline interface
1.3.2 - 2020-01-01
- error message for modulus by zero
- progress bar when installing new version of solc
1.3.1 - 2019-12-25
- better error message for division by zero
- Correctly save minified source offsets in build artifacts
- Coverage evaluation: isolate
active_branches
between jumps
1.3.0 - 2019-12-20
- support for Solidity v0.6.0
- allow
istanbul
as choice for EVM ruleset (default is stillpetersburg
) - allow
dev:
revert comments forassert
statements - better error messages when sending ether to nonpayable function, or trying to access an invalid array index
- GUI properly highlights
JUMPDEST
targets within first 256 bytes - Close IO objects to avoid warnings on exit
1.2.1 - 2019-11-28
- cache available solc compiler versions to avoid repeated calls
- store data files in
~/.brownie/
- removed Tkinter dependency when not loading the GUI
1.2.0 - 2019-11-23
- ethPM integration
ProjectContract
objects persist between sessions (when enabled in the config file)
scripts.run
only works when a project is loaded, supports multiple loaded projects
- use
isinstance
instead oftype
for conversions, fixes hexstring comparison bug - pretty printing for more objects in the console
- properly display
SyntaxError
in console when there is no source highlight - improved regex statement for finding individual contracts within source files
- favor
==x.x
dependencies over>=x.x <x.y
, removed deps-of-deps to reduce conflicts - delete stale compiler artifacts from
build/contracts/
when contract name has changed within the same source file
1.1.0 - 2019-11-04
- support for Python 3.8
- project config files use
YAML
formatting
1.0.1 - 2019-10-13
- regex pattern for finding contracts in source
- string formatting in cli
- calling
rpc.attach
with no port set
1.0.0 - 2019-09-24
- Integration with MythX via
brownie analyze
CLI command - Support for ENS domains
- Finalize public API, many minor edits!
- replace
broadcast_reverting_tx
withreverting_tx_gas_limit
in config - Allow environment variables in config network.hosts
- Add PEP484 annotations to codebase
- Linting:
black
,mypy
,isort
Thanks to @crawfordleeds and @dmuhs for their contributions on this release!
Beta releases do not adhere to semver.
1.0.0b11 - 2019-08-18
- Require web3.py version 5, updates based on breaking changes
- Add support for ABIEncoderV2
- Add Project class, allow opening multiple projects at the same time
- Determine solc version using pragma, allow multiple versions in one project
- Set EVM version in config file
- Allow config file comments, change structure
- Add PublicKeyAccount and Contract (via ABI), allow tracebacks on unknown contracts
- Expanded Alert functionality
- Windows bugfixes
1.0.0b10 - 2019-07-21
- Use pytest for unit testing
- remove check module, add check.equals comparison logic to ReturnValue
- Modify coverage evaluation to work with pytest
- remove brownie.types package, move classes to related modules
- replace wei function with Wei class, expand functionality
- add EthAddress and HexString helper classes
- improved formatting for tx.traceback and tx.call_trace
1.0.0b9 - 2019-07-08
- Support for overloaded function names
- Bugfixes
- Minor code changes and improvements
1.0.0b8 - 2019-06-30
- Rebuild of coverage evaluation functionality using contract ASTs
- Split coverage eval results between branches and statements, add GUI support
- Add tracebacks for failed transactions, better call trace formatting
- Allow contract minification before compiling
- Enable output console in GUI (very basic for now)
- Rebuild brownie console using code.InteractiveConsole
- Significant code refactoring and reorganization
- Emphasis on standardized structure across modules and increased ease of testing
- More tests, coverage at 88%
1.0.0b7 - 2019-05-24
- Commented dev revert strings
- Custom exception classes
- Standardize contract outputs
- Add Travis and Tox, test coverage at 67%
- Many bugfixes
1.0.0b6 - 2019-05-14
- Changes to ContractConstructor call arguments
- Bugfixes and minor changes
1.0.0b5 - 2019-05-13
- Use relative paths in build json files
- Revert calls-as-transactions when evaluating coverage
- Significant refactor and optimizations to coverage analysis
- changes to coverageMap format, add coverageMapTotals
- Save coverage data to reports/ subfolder
- Improvements to GUI
1.0.0b4 - 2019-05-08
- Add broadcast_reverting_tx flag
- Use py-solc-x 0.4.0
- Detect and attach to an already active RPC client, better verbosity on RPC exceptions
- Introduce Singleton metaclass and refactor code to take advantage
- Add EventDict and EventItem classes for transaction event logs
- cli.color, add _print_as_dict _print_as_list _dir_color attributes
- Add conversion methods in types.convert
- Remove brownie.utils package, move modules to network and project packages
- Bugfixes and minor changes
1.0.0b3 - 2019-04-26
- major code re-organization and refactoring
- allow skipping contracts with _
- modify test coverage file format
- merge test and coverage components of cli
- only run tests / coverage evaluation if related files have changed
- integrate opview as brownie gui
- many bugfixes and minor changes
1.0.0b2 - 2019-04-14
- add compile command to cli
- bugfix in pypi package requirements
- show numbers on skipped and failing tests
1.0.0b1 - 2019-04-11
- major code re-organization, brownie now works as a package and is installable via pip
- remove os.path in favor of pathlib.Path - allow Windows support
- rebuild brownie console, use compile to check for completed statements
- remove Accounts.mnemonic
- transaction.history is now a custom data class
- save and load accounts using standard encrypted keystore files
- add brownie bake to initialize projects from template
- many bugfixes and minor changes
0.9.5 - 2019-04-02
- check.true and check.false require booleans to pass
- Allow subfolders within tests/
- Only run specific tests within a file
- More efficient transaction stack trace analysis
- Improvements to compiler efficiency and functionality
- account.transfer accepts data
- add ContractTx.encode_abi
- add ContractContainer.get_method
- Bugfixes
0.9.4 - 2019-02-25
- Improved console formatting for lists and dicts
- Run method returns list of scripts when no argument is given
- Do not keep mnemonics and private keys in readline history
- Use KwargTuple type for call return values
- Bugfixes
0.9.3 - 2019-02-20
- Raise ValueError when attempting to modify non-existant config settings
- Modify install script
- Minor bugfixes
0.9.2 - 2019-02-19
- Add --stable and --dev flags to swap between master and develop branches
- Better verbosity for check.reverts exception string
- Config settings are reset when network resets
- Add default_contract_owner setting
0.9.1 - 2019-02-18
- Add --always-transact flag for test and coverage
- Do not show individual methods when contract coverage is 0%
- Minor bugfixes
0.9.0 - 2019-02-16
- Initial release