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.countby @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
hexbyteswithfaster_hexbytesby @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 compileby @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-hexbytesto build deps by @github-actions[bot] in #2046 - feat: add
prompt-toolkitto build deps by @github-actions[bot] in #2047 - fix(cicd): pip compile with
--no-strip-extrasby @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-keysandeth-accountto build deps by @github-actions[bot] in #2052 - feat(mypy): PCMap NewType by @github-actions[bot] in #2053
- feat: add
py-solc-astto build deps by @github-actions[bot] in #2054 - feat: add
py-solc-xto build deps by @github-actions[bot] in #2055 - feat(mypy):
EvmVersionNewType by @github-actions[bot] in #2056 - feat: add
vvmto 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
websocketsto build deps by @github-actions[bot] in #2060 - feat: add
vyperto build deps by @github-actions[bot] in #2061 - feat: add
eip712to 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
web3to 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: ignorecomments by @nvy-0x in #1936 - FIX: sepolia-ETH API endpoint needs
/apisuffix, 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
linterextra 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
- @davidjsonn made their first contribution in #1889
- @VolodymyrBg made their first contribution in #1894
- @nvy-0x made their first contribution in #1898
- @jishudashen made their first contribution in #1926
- @crStiv made their first contribution in #1941
- @GarmashAlex made their first contribution in #1945
- @dudesahn made their first contribution in #1949
- @MozirDmitriy made their first contribution in #1955
- @queryfast made their first contribution in #1967
- @gap-editor made their first contribution in #1974
- @tzchenxixi made their first contribution in #1985
- @Forostovec made their first contribution in #1984
- @Faolain made their first contribution in #1987
- @joemicky made their first contribution in #1988
- @Daisy-Lord11 made their first contribution in #1997
- @github-actions[bot] made their first contribution in #2000
- @asttool made their first contribution in #2012
- @stemlaud made their first contribution in #2030
- @nivanovvv made their first contribution in #2036
- @hustrust made their first contribution in #2087
- @kernel1983 made their first contribution in #2088
- @weifangc made their first contribution in #2096
- @rejected-l made their first contribution in #2100
- @koyo922 made their first contribution in #1799
- @Pawar7349 made their first contribution in #2126
- @orbisai0security made their first contribution in #2152
Full Changelog: v1.21.0...v1.22.0