Skip to content

Latest commit

 

History

History
1228 lines (977 loc) · 71.9 KB

CHANGELOG.md

File metadata and controls

1228 lines (977 loc) · 71.9 KB

CHANGELOG

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.5 - 2024-05-22

Fixed

  • Handle missing blockNumber while awaiting confirmation (#1774)
  • Search parent paths for file import during source verification (#1776)

1.20.4 - 2024-05-08

Fixed

  • Fall back to ABI when Contract.from_explorer compilation fails (#1772)

1.20.3 - 2024-05-05

Added

  • Config setting to disable short-term caching (#1767)
  • Support for blast chain contract verification (#1765)
  • Support for additional anvil cmdline args (#1756)

Fixed

  • 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

Added

  • Support for vyper 0.3.10 new pragma format (#1747)

Changed

  • Loosen package installation restrictions (#1753)

Fixed

  • Reset multicall call code even if call reverts (#1746)
  • TypeError when outputting custom errors (#1751)

1.20.1 - 2024-02-12

Added

  • verbose option for multicall debugging (#1743)

Fixed

  • handle exceptions within caching middleware (#1742)
  • update docopt-ng to support latest python (#1738)
  • camelCase to snake_case updates (#1737)

1.20.0 - 2024-02-02

Changed

  • Add support for Python 3.12, drop support for Python 3.9 (#1735)

Removed

  • Support for pythx (#1733)
  • Support for ethpm (#1734)

1.19.5 - 2024-01-31

Added

  • Support for custom / typed errors (#1728)

Changed

  • Default to EIP1559-style transactions on live networks (#1727)

Fixed

  • Readthedocs missing config file (#1729)

1.19.4 - 2024-01-29

Added

  • 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

Changed

  • set default vyper EVM version to paris (#1684)

Fixed

  • 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

Added

  • Ganache 7.7.x support (#1652)

Fixed

  • 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

Added

  • Support for remappings in from_explorer (#1596)

Fixed

  • Handle Vyper immutables (#1623)
  • Correct Moonscan API for Moonbase Alpha testnet(#1611)

1.19.1 - 2022-08-07

Fixed

  • 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

Added

  • Initial support for Anvil, a blazing-fast local testnet node implementation in Rust (#1541)
  • Support configurable initial wallet balance, chain id, and gas limit.

Fixed

  • StopIteration when compiling some Vyper v0.3.3 contracts (#1547)

1.18.2 - 2022-05-15

Added

  • 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)

Fixed

  • 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

Fixed

  • 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

Added

  • 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)

Changed

  • Added a new solidity compiler setting use_latest_patch in brownie-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)

Fixed

  • 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

Changed

  • Bump deps to support vyper v0.3.1

Fixed

  • Support linked libraries in source verification (#1335)
  • Check for regex match when locating contract names in source (#1363)

1.17.1 - 2021-11-07

Added

  • Add support for ARBISCAN_TOKEN env var (#1319)
  • Add Avalanche to default networks and support for snowtrace (#1332)

Changed

  • Transactions are rebroadcasted until they appear in the mempool (#1327)
  • Avoid caching on chains with short blocktimes (#1297)

Fixed

  • Match single/double quote paths in source verification (#1323)
  • Change use of getcontext() (#1310)
  • IPv6-aware Hardhat (#1309)

1.17.0 - 2021-10-13

Added

  • 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)

Fixed

  • Handle missing gasPrice in eth_getTransaction (#1285)

1.16.4 - 2021-09-21

Added

  • Add only_confirmed as an optional kwarg for history.clear (#1251)
  • Add .env to default project gitignore (#1249)

Changed

  • Allow numbers in project names (#1254)

Fixed

  • 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

Added

  • Add API token to verify sources on ftmscan (#1226)
  • Add arbitrum-main to default networks in network-config.yaml (#1235)

Fixed

  • Prevent brownie from crashing when skipping tests with -s (#1220)
  • Thread safety for multicall (#1233)

1.16.2 - 2021-08-24

Added

  • Allow specifying password when saving an account (#1216)

Fixed

  • Hardhat revert string format (#1218)
  • Clef formatter for EIP-1559 transactions (#1211)

1.16.1 - 2021-08-16

Added

  • Set default values for max_fee and priority_fee (#1206)

Fixed

  • 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

Added

  • Initial support for Hardhat Network as an alternative to Ganache (#1043)
  • Support for EIP-1559 transactions (#1179)
  • Added LocalAccount.sign_defunct_message method to sign EIP-191 text messages (#1163)

Fixed

-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

Fixed

  • Bump py-solc-ast version to fix AST issues with solc >=0.8.3 (#1165)

1.15.1 - 2021-07-23

Fixed

  • Bugfix with caching eth_sendTransaction and related RPC calls (#1160)

1.15.0 - 2021-07-22

Added

  • 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 sign EIP712Message 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

  • 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

Changed

  • 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)

Fixed

  • Issue with BSCSCAN_TOKEN (#1062)
  • Correctly load .env values (#1063)

1.14.5 - 2021-04-16

Added

  • Added documentation detailing how private Github repositories can be used as a package installation source.
  • Add passphrase kwarg to Account.from_mnemonic (#1050)

Changed

  • Include chainId field when signing transactions (#1056)

Fixed

  • 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

Added

  • Support for environment variables in brownie config (#1012)
  • Add Fantom to default networks (#980)

Changed

  • Gas report also shows average price for only confirmed txs (#1020)

Fixed

  • 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

Added

  • Support for BSCSCAN_TOKEN env var (#1017)

Fixed

  • 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

Fixed

  • 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

Fixed

  • 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

Added

  • 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)

Changed

  • 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

Added

  • Detect EIP-1167 and Vyper minimal proxies (#984)
  • Decode ds-note events (#985)

Changed

  • During pytest interactive debugging , continue now exits the console to run the next test (#989)

Fixed

  • Issue around the "optimizer revert" in solidity 0.8.2 (#988)

1.13.3 - 2021-03-08

Added

  • Option to choose console editting mode (#970)

Fixed

  • 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

Added

  • Load installed packages via project.load (#971)

Changed

  • brownie run --interactive enters the console with the namespace of the successfully executed function (#976)

Fixed

  • 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 Ganache v6.12.2 (#974)

1.13.1 - 2021-01-31

Fixed

  • 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

Added

  • Automatic source code verification on Etherscan (#914)
  • Allow replacing transactions that were broadcasted outside of Brownie (#922)
  • Add decode_input, decode_output and info methods to OverloadedMethod object (#925)

Changed

  • Lazily decode events for confirmed transactions (#926)

1.12.4 - 2021-01-03

Changed

  • Use ReturnType instead of list for some _EventItem return values (#919)
  • Only decode events in reverting transactions upon request (#920)

Fixed

  • Correctly handle malformed calldata in subcalls (#913)
  • Brownie bake uses the default branch instead of assuming master (#917)

1.12.3 - 2020-12-26

Added

  • Exposed chain_id and network_id ganache-cli parameters. Forked networks retain chain_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)

Fixed

  • 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

Added

  • Detect EIP1822 proxies Contract.from_explorer (#881)
  • Support for EIP 1967 proxy pattern in Contract.from_explorer (#876)
  • ContractContainer.decode_input (#879)

Changed

  • Build artifacts for dependencies are now saved at build/contracts/dependencies (#878)

Fixed

  • Ensure receiver address is checksummed when calling eth_estimateGas (#880)

1.12.1 - 2020-11-28

Fixed

  • Append zero-bytes when expected size of memory exceeds actual size (#868)

1.12.0 - 2020-11-24

Added

  • 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 in chain.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)

Changed

  • Improved handling of trace queries and related exceptions (#853)
  • Disallow assignment over contract functions (#855)
  • skip_coverage and no_call_coverage are now markers, the fixtures have been deprecated (#859)
  • Improved exception messages for contract calls missing the "from" field (864)

Fixed

  • 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

Added

  • timestamp kwarg for chain.mine (#838)
  • ETH_ADDRESS constant (#835)
  • show nonce in console output for pending transactions (#833)

Fixed

  • 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

Added

  • ZERO_ADDRESS constant is now available from main namespace (#830)
  • Include nonce in stdout output when broadcasting a transaction (#833)

Changed

  • brownie bake project names are no longer case sensetive (#829)

Fixed

  • Handle str when looking at traceback paths (#823)
  • Add __ne__ to ReturnValue object (#831)

1.11.10 - 2020-10-23

Changed

  • During testing, do not connect to network until immediately before running tests (#819)

Fixed

  • 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

Added

  • TxHistory.filter method (#804)
  • Allow force-compiling of specific contracts in CLI (#802)

Fixed

  • Include vyper library version in installed versions, after installing a new version (#803)
  • Understand Contract objects in the from field of a transaction dict (#801)

1.11.8 - 2020-10-07

Added

  • Automatically add tx as a local variable during interactive debugging (#796)

Changed

  • Gas buffer is not applied to transactions between EOAs (#798)
  • Use vyper instead of vvm for compilation, where possible (#797)

Fixed

  • Correctly highlight skipped, previously failing tests in red when using -U flag (#795)

1.11.7 - 2020-10-02

Added

  • Support for Etherscan's multi-file source output (#786)
  • Improvements to console hinting and autocompletion (#788)

Changed

  • Bump suggested Ganache version to v6.11.0 (#787)

Fixed

  • Update non-payable heuristic for Vyper v0.2.5 (#784)

1.11.6 - 2020-09-26

Added

  • Account.get_deployment_address (#763)
  • Use eth_unlockUnkonwnAccount to unlock arbitrary accounts in development mode (#776)

Changed

  • Generalize sys.argv handling for brownie 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)

Fixed

  • Add gas_limit kwarg for Account.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

Changed

  • EthAddress is now hashable (#756)
  • Warn instead of raising when an event has an incorrect number of topics (#759)

Fixed

  • More trace fixes (#760)

1.11.4 - 2020-09-13

Added

  • Default interfaces in InterfaceContainer (#754)
  • --size flag for brownie compile to see deployed bytecode sizes (#750)

Changed

  • Improve error message for AttributeError from ProjectContract (#753)

Fixed

  • 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

Added

  • InterfaceConstructor.selectors (#748)

Fixed

  • Ensure VirtualMachineError.__str__ always returns a string (#747)
  • Expanding traces when the contract is unknown (#745)

1.11.2 - 2020-09-07

Added

  • chain.new_blocks for iterating over new blocks (#742)

Fixed

  • Various fixes involving transaction traces and subcalls (#741)

1.11.1 - 2020-09-06

Added

  • gas_buffer setting for transactions (#739)

Fixed

  • Formatting issue when expanding call traces (#737)

1.11.0 - 2020-08-28

Added

  • Support for multiple Vyper versions (#731)

Changed

  • Use solcx v1.0.0 (#733)
  • Always enter console when using brownie run -I (#732)
  • Allow namespace collisions between interfaces (#734)

Fixed

  • Ignore TempProject contracts when calculating coverage (#730)

1.10.6 - 2020-08-18

Changed

  • Warn instead of raising when contract has a balance function (#721)
  • brownie run can run scripts outside of projects (#722)

Fixed

  • Allow using contract types in conftest (#719)

1.10.5 - 2020-08-07

Changed

  • Container repr outside of console (#707)

Fixed

  • 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

Added

  • --version cli flag (#705)

Fixed

  • Do not mutate hypothesis settings (#704)

1.10.3 - 2020-07-20

Changed

  • Do not show stateful spinner when stdout is not suppressed (#696)

Fixed

  • 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

Fixed

  • 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

Fixed

  • chain fixture returns expected object (#689)

1.10.0 - 2020-07-16

Added

  • TransactionReceipt.call_trace includes inputs and return values (#679)
  • chain object (#681)
  • --silent flag for brownie run (#680)
  • address member for decoded events (#682)

Changed

  • Various rpc methods have been deprecated in favor of the new chain object (#681)
  • Improvements to console autocompletion / type hints (#683)

Fixed

  • Properly handle Solidity source maps that are too long (#684)

1.9.8 - 2020-07-09

Added

  • Syntax highlights for Vyper exceptions (#668)
  • Syntax highlights for Solidity exceptions (#675)

Fixed

  • 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

Added

  • max gas limit configuration setting (#664)
  • --failfast flag for hypothesis tests (#666)

Fixed

  • Iterate trace in reverse when looking for revert reason (#663)
  • TransactionReceipt verbosity and minor fixes (#665)

1.9.6 - 2020-07-04

Changed

  • Reduce length of traceback on failed Vyper compilation (#661)
  • Run calls as transactions when catching dev revert string (#659)

Fixed

  • Do not reset local chain when closing Brownie (#660)

1.9.5 - 2020-07-03

Changed

  • Support for Vyper v0.2.1 (#656)
  • Updated development network config to match mainnet's latest gas limits (#650)

Fixed

  • 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

Fixed

  • 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

Added

  • Accounts can now be unlocked on development networks (#633)

Fixed

  • 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

Added

  • Filter report outputs by source path or contract name (#626)

Fixed

  • 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

Fixed

  • Return actual call when running calls as transactions (#614)
  • Non-zero exit status when using brownie test (#616)

1.9.0 - 2020-06-05

Added

  • 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 until tx has n or more confirmations. (#587)
  • load_source hook point (#584)
  • Support for BIP39 mnemonics (#585)
  • Expose block_identifier for contract calls (#596)
  • length kwarg for strategy('address') (#607)

Changed

  • 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)

Fixed

  • 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 and NoSuchProcess 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

Changed

  • Raise ValueError instead of VirtualMachineError when the returned RPC error does not contain a data field (#555)
  • Improve readability of exception when compilation fails while running pytest (#556)

Fixed

  • IPC timeout setting (#554)
  • Pytest import issues (#556)

1.8.8 - 2020-05-24

Changed

  • Check web3.eth.accounts for new unlocked accounts when calling Accounts.at (#551)

Fixed

  • Apply timeout setting to all web3 provider types (#549)
  • KeyError when handling certain types of RPC errors (#550)

1.8.7 - 2020-05-23

Added

  • --interactive flag when using brownie run (#547)

Changed

  • 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)

Fixed

  • Compiler error when on moving contracts (#545)
  • Allow timeout as a field in brownie networks CLI (#533)
  • Issues with interactive debugging in Windows (#544)
  • Handle selfdestructed contract during deployment (#546)

1.8.6 - 2020-05-19

Added

  • contract_strategy for drawing objects from a ContractContainer (#528)

Changed

  • Warn on direct import of hypothesis.given (#526)
  • Standardize revert exceptions between calls and transactions (#527)

Fixed

  • 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

Added

  • Account.gas_used (#518)

Fixed

  • 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

Added

  • Wei.to for unit conversion (#501)
  • Exposed block_time, default_balance and time ganache-cli parameters (#501)
  • TransactionReceipt.timestamp (#504)

Changed

  • 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

Changed

  • 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)

Fixed

  • 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

Fixed

  • 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

Added

  • --disable-warnings flag when running tests (#474)
  • Set custom timeout option for web3 calls (#469)

Changed

  • Exposed silent parameter to Account.transfer (#472)

Fixed

  • Import statements within project interfaces (#475)

1.8.0 - 2020-04-30

Added

  • Interactive debugging mode when running tests (#456)
  • Rpc.undo and Rpc.redo (#457)
  • InterfaceContainer and InterfaceConstructor (#463)
  • Allow contract deployment via Account.transfer (#464)

Changed

  • Do not raise on non-zero block height (#461)
  • When fetching source code, call getabi if getsourcecode fails (#462)

Fixed

  • Add missing args to pytest print method (#460)

1.7.5 - 2020-04-26

Fixed

  • Importing keystore files from CLI without .json suffix (#448)
  • Properly display reports in GUI (#449)

1.7.4 - 2020-04-25

Fixed

  • Do not repeat queries for unverified source (#445)
  • KeyError when using autofetch_sources (#445)
  • "No owner" issue with contract call during coverage evaluation (#446)

1.7.3 - 2020-04-23

Changed

  • Expanded support for use of --fork with Ganache (#437)

Fixed

  • Remove outdated check for project-inside-project (#438)

1.7.2 - 2020-04-22

Fixed

  • Properly handle undecodable events (#433)

1.7.1 - 2020-04-20

Fixed

  • 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

Added

  • 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)

Changed

  • 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)

Deprecated

  • Contract init method deprecated in favor of from_ethpm or from_abi class methods (#413)
  • brownie ethpm CLI tool temporarily deprecated in favor of brownie pm until ethPM v3 is official (#390)

Removed

  • Source minification (#384)

Fixed

  • 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

Fixed

  • 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

Changed

Fixed

  • Bug when determining dependencies of a Contract object

1.6.7 - 2020-03-09

Fixed

  • INVALID instructions with no related ast node (assembly)
  • Missing f-strings in compiler output

1.6.6 - 2020-03-03

Changed

  • MythX plugin update (PR)[#365]
  • MythX plugin documentation update (PR)[#366]

1.6.5 - 2020-02-19

Fixed

  • 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

Added

  • Show progress spinner when running stateful tests

Changed

  • Update brownie analyze based on updates to MythX API

Fixed

  • Allow import of project ContractContainer instances from brownie when running tests

1.6.3 - 2020-02-09

Added

  • --stateful flag to only run or skip stateful test cases
  • EIP-170 size limits: warn on compile, give useful error message on failed deployment

Changed

  • Unexpanded transaction trace is available for deployment transactions

Fixed

  • 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

Fixed

  • Retrieve config file from brownie/data when generating new project

1.6.1 - 2020-02-03

Changed

1.6.0 - 2020-02-02

Added

  • Hypothesis integration for property-based and stateful testing
  • TransactionReceipt.new_contracts - list of contracts deployed during a contract call
  • TransactionReceipt.internal_transfers - information on internal ether transfers during a transaction

Changed

  • Refactor brownie.convert into sub-modules
  • Use eth_abi.grammar.parse when formatting contract inputs and outputs
  • Replace docopt with docopt-ng (fixes deprecation warnings)
  • ContractContainer.at compares actual bytecode to expected, returns Contract object if they do not match

Removed

  • Custom color settings in the project config file

Fixed

  • bug preventing pytest.default_contract_owner config setting from having any effect
  • threading exception when contract deployment fails

1.5.1 - 2020-01-21

Fixed

  • 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

Added

  • 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

Changed

  • Move check for new contract sources from Project.__init__ to Project.load
  • Set istanbul as default EVM ruleset, run tests against ganache-cli v6.8.2

Deprecated

  • pytest.reverts is deprecated in favor of brownie.reverts

Fixed

  • Check pragma statements when determining if a contract should be recompiled
  • Understand abstract contract when regexing contract source

1.4.2 - 2020-01-10

Added

  • Add Ethereum Classic networks in brownie-config.yaml
  • Accept atlantis and agharta as EVM ruleset options in brownie-config.yaml

Changed

Fixed

  • Create ~/.brownie/accounts when accounts commandline interface is called

1.4.1 - 2020-01-09

Changed

  • Do not install solc until required for compilation
  • Adjust compiler config settings to be less Solidity-centric

Fixed

  • Compiler bug when generating Vyper branch paths
  • Permission error when launching Brownie with Ganache already running on OSX

1.4.0 - 2020-01-07

Added

  • support for Vyper smart contracts (v0.1.0-beta15)
  • brownie accounts commandline interface

1.3.2 - 2020-01-01

Added

  • error message for modulus by zero
  • progress bar when installing new version of solc

1.3.1 - 2019-12-25

Added

  • better error message for division by zero

Fixed

  • Correctly save minified source offsets in build artifacts
  • Coverage evaluation: isolate active_branches between jumps

1.3.0 - 2019-12-20

Added

  • support for Solidity v0.6.0
  • allow istanbul as choice for EVM ruleset (default is still petersburg)
  • allow dev: revert comments for assert statements
  • better error messages when sending ether to nonpayable function, or trying to access an invalid array index

Fixed

  • GUI properly highlights JUMPDEST targets within first 256 bytes
  • Close IO objects to avoid warnings on exit

1.2.1 - 2019-11-28

Added

  • cache available solc compiler versions to avoid repeated calls
  • store data files in ~/.brownie/

Fixed

  • removed Tkinter dependency when not loading the GUI

1.2.0 - 2019-11-23

Added

  • ethPM integration
  • ProjectContract objects persist between sessions (when enabled in the config file)

Changed

  • scripts.run only works when a project is loaded, supports multiple loaded projects

Fixed

  • use isinstance instead of type 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

Added

  • support for Python 3.8

Changed

  • project config files use YAML formatting

1.0.1 - 2019-10-13

Fixed

  • regex pattern for finding contracts in source
  • string formatting in cli
  • calling rpc.attach with no port set

1.0.0 - 2019-09-24

Added

  • Integration with MythX via brownie analyze CLI command
  • Support for ENS domains
  • Finalize public API, many minor edits!
  • replace broadcast_reverting_tx with reverting_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

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