Skip to main content

Hooks for the beangulp importer.

Project description

hoostus-beangulp-hooks

This uses machine learning, trained on your previous postings, to predict what the second leg of an imported transaction should be.

How to use it with beangulp.

The easiest way.

  1. Import it: from hoostus.beangulp.hooks import predict_posting
  2. Add the simple_hook to the list of hooks you send to beangulp.

In the importer.py you use with beangulp this might look something like:

from hoostus.beangulp.hooks import predict_posting
if __name__ == '__main__':
    importers = [ ... ]
    hooks = [predict_posting.simple_hook]
    ingest = beangulp.Ingest(importers, hooks)
    ingest()

If you want to configure it.

Use predict_posting.hook directly and pass in a map of weights and a list of denied accounts -- accounts you don't want to use for training the machine learning model. Note that beangulp expects hooks to take 2 parameters but predict_posting.hook takes 4 paramters. This means you will need to use functools.partial (or similar) to wrap it.

In the importer.py you use with beangulp this might look something like:

from hoostus.beangulp.hooks import predict_posting
import functools
if __name__ == '__main__':
    importers = [ ... ]
    
    my_weights = {'payee': 0.5, 'narration': 0.9, 'date.day': 0.2}
    my_denied_accounts = ['Expenses:Donuts']
    my_hook = functools.partial(predict_posting.hook, my_weights, my_denied_accounts)
    hooks = [my_hook]
    ingest = beangulp.Ingest(importers, hooks)
    ingest()

Implementation Notes

The training is done on a per-account basis. Only transactions from the impoted_account are considered.

Transactions involving closed accounts are removed from the training data.

Any transactions in the training data with a single leg are removed. This isn't valid beancount syntax anyway and is an artifact of (what I believe to be) a bug in beangulp which adds all of the recently imported transactions into the list of existing entries provided to hooks. This muddies the training data, in some cases making it useless.

This is basically recycled from https://github.com/beancount/smart_importer but adapted to the beangulp framework

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

hoostus_beangulp_hooks-1.0.1.tar.gz (4.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hoostus_beangulp_hooks-1.0.1-py3-none-any.whl (4.8 kB view details)

Uploaded Python 3

File details

Details for the file hoostus_beangulp_hooks-1.0.1.tar.gz.

File metadata

File hashes

Hashes for hoostus_beangulp_hooks-1.0.1.tar.gz
Algorithm Hash digest
SHA256 91375e0beb99bc2757170001c4b7747ffade20b23a4ad21eee7199a6fe262c4e
MD5 4f1f1eeefca1cf081bab33d7d3eca9b4
BLAKE2b-256 ea276ff354b6c99fb8eff655bb3e74712eed3304444fbbd5cd0958eb59d1692e

See more details on using hashes here.

File details

Details for the file hoostus_beangulp_hooks-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for hoostus_beangulp_hooks-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f617d9ad5d489d0e3c4c8fbb41fce9e72a733fcf58943f4027160f0df76ef47d
MD5 3c65c8a1960550da5e1eb9c68f27f29d
BLAKE2b-256 765b18efcb0bd79da1711522d04a9b952efd912ae756c415fa41accefa885abe

See more details on using hashes here.

Supported by

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