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:

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.