Metadata-Version: 2.5
Name: dosho
Version: 0.1.0b4
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
Provides-Extra: run
Requires-Dist: stimela-ninja>=0.1.0b6; extra == 'run'
Description-Content-Type: text/markdown

# dosho

*A shinobi's tool bag.*

`dosho` is the native cab repository for
[shinobi](https://github.com/shinobi-dosho/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`). A cab is parameter
configuration and stays declarative whatever carries it, so there's no
`dynamic_schema`-style Python-execution step at cab-load time, no expression
language, and no dtype coverage gaps.

## Installing

```
pip install dosho          # the cab definitions: names, schemas, images
pip install dosho[run]     # ...plus stimela-ninja, to build and run them
```

The definitions are data — YAML documents under `dosho/documents/`, readable
without the framework. `dosho.cabs.<tool>` and `dosho.get(...)` turn one into a
`Cab`, which needs the `run` extra.

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.
