packaging: pip-only install identity, declared pyccl, backend-smoke CI, docs#5
Draft
cailmdaley wants to merge 2 commits into
Draft
packaging: pip-only install identity, declared pyccl, backend-smoke CI, docs#5cailmdaley wants to merge 2 commits into
cailmdaley wants to merge 2 commits into
Conversation
…I, docs Runtime dependencies are now exactly the blinding closure: stock Requires-Dist (astropy>=5.2.0, cryptography, jsonargparse[signatures]>=4.0, numpy>=2.2.0, sacc>=0.12, scipy>=1.9.0) plus pyccl, which the default CCL backend uses but stock never declared. pytest/pytest-cov move out of runtime into a [project.optional-dependencies].test extra. requires-python >=3.12; numpy keeps its >=2.2.0 floor and gains no ceiling. CI is re-pointed from the conda/firecrown environment to a pip-only pair of jobs: backend-smoke (the required gate — fresh install from pyproject, 'import smokescreen', and an end-to-end blind of a synthetic in-memory SACC vector through a synthetic theory callable, asserting changed / seed-reproducible / seed-sensitive) and tests (full pytest suite via the [test] extra). build_docs.yml likewise drops conda; environment.yml is removed. README and docs document the single supported install form — pip install git+https://github.com/UNIONS-WL/Smokescreen@<tag> — with no conda-forge or PyPI path, and state that the firecrown integration is inherited from upstream and unsupported in this fork. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KpaRHk3QwN13myduQ3hJyf
- Add h5py to the [test] extra so the CI tests job (and any pip-only test run) can exercise the HDF5 SACC paths; runtime Requires-Dist unchanged (seven-package contract intact). - load_sacc_file: re-raise ModuleNotFoundError with an actionable 'pip install h5py' message for .h5/.hdf5 inputs instead of swallowing it into a misleading FITS-failure ValueError. - Split flake8 into its own CI lint job so lint and tests fail independently. - README docs links now point at the fork's gh-pages (unions-wl.github.io/Smokescreen), with upstream qualified as upstream. - __version__ = '1.5.6' (drop the leading v; matches normalized dist metadata). - Drop dead [tool.setuptools.packages.find] and [tool.flake8] blocks (hatchling backend; flake8 config comes from the CI flag). Verified: fresh uv venv install of '.[test]' on py3.12; importlib.metadata version == smokescreen.__version__ == 1.5.6; import discipline holds; pytest 57 passed. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KpaRHk3QwN13myduQ3hJyf
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #3
Stacked on #2's branch (
feat/theory-backend-protocol). Base is set to that branch so the diff shows only the packaging/CI/docs slice; retarget tomainafter the protocol PR merges.What this settles
The fork's install identity is a pinned git tag, pip-only:
The
<tag>placeholder is literal by design: the tag is cut after this PR and the protocol PR are both on the default branch, on the merged tip — it is not part of this PR. That tag is the value the downstream (sp_validation) deps PR pins verbatim.Dependency metadata
[project].dependenciesis exactly stock Smokescreen 1.5.6Requires-Distpluspyccl:pycclis the one addition: the default CCL backend uses it, and stock relied on an undeclared conda stack. Declaring it makes a clean pip install of the default blinding path self-contained.pytest/pytest-covleave runtime position and move to a new[project.optional-dependencies].testextra.requires-python = ">=3.12"; thenumpy>=2.2.0floor is retained; no numpy upper bound anywhere.CI
The old conda/firecrown workflow (which cannot pass on this fork) is replaced by two pip-only jobs:
backend-smoke(the required gate): fresh runner,pip install .from the pyproject, assertimport smokescreen, then run.github/scripts/backend_smoke.py— an end-to-end blind of a ~10-point in-memory SACC vector through a synthetictheory_fn(no CCL), asserting the blinded vector changed (not np.allclose), the same seed reproduces it bit-for-bit (np.array_equal), and a different seed diverges.tests: full pytest suite viapip install '.[test]', plus flake8.build_docs.ymllikewise drops conda;environment.ymlis removed.Docs
README and
docs/source/installation.rstdocument the pip-only form as the single supported install (no conda-forge, no PyPI), and state that the firecrown integration path is inherited from upstream and unsupported in this fork — not installed, not tested, not maintained; the default and supported theory path is the built-in CCL backend.Verified locally
Fresh empty venv (Python 3.12): install resolves the full closure including pyccl;
Requires-Distmatches the set above exactly;import smokescreenimports neither pyccl nor firecrown; the three smoke assertions pass;smokescreen.backends.cclimports cleanly.🤖 Generated with Claude Code
https://claude.ai/code/session_01KpaRHk3QwN13myduQ3hJyf