Contents

Installing

SushiCore is a Python library, published on PyPI as sushicore. It needs Python 3.10 or later and installs no console script.

From PyPI

pip install sushicore            # workspace, configuration, console, cmake driver
pip install "sushicore[typer]"   # the same, plus Typer

Typer is an optional extra. A CLI that uses help_group, the root options, the diagnostic commands or the provisioning commands needs it; import sushicore alone does not.

PyPI carries 0.1.0 to 0.4.0, 0.7.0 and 0.8.0. Versions 0.5.0 and 0.6.0 were never tagged, so the release workflow never published them. All seven Sushi CLIs require sushicore>=0.7.0.

From a checkout

git clone https://github.com/SushiSystems/SushiCore
cd SushiCore
pip install -e ".[typer]"

A CLI installed with pipx has its own environment. Install the checkout into that environment to make the CLI use it:

pipx inject --editable <cli-package> /path/to/SushiCore

Because the install is editable, an edit to the checkout applies to the CLI without a reinstall.

Running the tests

pip install -e ".[test]"
python -m pytest tests -q

The test extra adds pytest, Typer and Click. CI runs the same two commands on Ubuntu and Windows with Python 3.10 and 3.11 (.github/workflows/ci.yml).

Running the checkers

The checkers under tools/ read the repository and change nothing. They need Python 3.11.

python tools/documentation/check_docs_layout.py .
python tools/documentation/check_changelog.py .
python tools/documentation/check_source_comments.py .
python tools/layering/check_layering.py .
python -m unittest discover -s tools/tests

tools/README.md says what each one checks.

Releasing

.github/workflows/release.yml builds the package and publishes it to PyPI when a tag named v* is pushed. The tag is the release; a version number in pyproject.toml without a tag publishes nothing.

View this page's source