1818 SHOWCASE_VERSION : 0.35.0
1919 PROTOC_VERSION : 3.20.2
2020 LATEST_STABLE_PYTHON : 3.14
21- ALL_PYTHON : " ['3.10', '3.11', '3.12', '3.13', '3.14']"
21+ PRERELEASE_PYTHON : 3.15
22+ ALL_PYTHON : " ['3.10', '3.11', '3.12', '3.13', '3.14', '3.15']"
23+ TRIMMED_PYTHON : " ['3.10', '3.14', '3.15']"
24+ # Workaround: Allows libcst to compile on Python 3.15+ while PyO3 catches up
25+ # Can be removed once libcst releases a version with native Python 3.15 wheels
26+ # Follow https://github.com/Instagram/LibCST/issues/1445 for updates.
27+ PYO3_USE_ABI3_FORWARD_COMPATIBILITY : " 1"
2228
2329jobs :
2430 check_changes :
4753 outputs :
4854 all_python : ${{ env.ALL_PYTHON }}
4955 latest_stable_python : ${{ env.LATEST_STABLE_PYTHON }}
56+ prerelease_python : ${{ env.PRERELEASE_PYTHON }}
57+ trimmed_python : $${{ env.TRIMMED_PYTHON }}
5058 steps :
5159 - run : echo "Initializing config for gapic-generator"
5260
6573 uses : actions/setup-python@v6
6674 with :
6775 python-version : " ${{ matrix.python }}"
76+ allow-prereleases : true
77+ # Caches compiled wheels locally to prevent building heavy libraries
78+ # such as grpcio, which we build from scratch on every run for Python 3.15+.
79+ # Follow https://github.com/grpc/grpc/issues/41010 for updates.
80+ cache : ' pip'
81+ cache-dependency-path : ' **/requirements*.txt'
6882 - name : Install System Deps & Protoc
6983 run : |
7084 sudo apt-get update && sudo apt-get install -y curl pandoc unzip
@@ -132,10 +146,16 @@ jobs:
132146 runs-on : ubuntu-latest
133147 steps :
134148 - uses : actions/checkout@v6
135- - name : Set up Python
149+ - name : Set up Python ${{ needs.python_config.outputs.prerelease_python }}
136150 uses : actions/setup-python@v6
137151 with :
138- python-version : ${{ needs.python_config.outputs.latest_stable_python }}
152+ python-version : ${{ needs.python_config.outputs.prerelease_python }}
153+ allow-prereleases : true
154+ # Caches compiled wheels locally to prevent building heavy libraries
155+ # such as grpcio, which we build from scratch on every run for Python 3.15+.
156+ # Follow https://github.com/grpc/grpc/issues/41010 for updates.
157+ cache : ' pip'
158+ cache-dependency-path : ' **/requirements*.txt'
139159 - name : Install System Deps
140160 run : sudo apt-get update && sudo apt-get install -y pandoc
141161 - name : Run Goldens (Prerelease)
@@ -150,15 +170,20 @@ jobs:
150170 needs : python_config
151171 strategy :
152172 matrix :
153- python : ["3.10", "3.14"]
173+ python : ${{ fromJSON(needs.python_config.outputs.trimmed_python) }}
154174 runs-on : ubuntu-latest
155175 steps :
156176 - uses : actions/checkout@v6
157177 - name : Set up Python
158178 uses : actions/setup-python@v6
159179 with :
160180 python-version : ${{ matrix.python }}
161- # This fixes the Pandoc error
181+ allow-prereleases : true
182+ # Caches compiled wheels locally to prevent building heavy libraries
183+ # such as grpcio, which we build from scratch on every run for Python 3.15+.
184+ # Follow https://github.com/grpc/grpc/issues/41010 for updates.
185+ cache : ' pip'
186+ cache-dependency-path : ' **/requirements*.txt'
162187 - name : Install System Deps & Protoc
163188 run : |
164189 sudo apt-get update && sudo apt-get install -y curl pandoc unzip
0 commit comments