Skip to content

Installation

Braden Seaborn edited this page Aug 26, 2026 · 1 revision

Installation

STE-Linter requires Python 3.9 or later and has zero runtime dependencies. The package name on PyPI is ste100-linter; the command it installs is ste100. Nothing compiles, and nothing downloads at install time beyond the package itself.

Recommended: pipx

pipx installs the package into its own isolated environment and puts the ste100 command on your PATH.

pipx install ste100-linter

uv

uv tool install ste100-linter

uv tool install gives the same result as pipx: an isolated environment, ste100 on PATH.

pip

pip install ste100-linter

A plain pip install works, but it installs into whichever environment pip points at. Use a virtual environment unless you have a specific reason not to:

python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS / Linux
source .venv/bin/activate
pip install ste100-linter

From a source checkout, with no install at all

Every command in this wiki that starts with ste100 also works as python ste_lint.py from a clone of the repository. ste_lint.py is a compatibility shim: it puts src/ on sys.path and calls the same entry point the installed console script calls.

git clone https://github.com/Firelight-Innovations/STE-Linter.git
cd STE-Linter
python ste_lint.py --help

This is the fastest way to test the linter, review a pull request, or run it in CI without adding an install step to the pipeline.

python -m ste100

If the package is installed (by any of the methods above, or with pip install -e . from a checkout) and you want to invoke it as a module instead of relying on the console script being on PATH, use:

python -m ste100 --help

This calls the same entry point as the ste100 command and ste_lint.py. Use it when two or more Python versions are installed side by side and you need to name which interpreter runs the linter.

Platform notes

The linter is pure Python and behaves the same way on Windows, macOS, and Linux. Two points are worth stating for Windows:

  • Output encoding is handled for you. The rule tables contain non-ASCII characters -- a typographic ellipsis in the and/or suggestion, curly apostrophes in contraction fixes -- and Windows consoles do not default to UTF-8. The CLI reconfigures sys.stdout and sys.stderr to UTF-8 at startup (_force_utf8_output() in src/ste100/cli.py). ste100 output renders correctly in PowerShell and cmd with no -X utf8 flag and no chcp 65001 step. Verified by running --fix on a file with and/or and a contraction: both non-ASCII substitutions rendered correctly in a plain PowerShell/Git Bash console.

  • Path separators in findings use /, not \. Reported paths are POSIX-style (docs/guide.md, not docs\guide.md) on every host OS. Output stays consistent between a Windows dev machine and a Linux CI runner.

Verifying the install

ste100 --version

This prints the installed version (ste100 0.1.0 at the time of writing) and exits 0. If that works, run it against one file to confirm the rule tables load:

ste100 --stats path/to/one/file.md

ste100 not found after pip install --user

pip install --user ste100-linter installs the console script into your per-user script directory. Windows and macOS/Linux ship different defaults for whether that directory is on PATH:

  • Windows: %APPDATA%\Python\Python3XX\Scripts
  • macOS / Linux: ~/.local/bin

If ste100 is not found after installing, either:

  1. Add that directory to PATH, or

  2. Fall back to the module form, which does not depend on PATH at all:

    python -m ste100 --version
  3. Or switch to pipx install ste100-linter / uv tool install ste100-linter, both of which manage the PATH entry for you.

python -m site --user-base prints your user base directory if you need to locate the script directory for your platform and Python version.

Related pages

Clone this wiki locally