☰ Menu

30.09.2026 · Signal Titans Editorial

PEP 827 schlägt von TypeScript inspirierte Typ-Manipulation für Python vor

PEP 827 bringt Typ-Manipulation, bedingte Typen und Laufzeit-Annotationen zu Python und sorgt für Diskussionen unter den Core-Entwicklern.

Eine minimalistische horizontale Illustration eines soliden geometrischen Blocks, der sich auf einem dunklen Hintergrund in ein leuchtendes Drahtgittermodell verwandelt.

Auf dem Python Language Summit 2026 stellte Michael J. Sullivan den Entwurf PEP 827 vor. Der Vorschlag zielt darauf ab, mächtige Funktionen zur Typ-Manipulation in Python einzuführen, die von dynamischen Typverhaltensweisen aus Sprachen wie TypeScript inspiriert sind.

Primitiven zur Typ-Manipulation

PEP 827 führt mehrere grundlegende Primitiven in Pythons Typsystem ein. Dazu gehören bedingte Typen, Comprehension-Typen mit optionaler Filterung sowie Member-Typen. Letztere stellen ein Iterable der Elementtypen einheitlich bereit und bieten Eigenschaften für Namen sowie Typen der Mitglieder. Der Vorschlag kommt ohne neue Schlüsselwörter aus und beinhaltet bereits einen auf mypy basierenden Prototyp für die beschriebenen Funktionen.

Ein zentraler Anwendungsfall ist die Vereinfachung von CRUD-Webanwendungen, bei denen Datenbankmodelle typischerweise mehrere Varianten für unterschiedliche Operationen benötigen. Statt redundante Modelldefinitionen manuell zu pflegen, könnten Entwickler Transformationen wie öffentliche Ansichten, Erstellungsmodelle und Update-Varianten direkt aus einem Basismodell ableiten.

Kompromisse bei der Speicherung von Laufzeit-Annotationen

Ein Schwerpunkt der Diskussion lag auf der Frage, wie Typ-Annotationen zur Laufzeit gespeichert und ausgewertet werden sollen, da moderne Bibliotheken wie Pydantic und FastAPI stark auf solche Laufzeitinformationen angewiesen sind. Der Entwurf stützt sich auf einen Evaluator, der auf __annotate__()-Funktionen basiert. Dabei werden Optionen untersucht wie die Nutzung des String-Formats von annotationlib oder die Kombination von String-Darstellungen mit Environment-Closures zur Auswertung mittels eval().

Unter den Core-Entwicklern wurden die Abwägungen bezüglich Speicherbedarf und Rechenaufwand zwischen der Speicherung von Roh-Strings und der Auswertung von Closures debattiert. Łukasz Langa schlug vor, dass das Internieren häufiger Annotations-Strings innerhalb von __annotate__() Speicher sparen könnte, ohne die Leistung spürbar zu beeinträchtigen.

Bewusste Turing-Vollständigkeit und Syntax-Bedenken

Zur Komplexität des Typsystems merkte Sullivan an, dass die Annahme des Vorschlags Pythons Typsystem von einer zufälligen zu einer bewussten Turing-Vollständigkeit überführen würde, vergleichbar mit generischen Konzepten in Java. Die Entwickler diskutierten zudem die ästhetischen Auswirkungen komplexer abgeleiteter Typen auf den Programmieralltag.

Łukasz Langa und David Hewitt äußerten Bedenken, dass eine zu komplexe Syntax Entwickler beim Ansehen von API-Rückgabetypen überfordern könnte – ähnlich wie es in TypeScript-Ökosystemen beobachtet wird. Ko-Autor Yury Selivanov räumte ein, dass fortgeschrittene Typ-Transformationen zwar Komplexität mit sich bringen, aber notwendig seien, um die Ausdrucksstärke von Python zur Laufzeit abzubilden, gestützt durch künftige Verbesserungen in IDEs und Language Servern.

KI-generierte redaktionelle Illustration; kein Dokumentarfoto.

Quelle: PEP 827: Type Manipulation (Python Language Summit 2026)