Skip to content

Add conda-forge recipes for satkit + satkit-data#113

Merged
ssmichael1 merged 2 commits into
mainfrom
conda-packaging
May 25, 2026
Merged

Add conda-forge recipes for satkit + satkit-data#113
ssmichael1 merged 2 commits into
mainfrom
conda-packaging

Conversation

@ssmichael1
Copy link
Copy Markdown
Owner

Summary

Lands the conda-forge recipe drafts under recipes/conda/ so they're versioned alongside the source they describe. The actual submission to conda-forge/staged-recipes is 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 via setuptools-rust, sources the 0.18.0 sdist from PyPI (hash-pinned), depends on satkit-data >= 0.9. Includes a run_test.py smoke 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 as satkit_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 via satkit.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-data succeeds — noarch package built, import test confirms all 10 data files including lnxp1900p2053.421
  • conda build recipes/conda/satkit -c local succeeds against the just-built satkit-data — Rust extension compiled, end-to-end smoke test (Moon position via DE421) returns 398,940,201 m
  • Sdist sha256 verified against https://pypi.org/packages/source/s/satkit/satkit-0.18.0.tar.gz
  • Submit to conda-forge/staged-recipes (follow-up PR, separate repo)

🤖 Generated with Claude Code

ssmichael1 and others added 2 commits May 25, 2026 10:59
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>
@ssmichael1 ssmichael1 merged commit 0a2606f into main May 25, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant