ff-iii-luciferin
ff-iii-luciferin is an async Python client and a small set of domain helpers for working with Firefly III transactions. It fetches transactions and categories, exposes simplified models, and updates a transaction's description, notes, tags, or category.
Python 3.12 or newer is required.
Install
pip install ff-iii-luciferin
Quickstart
Set FIREFLY_URL to the instance root (without /api/v1) and
FIREFLY_TOKEN to a personal access token. The client does not read environment
variables itself; this example passes them explicitly.
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:
about = await client.get_about()
print(f"Firefly III: {about.version}")
transactions = await client.fetch_transactions(max_pages=1)
for tx in transactions:
print(tx.id, tx.date, tx.amount, tx.description, tx.external_id)
finally:
await client.close()
asyncio.run(main())
fetch_transactions() defaults to withdrawals; pass tx_type for
another Firefly III transaction type. Multipart and invalid transactions are
skipped during listing, while get_transaction() raises FireflyAPIError for
an unsupported multipart transaction.
Documentation
The full documentation covers setup, transaction updates, matching semantics, and the public API reference. The OpenAPI-generated transport models are implementation details and are not part of that reference.
Local development
With Docker and Python 3 installed, start an isolated Firefly III demo and run a read-only example:
bash scripts/demo/start.sh
set -a; source .firefly-demo/env; set +a
uv run python examples/min_usage_search.py
The demo listens on http://127.0.0.1:18080 and seeds accounts, categories,
withdrawals, a deposit, and a transfer in SQLite. Repeated starts reuse the
data without duplicating seed records. bash scripts/demo/stop.sh stops the
container while keeping the database. .firefly-demo/ contains a token and
app key; keep it private. New containers use fireflyiii/core:latest; set
FIREFLY_DEMO_IMAGE=fireflyiii/core:version-6.7.4 to pin an image before the
first start. An existing container keeps its image until recreated.
To run the live test against an isolated instance, set FIREFLY_E2E_URL and
FIREFLY_E2E_TOKEN, then run uv run pytest tests/test_firefly_e2e.py.
Without those variables, the test is skipped. The GitHub Actions E2E workflow
starts its own disposable instance.
Build the documentation locally with:
uv sync --locked --group docs
uv run --group docs mkdocs build --strict
See LICENSE for the MIT license.
Metadata
Release files for ff-iii-luciferin 1.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ff_iii_luciferin-1.2.2.tar.gz | 102.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ff_iii_luciferin-1.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 547.1 kB
Release files / ff_iii_luciferin-1.2.2.tar.gz
| Download URL | ff_iii_luciferin-1.2.2.tar.gz |
|---|---|
| Size | 102.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5c9e415633fbbfc32fca3c674698d35d4eeb67bf8ba788102764401051a9013d
|
|
BLAKE2b-256 checksum How to use checksums |
bc92e22191d1ca2e4d0d3b739a08832612b2557f0d4a704cd9247e8668069f02
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","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}
|
Release files / ff_iii_luciferin-1.2.2-py3-none-any.whl
| Download URL | ff_iii_luciferin-1.2.2-py3-none-any.whl |
|---|---|
| Size | 444.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
87e5934d5917173da6f3c23704dbc51a7e399dd2aeb86f129a3ff5a5e28f5f83
|
|
BLAKE2b-256 checksum How to use checksums |
cf340d5cc289357e6fd0c2121108f89dde54e17bd769447b8b34f8a07c834758
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","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}
|