EF Python Year in Review, 2023
With 2023 coming to a close, the aim of this post is to provide a quick highlight reel of the latest advancements in our Ethereum Python tools and a look ahead to 2024.
Note: the 2023 Ethereum Python User Survey is open now!
Scope
The EF Python team is responsible for the ongoing support of a dozen Python developer tooling libraries: web3.py, py-evm, eth-tester, eth-account, eth-abi, eth-utils, eth-typing, py-geth, eth-hash, py-trie, hexbytes, and the Ethereum Python library project template – all found within the ethereum
GitHub org.
web3.py accounts for >1 million downloads per month, and most of the other libraries are utilized within web3.py.
2023 Initiatives
Besides squashing bugs and keeping the lights on, investments were made in the domains outlined below. This isn't a comprehensive list of initiatives; in 2023, over 200 PRs were merged into web3.py alone!
web3.py: Major Version Release
web3.py v6.0.0 was released in March 2023, introducing modern Python support, improved error handling, the AsyncWeb3
module, syntax changes, and a handful of other updates. 18 more releases followed in 2023; a full list of updates can be viewed in the Release Notes.
web3.py: Asynchronous Support
Major investments have gone into AsyncHTTPProvider
, WebsocketProviderV2
, and the underlying middleware. If your application spends any amount of time waiting on roundtrips from remote node providers, switching to one of these providers may give you a serious performance boost. WebsocketProviderV2
comes with the additional bonus of eth_subscribe
support.
web3.py: Modern ENS Support
As unicode standards have evolved (thanks emojis), so too has the need for standardization within ENS. web3.py now supports ENSIP-15, which safely normalizes names before use. ENSIP-9 also introduced multichain address resolution, which web3.py now supports via an optional coin_type
argument.
py-evm
In addition to support for the latest network upgrade, Shanghai, py-evm also got a performance boost, caught up to the ethereum/tests
suite, removed a dependency on ethash, and now supports Python 3.11.
eth-account
Typed data message signing (EIP-712) recently got a lot easier within eth-account, with the introduction of the sign_typed_data
and encode_typed_data
APIs. For an introduction to the concept, see this blog post.
Education Resources
Sharing our work with the community and onboarding newcomers continue to be high priorities. Investment in these domains includes robust documentation, blog post deep dives, example project repos, and a community resources page.
Example posts:
- Intro to Ethereum – conclusion of a three-part series that gently introduces the big concepts
- Ethereum Python Ecosystem Tour – Python tools and how they fit together
- Intro to Ape – a smart contract development framework for Python developers
Example repos:
- ape-hackathon-kit – Ape project visualized in a Next.js front-end UI
- web3py-discord-bot – Discord bot that leverages subscriptions and one-off calls via web3.py
- py-signer – example implementation of signing and verifying typed data messages (EIP-712)
2024 Initiatives
Besides more bug squashing and keeping the lights on, the roadmap includes:
- Major version release
web3.py v7 coming Soon™ – tentatively early Q2. Track todos and breaking changes here. - Developer experience research spikes
e.g., Layer 2 niceties, account abstraction, portal network integrations - Performance benchmarking and optimization
We'll get a better baseline on py-evm and web3.py throughput, then prioritize next steps from there. - Improved type support across libraries
- Documentation upgrades
e.g., web3.py providers, py-evm, DeFi fundamentals, decoding, tracing - Developer education
e.g., more starter kits/hackathon helpers and tutorials
Onward
Outside of the core team, meaningful contributions were made to these tools by hobbyists and industry professionals alike. Tremendous value is also offered on a daily basis in the Ethereum Python Community Discord server by those sharing lessons they've learned already. Thanks to each of you for being a part of this open source community! We look forward to continuing to learn, build, and grow with you in 2024.
A parting request: whether you're an experienced user or brand new to the tools, let us know how you're getting on in the 2023 Ethereum Python User Survey. This survey is one of the primary ways we plan and pivot our priorities each year.