name: Check Lazy OpenAPI Snapshot on: pull_request: branches: - main - litellm_internal_staging - "litellm_**" permissions: contents: read checks: write concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: verify: runs-on: ubuntu-latest timeout-minutes: 10 steps: - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 with: persist-credentials: false - name: Set up Python uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: python-version: "3.12" - name: Set up uv uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7 with: version: "0.10.9" - name: Cache uv dependencies uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: path: | ~/.cache/uv .venv key: ${{ runner.os }}-uv-${{ hashFiles('uv.lock') }} restore-keys: | ${{ runner.os }}-uv- - name: Install dependencies run: uv sync --frozen --all-groups --all-extras - name: Regenerate snapshot to /tmp id: regen run: | cp litellm/proxy/_lazy_openapi_snapshot.json /tmp/snapshot.committed.json uv run --no-sync python -m litellm.proxy._lazy_openapi_snapshot mv litellm/proxy/_lazy_openapi_snapshot.json /tmp/snapshot.fresh.json mv /tmp/snapshot.committed.json litellm/proxy/_lazy_openapi_snapshot.json - name: Compare id: diff continue-on-error: true run: | diff -q /tmp/snapshot.fresh.json litellm/proxy/_lazy_openapi_snapshot.json - name: Mark neutral if drift if: steps.diff.outcome == 'failure' uses: LouisBrunner/checks-action@6b626ffbad7cc56fd58627f774b9067e6118af23 # v2.0.0 with: token: ${{ secrets.GITHUB_TOKEN }} name: lazy-openapi-snapshot conclusion: neutral output: | { "title": "Lazy openapi snapshot is stale", "summary": "Run `python -m litellm.proxy._lazy_openapi_snapshot` and commit the regenerated `litellm/proxy/_lazy_openapi_snapshot.json`. Not blocking — the snapshot will regenerate at release if not committed." }