name: Code Quality permissions: contents: read on: push: branches: [main] pull_request: branches: [main] jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python 3.10 uses: actions/setup-python@v5 with: python-version: "3.10" - name: Cache pip dependencies uses: actions/cache@v5 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-quality-${{ hashFiles('requirements-dev.txt') }} restore-keys: | ${{ runner.os }}-pip-quality- - name: Install dependencies run: | python -m pip install --upgrade pip pip install -r requirements-dev.txt - name: Check formatting with Black run: black --check --diff . - name: Lint with flake8 run: | # Fail on syntax errors and undefined names flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics # Warnings as non-blocking flake8 . --count --exit-zero --max-line-length=88 --statistics --exclude=reference/,.git,__pycache__,web/ security: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python 3.10 uses: actions/setup-python@v5 with: python-version: "3.10" - name: Install bandit run: pip install bandit[toml] - name: Security scan run: bandit -r . -ll --exclude=./tests,./reference,./venv -q || true