guides

Enums and Constants

Using Enum, IntEnum, and module-level constants efficiently.

Published May 30, 2026

Enum for State Machines

from enum import Enum, auto

class Status(Enum):
    PENDING = auto()
    RUNNING = auto()
    COMPLETED = auto()
    FAILED = auto()

def transition(current: Status, event: str) -> Status:
    rules = {
        Status.PENDING: {'start': Status.RUNNING},
        Status.RUNNING: {'finish': Status.COMPLETED, 'error': Status.FAILED},
    }
    return rules.get(current, {}).get(event, current)

IntEnum

from enum import IntEnum

class Priority(IntEnum):
    LOW = 1
    MEDIUM = 2
    HIGH = 3

def filter_by_priority(items: list[tuple[int, str]], min_level: Priority) -> list[str]:
    result = []
    for prio, name in items:
        if prio >= min_level:
            result.append(name)
    return result