import enum
class OrderStatus(enum.Enum): Ready = ready Shipped = shipped
You also have the following code to process an
Order:
def handle order(status: OrderStatus) -> None: if status is OrderStatus.Ready: print( ship order ) elif status is OrderStatus.Shipped: print( charge order )
When the order is ready, you ship it; and when it s shipped, you charge it.
A few months go by and your system becomes big. So big in fact, that you can no longer ship orders immediately, and you add a new status:
import enum
class OrderStatus(enum.Enum): Ready = ready Scheduled = scheduled Shipped = shipped
Before you push this change to production, you run a quick check with mypy to make sure everything is OK: