Skip to content

Commit

Permalink
fixed unicode issues
Browse files Browse the repository at this point in the history
  • Loading branch information
wolph committed May 11, 2018
1 parent 364a970 commit 6c075f4
Show file tree
Hide file tree
Showing 4 changed files with 334 additions and 4 deletions.
2 changes: 1 addition & 1 deletion mt940/parser.py
Expand Up @@ -59,7 +59,7 @@ def parse(src, encoding=None):
exception = e
else: # pragma: no cover
raise exception
else:
else: # pragma: no cover
data = src

transactions = mt940.models.Transactions()
Expand Down
45 changes: 45 additions & 0 deletions tests/self-provided/raiffeisen-cmi.sta
@@ -0,0 +1,45 @@
:20:STARTUMS
:25:UBRTHUHB/123456789150ABCDEF002/HUF
:28C:0072

:60F:C180417HUF25170637,10
:61:180417CF2066637,00N527
Csoportos �tutal�s j�v��r�sa
:86:CAB18D1700041116
109876543210000012345678
HUNGARY KFT.
UV, napi �sszevont ut�nv�t, 2018.04
.17, A13947109201804175000000097, X
:61:180417DF14790,00N031
Bankon bel�li �tutal�s
:86:BBK18D0000188142
123777040156667300100001
SPYMARKET S.R.O.
18175
:61:180417DF3051800,00N061
Deviza �tutal�s
:86:OLD18D038146
HUF 1.218.882,00
Carma Ex Varna
:61:180417DF3892,77N077
D�j, jutal�k
:86:OLD18D038146
HUF 1.218.882,00
:61:180417DF789,24N077
D�j, jutal�k
:86:OLD18D038146
HUF 1.218.882,00
:61:180417DF1578,49N077
D�j, jutal�k
:86:OLD18D038146
HUF 1.218.882,00
:61:180417DF6000,00N077
D�j, jutal�k
:86:OLD18D038146
HUF 1.218.882,00
:62F:C180417HUF25281687,60
:64:C180417HUF25281687,60
:65:C180418HUF25281687,60
:65:C180419HUF25281687,60
:65:C180420HUF25281687,60

279 changes: 279 additions & 0 deletions tests/self-provided/raiffeisen-cmi.yml
@@ -0,0 +1,279 @@
&id003 !!python/object:mt940.models.Transactions
data:
account_identification: UBRTHUHB/123456789150ABCDEF002/HUF
available_balance: !!python/object:mt940.models.Balance
amount: !!python/object:mt940.models.Amount
amount: !!python/object/apply:decimal.Decimal ['25281687.60']
currency: HUF
date: !!python/object/apply:mt940.models.Date
- !!binary |
B+IEEQ==
status: C
final_closing_balance: !!python/object:mt940.models.Balance
amount: !!python/object:mt940.models.Amount
amount: !!python/object/apply:decimal.Decimal ['25281687.60']
currency: HUF
date: !!python/object/apply:mt940.models.Date
- !!binary |
B+IEEQ==
status: C
final_opening_balance: !!python/object:mt940.models.Balance
amount: !!python/object:mt940.models.Amount
amount: !!python/object/apply:decimal.Decimal ['25170637.10']
currency: HUF
date: !!python/object/apply:mt940.models.Date
- !!binary |
B+IEEQ==
status: C
forward_available_balance: !!python/object:mt940.models.Balance
amount: !!python/object:mt940.models.Amount
amount: !!python/object/apply:decimal.Decimal ['25281687.60']
currency: HUF
date: !!python/object/apply:mt940.models.Date
- !!binary |
B+IEFA==
status: C
sequence_number: null
statement_number: '0072'
transaction_reference: STARTUMS
processors:
post_account_identification: []
post_available_balance: []
post_closing_balance: []
post_date_time_indication: []
post_final_closing_balance: []
post_final_opening_balance: []
post_floor_limit_indicator: []
post_forward_available_balance: []
post_intermediate_closing_balance: []
post_intermediate_opening_balance: []
post_non_swift: []
post_opening_balance: []
post_related_reference: []
post_statement: [!!python/name:mt940.processors.date_cleanup_post_processor '']
post_statement_number: []
post_sum_credit_entries: []
post_sum_debit_entries: []
post_transaction_details: [!!python/name:mt940.processors.transaction_details_post_processor '']
post_transaction_reference_number: []
pre_account_identification: []
pre_available_balance: []
pre_closing_balance: []
pre_date_time_indication: []
pre_final_closing_balance: []
pre_final_opening_balance: []
pre_floor_limit_indicator: []
pre_forward_available_balance: []
pre_intermediate_closing_balance: []
pre_intermediate_opening_balance: []
pre_non_swift: []
pre_opening_balance: []
pre_related_reference: []
pre_statement: [!!python/name:mt940.processors.date_fixup_pre_processor '']
pre_statement_number: []
pre_sum_credit_entries: []
pre_sum_debit_entries: []
pre_transaction_details: []
pre_transaction_reference_number: []
tags:
13: !!python/object:mt940.tags.DateTimeIndication
re: !!python/object/apply:re._compile ["^\n (?P<year>\\d{2})\n (?P<month>\\\
d{2})\n (?P<day>\\d{2})\n (?P<hour>\\d{2})\n (?P<minute>\\d{2})\n\
\ (\\+(?P<offset>\\d{4})|)\n ", 98]
20: !!python/object:mt940.tags.TransactionReferenceNumber
re: !!python/object/apply:re._compile ['(?P<transaction_reference>.{0,16})', 98]
21: !!python/object:mt940.tags.RelatedReference
re: !!python/object/apply:re._compile ['(?P<related_reference>.{0,16})', 98]
25: !!python/object:mt940.tags.AccountIdentification
re: !!python/object/apply:re._compile ['(?P<account_identification>.{0,35})',
98]
28: !!python/object:mt940.tags.StatementNumber
re: !!python/object/apply:re._compile ["\n (?P<statement_number>\\d{1,5}) \
\ # 5n\n (?:/?(?P<sequence_number>\\d{1,5}))? # [/5n]\n $", 98]
60: !!python/object:mt940.tags.OpeningBalance
re: &id001 !!python/object/apply:re._compile ["^\n (?P<status>[DC]) # 1!a\
\ Debit/Credit\n (?P<year>\\d{2}) # 6!n Value Date (YYMMDD)\n (?P<month>\\\
d{2})\n (?P<day>\\d{2})\n (?P<currency>.{3}) # 3!a Currency\n (?P<amount>[0-9,]{0,16})\
\ # 15d Amount (includes decimal sign, so 16)\n ", 98]
60M: !!python/object:mt940.tags.IntermediateOpeningBalance
re: *id001
60F: !!python/object:mt940.tags.FinalOpeningBalance
re: *id001
61: !!python/object:mt940.tags.Statement
re: !!python/object/apply:re._compile ["^\n (?P<year>\\d{2}) # 6!n Value Date\
\ (YYMMDD)\n (?P<month>\\d{2})\n (?P<day>\\d{2})\n (?P<entry_month>\\\
d{2})? # [4!n] Entry Date (MMDD)\n (?P<entry_day>\\d{2})?\n (?P<status>[A-Z]?[DC])\
\ # 2a Debit/Credit Mark\n (?P<funds_code>[A-Z])? # [1!a] Funds Code (3rd\
\ character of the currency\n # code, if needed)\n\
\ (?P<amount>[\\d,]{1,15}) # 15d Amount\n (?P<id>[A-Z][A-Z0-9 ]{3})?\
\ # 1!a3!c Transaction Type Identification Code\n (?P<customer_reference>.{0,16})\
\ # 16x Customer Reference\n (//(?P<bank_reference>.{0,16}))? # [//16x]\
\ Bank Reference\n (\\n?(?P<extra_details>.{0,34}))? # [34x] Supplementary\
\ Details\n $", 98]
62: !!python/object:mt940.tags.ClosingBalance
re: *id001
62M: !!python/object:mt940.tags.IntermediateClosingBalance
re: *id001
62F: !!python/object:mt940.tags.FinalClosingBalance
re: *id001
64: !!python/object:mt940.tags.AvailableBalance
re: *id001
65: !!python/object:mt940.tags.ForwardAvailableBalance
re: *id001
86: !!python/object:mt940.tags.TransactionDetails
re: !!python/object/apply:re._compile ["\n (?P<transaction_details>(([\\s\\\
S]{0,65}\\r?\\n?){0,8}[\\s\\S]{0,65}))\n ", 98]
34: !!python/object:mt940.tags.FloorLimitIndicator
re: !!python/object/apply:re._compile ["^\n (?P<currency>[A-Z]{3}) # 3!a Currency\n\
\ (?P<status>[DC]?) # 2a Debit/Credit Mark\n (?P<amount>[0-9,]{0,16})\
\ # 15d Amount (includes decimal sign, so 16)\n $", 98]
NS: !!python/object:mt940.tags.NonSwift
re: !!python/object/apply:re._compile ["\n (?P<non_swift>\n (\\d{2}.{0,})\n\
\ (\\n\\d{2}.{0,})*\n )\n $", 98]
90: !!python/object:mt940.tags.SumEntries
re: &id002 !!python/object/apply:re._compile ["^\n (?P<number>\\d+)\n (?P<currency>.{3})\
\ # 3!a Currency\n (?P<amount>[\\d,]{1,15}) # 15d Amount\n ", 98]
90D: !!python/object:mt940.tags.SumDebitEntries
re: *id002
90C: !!python/object:mt940.tags.SumCreditEntries
re: *id002
transactions:
- !!python/object:mt940.models.Transaction
data:
amount: !!python/object:mt940.models.Amount
amount: !!python/object/apply:decimal.Decimal ['2066637.00']
currency: HUF
bank_reference: null
currency: HUF
customer_reference: ''
date: !!python/object/apply:mt940.models.Date
- !!binary |
B+IEEQ==
extra_details: "Csoportos \xE1tutal\xE1s j\xF3v\xE1\xEDr\xE1sa"
funds_code: F
id: N527
status: C
transaction_details: "CAB18D1700041116\n109876543210000012345678\nHUNGARY KFT.\n\
UV, napi \xF6sszevont ut\xE1nv\xE9t, 2018.04\n.17, A13947109201804175000000097,\
\ X"
transactions: *id003
- !!python/object:mt940.models.Transaction
data:
amount: !!python/object:mt940.models.Amount
amount: !!python/object/apply:decimal.Decimal ['-14790.00']
currency: HUF
bank_reference: null
currency: HUF
customer_reference: ''
date: !!python/object/apply:mt940.models.Date
- !!binary |
B+IEEQ==
extra_details: "Bankon bel\xFCli \xE1tutal\xE1s"
funds_code: F
id: N031
status: D
transaction_details: 'BBK18D0000188142
123777040156667300100001
SPYMARKET S.R.O.
18175'
transactions: *id003
- !!python/object:mt940.models.Transaction
data:
amount: !!python/object:mt940.models.Amount
amount: !!python/object/apply:decimal.Decimal ['-3051800.00']
currency: HUF
bank_reference: null
currency: HUF
customer_reference: ''
date: !!python/object/apply:mt940.models.Date
- !!binary |
B+IEEQ==
extra_details: "Deviza \xE1tutal\xE1s"
funds_code: F
id: N061
status: D
transaction_details: 'OLD18D038146
HUF 1.218.882,00
Carma Ex Varna'
transactions: *id003
- !!python/object:mt940.models.Transaction
data:
amount: !!python/object:mt940.models.Amount
amount: !!python/object/apply:decimal.Decimal ['-3892.77']
currency: HUF
bank_reference: null
currency: HUF
customer_reference: ''
date: !!python/object/apply:mt940.models.Date
- !!binary |
B+IEEQ==
extra_details: "D\xEDj, jutal\xE9k"
funds_code: F
id: N077
status: D
transaction_details: 'OLD18D038146
HUF 1.218.882,00'
transactions: *id003
- !!python/object:mt940.models.Transaction
data:
amount: !!python/object:mt940.models.Amount
amount: !!python/object/apply:decimal.Decimal ['-789.24']
currency: HUF
bank_reference: null
currency: HUF
customer_reference: ''
date: !!python/object/apply:mt940.models.Date
- !!binary |
B+IEEQ==
extra_details: "D\xEDj, jutal\xE9k"
funds_code: F
id: N077
status: D
transaction_details: 'OLD18D038146
HUF 1.218.882,00'
transactions: *id003
- !!python/object:mt940.models.Transaction
data:
amount: !!python/object:mt940.models.Amount
amount: !!python/object/apply:decimal.Decimal ['-1578.49']
currency: HUF
bank_reference: null
currency: HUF
customer_reference: ''
date: !!python/object/apply:mt940.models.Date
- !!binary |
B+IEEQ==
extra_details: "D\xEDj, jutal\xE9k"
funds_code: F
id: N077
status: D
transaction_details: 'OLD18D038146
HUF 1.218.882,00'
transactions: *id003
- !!python/object:mt940.models.Transaction
data:
amount: !!python/object:mt940.models.Amount
amount: !!python/object/apply:decimal.Decimal ['-6000.00']
currency: HUF
bank_reference: null
currency: HUF
customer_reference: ''
date: !!python/object/apply:mt940.models.Date
- !!binary |
B+IEEQ==
extra_details: "D\xEDj, jutal\xE9k"
funds_code: F
id: N077
status: D
transaction_details: 'OLD18D038146
HUF 1.218.882,00'
transactions: *id003
12 changes: 9 additions & 3 deletions tests/test_sta_parsing.py
Expand Up @@ -12,6 +12,12 @@
logger = logging.getLogger(__name__)


try: # pragma: no cover
string_type = unicode
except NameError:
string_type = str


def get_sta_files():
base_path = os.path.abspath(os.path.dirname(__file__))
for path, dirs, files in os.walk(base_path):
Expand Down Expand Up @@ -88,16 +94,16 @@ def test_parse(sta_file):

# Test string and representation methods
for k, v in transactions.data.items():
str(v)
string_type(v)
repr(v)

# Test string and representation methods
for transaction in transactions:
repr(transaction)
str(transaction)
string_type(transaction)

for k, v in transaction.data.items():
str(v)
string_type(v)
repr(v)

# Compare transaction data
Expand Down

0 comments on commit 6c075f4

Please sign in to comment.