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.
Cabs and images
| Cab | Image |
|---|---|
ddfacet |
ghcr.io/tmolteno/ddfacet:v0.16.1 |
killms |
ghcr.io/tmolteno/killms:v3.15.3 |
ddfacet-memory-plan |
ghcr.io/tmolteno/ddfacet:v0.16.1 |
killms-memory-plan |
ghcr.io/tmolteno/killms:v3.15.3 |
ddf_makemodel, ddf_makemask, dilatemask, clustercat, ddfacet-get-npix, bdsf.catalog, modelcat, autofacet, snapnodes |
ghcr.io/tmolteno/ddfacet:v0.16.1 |
All images are published for amd64 and arm64.
Install
pip install dde-cargo
Requires Python >= 3.10,< 3.14 (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
autofacetcab importsauto_facet_tool/auto_facet.pyfrom the working directory, so it needs a checkout ofmeerkat_imagingbeside 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 throughkMS.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.
- Register the pending publisher on PyPI (once):
pypi.org/manage/account/publishing
with owner
tmolteno, repositorydde-cargo, workflowpublish_pypi.yaml, environmentpypi. The workflow filename must match exactly. - Bump
versioninpyproject.toml. git commit -m "..." && git tag v0.1.0 && 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.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| dde_cargo-0.1.0.tar.gz | 70.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dde_cargo-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 112.0 kB
Release files / dde_cargo-0.1.0.tar.gz
| Download URL | dde_cargo-0.1.0.tar.gz |
|---|---|
| Size | 70.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
596ba4293aa16001a967a1c1a9d0770aa1eee41a50f88c5039e3c79c2115259f
|
|
BLAKE2b-256 checksum How to use checksums |
64fda3685224029b8797fa299f598d03639ed1fe466532d5bc662ccb35ad5c23
|
| 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 14, 2026.
Transparency logRelease files / dde_cargo-0.1.0-py3-none-any.whl
| Download URL | dde_cargo-0.1.0-py3-none-any.whl |
|---|---|
| Size | 41.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2c5cb55b3caa168048f9390ac4514761be75724b9c17fe78e57976b170eb43cb
|
|
BLAKE2b-256 checksum How to use checksums |
82ce250fb413bb3c5154dde751b7ebe7c7d70dfe19b6e070fdb3a96d49e15809
|
| 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 14, 2026.
Transparency log