mirror of
https://github.com/donnemartin/system-design-primer.git
synced 2024-03-22 13:11:35 +08:00
48 lines
1.4 KiB
Python
48 lines
1.4 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
|
||
|
class DefaultCategories(Enum):
|
||
|
|
||
|
HOUSING = 0
|
||
|
FOOD = 1
|
||
|
GAS = 2
|
||
|
SHOPPING = 3
|
||
|
...
|
||
|
|
||
|
seller_category_map = {}
|
||
|
seller_category_map['Exxon'] = DefaultCategories.GAS
|
||
|
seller_category_map['Target'] = DefaultCategories.SHOPPING
|
||
|
|
||
|
|
||
|
class Categorizer(object):
|
||
|
|
||
|
def __init__(self, seller_category_map, seller_category_overrides_map):
|
||
|
self.seller_category_map = seller_category_map
|
||
|
self.seller_category_overrides_map = seller_category_overrides_map
|
||
|
|
||
|
def categorize(self, transaction):
|
||
|
if transaction.seller in self.seller_category_map:
|
||
|
return self.seller_category_map[transaction.seller]
|
||
|
if transaction.seller in self.seller_category_overrides_map:
|
||
|
seller_category_map[transaction.seller] = \
|
||
|
self.manual_overrides[transaction.seller].peek_min()
|
||
|
return self.seller_category_map[transaction.seller]
|
||
|
return None
|
||
|
|
||
|
|
||
|
class Transaction(object):
|
||
|
|
||
|
def __init__(self, timestamp, seller, amount):
|
||
|
self.timestamp = timestamp
|
||
|
self.seller = seller
|
||
|
self.amount = amount
|
||
|
|
||
|
|
||
|
class Budget(object):
|
||
|
|
||
|
def __init__(self, template_categories_to_budget_map):
|
||
|
self.categories_to_budget_map = template_categories_to_budget_map
|
||
|
|
||
|
def override_category_budget(self, category, amount):
|
||
|
self.categories_to_budget_map[category] = amount
|
||
|
|