# Welcome to MT940’s documentation!

Contents:

- Installation
- Usage
- mt940
  - mt940 package
  - mt940.json module
  - mt940.models module
  - mt940.parser module
  - mt940.processors module
  - mt940.tags module
  - mt940.utils module
- Contributing
  - Types of Contributions
  - Get Started!
  - Pull Request Guidelines
  - Tips
- Credits
  - Development Lead
  - Contributors
- History

- Documentation

    - http://mt940.readthedocs.org/en/latest/

- Source

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

- Bug reports

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

- Package homepage

    - https://pypi.python.org/pypi/mt-940

- My blog

    - http://wol.ph/

## 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.python.org/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

# Indices and tables

- Index

- Module Index

- Search Page