Installation
Requirements
Linux, macOS, and Windows are all supported and all tested in CI. The one
platform difference worth knowing is signal handling: Windows never delivers
SIGTERM, so only Ctrl+C triggers a graceful drain there. See
Graceful shutdown.
Installing
pip install wijjit-ssh
Or with uv:
uv add wijjit-ssh
Wijjit and asyncssh come along as dependencies.
From source
git clone https://github.com/thomas-villani/wijjit-ssh.git
cd wijjit-ssh
uv sync
Everything in this project runs through uv. There is no pip install -e .
path, because the development dependencies are PEP 735 [dependency-groups],
which pip cannot see at all.
To work against an unreleased Wijjit, install it over the top rather than adding
a [tool.uv.sources] section - the release workflow refuses to build while one
is present:
uv sync && uv pip install -e ../wijjit
Verifying the install
uv run python -c "import wijjit_ssh; print(wijjit_ssh.__version__)"
uv run python examples/hello_ssh.py
The second command starts a server on port 8022 and generates ssh_host_key
in the working directory on first run. From another terminal:
ssh -p 8022 yourname@localhost
Working on wijjit-ssh
These are exactly the commands CI runs, so a clean local run means a green build:
uv run pytest -q
uv run ruff check src/ tests/ examples/ deploy/
uv run black --check src/ tests/ examples/ deploy/
uv run mypy src/ deploy/
Four tests are POSIX-only - three 0600 host-key mode-bit assertions and the
end-to-end SIGTERM drain - so Windows reports 351 passed, 4 skipped
where Linux and macOS report 355 passed.
Building these docs
Sphinx and its theme live in their own dependency group, so a contributor running the test suite does not pay for them:
uv sync --group docs
uv run sphinx-build -b html docs/source docs/build/html
CI builds with -W, which turns warnings into errors, so run it that way
before pushing a docs change.