Skip to main content

ff-iii-luciferin

CI PyPI Python codecov

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)

Source distribution for ff-iii-luciferin 1.2.2
File Size Uploaded
ff_iii_luciferin-1.2.2.tar.gz 102.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ff-iii-luciferin 1.2.2
File Interpreter ABI Platform
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}
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page