mirror of
https://github.com/encounter/adk-python.git
synced 2026-07-09 18:19:28 -07:00
Merge https://github.com/google/adk-python/pull/4276 This adds 2 mypy GitHub Actions checks: * `mypy.yml` runs mypy on every PR. This will list all errors, so it shouldn't block until errors are resolved. * `mypy-new-errors.yml` compares the PR branch to `main` to ensure no new mypy errors are introduced. This check can be made blocking now and can be removed once all errors are resolved in favor of `mypy.yml`. ### Checklist - [x] I have read the [CONTRIBUTING.md](https://github.com/google/adk-python/blob/main/CONTRIBUTING.md) document. - [x] I have performed a self-review of my own code. - [x] I have commented my code, particularly in hard-to-understand areas. - [x] I have added tests that prove my fix is effective or that my feature works. - [x] New and existing unit tests pass locally with my changes. - [x] I have manually tested my changes end-to-end. - [x] Any dependent changes have been merged and published in downstream modules. COPYBARA_INTEGRATE_REVIEW=https://github.com/google/adk-python/pull/4276 from sararob:mypy-gh-actions 63130773c4862e90e352d4cb79221d78a6b9f5fd PiperOrigin-RevId: 862226296
75 lines
2.3 KiB
YAML
75 lines
2.3 KiB
YAML
name: Mypy New Error Check
|
|
|
|
on:
|
|
push:
|
|
branches: [ main ]
|
|
pull_request:
|
|
branches: [ main ]
|
|
|
|
|
|
jobs:
|
|
mypy-diff:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
python-version: ['3.10', '3.11', '3.12', '3.13',]
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
|
|
- name: Install uv
|
|
uses: astral-sh/setup-uv@v5
|
|
|
|
- name: Generate Baseline (Main)
|
|
run: |
|
|
# Switch to main branch to generate baseline
|
|
git checkout origin/main
|
|
|
|
git checkout ${{ github.sha }} -- pyproject.toml
|
|
|
|
# Install dependencies for main
|
|
uv venv .venv
|
|
source .venv/bin/activate
|
|
uv sync --all-extras
|
|
|
|
# Run mypy, filter for errors only, remove line numbers (file:123: -> file::), and sort
|
|
# We ignore exit code (|| true) because we expect errors on main
|
|
uv run mypy . | grep "error:" | sed 's/:\([0-9]\+\):/::/g' | sort > main_errors.txt || true
|
|
|
|
echo "Found $(wc -l < main_errors.txt) errors on main."
|
|
|
|
- name: Check PR Branch
|
|
run: |
|
|
# Switch back to the PR commit
|
|
git checkout ${{ github.sha }}
|
|
|
|
# Re-sync dependencies in case the PR changed them
|
|
source .venv/bin/activate
|
|
uv sync --all-extras
|
|
|
|
# Run mypy on PR code, apply same processing
|
|
uv run mypy . | grep "error:" | sed 's/:\([0-9]\+\):/::/g' | sort > pr_errors.txt || true
|
|
|
|
echo "Found $(wc -l < pr_errors.txt) errors on PR branch."
|
|
|
|
- name: Compare and Fail on New Errors
|
|
run: |
|
|
# 'comm -13' suppresses unique lines in file1 (main) and common lines,
|
|
# leaving only lines unique to file2 (PR) -> The new errors.
|
|
comm -13 main_errors.txt pr_errors.txt > new_errors.txt
|
|
|
|
if [ -s new_errors.txt ]; then
|
|
echo "::error::The following NEW mypy errors were introduced:"
|
|
cat new_errors.txt
|
|
exit 1
|
|
else
|
|
echo "Great job! No new mypy errors introduced."
|
|
fi
|