Skip to main content

dde-cargo

Stimela cabs for DDFacet/Killms on both arm64 and x86-64 systems.

The cab YAMLs in dde_cargo/ are verbatim copies of meerkat_imaging/cabs/ (ddfacet.yml, its two _included parameter schemas, and the two memory-plan cabs). A change to a cab starts in that repository; copy it here, bump the version, and tag. Release history is in CHANGELOG.md.

Cabs and images

Cab Image
ddfacet ghcr.io/tmolteno/ddfacet:v0.16.6
killms ghcr.io/tmolteno/killms:v3.15.8
ddfacet-memory-plan ghcr.io/tmolteno/ddfacet:v0.16.6
killms-memory-plan ghcr.io/tmolteno/killms:v3.15.8
ddf_makemodel, ddf_makemask, dilatemask, clustercat, ddfacet-get-npix, bdsf.catalog, modelcat, autofacet, snapnodes ghcr.io/tmolteno/ddfacet:v0.16.6

All images are published for amd64 and arm64.

Install

pip install dde-cargo

Requires Python >= 3.10,< 3.15 (the same window as skarabina-cargo) and installs stimela>=2.1.4 — every cab runs in its container, so the host needs nothing else.

Usage

In a stimela 2 recipe, load the cabs from the installed package with configuratt's package-include syntax. The cultcargo include must come first: ddfacet.yml carries an image-only override for cult-cargo's bdsf.catalog cab (the upstream image is amd64-only; these cabs redirect it to the multi-arch ddfacet image), and stimela builds every cab at load time, so bdsf.yml must already be loaded when ddfacet.yml merges in:

_include:
  - (cultcargo):
      - bdsf.yml
  - (dde_cargo):
      - ddfacet.yml
      - ddfacet-memory-plan.yml
      - killms-memory-plan.yml

then reference them from steps:

steps:
  ddfacet-target:
      cab: ddfacet
      params:
          Data.MS: mydata.ms
          Output.Name: target0
  killms-target:
      cab: killms
      params:
          MSName: mydata.ms
          InCol: CORRECTED_DATA

Only ddfacet.yml is essential; the memory-plan files are optional extras (wire them ahead of a step as shown in their header comments — e.g. ddfacet-memory-plan suggests Parallel.NCPU, Data.ChunkHours and Selection.ChanStep for the imaging step that follows).

Notes carried over from the upstream cab comments:

  • The autofacet cab imports auto_facet_tool/auto_facet.py from the working directory, so it needs a checkout of meerkat_imaging beside the recipe (stimela binds the working directory into the container).
  • The memory-plan cabs pin their image "to whatever the recipe uses": a recipe with its own image var should override image: on the cab instead of editing the package.
  • The DDFacet cab wraps every parset namespace (Data, Image, Facets, Deconv, ...) as dashed CLI options (--Data-MS, --Image-NPix, ...); the killMS cab passes its flat parameter set through kMS.py.

Publishing

Trusted publishing (OIDC) — there is no API token. The GitHub Actions workflow .github/workflows/publish_pypi.yaml fires on a vX.Y.Z tag, builds with uv, and publishes from the pypi environment.

  1. Register the pending publisher on PyPI (once): pypi.org/manage/account/publishing with owner tmolteno, repository dde-cargo, workflow publish_pypi.yaml, environment pypi. The workflow filename must match exactly.
  2. Bump version in pyproject.toml.
  3. git commit -m "..." && git tag -a vX.Y.Z -m "..." && git push origin main --follow-tags

The workflow run appears under the repo's Actions with the pypi environment; the publish is live at pypi.org/project/dde-cargo.

Development

uv sync --all-groups
uv run pytest          # schema contracts for the packaged cabs
uv build               # wheel + sdist into dist/

An end-to-end smoke check (loads the cabs through stimela's real spec loader, as a recipe would):

uv run stimela run /tmp/dde-cargo-smoke.yml dde-cargo-smoke -d

with /tmp/dde-cargo-smoke.yml any recipe that _includes the package as shown above and runs one or two of the cabs.

Metadata

Release files for dde-cargo 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dde-cargo 0.1.1
File Size Uploaded Provenance Actions
dde_cargo-0.1.1.tar.gz 78.9 kB With provenance Details for dde_cargo-0.1.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for dde-cargo 0.1.1
File Interpreter ABI Platform Actions
dde_cargo-0.1.1-py3-none-any.whl Python 3 none any Details for dde_cargo-0.1.1-py3-none-any.whl

Total release size: 120.8 kB

Release files / dde_cargo-0.1.1.tar.gz

Download URL dde_cargo-0.1.1.tar.gz
Size 78.9 kB
Tags Source
SHA-256 checksum
How to use checksums
96c30d99b3a241ceea80cba743cf6e5a72c98ca3d65d90a4123058fe9ae38a68
BLAKE2b-256 checksum
How to use checksums
a272c6cf4d9e0d7cac76d7ce7d0cc19be0be8b93990173efcb48117193fca53f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 17, 2026.

Transparency log

Release files / dde_cargo-0.1.1-py3-none-any.whl

Download URL dde_cargo-0.1.1-py3-none-any.whl
Size 42.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
902eea074237b1df496d89a0252f8116e59fc3e8154ef4b152d06c8420cff18f
BLAKE2b-256 checksum
How to use checksums
0d9009e7dc1e36903c81dda92a5fa32b263760c3bb31409db35ed443c110629e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 17, 2026.

Transparency log

Security for dde-cargo 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for dde_cargo-0.1.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 17, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page