84 lines
2.4 KiB
Python
84 lines
2.4 KiB
Python
from dataclasses import dataclass
|
|
from typing import NamedTuple, Tuple
|
|
|
|
from collections.abc import Sequence
|
|
|
|
from enum import Enum, auto
|
|
|
|
class CardIssuer(Enum):
|
|
AmericanExpress="American Express"
|
|
|
|
class SignUpBonus(NamedTuple):
|
|
points: int
|
|
time_months: int
|
|
spend: int
|
|
|
|
class PointsCategory(Enum):
|
|
Hotel=auto
|
|
Travel=auto
|
|
Delta=auto
|
|
Gas=auto
|
|
Restaurant=auto
|
|
SuperMarket=auto
|
|
|
|
class PointsType(Enum):
|
|
CashBack=auto
|
|
DeltaSkyMiles="Delta SkyMiles®"
|
|
|
|
|
|
@dataclass
|
|
class CreditCard:
|
|
issuer: CardIssuer
|
|
card_name: str
|
|
annual_fee: int
|
|
signup_bonus: SignUpBonus
|
|
points_type: PointsType
|
|
default_multiplier: float
|
|
category_multipliers: Sequence[Tuple[PointsCategory, float]]
|
|
other: Sequence[str]
|
|
|
|
|
|
credit_cards = [
|
|
CreditCard(
|
|
CardIssuer.AmericanExpress,
|
|
"Delta SkyMiles® Reserve American Express Card",
|
|
650,
|
|
SignUpBonus(70000, 6, 5000),
|
|
PointsType.DeltaSkyMiles,
|
|
1,
|
|
[
|
|
(PointsCategory.Delta, 3)
|
|
],
|
|
[
|
|
"15 Visits per Medallion® Year to the Delta Sky Club® when flying Delta",
|
|
"$2,500 Medallion® Qualification Dollars with MQD Headstart each Medallion Qualification Year and earn $1 MQD for each $10 in purchases",
|
|
"$240 Resy Credit",
|
|
"$120 Rideshare Credit",
|
|
"15% off when using miles to book Award Travel",
|
|
]
|
|
),
|
|
CreditCard(
|
|
CardIssuer.AmericanExpress,
|
|
"Delta SkyMiles® Gold American Express Card",
|
|
150,
|
|
SignUpBonus(50000, 6, 2000),
|
|
PointsType.DeltaSkyMiles,
|
|
1,
|
|
[
|
|
(PointsCategory.Delta, 3)
|
|
(PointsCategory.Restaurant, 2),
|
|
(PointsCategory.SuperMarket, 2),
|
|
],
|
|
[
|
|
"15% off when using miles to book Award Travel",
|
|
"$200 Delta Flight Credit: After you spend $10,000 in purchases on your Card in a calendar year, you can receive a $200 Delta Flight Credit to use toward future travel.",
|
|
"$100 Delta Stays Credit: Get up to $100 back per year as a statement credit after using your Delta SkyMiles® Gold American Express Card to book prepaid hotels or vacation rentals through Delta Stays on delta.com.",
|
|
]
|
|
)
|
|
]
|
|
|
|
|
|
card_names_by_issuer = {issuer: [] for issuer in CardIssuer}
|
|
|
|
for card in credit_cards:
|
|
card_names_by_issuer[card.issuer].append(card.card_name) |