# Pinned PyBioNetGen for the bng_parity / benchmark suite.  (GH #68)
#
# The suite drives bngsim THROUGH PyBioNetGen's in-Python BNGsim bridge — the
# merged integration in RuleWorld/PyBioNetGen#102. Pin the exact RuleWorld commit
# that carries that bridge so every machine runs the SAME engine routing: no local
# checkout, no PR-branch, no PYTHONPATH dance, no reliance on whatever bionetgen
# happens to be importable. `43b09a5` is RuleWorld/PyBioNetGen@main at the point
# the strict-routing fix landed (see below), with upstream CI green.
#
# Why not the older `5109a46` (the PR #102 merge): that commit carried
# RuleWorld/PyBioNetGen#109 — under `simulator='bngsim'`, a model whose actions
# the Python parser can't inspect was routed SILENTLY to legacy BNG2.pl instead
# of raising, so a run could produce legacy output labelled bngsim. PR #111
# (`d40470ca`) fixed it: strict `simulator='bngsim'` now returns ROUTE_ERROR with
# the parse reason, and it also made the list-arg grammar Perl-faithful (#110).
# `43b09a5` is that fix plus the merges after it (GH #104/#105/#107/#108/#112).
# See lanl/bngsim#4 for the bump's verification record.
#
# Install notes (PyBioNetGen's setup.py shells out to `pip install numpy` and
# downloads BNG2.pl at build time, so the build needs pip+setuptools+numpy in the
# target env and `--no-build-isolation`). The turnkey path that handles this is
#   python bng_parity/bootstrap_parity_env.py --venv <env>
# which installs this pin and a bngsim, then verifies the BNGsim backend is
# actually live before any sweep.
#
# bngsim is intentionally NOT pinned here, even though it IS on PyPI: it ships as
# an ABI-tagged wheel (cp312-...), so the right artifact depends on the target
# interpreter and a pin in a shared requirements file would be wrong for most of
# them. The bootstrap installs it separately and explicitly — from this working
# tree (--build-bngsim), a wheel you hand it (--bngsim-wheel), or the published
# release (--bngsim-pypi <version>, the faithful route when reproducing a golden).
#
# Provenance is recorded so a consumer can confirm a run used this exact pin, and
# WHICH bngsim ran it. Note that each engine is identified by an artifact, not a
# version string: bngsim's bumps only at release, so every commit between two
# releases reports the same one (GH #163).
#   * each sweep's _summary.json -> bngsim_backend.{bionetgen_commit,
#     bngsim_build_commit, bngsim_install}
#   * golden.json -> _meta.{bionetgen_commit, bngsim_build_commit} (+ the same
#     bngsim_backend block under _meta)
# A machine whose installed commit differs from 43b09a5 is using a different
# bridge; the engine pre-flight + per-job audit (bngsim_backend.py) will still
# refuse/flag a run that does not actually exercise bngsim.

bionetgen @ git+https://github.com/RuleWorld/PyBioNetGen.git@43b09a5
