annotate src/ofxstatement/plugins/us_hsbc/record.py @ 7:829eb62755b0

First cut at an HSBC (USA) plugin
author Louis Opter <kalessin@kalessin.fr>
date Thu, 17 Nov 2016 16:25:12 -0800
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
1 # Copyright (c) 2016, Louis Opter <louis@opter.org>
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
2 #
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
3 # This file is part of ofxstatement-us-hsbc.
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
4 #
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
5 # ofxstatement-us-hsbc is free software: you can redistribute it and/or
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
6 # modify it under the terms of the GNU General Public License as
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
7 # published by the Free Software Foundation, either version 3 of the
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
8 # License, or (at your option) any later version.
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
9 #
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
10 # ofxstatement-us-hsbc is distributed in the hope that it will be
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
11 # useful, but WITHOUT ANY WARRANTY; without even the implied warranty
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
12 # of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
13 # GNU General Public License for more details.
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
14 #
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
15 # You should have received a copy of the GNU General Public License
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
16 # along with this program. If not, see <http://www.gnu.org/licenses/>.
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
17
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
18 import enum
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
19 import os
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
20
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
21 from typing import List
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
22
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
23
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
24 class CsvIndexes(enum.Enum):
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
25
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
26 STATUS = 0
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
27 DATE = 1
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
28 ORIGINAL_DESCRIPTION = 2
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
29 SPLIT_TYPE = 3
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
30 CATEGORY = 4
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
31 CURRENCY = 5
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
32 AMOUNT = 6
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
33 USER_DESCRIPTION = 7
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
34 MEMO = 8
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
35 CLASSIFICATION = 9
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
36 SIMPLE_DESCRIPTION = 10
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
37
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
38
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
39 class Record:
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
40
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
41 status: str = None
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
42 date: str = None
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
43 original_description: str = None
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
44 split_type: str = None
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
45 category: str = None
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
46 currency: str = None
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
47 amount: str = None
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
48 user_description: str = None
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
49 memo: str = None
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
50 classification: str = None
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
51 account_name: str = None
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
52 simple_description: str = None
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
53
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
54 def __init__(self, line: List[str]) -> None:
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
55 for index in CsvIndexes:
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
56 setattr(self, index.name.lower(), line[index.value].strip())
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
57
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
58 def __repr__(self) -> str:
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
59 linesep = "{} ".format(os.linesep)
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
60 return "<{}({}{}) object at 0x{:x}>".format(
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
61 self.__class__.__name__,
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
62 linesep,
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
63 ",{}".format(linesep).join(
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
64 "{}={}".format(attrname, getattr(self, attrname.lower()))
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
65 for attrname in map(lambda idx: idx.name.lower(), CsvIndexes)
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
66 ),
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
67 id(self),
829eb62755b0 First cut at an HSBC (USA) plugin
Louis Opter <kalessin@kalessin.fr>
parents:
diff changeset
68 )