Three ways to access Rwanda's data: pip install, DuckDB ATTACH, or the REST API. All free, all versioned, all open.
From zero to DataFrame in 60 seconds
$ pip install imibare
For Iceberg time travel: pip install imibare[iceberg]
import imibare as imi
# List all available datasets
catalog = imi.catalog()
print(f"{len(catalog)} datasets available")
# Load Rwanda CPI data
df = imi.load("rw.nisr.cpi.monthly")
print(df.tail())
# Load with Polars engine
df_polars = imi.load("rw.nisr.cpi.monthly", engine="polars")
# Versioned load (requires imibare[iceberg])
df_2025 = imi.load("rw.nisr.cpi.monthly", version="2025-06-01")
All dataset IDs use four dot-separated segments: {country}.{institution}.{topic}.{frequency}
Examples: rw.nisr.cpi.monthly · rw.bnr.fx.daily · rw.rra.revenue.monthly
Base URL: https://api.imibare.org
Add a new dataset in 4 steps
In notebooks/rw/, create a notebook that fetches, explores, cleans, and validates the data. Follow the four-section structure in NOTEBOOKS.md. The notebook must pass the graduation checklist before moving to step 2.
Copy the extraction function from the notebook into the appropriate file in pipeline/lib/ (excel_extract.py, json_extract.py, or pdf_extract.py). Write unit tests.
Follow the schema in pipeline/catalog/datasets.yaml. Dataset IDs must have four segments and always start with the country code: rw.{institution}.{topic}.{frequency}. Run the YAML validation tests.
Create pipeline/assets/rw/{institution}_{topic}.py following the thin-wrapper pattern. The asset fetches, extracts, validates, and uploads -- no cleaning logic in the asset itself.