Skip to main content

A Firefly III enrichment engine that makes your data glow

Project description

ff-iii-luciferin

CI PyPI Python License codecov

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ff_iii_luciferin-1.0.0.tar.gz (89.5 kB view details)

Uploaded Source

Built Distribution

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

ff_iii_luciferin-1.0.0-py3-none-any.whl (429.3 kB view details)

Uploaded Python 3

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

Hashes for ff_iii_luciferin-1.0.0.tar.gz
Algorithm Hash digest
SHA256 e5e1fc7f1ca8ca305f636e77e435402ca43419e5fe7eaa8b1a5ee56d779a96be
MD5 f0d78c3526a72dfd4a4c2ec8edc836df
BLAKE2b-256 8cbeb17b1be10ae5637577e080fb920afe4251fb100c152d206b15242360a385

See more details on using hashes here.

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

Hashes for ff_iii_luciferin-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a53ffb5c810afe5038cb8e8696e38f8b28f0838d16d2fd27cd2d4e0655e03d6d
MD5 6087e2a5ff5f9c0e65695ee19f6cdcdc
BLAKE2b-256 aef1692d9d31c6cfb30afe61066d9ca7bad75fbd2a099e08dd8d86041bc1863e

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