@@ -160,6 +160,66 @@ jobs:
160160 name : install-smoke-results
161161 path : install-smoke-results.xml
162162
163+ # ---------------------------------------------------------------------------
164+ # Multi-Python install verify: exercises the abi3 promise on every supported
165+ # Python version (3.10–3.13). The published wheel is cp310-abi3, so it must
166+ # install and load the Rust extension on each Python we claim to support.
167+ # ---------------------------------------------------------------------------
168+ multi-python-install-verify :
169+ name : Multi-Python install verify (py${{ matrix.python-version }})
170+ runs-on : ubuntu-latest
171+ timeout-minutes : 15
172+ permissions :
173+ contents : read
174+ id-token : write
175+ strategy :
176+ fail-fast : false
177+ matrix :
178+ python-version : ["3.10", "3.11", "3.12", "3.13"]
179+ env :
180+ GCP_REGION : ${{ vars.GCP_REGION }}
181+ GCP_PROJECT_ID : ${{ vars.GCP_PROJECT_ID }}
182+ GCP_REPO_NAME : ${{ vars.GCP_REPO_NAME }}
183+ steps :
184+ - uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
185+ - name : Authenticate to Google Cloud
186+ uses : google-github-actions/auth@7c6bc770dae815cd3e89ee6cdf493a5fab2cc093 # v3.0.0
187+ with :
188+ workload_identity_provider : ${{ vars.GCP_WORKLOAD_IDENTITY_PROVIDER }}
189+ service_account : ${{ vars.GCP_SERVICE_ACCOUNT }}
190+ - name : Set up Python ${{ matrix.python-version }}
191+ uses : actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
192+ with :
193+ python-version : ${{ matrix.python-version }}
194+ - name : Install AR keyring backend
195+ run : |
196+ python -m pip install --upgrade pip
197+ pip install keyring==25.6.0 keyrings.google-artifactregistry-auth==1.1.2
198+ - name : Install latest dev wheel from Artifact Registry
199+ run : |
200+ set -euo pipefail
201+ INDEX_URL="https://${GCP_REGION}-python.pkg.dev/${GCP_PROJECT_ID}/${GCP_REPO_NAME}/simple/"
202+ pip install --pre --extra-index-url "${INDEX_URL}" pinecone
203+ - name : Show installed version + Python
204+ run : |
205+ python -V
206+ pip show pinecone | grep -E '^(Name|Version|Location):'
207+ - name : Verify import + Rust extension on this Python version
208+ run : |
209+ python -c "
210+ import pinecone
211+ print('OK: import pinecone on Python', __import__('sys').version_info[:2])
212+ import pinecone._grpc
213+ print('OK: import pinecone._grpc')
214+ ch = pinecone._grpc.GrpcChannel(
215+ endpoint='https://example.invalid:443',
216+ api_key='test',
217+ api_version='2025-10',
218+ version='0.0.0',
219+ )
220+ print('OK: GrpcChannel constructed:', type(ch).__name__)
221+ "
222+
163223 # ---------------------------------------------------------------------------
164224 # Cross-platform wheel build matrix without injecting dev versions or
165225 # publishing. Independent signal that release-builds work on every target.
@@ -374,11 +434,12 @@ jobs:
374434 notify-failure :
375435 name : Notify on release-readiness regression
376436 runs-on : ubuntu-latest
377- needs : [integration-tests, install-tests, cross-platform-build, doc-build]
437+ needs : [integration-tests, install-tests, multi-python-install-verify, cross-platform-build, doc-build]
378438 if : >-
379439 always() &&
380440 (needs.integration-tests.result == 'failure' ||
381441 needs.install-tests.result == 'failure' ||
442+ needs.multi-python-install-verify.result == 'failure' ||
382443 needs.cross-platform-build.result == 'failure' ||
383444 needs.doc-build.result == 'failure')
384445 permissions :
@@ -401,6 +462,7 @@ jobs:
401462 "|-----|--------|" \
402463 "| integration-tests | ${{ needs.integration-tests.result }} |" \
403464 "| install-tests | ${{ needs.install-tests.result }} |" \
465+ "| multi-python-install-verify | ${{ needs.multi-python-install-verify.result }} |" \
404466 "| cross-platform-build | ${{ needs.cross-platform-build.result }} |" \
405467 "| doc-build | ${{ needs.doc-build.result }} |" \
406468 "" \
0 commit comments