Lumbago is the overall project for a family of Python accounting
libraries. lumbago-core handles accounts, journals,
transactions, and storing those records.
It is for people building accounting tools in Python. You might use it in a small script to record transactions or inside a larger application. You write the parts that collect the data and decide what to do with it.
The core library follows three basic ideas:
- Represent accounts, money, and transactions as Python objects built from a few shared base classes.
- Extend those classes with your own fields and methods, while keeping the existing validation rules.
- Keep accounting objects separate from storage, so the same objects can be used in memory or with a database.
Your code creates accounts, then puts each transaction in a journal entry. The entry contains a date, a description, and the amounts to debit or credit. The core library checks that the accounts exist, that they are active, and that debits equal credits for each currency.
For example, a $125 cash sale has a $125 debit to Cash and a $125 credit to Sales revenue. An entry with a $125 debit and a $120 credit is rejected.
Records can stay in memory while your program runs, or be saved in a SQLite or PostgreSQL database. Your code chooses when to save a group of changes. Unfinished changes are rolled back. Saved journal entries cannot be edited or deleted through the library; corrections use new entries.
You can export transactions to a CSV file with one row for each debit or credit, so a spreadsheet or another program can read them.
The core library is still in early development and requires Python 3.12 or newer. A command-line app, user interface, and financial reports are still planned.
The core library's README has setup instructions. The examples show how to create transactions, save records, and export CSV files.