GithubHelp home page GithubHelp logo

ofxstatement-sample's Introduction

Sample plugin for ofxstatement

This project provides a boilerplate for custom plugins for ofxstatement.

ofxstatement is a tool to convert proprietary bank statement to OFX format, suitable for importing to GnuCash. Plugin for ofxstatement parses a particular proprietary bank statement format and produces common data structure, that is then formatted into an OFX file.

Users of ofxstatement have developed several plugins for their banks. They are listed on main ofxstatement site. If your bank is missing, you can develop your own plugin.

Setting up development environment

It is recommended to use virtualenv make a clean development environment. Setting up dev environment for writing a plugin is easy:

$ git clone https://github.com/kedder/ofxstatement-sample ofxstatement-yourbank
$ cd ofxstatement-yourbank
$ virtualenv -p python3 --no-site-packages .venv
$ . .venv/bin/activate
(.venv)$ python setup.py develop

This will download all the dependencies and install them into your virtual environment. After this, you should be able to do:

(.venv)$ ofxstatement list-plugins
The following plugins are available:

  sample           Sample plugin (for developers only)

Your own plugin

To create your own plugin, follow these steps:

  • Edit setup.py and provide relevant metadata for your plugin. Pay close attention to entry_points parameter to setup function: it lists plugins you are registering within ofxstatement. Give meaningful name to the plugin and provide plugin class name
  • Replace contents of README.rst with description of your plugin
  • Rename ofxstatement/plugins/sample.py to match plugin package name you have provided in entry_points parameter.
  • Open renamed sample.py and rename SamplePlugin and SampleParser classes to match your plugin class name.
  • Now, draw the rest of the owl (c).

Your StatementParser is the main object that does all the hard work. It has only one public method: parse(), that should return ofxstatement.statement.Statement object, filled with data from given input. The default implementation, however, splits this work into two parts: split_records() to split the whole file into logical parts, e.g. transaction records, and parse_record() to extract information from individual record. See src/ofxstatement/parser.py for details. If your statement' format looks like CSV file, you might find CsvStatementParser class useful: it simplifies mapping bettween CSV columns and StatementLine attributes.

Plugin interface consists only of get_parser() method, that returns configured StatementParser object for given input filename. Docstrings on Plugin class is also useful for describing the purpose of your plugin. First line of it is visible in ofxstatement list-plugins output.

Testing

Test your code as you would do with any other project. To make sure ofxstatement is still able to load your plugin, run:

(.venv)$ ofxstatement list-plugins

You should be able to see your plugin listed.

After you are done

After your plugin is ready, feel free to open an issue on ofxstatement project to include your plugin in "known plugin list". That would hopefully make life of other clients of your bank easier.

ofxstatement-sample's People

Contributors

kedder avatar frankit avatar

Watchers

 avatar Acampbell avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.