Skip to main content

ff-iii-luciferin

CI PyPI Python License codecov

ff-iii-luciferin is a Python enrichment engine for
Firefly III transactions.

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.

Metadata

Release files for ff-iii-luciferin 1.1.0

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.1.0
File Size Uploaded
ff_iii_luciferin-1.1.0.tar.gz 96.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ff-iii-luciferin 1.1.0
File Interpreter ABI Platform
ff_iii_luciferin-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 537.2 kB

Release files / ff_iii_luciferin-1.1.0.tar.gz

Download URL ff_iii_luciferin-1.1.0.tar.gz
Size 96.3 kB
Tags Source
SHA-256 checksum
How to use checksums
c6d480b5f3965aec758f226780bb157904010f41e1df56b5a2257d9e18f09443
BLAKE2b-256 checksum
How to use checksums
da985e2cb423aed24d2e29463797fa2fce524f52edcd4547b0b361303aa84828
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","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.1.0-py3-none-any.whl

Download URL ff_iii_luciferin-1.1.0-py3-none-any.whl
Size 440.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ae499264105501a4bdace0a4677ee0e8843283b7033aa388694264b1d7ae37d8
BLAKE2b-256 checksum
How to use checksums
98f2314573f6a90da84a5cd246c81aa9030658c1c2ad572a95fc622ad77c032b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","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