HOME | ENGLISH | IMPRESSUM | KIT

Bachelorarbeit (abgeschlossen): Exhaustiveness Überprüfung für Structural Pattern Matching in Python 3.10

Python ist eine dynamisch typisierte Programmiersprache mit einem statischen statischen Typchecker names mypy. In einem aktuellen Python Enhancement Proposal (PEP 622, PEP 634) wird ein Syntaxkonstrukt vorgeschlagen, welches Structural Pattern Matching zur Sprache hinzufügt. Folgend ist ein Beispiel für die Anwendung:

from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int

def whereis(point: Point):
    match point:
        case Point(0, 0):
            print("Origin")
        case Point(0, y):
            print(f"Y={y}")
        case Point(x, 0):
            print(f"X={x}")
        case Point(x, y) if y > 3:
            print("Somewhere else")

Ein wichtiges Thema bei Structural Pattern Matching ist die Exhaustiveness der Pattern, also die Frage, ob alle möglichen Belegungen der Match-Variable abgedeckt sind (unter der Annahme der Wohltypisiertheit). Im Beispiel ist dies nicht der Fall, da Fälle wie Point(1, 1) offensichtlich nicht abgedeckt werden. Dies ist oft ein Zeichen für einen Programmierfehler.

Aufgabe:

Für Haskell wurde im letzten Jahr ein verbesserter Algorithmus zur Erkennung der Exhaustiveness entwickelt. Die Aufgabe dieser Arbeit ist nun, diesen Algorithmus für Python zu adaptieren und auf Basis von mypy zu implementieren.

Voraussetzungen

Erfahrung mit Python ist hierbei hilfreich.

Schlüsselworte

Python, Pattern Matching 

Veröffentlichungen

Veröffentlichung
Typinferenz und Vollständigkeitsüberprüfung für Structural Pattern Matching in Python

Betreuer

Wissenschaftliche Mitarbeiter
Sebastian Graf
Ehemalige Mitarbeiter
M.Sc. Johannes Bechberger