Add conda-forge recipes for satkit + satkit-data#113
Merged
Conversation
Adds `recipes/conda/satkit/` and `recipes/conda/satkit-data/` — meta.yaml drafts (and a small smoke-test script for satkit) for submission to conda-forge/staged-recipes. Two key design choices encoded in the recipes: * The conda `satkit-data` build is intentionally a different payload from the PyPI sibling at the same version: it ships JPL DE421 (`lnxp1900p2053.421`, ~13 MB, 1900–2053) instead of DE440 full (~98 MB). DE440 squeaks under conda-forge's 100 MB soft cap but reviewers grumble; DE421's accuracy is indistinguishable for Earth-orbit work (Sun/Moon positions agree sub-meter at modern epochs). Callers who need the longer span can install DE440 via `satkit.utils.update_datafiles()` post-install — autodetect prefers it once present. * EOP-All.csv and SW-All.csv are NOT bundled; CelesTrak regenerates them daily and a stale snapshot would mislead users. `update_datafiles()` fetches them on demand. Both recipes were built and the smoke test passed locally — satkit-data installs as a conda dep, satkit's autodetect resolver finds the DE421 file inside it, and a Python query for the Moon's geocentric position returns ~399,000 km. The satkit recipe's `source:` URL currently points at a local sdist for validation; it will be flipped to the PyPI URL (and the sha256 updated) once 0.17.1 ships with the build.rs / MANIFEST.in fix from the previous commit. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* `recipes/conda/satkit/meta.yaml` — version `0.17.0` → `0.18.0`; source URL flipped from the local `file:///tmp/...` validation path to the canonical PyPI sdist; sha256 updated against the published 0.18.0 tarball (`9af912f7...`). The build.rs sdist-inclusion fix from PR #107 is part of 0.18.0, so the recipe builds cleanly straight from PyPI. * `recipes/conda/README.md` — drop the "TODO sha256" caveat that's no longer applicable; document the `pip hash` refresh step for future version bumps. Both recipes re-built and tested locally with conda-build 26.3.0: satkit-data-0.9.0-py_0.conda (15 MB noarch) + satkit-0.18.0 with the Moon-position smoke test green (398,940,201 m via DE421 inside the conda-installed satkit-data). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.
Summary
Lands the conda-forge recipe drafts under
recipes/conda/so they're versioned alongside the source they describe. The actual submission toconda-forge/staged-recipesis a separate cross-repo PR; this one just gets the recipe files into main.Two recipes:
recipes/conda/satkit/meta.yaml— Python package, Rust + PyO3 build viasetuptools-rust, sources the 0.18.0 sdist from PyPI (hash-pinned), depends onsatkit-data >= 0.9. Includes arun_test.pysmoke script that verifies the conda-installed satkit-data is discoverable by satkit's autodetect resolver and a Moon-position query returns the correct magnitude (~3.84e8 m).recipes/conda/satkit-data/meta.yaml— Noarch data package; nine individual sources (JPL DE421 from JPL directly + the eight small static files from the GCS mirror), each SHA256-pinned, built assatkit_data/data/*to match the PyPI sibling's layout. Ships DE421 (~13 MB) instead of the PyPI sibling's DE440 (~98 MB) — under conda-forge's 100 MB soft cap; users wanting the longer DE440 span can install it viasatkit.utils.update_datafiles()post-install.recipes/conda/README.md— design notes (DE421 vs DE440 rationale, EOP/SW staleness exclusion, local validation steps, submission instructions).EOP-All.csv and SW-All.csv are NOT bundled — CelesTrak regenerates them daily and a stale snapshot would mislead users.
update_datafiles()fetches them on demand.Test plan
conda build recipes/conda/satkit-datasucceeds — noarch package built, import test confirms all 10 data files includinglnxp1900p2053.421conda build recipes/conda/satkit -c localsucceeds against the just-built satkit-data — Rust extension compiled, end-to-end smoke test (Moon position via DE421) returns 398,940,201 mhttps://pypi.org/packages/source/s/satkit/satkit-0.18.0.tar.gzconda-forge/staged-recipes(follow-up PR, separate repo)🤖 Generated with Claude Code