From 6797d07a9eeffac5155391f7f9ecfebde820b83d Mon Sep 17 00:00:00 2001 From: William Martin Date: Wed, 19 Aug 2026 16:31:00 +0100 Subject: [PATCH] Widen test-published PyPI retry window from 5 to 10 minutes The v0.4.1 release's test-published (3.14) job kept missing the new version for the full 5-minute retry window while three sibling jobs running the exact same install within the same second found it on their first attempt -- PyPI's Fastly CDN serving a stale simple-index page from a not-yet-invalidated edge node, not an actual problem with the release (independently re-verified: pip install typedframes==0.4.1 on Python 3.14 installs and imports cleanly). --- .github/workflows/publish.yml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 70908a6..6c590a4 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -199,11 +199,18 @@ jobs: - name: Install published package run: | + # 20 attempts / 30s apart = up to 10 minutes. Was 10 attempts (5 min): + # too tight for PyPI's Fastly CDN, which can serve a stale simple-index + # page from a not-yet-invalidated edge node for several minutes after a + # publish -- seen in practice on the v0.4.1 release, where this job alone + # (of five running the same install within the same second) kept missing + # the new version for the full 5-minute window while its matrix siblings + # found it on their first attempt. VERSION="${GITHUB_REF#refs/tags/v}" - for i in {1..10}; do + for i in {1..20}; do pip install typedframes==${VERSION} && break - if [ "$i" -eq 10 ]; then - echo "Error: typedframes==${VERSION} not available on PyPI after 10 attempts (5 minutes)" + if [ "$i" -eq 20 ]; then + echo "Error: typedframes==${VERSION} not available on PyPI after 20 attempts (10 minutes)" exit 1 fi echo "Attempt $i failed, retrying in 30s..."