[FEATURE] Rust port: WIP, do not merge - #119
[FEATURE] Rust port: WIP, do not merge#119Francisco Jiménez (jjcfrancisco) wants to merge 33 commits into
Conversation
Signed-off-by: Francisco Jiménez <jjcfrank@gmail.com>
Removes the Python `overture-stac` CLI, tests, packaging, and the Python-driven GitHub workflows (ci, publish-pypi, publish-catalog, staging, staging_cleanup). Moves the Rust prototype from `rust/` to the repo root and rewrites the top-level docs and `justfile` around it. Adapted: - README.md: Rust build/run/parity docs; keeps the pointer to the production catalog and `docs/architecture.md`. - docs/architecture.md: prefaced with a note that the production pipeline still runs from `main` (Python); the pipeline description is unchanged. - justfile: Rust-only recipes (build, test, fmt, lint, check, run, clean). `check` is `fmt-check + test`; `lint` runs clippy without `-D warnings` since inherited code has pre-existing findings worth triaging separately. - .gitignore: swaps Python entries for `/target` and `Cargo.lock`, keeps output dir and editor ignores. Also runs `cargo fmt` across the moved sources so `just check` passes on day one.
# Conflicts: # .github/workflows/publish-catalog.yaml
…, rename workers → concurrency Prep commit ahead of adding Python bindings on this branch. Nothing user-facing changes semantically; just cleaning up names and shape so the bindings can mirror them cleanly. - Package: `overture-stac-rs` → `overture-stac` (Cargo package, binary name, crate import). One name across the ecosystem: Cargo, binary, upcoming Python module. - CLI shape: flat flags → `overture-stac build …` subcommand. Room for more subcommands later (`reconcile`, `validate`, etc.) without breaking users. - `--release` → `--release-version` (matches schema-version naming). - `--workers` → `--concurrency`. The knob controls tokio's `FuturesUnordered` cap, not thread count — `concurrency` names it accurately. Rust param names updated to match, so the Python binding can reuse the same word. - `--debug` kept as-is (default false). - `object_store` features expanded from `["aws"]` to `["aws", "gcp", "azure", "http"]`. The core is cloud-agnostic; the current default just points at Overture's S3 location because that's where the data lives. Bonus fix: `build_single_release` previously ignored its `workers` param and hardcoded `4` in `process_themes_parallel`. Now wired through, so `concurrency=8` actually takes effect for single-release builds. README, justfile, and CLI help text updated to match. Signed-off-by: Francisco Jiménez <jjcfrank@gmail.com>
Signed-off-by: Francisco Jiménez <jjcfrank@gmail.com>
Signed-off-by: Francisco Jiménez <jjcfrank@gmail.com>
Signed-off-by: Francisco Jiménez <jjcfrank@gmail.com>
Signed-off-by: Francisco Jiménez <jjcfrank@gmail.com>
Signed-off-by: Francisco Jiménez <jjcfrank@gmail.com>
… log bridge, prod migration Signed-off-by: Francisco Jiménez <jjcfrank@gmail.com>
Signed-off-by: Francisco Jiménez <jjcfrank@gmail.com>
…_release Signed-off-by: Francisco Jiménez <jjcfrank@gmail.com>
Signed-off-by: Francisco Jiménez <jjcfrank@gmail.com>
Signed-off-by: Francisco Jiménez <jjcfrank@gmail.com>
Signed-off-by: Francisco Jiménez <jjcfrank@gmail.com>
Signed-off-by: Francisco Jiménez <jjcfrank@gmail.com>
Signed-off-by: Francisco Jiménez <jjcfrank@gmail.com>
…talog and data bucket Signed-off-by: Francisco Jiménez <jjcfrank@gmail.com>
Signed-off-by: Francisco Jiménez <jjcfrank@gmail.com>
Signed-off-by: Francisco Jiménez <jjcfrank@gmail.com>
…IMDS fallback) Signed-off-by: Francisco Jiménez <jjcfrank@gmail.com>
…pply Signed-off-by: Francisco Jiménez <jjcfrank@gmail.com>
…or enum Signed-off-by: Francisco Jiménez <jjcfrank@gmail.com>
Signed-off-by: Francisco Jiménez <jjcfrank@gmail.com>
Signed-off-by: Francisco Jiménez <jjcfrank@gmail.com>
|
Reviewed the Rust port against One real cluster, all in
|
…llowing Signed-off-by: Francisco Jiménez <jjcfrank@gmail.com>
Signed-off-by: Francisco Jiménez <jjcfrank@gmail.com>
Thanks for highlighting these issues: 1st one was ugly. All comments addressed. |
Tracking PR for the
rustbranch — a Rust port ofoverture-stacwith a Python face on top. Do not merge yet.Closes #100
What it is
A fully-functional STAC generator that is ~4x faster than the current Python implementation. The core is Rust; Python bindings expose the same functionality as an
asyncAPI.CLI overview
buildFast catalog build with optional post-write validation. Supports any
object_storeURI scheme (s3://,gs://,az://,file://), per-release builds, and a--root-hrefoverride for staging previews.reconcileRead-only diff between the live catalog and the data bucket. A dry-run against a stale catalog completes in ~0.5s:
--applyperforms the mutation;--backup-catalogsnapshots the oldcatalog.jsonfirst;--validateruns local + bucket-mode validation around the apply.validateCI-focused validator (local dir, URL, or bucket URI). Currently flags known drift on prod (~1 min):
Distribution ideas
maturin(already the build path for the bindings).