Skip to content

Python packages

Six packages carry the UMP contract into Python. Analysts mostly need two of them. The rest sit underneath, or serve the apps.

The prose and the published JSON Schemas are normative; the Python packages are informative reference implementations. Where they disagree, the spec wins and the package has a bug. The schemas page lists the published files.

PackageImportWhat it is forWho uses it
babelfinimport babelfin as finThe analyst front door: estimands, numbers with intervals, gate checks, models, workflows and the core API from a notebook.Analysts in notebooks and scripts
finprintimport finprint as fpRecords pandas prep as a transform recipe beside the output file, then verifies or reapplies it.Analysts preparing data
ump-workflowimport ump_workflow as uwSaves a fitted notebook model as a hashed bundle of data and source, and runs it on new data. Can serve one bundle over HTTP.Analysts sharing models, and whoever runs them next
ump-specimport ump_specThe contract itself: Pydantic models, JSON Schemas, rule functions, the gate catalogue and Merkle maths.Tool builders and every other package
ump-intakeimport ump_intake as uiTurns a client delivery (CSV, XLSX, connector rows) into a canonical weekly panel and ties it to the printed totals.Data onboarding services
ump-sdkimport ump_sdkTyped HTTP clients and a FastAPI app factory with the house conventions.Service and adapter authors

Babelfin wraps ump-spec and calls ump-workflow for bundles. Finprint stands alone; babelfin picks it up through an optional extra. Ump-intake and ump-sdk serve the apps and adapters, and babelfin uses the SDK clients when it talks to a running core.

Install from the repository

The packages are not on PyPI yet. Each one is its own uv project (Python 3.12, own lockfile). Install editable from a checkout:

Terminal window
pip install -e 'packages/babelfin[recipe,plot]' # pulls in ump-spec; recipe adds finprint
pip install -e 'packages/finprint[notebook]' # finprint alone, with the IPython extension

Quote the extras in zsh, which treats [...] as a glob.