Getting started¶
Provium requires Python 3.12 or newer.
Installation¶
Create a provenance-aware workflow¶
Provium includes JsonArtifact for storing JSON-compatible values. This
example records a collection of measurements and produces a summary:
from provium import JsonArtifact, Procedure
COLLECT = Procedure(name="collect", version="1")
SUMMARIZE = Procedure(name="summarize", version="1")
with COLLECT.execute():
measurements = JsonArtifact.create("measurements.pa")
measurements.write({"measurements": [12.5, 14.0, 13.5]})
with SUMMARIZE.execute():
measurements = JsonArtifact.open("measurements.pa")
payload = measurements.read()
assert isinstance(payload, dict)
values = payload["measurements"]
assert isinstance(values, list)
summary = JsonArtifact.create("summary.pa")
summary.write(
{
"count": len(values),
"minimum": min(values),
"maximum": max(values),
"average": round(sum(values) / len(values), 2),
}
)
When each context exits successfully, Provium closes its handles and finalizes its output files. If a context exits with an exception, pending outputs are not committed. Readers and writers are bound to their execution and cannot be used after its context exits.
Next steps¶
- Learn how to define custom artifact types.
- Understand procedures, sessions, and provenance.
- Inspect results with the command-line tools.