A Firefly III enrichment engine that makes your data glow
Project description
ff-iii-luciferin
ff-iii-luciferin is a Python enrichment engine for
Firefly III transactions.
⚠️ This project is currently in beta. APIs may still change.
Recent branch updates add richer transaction enrichment and a more readable transaction search example:
- source and destination account references are now preserved on simplified transactions
- the search demo renders a compact table with
rich - the generated OpenAPI client has been refreshed for Firefly III API v6.5.5
It provides a clean, async-first API for post-processing financial data: descriptions, notes, tags, and categories — without polluting your domain logic.
✨ Key Features
- 🔌 Async client for Firefly III API (built on
httpx) - 📝 Update transaction descriptions and notes
- 🏷️ Add or manage tags
- 🗂️ Assign or change categories
- 🏦 Preserve simplified source/destination account references
- 🚫 Filter unwanted transactions (e.g. uncategorized, split-only)
- ⚠️ Explicit handling of API, network, and data errors
- 🧱 Generated OpenAPI client kept internal (not public API)
📦 Installation
From PyPI:
pip install ff-iii-luciferin
Python 3.12+ required.
⚙️ Configuration
The client requires access to your Firefly III instance and a personal access token.
Provide them via environment variables:
FIREFLY_URL=https://your-firefly-instance/api
FIREFLY_TOKEN=your_access_token
Using python-dotenv is optional but recommended for local development.
🚀 Quick Start
Minimal async example:
import asyncio
import os
from ff_iii_luciferin.api import FireflyClient
async def main() -> None:
client = FireflyClient(
base_url=os.environ["FIREFLY_URL"],
token=os.environ["FIREFLY_TOKEN"],
)
try:
transactions = await client.fetch_transactions()
categories = await client.fetch_categories()
await client.update_transaction_description(
transaction_id=123,
description="Updated description",
)
await client.update_transaction_notes(
transaction_id=123,
notes="Additional notes",
)
await client.add_tag_to_transaction(
transaction_id=123,
tag="processed",
)
await client.assign_transaction_category(
transaction_id=123,
new_category_id=1,
)
finally:
await client.close()
asyncio.run(main())
The examples/min_usage_search.py script shows the current transaction search
output with a rich table, including category and account columns.
📄 License
MIT License.
MIT License — see LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ff_iii_luciferin-1.0.0.tar.gz.
File metadata
- Download URL: ff_iii_luciferin-1.0.0.tar.gz
- Upload date:
- Size: 89.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e5e1fc7f1ca8ca305f636e77e435402ca43419e5fe7eaa8b1a5ee56d779a96be
|
|
| MD5 |
f0d78c3526a72dfd4a4c2ec8edc836df
|
|
| BLAKE2b-256 |
8cbeb17b1be10ae5637577e080fb920afe4251fb100c152d206b15242360a385
|
File details
Details for the file ff_iii_luciferin-1.0.0-py3-none-any.whl.
File metadata
- Download URL: ff_iii_luciferin-1.0.0-py3-none-any.whl
- Upload date:
- Size: 429.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a53ffb5c810afe5038cb8e8696e38f8b28f0838d16d2fd27cd2d4e0655e03d6d
|
|
| MD5 |
6087e2a5ff5f9c0e65695ee19f6cdcdc
|
|
| BLAKE2b-256 |
aef1692d9d31c6cfb30afe61066d9ca7bad75fbd2a099e08dd8d86041bc1863e
|