24 lines
580 B
Python
24 lines
580 B
Python
from abc import ABC, abstractmethod
|
|
from dataclasses import dataclass
|
|
from typing import List
|
|
|
|
|
|
@dataclass
|
|
class ParsedTransaction:
|
|
operation_date: str # ISO date or datetime
|
|
debit_date: str | None
|
|
amount: float # signed: negative = expense
|
|
amount_card_currency: float | None
|
|
description: str
|
|
card_tail: str # last 4 digits for account matching
|
|
|
|
|
|
class BaseBankParser(ABC):
|
|
@abstractmethod
|
|
def can_parse(self, filename: str) -> bool:
|
|
pass
|
|
|
|
@abstractmethod
|
|
def parse(self, file_path: str) -> List[ParsedTransaction]:
|
|
pass
|