name: CI on: push: branches: [main] pull_request: branches: [main] schedule: - cron: "0 9 * * 1" jobs: black: runs-on: ubuntu-latest container: python:3.13-slim steps: - name: Checkout run: | apt-get update -qq && apt-get install -y -qq git git clone ${{ github.server_url }}/${{ github.repository }} . git checkout ${{ github.sha }} - name: Install system dependencies run: apt-get install -y -qq libcap-dev - name: Install Poetry and dependencies run: | pip install poetry==2.1.1 poetry install --without pi --no-interaction - name: Run black run: poetry run black --check src/ tests/ ruff: runs-on: ubuntu-latest container: python:3.13-slim steps: - name: Checkout run: | apt-get update -qq && apt-get install -y -qq git git clone ${{ github.server_url }}/${{ github.repository }} . git checkout ${{ github.sha }} - name: Install system dependencies run: apt-get install -y -qq libcap-dev - name: Install Poetry and dependencies run: | pip install poetry==2.1.1 poetry install --without pi --no-interaction - name: Run ruff run: poetry run ruff check src/ tests/ mypy: runs-on: ubuntu-latest container: python:3.13-slim steps: - name: Checkout run: | apt-get update -qq && apt-get install -y -qq git git clone ${{ github.server_url }}/${{ github.repository }} . git checkout ${{ github.sha }} - name: Install system dependencies run: apt-get install -y -qq libcap-dev - name: Install Poetry and dependencies run: | pip install poetry==2.1.1 poetry install --without pi --no-interaction - name: Run mypy run: poetry run mypy src/ pytest: runs-on: ubuntu-latest container: python:3.13-slim steps: - name: Checkout run: | apt-get update -qq && apt-get install -y -qq git git clone ${{ github.server_url }}/${{ github.repository }} . git checkout ${{ github.sha }} - name: Install system dependencies run: apt-get install -y -qq libcap-dev - name: Install Poetry and dependencies run: | pip install poetry==2.1.1 poetry install --without pi --no-interaction - name: Run pytest run: poetry run pytest