from typing import Literal def route(name: Literal["main", "edit"], *args) -> None: match name: case "main": print("Main screen") case "edit": if not args: raise ValueError("No item id provided for editing.") print(f"Editing item id: {args[0]}") case _: raise ValueError(f"Invalid route name: {name}") route("main") route("edit", 12) route("edit") # Raises ValueError
Main screen Editing item id: 12
line 9, in route raise ValueError("No item id provided for editing.") ValueError: No item id provided for editing.