Attempt to fix weird mypy failures on ignored files. (#15409)
By inlining the typechecking job from backend-meta.
This seems to resolve odd errors (maybe due to caching?)
to have been seen on Dependabot PRs.
2 files changed, 55 insertions, 3 deletions
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index f01342c8b7..4333f55a53 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -65,9 +65,59 @@ jobs:
- run: .ci/scripts/check_lockfile.py
lint:
- uses: "matrix-org/backend-meta/.github/workflows/python-poetry-ci.yml@v2"
- with:
- typechecking-extras: "all"
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+
+ - name: Setup Poetry
+ uses: matrix-org/setup-python-poetry@v1
+ with:
+ install-project: "false"
+
+ - name: Import order (isort)
+ run: poetry run isort --check --diff .
+
+ - name: Code style (black)
+ run: poetry run black --check --diff .
+
+ - name: Semantic checks (ruff)
+ # --quiet suppresses the update check.
+ run: poetry run ruff --quiet .
+
+ lint-mypy:
+ runs-on: ubuntu-latest
+ name: Typechecking
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+
+ - name: Setup Poetry
+ uses: matrix-org/setup-python-poetry@v1
+ with:
+ # We want to make use of type hints in optional dependencies too.
+ extras: all
+ # We have seen odd mypy failures that were resolved when we started
+ # installing the project again:
+ # https://github.com/matrix-org/synapse/pull/15376#issuecomment-1498983775
+ # To make CI green, err towards caution and install the project.
+ install-project: "true"
+
+ - name: Install Rust
+ uses: dtolnay/rust-toolchain@1.58.1
+ - uses: Swatinem/rust-cache@v2
+
+ # NB: I have two concerns with this action:
+ # 1. We occasionally see odd mypy problems that aren't reproducible
+ # locally with clean caches. I suspect some dodgy caching behaviour.
+ # 2. The action uses GHA machinery that's deprecated
+ # (https://github.com/AustinScola/mypy-cache-github-action/issues/277)
+ # It may be simpler to use actions/cache ourselves to restore .mypy_cache.
+ - name: Restore/persist mypy's cache
+ uses: AustinScola/mypy-cache-github-action@df56268388422ee282636ee2c7a9cc55ec644a41
+
+ - name: Run mypy
+ run: poetry run mypy
lint-crlf:
runs-on: ubuntu-latest
@@ -165,6 +215,7 @@ jobs:
if: ${{ !cancelled() }} # Run this even if prior jobs were skipped
needs:
- lint
+ - lint-mypy
- lint-crlf
- lint-newsfile
- lint-pydantic
diff --git a/changelog.d/15409.misc b/changelog.d/15409.misc
new file mode 100644
index 0000000000..007111da34
--- /dev/null
+++ b/changelog.d/15409.misc
@@ -0,0 +1 @@
+Explicitly install Synapse during typechecking in CI.
|