Skip to content

chore(deps): bump the python group across 1 directory with 15 updates #431

chore(deps): bump the python group across 1 directory with 15 updates

chore(deps): bump the python group across 1 directory with 15 updates #431

Workflow file for this run

name: CI
on:
push:
branches: [main, master, develop]
pull_request:
branches: [main, master, develop]
workflow_dispatch:
# Least privilege at the top level; jobs escalate to exactly what they need
# (the Codecov upload needs id-token: write for its tokenless OIDC auth).
permissions:
contents: read
# Cancel superseded runs on the same ref (saves minutes on rapid pushes).
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
# Lint, format and type-check run once on a single interpreter — the code is
# identical across the matrix, so repeating them per Python version was wasted
# compute and slower feedback. Runs in parallel with the test matrix below.
quality:
name: Lint, format, type-check
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: read # checkout the repo
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
- name: Set up Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
with:
python-version: "3.12"
- name: Set up uv (fast installs + cache)
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
with:
enable-cache: true
# mypy follows imports (disallow_untyped_defs), so the full extras closure
# must be installed for type checking to resolve fastapi/mcp/openai/etc.
- name: Install
run: uv pip install --system -e ".[dev,server,ui,openai,mcp]"
- name: Lint (ruff)
run: ruff check .
- name: Format check (ruff)
run: ruff format --check .
- name: Type check (mypy)
run: mypy coderag
test:
name: Tests (py${{ matrix.python-version }})
runs-on: ubuntu-latest
timeout-minutes: 15
permissions:
contents: read # checkout the repo
id-token: write # OIDC token for Codecov's tokenless upload (3.12 leg)
strategy:
fail-fast: false
matrix:
python-version: ["3.11", "3.12", "3.13"]
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
with:
python-version: ${{ matrix.python-version }}
- name: Set up uv (fast installs + cache)
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
with:
enable-cache: true
- name: Install
run: uv pip install --system -e ".[dev,server,ui,openai,mcp]"
- name: Tests + coverage (offline — no model downloads, no network)
run: |
pytest -m "not integration" \
--cov=coderag --cov-report=term-missing --cov-report=xml | tee coverage.txt
{
echo "### Coverage — Python ${{ matrix.python-version }}"
echo '```'
tail -n 40 coverage.txt
echo '```'
} >> "$GITHUB_STEP_SUMMARY"
# Track coverage over time and surface the README badge. Tokenless OIDC upload
# for this public repo; only the 3.12 matrix leg uploads to avoid duplicates.
- name: Upload coverage to Codecov
if: matrix.python-version == '3.12'
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
with:
files: ./coverage.xml
use_oidc: true
fail_ci_if_error: false
build:
name: Build & check package
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
- name: Set up uv
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
with:
python-version: "3.12"
- name: Build sdist + wheel
run: uv build
- name: Validate package metadata (twine check)
run: uvx twine check dist/*