Metadata-Version: 2.4
Name: dosho
Version: 0.1.0b3
Summary: A shinobi's tool bag -- the native shinobi (stimela-ninja) cab repository
Project-URL: Homepage, https://dosho.readthedocs.io
Project-URL: Repository, https://github.com/shinobi-dosho/dosho
Project-URL: Issues, https://github.com/shinobi-dosho/dosho/issues
Project-URL: Documentation, https://dosho.readthedocs.io
Author-email: Sphesihle Makhathini <sphemakh@gmail.com>
License-Expression: MIT
License-File: LICENSE
Requires-Python: >=3.11
Requires-Dist: click>=8.1
Requires-Dist: pyyaml>=6.0
Requires-Dist: stimela-ninja>=0.1.0b4
Description-Content-Type: text/markdown

# dosho

*A shinobi's tool bag.*

`dosho` is the native cab repository for
[shinobi](https://github.com/SpheMakh/stimela-ninja) (stimela-ninja,
Stimela 3.0). Every tool is authored directly in Python -- a
`shinobi.Cab` object for a real binary, or a `@shinobi.pystep`-produced
`StepRef` for a Python-package tool with no standalone binary (CASA tasks,
simms 3.0's `skysim`/`telsim`/`primary-beam`) -- instead of a YAML dialect,
so there's no `dynamic_schema`-style Python-execution step at cab-load time
and no dtype coverage gaps.

See [`AGENTS.md`](./AGENTS.md) for the design rationale and
tool-authoring conventions.

## Usage

Know the tool at write-time? Import it directly:

```python
from dosho.cabs import wsclean
from dosho.cabs.casatasks import listobs
```

Only know the name at runtime? Use the string-keyed registry:

```python
import dosho

wsclean = dosho.get("wsclean")
```

Or, from shinobi itself (any installed `shinobi.cabs`-entry-point
provider, `dosho` included):

```console
$ ninja cabs list
$ ninja cabs show wsclean
```

## Status

`dosho` currently hosts 42 real-binary `Cab`s (`wsclean`, `cubical`,
`quartical`, `ddfacet`, `killms`, `aoflagger`, `tricolour`, `crystalball`,
`shadems`, `ragavi`, `sofia2`, `mosaic-queen`, classic `simms`, ...) and 62
`@shinobi.pystep` wrappers around Python-package tools with no standalone
binary -- CASA tasks (`listobs`, `mstransform`, `gaincal`, `bandpass`,
`applycal`, `tclean`, ...) and simms 3.0's `skysim`/`telsim`/`primary-beam`
(pysteps as of simms 3.0, no longer a `simms` sub-command binary) -- the
set a real pipeline
([caracal2](https://github.com/caracal-pipeline/caracal2)) needs.
