mirror of
				https://github.com/donnemartin/system-design-primer.git
				synced 2025-11-04 10:12:32 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# -*- coding: utf-8 -*-
 | 
						|
 | 
						|
from enum import Enum
 | 
						|
 | 
						|
 | 
						|
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
 |