Changes [updated]: Python 3.13
from dataclasses import dataclass from copy import replace @dataclass class UserConfig: theme: str = "light" notifications: bool = True font_size: int = 12 original = UserConfig() modified = UserConfig(theme="dark", notifications=original.notifications, font_size=original.font_size) New way: clean and declarative original = UserConfig() modified = replace(original, theme="dark", font_size=14)
from pathlib import Path import tempfile def demonstrate_walk(): with tempfile.TemporaryDirectory() as tmpdir: root = Path(tmpdir)
# List comprehension performance list_time = timeit.timeit( "[i * 2 for i in range(1000)]", number=100000 ) print(f"List comprehensions: list_time:.3fs") python 3.13 changes
for module, message in checks: try: __import__(module) warnings.warn(f"⚠️ message") except ImportError: print(f"✓ module not used")
# Check for removed features checks = [ ("crypt", "Module 'crypt' removed in 3.13"), ("2to3", "Tool removed in 3.13"), ] from dataclasses import dataclass from copy import replace
# Without cache start = time.perf_counter() result = fibonacci(n) normal_time = time.perf_counter() - start
dict_test = """ for i in range(1000): x = d.get(i, 0) """ "Module 'crypt' removed in 3.13")
# Async context manager performance async_setup = """ import asyncio class AsyncCM: async def (self): return self async def aexit (self, *args): pass """
