Fix Postponed Evaluation of Annotations

Adds missing __future__ import.
Moves transaction parser method into Parser class.
This commit is contained in:
Luís Murta 2021-06-30 21:12:44 +01:00
parent 3e20ae97db
commit c51d31db47
Signed by: satprog
GPG Key ID: DDF2EFC6179009DC

View File

@ -1,3 +1,4 @@
from __future__ import annotations
from collections import namedtuple
from decimal import Decimal
from importlib import import_module
@ -62,26 +63,6 @@ def parse_data(db: DBManager, filename: str, bank: list = []) -> None:
db.insert_transactions(transactions)
def transaction(line: str, bank: str, options: Options, func) -> Transaction:
line = line.rstrip().split(options.separator)
index = Parser.index(line, options)
date = (
dt.datetime.strptime(line[index.date].strip(), options.date_fmt)
.date()
.isoformat()
)
text = line[index.text]
value = utils.parse_decimal(line[index.value])
if index.negate:
value = -value
transaction = Transaction(date, text, bank, value)
if options.additional_parser:
func(transaction)
return transaction
class Parser:
def __init__(self, filename: str, bank: str, options: dict):
self.filename = filename
@ -97,9 +78,9 @@ class Parser:
def func(self, transaction: Transaction):
pass
def parse(self) -> list:
def parse(self) -> list[Transaction]:
transactions = [
transaction(line, self.bank, self.options, self.func)
Parser.transaction(line, self.bank, self.options, self.func)
for line in list(open(self.filename, encoding=self.options.encoding))[
self.options.start - 1 : self.options.end
]
@ -135,6 +116,26 @@ class Parser:
return index
@staticmethod
def transaction(line: str, bank: str, options: Options, func) -> Transaction:
line = line.rstrip().split(options.separator)
index = Parser.index(line, options)
date = (
dt.datetime.strptime(line[index.date].strip(), options.date_fmt)
.date()
.isoformat()
)
text = line[index.text]
value = utils.parse_decimal(line[index.value])
if index.negate:
value = -value
transaction = Transaction(date, text, bank, value)
if options.additional_parser:
func(transaction)
return transaction
class Bank1(Parser):
def __init__(self, filename: str, bank: str, options: dict):