github eth-brownie/brownie v1.22.0

3 hours ago

CI is not fully green yet, but the library looks better than it did at the time of the last public release.

I'm blocked on a few projects which can't use the existing pre-release, so I will release v1.22.0 in the current state and then will tidy up the straggler issues and release a follow-up v1.22.1 in a week or two.

These release notes are ugly, but they contain everything. I might clean them up later.

What's Changed

  • fix(test): include setuptools in test deps to fix web3py by @BobTheBuidler in #1873
  • feat: optimize EventDict.__contains__ and .count by @BobTheBuidler in #1868
  • fix(mypy): fix type hinting for *args by @BobTheBuidler in #1870
  • feat: implement faster-eth-utils by @BobTheBuidler in #1885
  • fix(mypy): fix typing for network/event.py by @BobTheBuidler in #1871
  • feat: compile half the lib to C by @BobTheBuidler in #1875
  • feat(cicd): compile c files for source control by @BobTheBuidler in #1886
  • fix spelling issue in CHANGELOG.md by @davidjsonn in #1889
  • chore: add stuff to .gitignore by @BobTheBuidler in #1891
  • fix(mypy): _Singleton metaclass typing by @BobTheBuidler in #1888
  • Fix typos in Brownie CLI and GUI comments and docstrings by @VolodymyrBg in #1894
  • chore(deps): bump requests from 2.31.0 to 2.32.4 by @dependabot[bot] in #1890
  • fix: NULL returned with no err set by @nvy-0x in #1898
  • feat(mypy): some type hints by @nvy-0x in #1900
  • chore: pip-compile by @nvy-0x in #1901
  • fix(test): auto-retry ens test_unset 429 errs by @nvy-0x in #1902
  • chore: bump [tool.black] target version by @nvy-0x in #1904
  • chore(deps): bump urllib3 from 2.4.0 to 2.5.0 by @dependabot[bot] in #1905
  • feat: BROWNIE_NOCOMPILE env var to make C compilation optional by @nvy-0x in #1906
  • feat(mypy): new types for compiler module by @nvy-0x in #1907
  • fix: type errs in compiler submodule due to compiling to C by @nvy-0x in #1908
  • feat: compiler module C constants by @nvy-0x in #1909
  • chore: bump compiler version by @nvy-0x in #1910
  • fix(cicd): install deps before compiling by @nvy-0x in #1913
  • feat: compile network/state.py by @nvy-0x in #1914
  • feat(mypy): implement typed dicts from web3 and eth-typing by @nvy-0x in #1912
  • feat: convert/normalize.py C constants by @nvy-0x in #1915
  • feat: compile project/flattener.py by @nvy-0x in #1916
  • feat: compile project/scripts.py by @nvy-0x in #1917
  • fix(test): race condition in connect_to_mainnet fixture by @nvy-0x in #1923
  • feat: compile rest of projects module by @nvy-0x in #1922
  • feat(mypy): various typing improvements by @nvy-0x in #1921
  • chore: bump python version in dockerfile by @nvy-0x in #1924
  • chore: compile helper files by @nvy-0x in #1919
  • chore: fix some minor issues in comments by @jishudashen in #1926
  • feat: compile network/events.py by @nvy-0x in #1928
  • chore: use @Final for exceptions by @nvy-0x in #1927
  • feat: update evm versions for solidity and vyper by @nvy-0x in #1929
  • feat(mypy): more typing enhancements by @nvy-0x in #1930
  • feat: C constants for terminal color modifier strings by @nvy-0x in #1932
  • fix: NameError in Contract.decode_input by @nvy-0x in #1937
  • feat: vyper compiler C constants by @nvy-0x in #1938
  • chore: refactor with C constants helper file by @nvy-0x in #1935
  • feat: microoptimize attr lookups by @nvy-0x in #1939
  • feat(mypy): Offset and Source types by @nvy-0x in #1934
  • feat(mypy): BuildJson typed dict by @nvy-0x in #1931
  • feat: compile convert/datatypes.py and test/coverage.py by @nvy-0x in #1925
  • feat: more microoptimizations (almost done!) by @nvy-0x in #1940
  • docs: fix typos by @crStiv in #1941
  • feat(mypy): more new typed dicts by @nvy-0x in #1920
  • feat: compile network/alert.py by @nvy-0x in #1911
  • feat: compile middlewares by @nvy-0x in #1942
  • docs: fix typos by @GarmashAlex in #1945
  • feat: compile test output by @nvy-0x in #1944
  • fix: TypeError dict != AttributeDict by @nvy-0x in #1946
  • feat(mypy): improve sources module typing by @nvy-0x in #1947
  • fix: anvil mine by @dudesahn in #1949
  • feat: compile _config.py by @nvy-0x in #1918
  • fix: TypeError when calling EthAddress with Contract type input by @nvy-0x in #1950
  • fix: type error in Build._add_contract by @nvy-0x in #1951
  • feat(mypy): more typing stuff by @nvy-0x in #1953
  • feat(mypy): VyperAstNode typed dict by @nvy-0x in #1954
  • fix(docs): correct typos in API and core documentation by @MozirDmitriy in #1955
  • feat: compile test/stateful.py by @nvy-0x in #1952
  • fix: inheritance conflict in ConfigContainer by @nvy-0x in #1957
  • feat(mypy): ProgramCounter typed dict by @nvy-0x in #1958
  • fix: TypeError in middleware setup by @nvy-0x in #1959
  • fix: TypeError in _get_deployment by @nvy-0x in #1960
  • feat(cicd): update windows deps in pip compile workflow by @nvy-0x in #1961
  • feat: microoptimize compiler by @nvy-0x in #1962
  • feat(mypy): better typing in network/contract.py and transaction.py by @nvy-0x in #1963
  • fix: add 'interfaces' key to InputJson typed dicts by @nvy-0x in #1966
  • chore: black . by @nvy-0x in #1965
  • chore: include eth-typing in build deps by @nvy-0x in #1969
  • chore: include eth-event in build deps by @nvy-0x in #1970
  • chore: fix some typos in comment by @queryfast in #1967
  • feat(mypy): CoverageMap typed dict by @nvy-0x in #1971
  • feat(mypy): more type hints in contract.py by @nvy-0x in #1964
  • fix: contract persistence in db by @nvy-0x in #1972
  • fix(mypy): mark ProgramCounter fields with NotRequired by @nvy-0x in #1973
  • docs(convert): Fix typo in Wei docstring example by @gap-editor in #1974
  • feat: microoptimize _address_compare and _hex_compare by @nvy-0x in #1975
  • feat: replace eth-abi with faster-eth-abi by @nvy-0x in #1977
  • fix: TypeError in _add_to_undo_buffer subthread by @nvy-0x in #1982
  • fix: TypeError in _get_dev_revert by @nvy-0x in #1981
  • fix: type collision in console vars by @nvy-0x in #1979
  • fix: TypeError in _get_ast_hash by @nvy-0x in #1980
  • fix: TypeError due to json.dumps tuple handling by @nvy-0x in #1978
  • chore: fix some minor issues in comments by @tzchenxixi in #1985
  • fix: correct typos in Brownie codebase by @Forostovec in #1984
  • chore: bump mypy to 1.18.1 for faster c by @Faolain in #1987
  • chore: fix some typos for rst file by @joemicky in #1988
  • feat: microoptimize terminal color formatting by @nvy-0x in #1976
  • fix(cicd): repo chores gh action when PR is from fork by @nvy-0x in #1968
  • fix(mypy): ignore type err preventing build by @nvy-0x in #1991
  • fix(cicd): create pull requests from compile gh action by @nvy-0x in #1992
  • fix(cicd): compile action PR target branch by @nvy-0x in #1994
  • fix(cicd): let gh runner force push to compile branch by @nvy-0x in #1995
  • fix: TypeError in network state txids by @nvy-0x in #1990
  • Fix typos across multiple files by @Daisy-Lord11 in #1997
  • fix(cicd): checkout working branch before push by @nvy-0x in #1998
  • fix(cicd): checkout working branch before push by @nvy-0x in #1999
  • chore: Compile C files for source control by @github-actions[bot] in #2000
  • feat: microoptimize project/compiler by @nvy-0x in #1993
  • chore: run black formatter black . by @github-actions[bot] in #2001
  • chore: Compile C files for source control by @github-actions[bot] in #2002
  • feat: implement ujson for 4x speed improvement over builtin json functionality by @nvy-0x in #2005
  • feat: replace hexbytes with faster_hexbytes by @nvy-0x in #2004
  • chore: Compile C files for source control by @github-actions[bot] in #2003
  • chore: loosen eth-typing pin by @BobTheBuidler in #1872
  • chore: fix some typos by @asttool in #2012
  • fix(test): temporarily disable pytest-xdist by @BobTheBuidler in #2010
  • feat(test): new test runners for Python 3.13, 3.14, and 3.14t by @BobTheBuidler in #2008
  • feat: microoptimize _generate_revert_map by @nvy-0x in #2013
  • chore: Compile C files for source control by @github-actions[bot] in #2006
  • feat(cicd): PyPI release github action by @BobTheBuidler in #2011
  • fix: Python3.14 by @BobTheBuidler in #2009
  • feat(cicd): normalize C files for easier diffchecking by @nvy-0x in #2018
  • fix(test): update evm version in test_generate_input_json_evm by @nvy-0x in #2021
  • fix(test): add debugging info to KeyError in failing test_load_project_cmd_settings by @nvy-0x in #2022
  • chore: run black formatter black . by @github-actions[bot] in #2024
  • chore: remove unused imports by @nvy-0x in #2023
  • feat(cicd): use ccache to speed up build on runners by @nvy-0x in #2027
  • feat(cicd): cache .mypy_cache for runners by @nvy-0x in #2026
  • 1.22.0.dev0 changelog by @nvy-0x in #2031
  • chore: fix some minor issues in the comments by @stemlaud in #2030
  • fix: broken wheel on 32-bit linux by @BobTheBuidler in #2017
  • chore: Compile C files for source control and pip compile by @github-actions[bot] in #2029
  • chore: Compile C files for source control by @github-actions[bot] in #2034
  • feat(cicd): normalize C files for diffchecking by @github-actions[bot] in #2040
  • chore: remove black from requirements.in by @github-actions[bot] in #2041
  • feat: add faster-hexbytes to build deps by @github-actions[bot] in #2046
  • feat: add prompt-toolkit to build deps by @github-actions[bot] in #2047
  • fix(cicd): pip compile with --no-strip-extras by @github-actions[bot] in #2048
  • Fix spelling errors by @nivanovvv in #2036
  • chore: set mypyc group name by @github-actions[bot] in #2049
  • fix: pin build dependencies by @github-actions[bot] in #2050
  • feat(mypy): proper overloading for ReturnValue.__getitem__ by @github-actions[bot] in #2051
  • feat: add eth-keys and eth-account to build deps by @github-actions[bot] in #2052
  • feat(mypy): PCMap NewType by @github-actions[bot] in #2053
  • feat: add py-solc-ast to build deps by @github-actions[bot] in #2054
  • feat: add py-solc-x to build deps by @github-actions[bot] in #2055
  • feat(mypy): EvmVersion NewType by @github-actions[bot] in #2056
  • feat: add vvm to build deps by @github-actions[bot] in #2057
  • feat(cicd): cleanup black github action by @github-actions[bot] in #2058
  • fix: PEP625 compliance by @github-actions[bot] in #2059
  • feat: add websockets to build deps by @github-actions[bot] in #2060
  • feat: add vyper to build deps by @github-actions[bot] in #2061
  • feat: add eip712 to build deps by @github-actions[bot] in #2062
  • feat: set mypyc flag strict_dunder_typing=True by @github-actions[bot] in #2063
  • fix: build wheel on Windows by @github-actions[bot] in #2064
  • fix: 32-bit Windows wheels by @github-actions[bot] in #2065
  • feat: add web3 to build deps by @github-actions[bot] in #2066
  • fix(test): rate limit errs in _load_project helper by @github-actions[bot] in #2067
  • feat(test): cache wheels for evm tests by @github-actions[bot] in #2069
  • fix(cicd): dependency conflict in pip-compile runner by @github-actions[bot] in #2070
  • chore: split out requirements-docs from requirements-dev by @github-actions[bot] in #2071
  • feat(test): cache wheels for functionality tests by @github-actions[bot] in #2072
  • feat(test): cache wheels for linting tests by @github-actions[bot] in #2073
  • chore: disable flake8 error code E226 by @github-actions[bot] in #2074
  • chore: fix linter errors by @github-actions[bot] in #2075
  • feat: add hypothesis to build deps by @github-actions[bot] in #2076
  • chore: ensure all type: ignore comments are specific by @github-actions[bot] in #2078
  • chore: run black formatter black . by @github-actions[bot] in #2079
  • chore: fix linter errors in events.py by @github-actions[bot] in #2080
  • feat(mypy): proper typing in networks cli module by @github-actions[bot] in #2082
  • chore: fix linter errors by @github-actions[bot] in #2084
  • feat(mypy): better type hints by @github-actions[bot] in #2086
  • chore: run black formatter black . by @github-actions[bot] in #2089
  • chore: fix some typos in comment by @hustrust in #2087
  • chore: pip compile by @github-actions[bot] in #2090
  • chore(cicd): cleanup compile workflow with mypycify composite action by @github-actions[bot] in #2091
  • fix brownie console crash when X11 is not available by @kernel1983 in #2088
  • Fix grammar and typos by @nivanovvv in #2095
  • chore: fix variable name by @weifangc in #2096
  • fix: system err in console by @github-actions[bot] in #2098
  • Fix ganache version URL mismatch by @nivanovvv in #2099
  • ci: bump actions/checkout to v6 by @rejected-l in #2100
  • chore: bump dep pins by @BobTheBuidler in #2101
  • fix: correct typo in Base network fork name by @nivanovvv in #2103
  • chore: remove unused type: ignore comments by @nvy-0x in #1936
  • FIX: sepolia-ETH API endpoint needs /api suffix, ref https://ethereum.stackexchange.com/a/147268 by @koyo922 in #1799
  • feat(cicd): run pyupgrade & autoflake in github runner by @dependabot[bot] in #2105
  • chore: run black formatter black . by @github-actions[bot] in #2109
  • fix(mypy): fix type hints for **kwargs by @dependabot[bot] in #2110
  • Bump version from 1.22.0.dev0 to 1.22.0.dev1 by @Faolain in #2111
  • chore: add classifiers for python3.13 and 3.14 by @dependabot[bot] in #2113
  • feat(cicd): run isort in github runner by @dependabot[bot] in #2118
  • feat: bump mypy to v1.19.0 by @dependabot[bot] in #2119
  • fix(release) invalid wheel tag in release runner by @dependabot[bot] in #2120
  • chore(deps): bump virtualenv from 20.35.4 to 20.36.1 by @dependabot[bot] in #2112
  • fix: TypeError in _get_deployment by @dependabot[bot] in #2122
  • fix: update py-solc-x to >=2.0.5 to resolve solc download errors by @Pawar7349 in #2126
  • chore: Upgrade web3 to v7 and update middleware integration by @dependabot[bot] in #2128
  • chore: Bump ujson from 5.11.0 to 5.12.0 by @dependabot[bot] in #2131
  • web3.py v7 fixes by @BlinkyStitt in #2136
  • chore: Bump web3 from 7.14.1 to 7.15.0 by @dependabot[bot] in #2138
  • chore: bump mypyc to 1.20.0 by @BobTheBuidler in #2139
  • chore: bump version to 1.22.0.dev3 by @BobTheBuidler in #2140
  • revert: chore: bump mypyc to v1.20.0 by @BobTheBuidler in #2141
  • fix: support forked pull requests in ci by @banteg in #2147
  • perf: speed up stream downloads by @banteg in #2146
  • chore: clear linter debt by @dependabot[bot] in #2150
  • chore: bump ujson from 5.12.0 to 5.12.1 by @dependabot[bot] in #2151
  • fix: always release confirmed receipts by @dependabot[bot] in #2142
  • ci: bump github action versions by @dependabot[bot] in #2144
  • ci: guard mutating workflows on forks by @dependabot[bot] in #2143
  • fix: remove unsafe eval() in networks.py... by @orbisai0security in #2152
  • fix(test): cover vyper evm default boundaries by @dependabot[bot] in #2154
  • test: include modern hardforks in test matrix by @dependabot[bot] in #2153
  • chore(ci): bump lint-all-the-things action by @dependabot[bot] in #2155
  • fix(test): adapt test_event.py imports to web3 v7 by @dependabot[bot] in #2156
  • fix: normalize solcx version handling by @dependabot[bot] in #2158
  • fix: normalize web3 errors for web3.py v7 by @dependabot[bot] in #2157
  • perf: microoptimize attr lookups in transaction.py by @dependabot[bot] in #2160
  • perf: microoptimize attr lookups by @dependabot[bot] in #2159
  • fix(test): compile evm tests with matrix settings by @dependabot[bot] in #2161
  • fix(test): make plugin isolation tests less brittle by @dependabot[bot] in #2162
  • fix: handle anvil launcher options safely by @dependabot[bot] in #2164
  • fix: rollback coverage calls with snapshots by @dependabot[bot] in #2165
  • ci: move default rpc backend to anvil by @dependabot[bot] in #2163
  • ci: bump mypycify to v0.3.3 by @dependabot[bot] in #2166
  • fix: decode anvil tx return values, keep compat path for ganache by @dependabot[bot] in #2167
  • fix: decode anvil revert data by @dependabot[bot] in #2168
  • fix: recover dev revert strings from trace source by @dependabot[bot] in #2169
  • fix(test): make plugin given block height backend neutral by @dependabot[bot] in #2171
  • fix(test): assert invalid given args in plugin by @dependabot[bot] in #2170
  • fix: normalize prefixed trace memory words by @dependabot[bot] in #2172
  • fix(test): sync plugin child network config by @dependabot[bot] in #2173
  • fix: remove linter extra from tox.ini by @dependabot[bot] in #2174
  • chore: make linters green by @dependabot[bot] in #2176
  • ci: DRY workflows by @dependabot[bot] in #2175
  • test: homogenize testing stack across pythons by @dependabot[bot] in #2177
  • chore(cicd): remove deprecated caches from release workflow by @dependabot[bot] in #2178
  • chore(deps): bump cryptography from 46.0.6 to 46.0.7 by @dependabot[bot] in #2179
  • chore: compile mypyc with --strict by @dependabot[bot] in #2181
  • chore: fix linter errs after black update by @dependabot[bot] in #2180
  • fix(mypy): fix new --strict errs by @dependabot[bot] in #2182
  • ci: fix C file regeneration after pushes by @dependabot[bot] in #2184
  • fix: use current stdout in pytest printer by @dependabot[bot] in #2183
  • fix: preserve ganache default account balance by @dependabot[bot] in #2186
  • ci: fix core-ganache workflow by @dependabot[bot] in #2185
  • fix: allow non-isolated tests under xdist by @dependabot[bot] in #2187
  • fix: load plugin child projects consistently under xdist by @dependabot[bot] in #2188
  • fix: type source map ids as integers by @dependabot[bot] in #2189
  • fix: stabilize plugin child fixture state by @dependabot[bot] in #2191
  • fix: given wrapper kwarg validation by @dependabot[bot] in #2190
  • fix(test): fix plugintest fixtures by @dependabot[bot] in #2192
  • test: select backend-specific rpc tests by @dependabot[bot] in #2193
  • fix: normalize ganache time travel by @dependabot[bot] in #2194
  • fix: stabilize event watcher shutdown by @dependabot[bot] in #2195
  • fix: link libraries from solc link references by @dependabot[bot] in #2197
  • fix: normalize ganache time travel by @dependabot[bot] in #2196
  • fix: harden event watcher shutdown lifecycle by @dependabot[bot] in #2198
  • fix: serialize chain time-travel snapshots by @dependabot[bot] in #2199
  • fix: guard empty solidity metadata stripping by @dependabot[bot] in #2200
  • fix: restore ganache default account balance by @dependabot[bot] in #2201
  • fix: compile multicall for ganache hardfork by @dependabot[bot] in #2202
  • test: build web3 error middlewares with web3 by @dependabot[bot] in #2204
  • fix: use web3 v7 event filter keywords by @dependabot[bot] in #2203
  • test: normalize fake solcx install versions by @dependabot[bot] in #2205
  • fix: honor explorer abi fallback persistence by @dependabot[bot] in #2207
  • fix: propagate project development cmd settings by @dependabot[bot] in #2206
  • fix(test): fix remaining bad test assumptions by @dependabot[bot] in #2208
  • test: remove pytest skip strict keyword by @dependabot[bot] in #2210
  • fix: run event callbacks once per nonrepeat watcher by @dependabot[bot] in #2209
  • fix: guard old vyper output selection cleanup by @dependabot[bot] in #2212
  • fix: normalize explorer solc version checks by @dependabot[bot] in #2211
  • fix: stop event watcher before disconnect by @dependabot[bot] in #2213
  • fix: narrow event watcher provider teardown guard by @dependabot[bot] in #2214
  • fix: reject empty code contract attachment by @dependabot[bot] in #2215
  • refactor: PragmaNotFound exc subclass by @dependabot[bot] in #2216
  • perf: microoptimize cache middleware if gate by @dependabot[bot] in #2218
  • fix: use petersburg for vyper beta16 default evm by @dependabot[bot] in #2217
  • chore: prepare for v1.22.0 release by @dependabot[bot] in #2219

New Contributors

Full Changelog: v1.21.0...v1.22.0

Don't miss a new brownie release

NewReleases is sending notifications on new releases.