AboutWhat I doProjectsLabContact

Environment and reproducibility

repro-manifest

A portable receipt per run to explain why two runs differ.

repro-manifest on PyPIrepro-manifest downloads per monthrepro-manifest CI statusMIT license0 downloads/month on PyPI

Install

pip install repro-manifest

If you use uv, also as an isolated CLI:

uv tool install repro-manifest

What it does

Almost no ad-hoc run leaves a reproducibility receipt, and they are launched from a dirty git tree, so the commit hash is not enough. repro-manifest captures environment, code, config and seeds, and diffs two manifests.

In action

A real recorded session of the CLI running.

Read it as text
runtime
key             value
python          3.12.3
implementation  CPython
platform        Linux-6.17.0-35-generic-x86_64-with-glibc2.39
executable      /home/delcenjo/jmweb-org/repro-manifest/.venv/bin/python3
git
key     value
commit  daa6bf5a9d4b363337963c6054bdd353b55d342a
branch  main
dirty   false
command
key   value
argv  /home/delcenjo/jmweb-org/repro-manifest/.venv/bin/repro-manifest show
cwd   /home/delcenjo/jmweb-org/splitcheck
packages
key             value
annotated-doc   0.0.4
coverage        7.14.3
iniconfig       2.3.0
markdown-it-py  4.2.0
mdurl           0.1.2
packaging       26.2
pluggy          1.6.0
pygments        2.20.0
pytest          9.1.1
pytest-cov      7.1.0
repro-manifest  0.2.0
rich            15.0.0
ruff            0.15.20
shellingham     1.5.4
typer           0.26.8
$ repro-manifest show
runtime
key             value
python          3.12.3
implementation  CPython
platform        Linux-6.17.0-35-generic-x86_64

git
key     value
commit  25ca4ae3932c9be07cbba03f09caeb07c34403f8
branch  main
dirty   false

Features

  • Commit, branch, dirty state and a patch of uncommitted changes.
  • Argv, config hashes and RNG seeds.
  • Risk-ranked diff to explain the difference.
  • CI gate and JSON output.
View the code on GitHub

Other tools

hola@jmwebsoluciones.com