You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Test workflow skips a pull request that changes only docs/** or **.md through paths-ignore. Any other ready pull request always runs the PyAthena suite (the test job in .github/workflows/test.yaml) against AWS, even when it changes no file the suite uses.
Since 2026-06-01, five pull requests merged into master changed only such files:
Each Ready run, and each later push to a Ready pull request, spent an Athena run on the PyAthena suite without testing anything those pull requests changed.
Proposed change
After #906, the changes job selects the SQLAlchemy and Spark tests with dorny/paths-filter. Add a third filter, pyathena, as an allowlist of the files the PyAthena suite depends on:
the existing shared files: .github/workflows/test.yaml, .github/workflows/test-suite.yaml, justfile, pyproject.toml (including the tox configuration), uv.lock
pyathena/**, tests/**, setup.cfg
Run the test job only when that output is true. Every path that sqla or spark selects is also in this list, so the SQLAlchemy and Spark tests are never selected without the PyAthena suite. Schedule, dispatch, and Release runs keep running every suite, as the other outputs already do.
Keep the trigger's paths-ignore as it is, rather than switching the trigger to a paths: allowlist. The lint job in the same workflow runs just lint over the whole repository: ruff and mypy, license headers, and cfn-lint for cloudformation/. It must keep running for pull requests that change only benchmarks/, scripts/, or cloudformation/.
A file missing from the allowlist would skip the suite for a pull request that needs it. The weekly scheduled run and the Release workflow still run every suite, so such a miss surfaces there, the same as for the SQLAlchemy and Spark selection.
Apply the same change to the 3.x branch afterwards, whose workflow matches master's after the #906 backport (#910).
Use case
The Test workflow skips a pull request that changes only
docs/**or**.mdthroughpaths-ignore. Any other ready pull request always runs the PyAthena suite (thetestjob in.github/workflows/test.yaml) against AWS, even when it changes no file the suite uses.Since 2026-06-01, five pull requests merged into master changed only such files:
benchmarks/(the benchmark harness, which has its ownbenchmarks.yamlworkflow)NOTICE.github/workflows/release.yamlEach Ready run, and each later push to a Ready pull request, spent an Athena run on the PyAthena suite without testing anything those pull requests changed.
Proposed change
After #906, the
changesjob selects the SQLAlchemy and Spark tests with dorny/paths-filter. Add a third filter,pyathena, as an allowlist of the files the PyAthena suite depends on:sharedfiles:.github/workflows/test.yaml,.github/workflows/test-suite.yaml,justfile,pyproject.toml(including the tox configuration),uv.lockpyathena/**,tests/**,setup.cfgRun the
testjob only when that output istrue. Every path thatsqlaorsparkselects is also in this list, so the SQLAlchemy and Spark tests are never selected without the PyAthena suite. Schedule, dispatch, and Release runs keep running every suite, as the other outputs already do.Keep the trigger's
paths-ignoreas it is, rather than switching the trigger to apaths:allowlist. Thelintjob in the same workflow runsjust lintover the whole repository: ruff and mypy, license headers, and cfn-lint forcloudformation/. It must keep running for pull requests that change onlybenchmarks/,scripts/, orcloudformation/.A file missing from the allowlist would skip the suite for a pull request that needs it. The weekly scheduled run and the Release workflow still run every suite, so such a miss surfaces there, the same as for the SQLAlchemy and Spark selection.
Apply the same change to the
3.xbranch afterwards, whose workflow matches master's after the #906 backport (#910).Validation plan (if implementing)
pyathenacolumn. It loads thefiltersblock and matches with picomatchdot: true, as the action does.pyathena/**,tests/**,setup.cfg, and the shared files select the suite.benchmarks/**,scripts/**,cloudformation/**,NOTICE,LICENSE, and.github/workflows/release.yamldo not.sqlaorsparkis also selected bypyathena.test.yaml, so all suites run), check thechangeslog forpyathena = trueand thattestruns.