Skip to content

docs: v0.4.1-alpha — sibling-repo README table re-sync #26

docs: v0.4.1-alpha — sibling-repo README table re-sync

docs: v0.4.1-alpha — sibling-repo README table re-sync #26

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
permissions:
contents: read
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
jobs:
test:
name: lint + type + test (py${{ matrix.python-version }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.11", "3.12", "3.13"]
steps:
# The frontend bridges to the CLI repo via sys.path injection. The test
# suite resolves it at <workspace>/Bosch-Smart-Home-Camera-Tool-Python
# (sibling of this checkout), so both repos are checked out side by side.
- name: Checkout frontend
uses: actions/checkout@v6
with:
path: Bosch-Smart-Home-Camera-Tool-Python-frontend
- name: Checkout CLI (bridge dependency)
uses: actions/checkout@v6
with:
repository: mosandlt/Bosch-Smart-Home-Camera-Tool-Python
ref: main
path: Bosch-Smart-Home-Camera-Tool-Python
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
working-directory: Bosch-Smart-Home-Camera-Tool-Python-frontend
run: |
python -m pip install --upgrade pip
# Editable install pulls runtime + dev deps (nicegui, requests,
# urllib3, defusedxml, pytest, pytest-asyncio, pytest-mock).
pip install -e ".[dev]"
pip install pytest-cov "ruff==0.15.15" "mypy==2.1.0" pip-audit
# ruff/mypy settings (target-version, strict, files) now live in
# pyproject.toml's [tool.ruff]/[tool.mypy] sections, so these bare
# invocations resolve identically here and in a local dev shell — no
# more CLI-flags-only config that can silently diverge.
- name: Ruff (lint)
working-directory: Bosch-Smart-Home-Camera-Tool-Python-frontend
run: ruff check src/ tests/
- name: Ruff (format check)
working-directory: Bosch-Smart-Home-Camera-Tool-Python-frontend
run: ruff format --check src/ tests/
- name: Mypy (strict)
working-directory: Bosch-Smart-Home-Camera-Tool-Python-frontend
run: mypy
- name: Pytest (with coverage)
working-directory: Bosch-Smart-Home-Camera-Tool-Python-frontend
env:
BOSCH_CAMERA_CLI_PATH: ${{ github.workspace }}/Bosch-Smart-Home-Camera-Tool-Python
run: |
pytest -q \
--cov=src/bosch_camera_frontend \
--cov-report=term-missing \
--cov-report=xml \
--cov-fail-under=98
- name: pip-audit (runtime deps)
working-directory: Bosch-Smart-Home-Camera-Tool-Python-frontend
run: |
python3 -c "import tomllib; print(chr(10).join(tomllib.load(open('pyproject.toml','rb'))['project']['dependencies']))" > /tmp/our_reqs.txt
pip-audit -r /tmp/our_reqs.txt