from enum import StrEnum class _ChoicesEnum(StrEnum): @classmethod def choices(cls): return [(m.value, m.name.replace("_", " ").title()) for m in cls] class ChannelType(_ChoicesEnum): EMAIL = "email" SMS = "sms" WHATSAPP = "whatsapp" TELEGRAM = "telegram" PUSH = "push" class EventSeverity(_ChoicesEnum): INFO = "info" WARNING = "warning" ERROR = "error" CRITICAL = "critical" class BillingInterval(_ChoicesEnum): MONTHLY = "monthly" YEARLY = "yearly" class AuditAction(_ChoicesEnum): CREATE = "create" UPDATE = "update" DELETE = "delete" class SubscriptionStatus(_ChoicesEnum): ACTIVE = "active" PAST_DUE = "past_due" CANCELLED = "cancelled" EXPIRED = "expired" TRIALING = "trialing" class InvoiceStatus(_ChoicesEnum): DRAFT = "draft" OPEN = "open" PAID = "paid" VOID = "void" UNCOLLECTIBLE = "uncollectible" class ApprovalStrategy(_ChoicesEnum): ANY = "any" ALL = "all" MAJORITY = "majority" class MonetizationModel(_ChoicesEnum): ONE_TIME = "one_time" SUBSCRIPTION = "subscription" class PlanInterval(_ChoicesEnum): ONE_TIME = "one_time" MONTHLY = "monthly" YEARLY = "yearly" class EntitlementStatus(_ChoicesEnum): TRIALING = "trialing" ACTIVE = "active" PAST_DUE = "past_due" GRACE = "grace" SUSPENDED = "suspended" EXPIRED = "expired" CANCELLED = "cancelled" REVOKED = "revoked"