Python 3.7 Release History

Python 3.7 (released June 27, 2018) introduced major usability improvements, formalized key language behaviors, and improved support for modern async Python.

Data Classes (@dataclass)

The highlight of Python 3.7 is PEP 557: dataclasses.

They remove boilerplate when creating data containers:

from dataclasses import dataclass

@dataclass
class User:
    username: str
    is_admin: bool = False

Automatically generated methods:

Dictionaries Preserve Insertion Order

In Python 3.7, dict order preservation became a language guarantee:

data = {"a": 1, "b": 2, "c": 3}
print(list(data.keys()))
# ['a', 'b', 'c']

Before 3.7 this was implementation detail — now it is official behavior.

Built-in Debugger Hook (breakpoint())

PEP 553 introduced:

breakpoint()

Context Variables (contextvars)

PEP 567 added context-local state management:

Typing Improvements

Standard Library Updates

Interpreter Improvements

Language Changes

Subversions log


Official 3.7 documentation