Skip to content

Commit feee2df

Browse files
Jammy2211claude
authored andcommitted
ci(nss): install fork blackjax/nss manually post-extras
Follow-up to the metadata cleanup in this PR. With the git+ URLs out of pyproject.toml's [nss] extra, `pip install autofit[nss]` no longer auto-installs the handley-lab/blackjax fork or yallup/nss. Both CI jobs that exercise the NSS path now do an explicit `pip install git+...` step after the extras install, matching the documented user workflow. Affected jobs: - main.yml `unittest_nss` matrix (3.12 + 3.13) - nss_install_smoke.yml `fresh_venv_install` SHAs are mirrored from the pyproject.toml comment block, which remains the single source of truth for the pinned commits. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 1115912 commit feee2df

2 files changed

Lines changed: 30 additions & 5 deletions

File tree

.github/workflows/main.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,13 @@ jobs:
137137
pip install --upgrade pip
138138
pip install pytest pytest-cov
139139
pip install ./PyAutoConf "./PyAutoFit[nss]"
140+
# blackjax (handley-lab fork) and yallup/nss can't live in the [nss]
141+
# extra — PyPI bans direct git+ URLs in uploaded wheel metadata.
142+
# Install them post-extras instead. SHAs are the single source of
143+
# truth in PyAutoFit/pyproject.toml's [nss] comment — keep in sync.
144+
pip install \
145+
"blackjax @ git+https://github.com/handley-lab/blackjax.git@ef45acd2f2fa0cca15adbdcd3ff7cb3a98987cb5" \
146+
"nss @ git+https://github.com/yallup/nss.git@69159b0f4a3a53123b9eec7df91e4ed3885e4dc4"
140147
- name: Run NSS tests
141148
run: |
142149
export PYTHONPATH=$PWD/PyAutoConf:$PWD/PyAutoFit

.github/workflows/nss_install_smoke.yml

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,20 @@
11
name: NSS install smoke
22

3-
# Phase 4 of nss_first_class_sampler — verifies that `pip install autofit[nss]`
4-
# remains a single safe command. Runs on every PR (so we catch local regressions
5-
# in pyproject.toml before merging) and on a weekly cron (so we catch upstream
6-
# regressions in handley-lab/blackjax or yallup/nss that drift past the pinned
7-
# SHAs).
3+
# Phase 4 of nss_first_class_sampler — verifies that the documented two-step
4+
# install (`pip install autofit[nss]` followed by the manual `pip install
5+
# git+...` for the handley-lab/blackjax fork and yallup/nss) lands a working
6+
# NSS environment.
7+
#
8+
# Why two steps: PyPI bans `git+https://` URLs in uploaded wheel metadata
9+
# (rejection: "400 Can't have direct dependency"), so the fork-based deps
10+
# cannot live in pyproject.toml's [nss] extra. The SHAs themselves are
11+
# documented in PyAutoFit/pyproject.toml just above the [nss] entry — keep
12+
# the two in sync.
13+
#
14+
# Runs on every PR (so we catch local regressions in pyproject.toml or in
15+
# the documented manual install before merging) and on a weekly cron (so we
16+
# catch upstream regressions in handley-lab/blackjax or yallup/nss that
17+
# drift past the pinned SHAs).
818

919
on:
1020
pull_request:
@@ -37,6 +47,14 @@ jobs:
3747
run: python -m pip install -e PyAutoConf
3848
- name: Install PyAutoFit with [nss] extra
3949
run: python -m pip install -e PyAutoFit[nss]
50+
- name: Install handley-lab/blackjax and yallup/nss (manual, post-extras)
51+
# Mirrors the documented two-step install path. Keep these SHAs in
52+
# sync with the block at the top of PyAutoFit/pyproject.toml's [nss]
53+
# comment — that's the single source of truth.
54+
run: |
55+
python -m pip install \
56+
"blackjax @ git+https://github.com/handley-lab/blackjax.git@ef45acd2f2fa0cca15adbdcd3ff7cb3a98987cb5" \
57+
"nss @ git+https://github.com/yallup/nss.git@69159b0f4a3a53123b9eec7df91e4ed3885e4dc4"
4058
- name: Import smoke
4159
run: |
4260
python -c "

0 commit comments

Comments
 (0)