1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177
|
ofxparse
========
ofxparse is a parser for Open Financial Exchange (.ofx) format files. OFX
files are available from almost any online banking site, so they work well
if you want to pull together your finances from multiple sources. Online
trading accounts also provide account statements in OFX files.
There are three different types of OFX files, called BankAccount,
CreditAccount and InvestmentAccount files. This library has been tested with
real-world samples of all three types. If you find a file that does not work
with this library, please consider contributing the file so ofxparse can be
improved. See the Help! section below for directions on how to do this.
Example Usage
=============
Here's a sample program
.. code:: python
from ofxparse import OfxParser
with codecs.open('file.ofx') as fileobj:
ofx = OfxParser.parse(fileobj)
# The OFX object
ofx.account # An Account object
# AccountType
# (Unknown, Bank, CreditCard, Investment)
# Account
account = ofx.account
account.account_id # The account number
account.number # The account number (deprecated -- returns account_id)
account.routing_number # The bank routing number
account.branch_id # Transit ID / branch number
account.type # An AccountType object
account.statement # A Statement object
account.institution # An Institution object
# InvestmentAccount(Account)
account.brokerid # Investment broker ID
account.statement # An InvestmentStatement object
# Institution
institution = account.institution
institution.organization
institution.fid
# Statement
statement = account.statement
statement.start_date # The start date of the transactions
statement.end_date # The end date of the transactions
statement.balance # The money in the account as of the statement date
statement.available_balance # The money available from the account as of the statement date
statement.transactions # A list of Transaction objects
# InvestmentStatement
statement = account.statement
statement.positions # A list of Position objects
statement.transactions # A list of InvestmentTransaction objects
# Transaction
for transaction in statement.transactions:
transaction.payee
transaction.type
transaction.date
transaction.user_date
transaction.amount
transaction.id
transaction.memo
transaction.sic
transaction.mcc
transaction.checknum
# InvestmentTransaction
for transaction in statement.transactions:
transaction.type
transaction.tradeDate
transaction.settleDate
transaction.memo
transaction.security # A Security object
transaction.income_type
transaction.units
transaction.unit_price
transaction.comission
transaction.fees
transaction.total
transaction.tferaction
# Positions
for position in statement.positions:
position.security # A Security object
position.units
position.unit_price
position.market_value
# Security
security = transaction.security
# or
security = position.security
security.uniqueid
security.name
security.ticker
security.memo
Help!
=====
Sample ``.ofx`` and ``.qfx`` files are very useful. If you want to help us out,
please edit all identifying information from the file and then email it to
jseutter dot ofxparse at gmail dot com.
Development
===========
Prerequisites::
# Ubuntu
sudo apt-get install python-beautifulsoup python-nose python-coverage-test-runner
# Python 3 (pip)
pip install BeautifulSoup4 six lxml nose coverage
# Python 2 (pip)
pip install BeautifulSoup six nose coverage
The `six` package is required for python 2.X compatibility
Tests:
Simply running the ``nosetests`` command should run the tests.
.. code:: bash
nosetests
If you don't have nose installed, the following might also work:
.. code:: bash
python -m unittest tests.test_parse
Test Coverage Report:
.. code:: bash
coverage run -m unittest tests.test_parse
# text report
coverage report
# html report
coverage html
firefox htmlcov/index.html
Homepage
========
| Homepage: https://sites.google.com/site/ofxparse
| Source: https://github.com/jseutter/ofxparse
License
=======
ofxparse is released under an MIT license. See the LICENSE file for the actual
license text. The basic idea is that if you can use Python to do what you are
doing, you can also use this library.
|