name: Python on: pull_request: jobs: fmt: runs-on: alpine container: node:26-alpine steps: - name: Checkout uses: actions/checkout@v4 - name: Install tools run: | apk add --no-cache \ git \ python3 \ py3-pip python3 -m venv .venv . .venv/bin/activate pip install --no-cache-dir ruff - name: Format check run: | . .venv/bin/activate ruff format --check . lint: runs-on: alpine container: node:26-alpine steps: - name: Checkout uses: actions/checkout@v4 - name: Install tools run: | apk add --no-cache \ git \ python3 \ py3-pip python3 -m venv .venv . .venv/bin/activate pip install --no-cache-dir ruff - name: Lint run: | . .venv/bin/activate ruff check . test: runs-on: alpine container: node:26-alpine steps: - name: Checkout uses: actions/checkout@v4 - name: Install tools run: | apk add --no-cache \ git \ python3 \ py3-pip \ py3-pillow \ build-base python3 -m venv .venv . .venv/bin/activate pip install --no-cache-dir \ typer \ pillow \ materialyoucolor \ jinja2 \ pytest - name: Test run: | . .venv/bin/activate cd cli python -m pytest tests/ -v typecheck: runs-on: alpine container: node:26-alpine steps: - name: Checkout uses: actions/checkout@v4 - name: Install tools run: | apk add --no-cache \ git \ python3 \ py3-pip python3 -m venv .venv . .venv/bin/activate pip install --no-cache-dir basedpyright typer pillow materialyoucolor jinja2 - name: Type check run: | . .venv/bin/activate basedpyright buildcheck: runs-on: alpine container: node:26-alpine steps: - name: Checkout uses: actions/checkout@v4 - name: Install tools run: | apk add --no-cache \ git \ python3 \ py3-pip \ build-base \ python3-dev \ gcc \ g++ python3 -m venv .venv . .venv/bin/activate pip install --no-cache-dir nuitka - name: Nuitka module check run: | . .venv/bin/activate nuitka --module --include-package=zshell cli/src/zshell/