class Child(Parent): @override def grett(self): ... # mypy error: No parent method named 'grett'
More importantly, tracebacks now use color by default in modern terminals, and syntax errors point to the exact token. In 2025, even beginners benefit from these refinements—code teaching platforms like Pyret and Replit have upgraded to 3.13 primarily for better error feedback. PEP 698’s @override decorator was simple but impactful. When used with mypy>=1.15 or pyright>=1.2.0 , it catches subtle refactoring bugs: python 3.13 news december 2025
By December 2025, @override appears in 42% of new large-scale Python projects (according to a JetBrains survey), making it one of the fastest-adopted typing features ever. | Workload | 3.12 → 3.13 (No JIT, No-GIL off) | 3.13 + JIT | 3.13 + no-GIL (8 cores) | | --------------------------------- | --------------------------------- | ----------- | ------------------------- | | Pure Python numeric loop | +4% | +12% | +280% (parallel) | | JSON serialization | +2% | +8% | – (single-threaded) | | Django template rendering | +1% | +3% | -5% (GIL overhead) | | Async HTTP requests (aiohttp) | 0% | 0% | +10% (limited) | class Child(Parent): @override def grett(self):
from typing import override class Parent: def greet(self): ... PEP 698’s @override decorator was simple but impactful
# Python 3.12: # NameError: name 'x' is not defined NameError: name 'x' is not defined. Did you mean 'xy'?