fwirl is a lightweight Python library for building and maintaining collections of assets (files, records, objects, etc.) with dependency tracking, stale detection, scheduling, and optional remote control.
Note: LLMs were used to generate the package documentation, unit test suite, and much of the web UI. While the package is still in early unstable development, this may introduce bugs on main.
- Define assets and dependency graphs
- Refresh/build only what is stale
- Schedule refresh/build jobs with cron expressions
- Run as a local script or as a RabbitMQ-backed server
- Control running graphs through a CLI and Python API
- Optional notifier integrations for alerts
- Python 3.9+
- RabbitMQ (only required for server mode and remote CLI/API control)
Install from PyPI:
pip install fwirlInstall from source (editable):
git clone https://github.com/trevorcampbell/fwirl.git
cd fwirl
pip install -e .Install docs dependencies:
pip install -e ".[docs]"Define assets, create a graph, and build:
import fwirl
class MyAsset(fwirl.Asset):
async def timestamp(self):
return fwirl.AssetStatus.Unavailable
async def build(self):
pass
g = fwirl.AssetGraph("my_graph")
root = MyAsset("root", [])
leaf = MyAsset("leaf", [root])
g.add_assets([leaf])
g.build()For a fuller walkthrough, see:
docs/quickstart.rstexample/
The package installs a fwirl command:
fwirl list-graphs
fwirl summarize my_graph
fwirl ls my_graph --assets
fwirl build my_graph
fwirl refresh my_graph
fwirl shutdown my_graphFor full command reference, see:
docs/cli.rst
From the repository root:
pip install -e ".[docs]"
cd docs
make htmlBuilt docs will be in:
docs/_build/html
fwirl is distributed under the terms of the license in LICENSE.