mt940.models module

class mt940.models.Amount(amount, status, currency=None, **kwargs)[source]

Bases: Model

Amount object containing currency and amount

Parameters:
  • amount (str) – Amount using either a , or a . as decimal separator

  • status (str) – Either C or D for credit or debit respectively

  • currency (str) – A 3 letter currency (e.g. EUR)

>>> Amount('123.45', 'C', 'EUR')
<123.45 EUR>
>>> Amount('123.45', 'D', 'EUR')
<-123.45 EUR>
class mt940.models.Balance(status=None, amount=None, date=None, **kwargs)[source]

Bases: Model

Parse balance statement

Parameters:
  • status (str) – Either C or D for credit or debit respectively

  • amount (Amount) – Object containing the amount and currency

  • date (date) – The balance date

>>> balance = Balance('C', '0.00', Date(2010, 7, 22))
>>> balance.status
'C'
>>> balance.amount.amount
Decimal('0.00')
>>> isinstance(balance.date, Date)
True
>>> balance.date.year, balance.date.month, balance.date.day
(2010, 7, 22)
>>> Balance()
<None @ None>
class mt940.models.Date(*args, **kwargs)[source]

Bases: date, Model

Just a regular date object which supports dates given as strings

>>> Date(year='2000', month='1', day='2')
Date(2000, 1, 2)
>>> Date(year='123', month='1', day='2')
Date(2123, 1, 2)
Parameters:
  • year (str) – Year (0-100), will automatically add 2000 when needed

  • month (str) – Month

  • day (str) – Day

class mt940.models.DateTime(*args, **kwargs)[source]

Bases: datetime, Model

Just a regular datetime object which supports dates given as strings

>>> DateTime(year='2000', month='1', day='2', hour='3', minute='4',
...          second='5', microsecond='6')
DateTime(2000, 1, 2, 3, 4, 5, 6)
>>> DateTime(year='123', month='1', day='2', hour='3', minute='4',
...          second='5', microsecond='6')
DateTime(2123, 1, 2, 3, 4, 5, 6)
>>> DateTime(2000, 1, 2, 3, 4, 5, 6)
DateTime(2000, 1, 2, 3, 4, 5, 6)
>>> DateTime(year='123', month='1', day='2', hour='3', minute='4',
...          second='5', microsecond='6', tzinfo=FixedOffset('60'))
DateTime(2123, 1, 2, 3, 4, 5, 6, tzinfo=<mt940.models.FixedOffset ...>)
Parameters:
  • year (str) – Year (0-100), will automatically add 2000 when needed

  • month (str) – Month

  • day (str) – Day

  • hour (str) – Hour

  • minute (str) – Minute

  • second (str) – Second

  • microsecond (str) – Microsecond

  • tzinfo (tzinfo) – Timezone information. Overwrites offset

  • offset (str) – Timezone offset in minutes, generates a tzinfo object with the given offset if no tzinfo is available.

class mt940.models.FixedOffset(offset=0, name=None)[source]

Bases: tzinfo

Fixed time offset based on the Python docs Source: https://docs.python.org/2/library/datetime.html#tzinfo-objects

>>> offset = FixedOffset(60)
>>> offset.utcoffset(None).total_seconds()
3600.0
>>> offset.dst(None)
datetime.timedelta(0)
>>> offset.tzname(None)
'60'
dst(dt)[source]

datetime -> DST offset as timedelta positive east of UTC.

tzname(dt)[source]

datetime -> string name of time zone.

utcoffset(dt)[source]

datetime -> timedelta showing offset from UTC, negative values indicating West of UTC

class mt940.models.Model[source]

Bases: object

class mt940.models.SumAmount(*args, **kwargs)[source]

Bases: Amount

class mt940.models.Transaction(transactions, data=None)[source]

Bases: Model

update(data)[source]
class mt940.models.Transactions(processors=None, tags=None)[source]

Bases: Sequence

Collection of Transaction objects with global properties such as begin and end balance

DEFAULT_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': [<function date_cleanup_post_processor>, <function transactions_to_transaction.<locals>._transactions_to_transaction>], 'post_statement_number': [], 'post_sum_credit_entries': [], 'post_sum_debit_entries': [], 'post_transaction_details': [<function 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': [<function date_fixup_pre_processor>], 'pre_statement_number': [], 'pre_sum_credit_entries': [], 'pre_sum_debit_entries': [], 'pre_transaction_details': [], 'pre_transaction_reference_number': []}

Using the processors you can pre-process data before creating objects and modify them after creating the objects

property currency
static defaultTags()[source]
classmethod normalize_tag_id(tag_id)[source]
parse(data)[source]

Parses mt940 data, expects a string with data

Parameters:

data (str) – The MT940 data

Returns: list of Transaction

sanitize_tag_id_matches(matches)[source]
classmethod strip(lines)[source]