Skip to main content

A library to parse MT940 files and returns smart Python collections for statistics and manipulation.

Project description

MT940 test status MT940 Pypi version MT940 code coverage https://img.shields.io/pypi/pyversions/mt-940.svg

mt940 - A library to parse MT940 files and returns smart Python collections for statistics and manipulation.

Install

To install the latest release:

pip install mt-940

Or if pip is not available:

easy_install mt-940

To install the latest development release:

git clone --branch develop https://github.com/WoLpH/mt940.git mt940
cd ./mt940
virtualenv .env
source .env/bin/activate
pip install -e .

To run the tests you can use the py.test command or just run tox to test everything in all supported python versions.

Usage

Basic parsing:

import mt940
import pprint

transactions = mt940.parse('mt940_tests/jejik/abnamro.sta')

print('Transactions:')
print(transactions)
pprint.pprint(transactions.data)

print()
for transaction in transactions:
    print('Transaction: ', transaction)
    pprint.pprint(transaction.data)

Set opening / closing balance information on each transaction:

import mt940
import pprint

mt940.tags.BalanceBase.scope = mt940.models.Transaction

# The currency has to be set manually when setting the BalanceBase scope to Transaction.
transactions = mt940.models.Transactions(processors=dict(
    pre_statement=[
        mt940.processors.add_currency_pre_processor('EUR'),
    ],
))

with open('mt940_tests/jejik/abnamro.sta') as f:
    data = f.read()

transactions.parse(data)

for transaction in transactions:
    print('Transaction: ', transaction)
    pprint.pprint(transaction.data)

Simple json encoding:

import json
import mt940


transactions = mt940.parse('mt940_tests/jejik/abnamro.sta')

print(json.dumps(transactions, indent=4, cls=mt940.JSONEncoder))

Parsing statements from the Dutch bank ASN where tag 61 does not follow the Swift specifications:

def ASNB_mt940_data():
    with open('mt940_tests/ASNB/0708271685_09022020_164516.940.txt') as fh:
        return fh.read()

def test_ASNB_tags(ASNB_mt940_data):
    tag_parser = mt940.tags.StatementASNB()
    trs = mt940.models.Transactions(tags={
        tag_parser.id: tag_parser
    })

trs.parse(ASNB_mt940_data)
trs_data = pprint.pformat(trs.data, sort_dicts=False)
print(trs_data)

Contributing

Help is greatly appreciated, just please remember to clone the development branch and to run tox before creating pull requests.

Travis tests for flake8 support and test coverage so it’s always good to check those before creating a pull request.

Development branch: https://github.com/WoLpH/mt940/tree/develop

To run the tests:

pip install -r mt940_tests/requirements.txt
py.test

Or to run the tests on all available Python versions:

pip install tox
tox

Info

Python support

Python 2.7, >= 3.3

Blog

http://wol.ph/

Source

https://github.com/WoLpH/mt940

Documentation

http://mt940.rtfd.org

Changelog

http://mt940.readthedocs.org/en/latest/history.html

API

http://mt940.readthedocs.org/en/latest/modules.html

Issues/roadmap

https://github.com/WoLpH/mt940/issues

Travis

http://travis-ci.org/WoLpH/mt940

Test coverage

https://coveralls.io/r/WoLpH/mt940

Pypi

https://pypi-hypernode.com/pypi/mt-940

Ohloh

https://www.ohloh.net/p/mt-940

License

BSD.

git repo

$ git clone https://github.com/WoLpH/mt940.git

install dev

$ git clone https://github.com/WoLpH/mt940.git mt940
$ cd ./mt940
$ virtualenv .env
$ source .env/bin/activate
$ pip install -e .

tests

$ py.test

Changelog

  • v4.23.0 added optional support for spaces in extra details post processor to fix #85 v4.23.0

  • v4.22.0 added support for more “additional purpose” keys to fix #85 v4.22.0

  • v4.21.0 improved performance to scale linear instead of quadratic v4.21.0

  • v4.20.0 Added tag 61 support for the ASN bank thanks to @gpaulissen v4.20.0

  • v4.19.0 Parsing GV codes anywhere in purpose thanks to @bdabelow v4.19.0

  • v4.18.0 renamed tests to mt940_tests to fix #78 v4.18.0

  • v4.16.0 improved non-swift support for banks using different standards. Fixes #74 v4.16.0

  • v4.15.0 Including tests in package v4.15.0

  • v4.13.2 Fixed python 3 tests v4.13.2

  • v4.13.1 fixed windows bug when directly passing data. Fixes #68 v4.13.1

  • v4.13.0 Improved entry date handling and added workaround for banks using too much whitespace v4.13.0

  • v4.12.2 Relaxed regexes for Fiducia/Volksbank Ortenau thanks to @jahir v4.12.2

  • v4.11.0 Fixes #56: Transaction details parsing error if content is unfortunately wrapped v4.11.0

  • v4.10.0 Fixed overzealous whitespace trimming thanks to @FelixSchwarz and added :61: support for Sberbank thanks to @csfulop v4.10.0

  • v4.9.0 Fixed #47 and #48 thanks to @sbi v4.9.0

  • v4.8.1 removed debug statement thanks to @robfech v4.8.1

  • v4.8.0 Added German transaction details parsing (#30, thanks to @sweh) and fixed february 29th support (#45, thanks to @fHachenberg) v4.8.0

  • v4.7 Fixed #42 thanks to @cluck. NS records are now parsed correctly v4.7

  • v4.6 Fixed #42 thanks to @cluck. NS records are now parsed correctly v4.6

  • v4.5 fixed wrong repetitions cound in TransactionDetails (fixes #37) v4.5

  • v4.4 Added support for mBank Collect and fixed MT942 support thanks to @sq9mev v4.4

  • v4.3 Added mt942 support thanks to @bumi

  • v4.2 Added single input agnostic parse method. Thanks to @philippeowagner

  • v4.1 Added NS (non-swift) support. Fixes #23

  • v4.0 Added support for many more MT940 variants

  • v3.2 Added support for intermediate/final closing/opening balance

  • v3.1 Fixed #12. Previously matched tags in the middle of the line

  • v3.0 Added Python 3 support

  • v2.0 Version 2.0 with 100% test coverage and better docs

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mt-940-4.23.0.tar.gz (69.9 kB view details)

Uploaded Source

Built Distribution

mt_940-4.23.0-py2.py3-none-any.whl (283.2 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file mt-940-4.23.0.tar.gz.

File metadata

  • Download URL: mt-940-4.23.0.tar.gz
  • Upload date:
  • Size: 69.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/3.8

File hashes

Hashes for mt-940-4.23.0.tar.gz
Algorithm Hash digest
SHA256 9274bc8298b2d4b69cb3936bdcda315b50e45975789f519a237bdec58346b8d7
MD5 6ebb34af12428f6eabeeaa7ac12c8da1
BLAKE2b-256 1c1186964d856e774c3594a865c0874bd86e22cad691d2e29be84b117c806c92

See more details on using hashes here.

File details

Details for the file mt_940-4.23.0-py2.py3-none-any.whl.

File metadata

  • Download URL: mt_940-4.23.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 283.2 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/3.8

File hashes

Hashes for mt_940-4.23.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 1f727184a12a8f289310620d9a7fbdda2737c396fb5abb356838a7d2823359b0
MD5 cc20d2174d8d6314fee6935c42929508
BLAKE2b-256 f27b84f5fe22d7d9644a5f315127659631eafff3c784202ab4e179bd724a8900

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page