import tomllib with open("config.toml", "rb") as f: config = tomllib.load(f) print(config["tool"]["poetry"]["name"])
If you are starting a new project today, target . Your future self will thank you for the speed and clarity. Want to test it yourself? Install via pyenv or the official Python Docker image python:3.11-slim .
# Python 3.10 Traceback (most recent call last): File "calc.py", line 2, in <module> result = 100 / (50 - 50) ZeroDivisionError: division by zero Traceback (most recent call last): File "calc.py", line 2, in <module> result = 100 / (50 - 50) ~~~~^~~~~~~~~~~~ ZeroDivisionError: division by zero
Released in October 2022, Python 3.11 stands as a landmark update for the language. While the world has since moved to 3.12 and 3.13, 3.11 remains the bedrock for many production systems due to its maturity and significant, measurable improvements over Python 3.10. This update focused heavily on two core pillars: execution speed and error clarity .
async def main(): tasks = [risky_task("A", True), risky_task("B", False), risky_task("C", True)] try: results = await gather( tasks, return_exceptions=False) except ValueError as eg: for exc in eg.exceptions: print(f"Handling: exc") Handling: A failed Handling: C failed
Python 3.11 adds tomllib to the standard library for reading TOML files.
Python 3.11 fixes this. When an error occurs, the interpreter now points an arrow ( ^ ) at the specific expression that failed, not just the line number.
Before 3.11, if you ran multiple tasks and two failed with different errors, Python would raise the first exception and swallow the second. You would lose debugging information.