Metadata-Version: 2.5
Name: dosho
Version: 0.2.0b1
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: Apache-2.0
License-File: LICENSE
License-File: NOTICE
Requires-Python: >=3.11
Requires-Dist: click>=8.1
Requires-Dist: pyyaml>=6.0
Provides-Extra: validation
Requires-Dist: pydantic>=2.14; extra == 'validation'
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). A tool is one of two shapes: a real binary is a YAML
*document*, built into a `shinobi.Cab` on demand; a Python-package tool
with no standalone binary (for example, CASA tasks) is a `@shinobi.pystep`-produced
`StepRef`. 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.

## Academic attribution

Please acknowledge this project and its contributors when using the work
in research, and cite the associated publications and software release
where applicable. This is a scholarly request, not an additional licence
condition.
Citation information can be found in [CITATION.cff](CITATION.cff).

## Installing

```
pip install dosho          # the cab definitions: names, schemas, images
pip install stimela-ninja     # ...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 `validation` extra plus an explicit Shinobi installation.

## 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
```

## License

Apache License 2.0. See [LICENSE](LICENSE) and [NOTICE](NOTICE).
