From 91c984224c91391ad1c09ffbc86aff3e4fe2cf70 Mon Sep 17 00:00:00 2001 From: John Sirois Date: Sun, 18 Oct 2026 17:03:37 -0700 Subject: [PATCH 01/16] Add support for Python 3.16. --- .github/workflows/ci.yml | 60 +++++++++++++++-------------------- .github/workflows/release.yml | 29 +++++++++++------ setup.py | 5 +-- tox.ini | 1 + 4 files changed, 49 insertions(+), 46 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 30b7dae..79931c6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,14 +18,14 @@ jobs: steps: - name: Noop run: "true" - tests-36-38: + tests-36-37: name: (${{ matrix.os }}) Python ${{ matrix.python-version[0] }}.${{ matrix.python-version[1] }} Tests needs: org-check runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-24.04, macos-13] - python-version: [[3, 6, 15], [3, 7, 17], [3, 8, 18]] + python-version: [[3, 6, 15], [3, 7, 17]] steps: - name: Checkout p537 uses: actions/checkout@v5 @@ -40,53 +40,43 @@ jobs: command: pip install -U tox - name: Run Unit Tests run: tox -e py${{ matrix.python-version[0] }}${{ matrix.python-version[1] }} - tests-39-315: - name: (${{ matrix.os }}) Python 3.9 - 3.15 Tests + tests-38-316: + name: (${{ matrix.os }}) Python 3.8 - 3.16 Tests needs: org-check runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-24.04, macos-13, windows-2025] + os: [ubuntu-24.04, macos-15, windows-2025] steps: - name: Checkout p537 uses: actions/checkout@v5 - - name: Setup Python 3.9 - uses: actions/setup-python@v6 + - name: Setup uv + uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0 with: - python-version: "3.9" - - name: Setup Python 3.10 - uses: actions/setup-python@v6 - with: - python-version: "3.10" - - name: Setup Python 3.11 - uses: actions/setup-python@v6 - with: - python-version: "3.11" - - name: Setup Python 3.12 - uses: actions/setup-python@v6 - with: - python-version: "3.12" - - name: Setup Python 3.13 - uses: actions/setup-python@v6 - with: - python-version: "3.13" - - name: Setup Python 3.14 - uses: actions/setup-python@v6 - with: - python-version: "3.14" - - name: Setup Python 3.15 - uses: actions/setup-python@v6 - with: - python-version: "3.15.0-alpha.1" + version: "0.13.1" + - name: Setup Pythons + shell: bash + run: | + export UV_PYTHON_INSTALL_DIR="${PWD}/uv-pythons" + uv python install --managed-python --force 3.{8..16} + uv python list \ + --only-installed \ + --managed-python \ + --output-format json 2>/dev/null | \ + jq -r '.[] | .path' | \ + grep uv-pythons/ | \ + xargs dirname | whil read entry; do + echo "$(realpath "${entry}")" >> "${GITHUB_PATH}" + done - name: Run Unit Tests uses: pex-tool/actions/run-tox@7d8530c74d2e3ca4640d1ed9192b6e2b8c4f5f7b with: - tox-env: py39,py310,py311,py312,py313,py314,py315 + tox-env: py38,py39,py310,py311,py312,py313,py314,py315,py316 final-status: name: Gather Final Status needs: - - tests-36-38 - - tests-39-315 + - tests-36-37 + - tests-38-316 runs-on: ubuntu-24.04 steps: - name: Check Non-Success diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 36ef0d2..9995817 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -39,14 +39,14 @@ jobs: echo "::error::Release tag '${RELEASE_TAG}' must match 'v\d+.\d+.\d+'." exit 1 fi - package-36-38-dists: + package-36-37-dists: name: ${{ matrix.os }} Package for Python ${{ matrix.python-version[0] }}.${{ matrix.python-version[1] }} needs: determine-tag runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-24.04, macos-13] - python-version: [[3, 6, 15], [3, 7, 17], [3, 8, 18]] + python-version: [[3, 6, 15], [3, 7, 17]] steps: - name: Checkout p537 ${{ needs.determine-tag.outputs.release-tag }} uses: actions/checkout@v5 @@ -69,23 +69,34 @@ jobs: name: "${{ matrix.os }}-${{ needs.determine-tag.outputs.release-tag }}-${{ join(matrix.python-version, '.') }}-distributions" path: dist/ retention-days: 1 - package-39-315-dists: + package-38-316-dists: name: ${{ matrix.os }} Package for Python ${{ matrix.python-version[0] }}.${{ matrix.python-version[1] }} needs: determine-tag runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-24.04, macos-13, windows-2025] - python-version: [[3, 9], [3, 10], [3, 11], [3, 12], [3, 13], [3, 14], [3, 15, "0-alpha.1"]] + python-version: [[3, 8], [3, 9], [3, 10], [3, 11], [3, 12], [3, 13], [3, 14], [3, 15], [3, 16]] steps: - name: Checkout p537 ${{ needs.determine-tag.outputs.release-tag }} uses: actions/checkout@v5 with: ref: ${{ needs.determine-tag.outputs.release-tag }} - name: Setup Python ${{ join(matrix.python-version, '.') }} - uses: actions/setup-python@v6 - with: - python-version: "${{ join(matrix.python-version, '.') }}" + shell: bash + run: | + export UV_PYTHON_INSTALL_DIR="${PWD}/uv-pythons" + uv python install --managed-python --force ${{ matrix.python-version[0] }}.${{ matrix.python-version[1] }} + uv python list \ + --only-installed \ + --managed-python \ + --output-format json \ + ${{ matrix.python-version[0] }}.${{ matrix.python-version[1] }} 2>/dev/null | \ + jq -r '.[] | .path' | \ + grep uv-pythons/ | \ + xargs dirname | whil read entry; do + echo "$(realpath "${entry}")" >> "${GITHUB_PATH}" + done - name: Package ${{ needs.determine-tag.outputs.release-tag }} uses: pex-tool/actions/run-tox@7d8530c74d2e3ca4640d1ed9192b6e2b8c4f5f7b with: @@ -100,8 +111,8 @@ jobs: name: Publish sdist and wheel to PyPI needs: - determine-tag - - package-36-38-dists - - package-39-315-dists + - package-36-37-dists + - package-38-316-dists runs-on: ubuntu-24.04 environment: Release permissions: diff --git a/setup.py b/setup.py index 0186c86..5c72977 100644 --- a/setup.py +++ b/setup.py @@ -8,7 +8,7 @@ def long_description(): setup( name='p537', - version='1.0.10', + version='1.0.11', author="John Sirois", author_email="john.sirois@gmail.com", description='A tiny platform-specific distribution with a console script.', @@ -33,8 +33,9 @@ def long_description(): 'Programming Language :: Python :: 3.14', 'Programming Language :: Python :: 3.14', 'Programming Language :: Python :: 3.15', + 'Programming Language :: Python :: 3.16', ], - python_requires=">=3.6,<3.16", + python_requires=">=3.6,<3.17", ext_modules=[ Extension('p537', sources=['p537module.c']), ], diff --git a/tox.ini b/tox.ini index c705cbf..0138691 100644 --- a/tox.ini +++ b/tox.ini @@ -13,6 +13,7 @@ envlist = py313 py314 py315 + py316 [testenv] deps = From 874fd9382efc9e2b336a6ef03a3c0f262fe8cdb5 Mon Sep 17 00:00:00 2001 From: John Sirois Date: Sun, 18 Oct 2026 17:04:59 -0700 Subject: [PATCH 02/16] Fix typo. --- .github/workflows/ci.yml | 2 +- .github/workflows/release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 79931c6..428d5a9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -65,7 +65,7 @@ jobs: --output-format json 2>/dev/null | \ jq -r '.[] | .path' | \ grep uv-pythons/ | \ - xargs dirname | whil read entry; do + xargs dirname | while read entry; do echo "$(realpath "${entry}")" >> "${GITHUB_PATH}" done - name: Run Unit Tests diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9995817..72629bf 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -94,7 +94,7 @@ jobs: ${{ matrix.python-version[0] }}.${{ matrix.python-version[1] }} 2>/dev/null | \ jq -r '.[] | .path' | \ grep uv-pythons/ | \ - xargs dirname | whil read entry; do + xargs dirname | while read entry; do echo "$(realpath "${entry}")" >> "${GITHUB_PATH}" done - name: Package ${{ needs.determine-tag.outputs.release-tag }} From 998e9b151fc8b00d8830c9ca79b49ca7b7e02950 Mon Sep 17 00:00:00 2001 From: John Sirois Date: Sun, 18 Oct 2026 17:10:13 -0700 Subject: [PATCH 03/16] Allow pip upgrade in uv managed Pythons. --- .github/workflows/ci.yml | 2 ++ .github/workflows/release.yml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 428d5a9..2554d7d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -70,6 +70,8 @@ jobs: done - name: Run Unit Tests uses: pex-tool/actions/run-tox@7d8530c74d2e3ca4640d1ed9192b6e2b8c4f5f7b + env: + UV_BREAK_SYSTEM_PACKAGES: true with: tox-env: py38,py39,py310,py311,py312,py313,py314,py315,py316 final-status: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 72629bf..bd02c2c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -99,6 +99,8 @@ jobs: done - name: Package ${{ needs.determine-tag.outputs.release-tag }} uses: pex-tool/actions/run-tox@7d8530c74d2e3ca4640d1ed9192b6e2b8c4f5f7b + env: + UV_BREAK_SYSTEM_PACKAGES: true with: tox-env: package - name: Upload Artifact From 5903eb4b1d7ebb43b46043176ed7e1723b8ceff9 Mon Sep 17 00:00:00 2001 From: John Sirois Date: Sun, 18 Oct 2026 17:12:41 -0700 Subject: [PATCH 04/16] Set the right env var. --- .github/workflows/ci.yml | 2 +- .github/workflows/release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2554d7d..00d493f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -71,7 +71,7 @@ jobs: - name: Run Unit Tests uses: pex-tool/actions/run-tox@7d8530c74d2e3ca4640d1ed9192b6e2b8c4f5f7b env: - UV_BREAK_SYSTEM_PACKAGES: true + PIP_BREAK_SYSTEM_PACKAGES: true with: tox-env: py38,py39,py310,py311,py312,py313,py314,py315,py316 final-status: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bd02c2c..0d2a99f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -100,7 +100,7 @@ jobs: - name: Package ${{ needs.determine-tag.outputs.release-tag }} uses: pex-tool/actions/run-tox@7d8530c74d2e3ca4640d1ed9192b6e2b8c4f5f7b env: - UV_BREAK_SYSTEM_PACKAGES: true + PIP_BREAK_SYSTEM_PACKAGES: true with: tox-env: package - name: Upload Artifact From 550bbc7bfedf9f3473727131741d4d661d09c5cc Mon Sep 17 00:00:00 2001 From: John Sirois Date: Sun, 18 Oct 2026 17:18:56 -0700 Subject: [PATCH 05/16] Try a Windows fix. --- .github/workflows/ci.yml | 2 +- .github/workflows/release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 00d493f..4aa978b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -64,7 +64,7 @@ jobs: --managed-python \ --output-format json 2>/dev/null | \ jq -r '.[] | .path' | \ - grep uv-pythons/ | \ + grep uv-pythons | \ xargs dirname | while read entry; do echo "$(realpath "${entry}")" >> "${GITHUB_PATH}" done diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0d2a99f..fcb1a0b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -93,7 +93,7 @@ jobs: --output-format json \ ${{ matrix.python-version[0] }}.${{ matrix.python-version[1] }} 2>/dev/null | \ jq -r '.[] | .path' | \ - grep uv-pythons/ | \ + grep uv-pythons | \ xargs dirname | while read entry; do echo "$(realpath "${entry}")" >> "${GITHUB_PATH}" done From ff06e74ea464e163a31ca36f6d79d1953d2b164e Mon Sep 17 00:00:00 2001 From: John Sirois Date: Sun, 18 Oct 2026 17:28:52 -0700 Subject: [PATCH 06/16] Take another tack in CI. --- .github/workflows/ci.yml | 62 ++++++++++++++++++++--------------- .github/workflows/release.yml | 35 +++++++------------- 2 files changed, 46 insertions(+), 51 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4aa978b..afb4284 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,14 +18,14 @@ jobs: steps: - name: Noop run: "true" - tests-36-37: + tests-36-38-and-316: name: (${{ matrix.os }}) Python ${{ matrix.python-version[0] }}.${{ matrix.python-version[1] }} Tests needs: org-check runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-24.04, macos-13] - python-version: [[3, 6, 15], [3, 7, 17]] + os: [ubuntu-24.04, macos-15] + python-version: [[3, 6, 15], [3, 7, 17], [3, 8, 18], [3, 16, "0-alpha.1"]] steps: - name: Checkout p537 uses: actions/checkout@v5 @@ -40,8 +40,8 @@ jobs: command: pip install -U tox - name: Run Unit Tests run: tox -e py${{ matrix.python-version[0] }}${{ matrix.python-version[1] }} - tests-38-316: - name: (${{ matrix.os }}) Python 3.8 - 3.16 Tests + tests-39-315: + name: (${{ matrix.os }}) Python 3.9 - 3.15 Tests needs: org-check runs-on: ${{ matrix.os }} strategy: @@ -50,35 +50,43 @@ jobs: steps: - name: Checkout p537 uses: actions/checkout@v5 - - name: Setup uv - uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0 + - name: Setup Python 3.9 + uses: actions/setup-python@v6 with: - version: "0.13.1" - - name: Setup Pythons - shell: bash - run: | - export UV_PYTHON_INSTALL_DIR="${PWD}/uv-pythons" - uv python install --managed-python --force 3.{8..16} - uv python list \ - --only-installed \ - --managed-python \ - --output-format json 2>/dev/null | \ - jq -r '.[] | .path' | \ - grep uv-pythons | \ - xargs dirname | while read entry; do - echo "$(realpath "${entry}")" >> "${GITHUB_PATH}" - done + python-version: "3.9" + - name: Setup Python 3.10 + uses: actions/setup-python@v6 + with: + python-version: "3.10" + - name: Setup Python 3.11 + uses: actions/setup-python@v6 + with: + python-version: "3.11" + - name: Setup Python 3.12 + uses: actions/setup-python@v6 + with: + python-version: "3.12" + - name: Setup Python 3.13 + uses: actions/setup-python@v6 + with: + python-version: "3.13" + - name: Setup Python 3.14 + uses: actions/setup-python@v6 + with: + python-version: "3.14" + - name: Setup Python 3.15 + uses: actions/setup-python@v6 + with: + python-version: "3.15" - name: Run Unit Tests uses: pex-tool/actions/run-tox@7d8530c74d2e3ca4640d1ed9192b6e2b8c4f5f7b - env: - PIP_BREAK_SYSTEM_PACKAGES: true with: - tox-env: py38,py39,py310,py311,py312,py313,py314,py315,py316 + tox-env: py39,py310,py311,py312,py313,py314,py315 final-status: name: Gather Final Status needs: - - tests-36-37 - - tests-38-316 + - tests-36-38-and-316 + - tests-39-315 runs-on: ubuntu-24.04 steps: - name: Check Non-Success diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fcb1a0b..04cb10a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -39,14 +39,14 @@ jobs: echo "::error::Release tag '${RELEASE_TAG}' must match 'v\d+.\d+.\d+'." exit 1 fi - package-36-37-dists: + package-36-38-and-316-dists: name: ${{ matrix.os }} Package for Python ${{ matrix.python-version[0] }}.${{ matrix.python-version[1] }} needs: determine-tag runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-24.04, macos-13] - python-version: [[3, 6, 15], [3, 7, 17]] + os: [ubuntu-24.04, macos-15] + python-version: [[3, 6, 15], [3, 7, 17], [3, 8, 18], [3, 16, "0-alpha.1"]] steps: - name: Checkout p537 ${{ needs.determine-tag.outputs.release-tag }} uses: actions/checkout@v5 @@ -69,38 +69,25 @@ jobs: name: "${{ matrix.os }}-${{ needs.determine-tag.outputs.release-tag }}-${{ join(matrix.python-version, '.') }}-distributions" path: dist/ retention-days: 1 - package-38-316-dists: + package-39-315-dists: name: ${{ matrix.os }} Package for Python ${{ matrix.python-version[0] }}.${{ matrix.python-version[1] }} needs: determine-tag runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-24.04, macos-13, windows-2025] - python-version: [[3, 8], [3, 9], [3, 10], [3, 11], [3, 12], [3, 13], [3, 14], [3, 15], [3, 16]] + os: [ubuntu-24.04, macos-15, windows-2025] + python-version: [[3, 9], [3, 10], [3, 11], [3, 12], [3, 13], [3, 14], [3, 15]] steps: - name: Checkout p537 ${{ needs.determine-tag.outputs.release-tag }} uses: actions/checkout@v5 with: ref: ${{ needs.determine-tag.outputs.release-tag }} - name: Setup Python ${{ join(matrix.python-version, '.') }} - shell: bash - run: | - export UV_PYTHON_INSTALL_DIR="${PWD}/uv-pythons" - uv python install --managed-python --force ${{ matrix.python-version[0] }}.${{ matrix.python-version[1] }} - uv python list \ - --only-installed \ - --managed-python \ - --output-format json \ - ${{ matrix.python-version[0] }}.${{ matrix.python-version[1] }} 2>/dev/null | \ - jq -r '.[] | .path' | \ - grep uv-pythons | \ - xargs dirname | while read entry; do - echo "$(realpath "${entry}")" >> "${GITHUB_PATH}" - done + uses: actions/setup-python@v6 + with: + python-version: "${{ join(matrix.python-version, '.') }}" - name: Package ${{ needs.determine-tag.outputs.release-tag }} uses: pex-tool/actions/run-tox@7d8530c74d2e3ca4640d1ed9192b6e2b8c4f5f7b - env: - PIP_BREAK_SYSTEM_PACKAGES: true with: tox-env: package - name: Upload Artifact @@ -113,8 +100,8 @@ jobs: name: Publish sdist and wheel to PyPI needs: - determine-tag - - package-36-37-dists - - package-38-316-dists + - package-36-38-and-316-dists + - package-39-315-dists runs-on: ubuntu-24.04 environment: Release permissions: From a877299019d9c72d549ffd25c93e5c9f40e28e44 Mon Sep 17 00:00:00 2001 From: John Sirois Date: Sun, 18 Oct 2026 17:30:18 -0700 Subject: [PATCH 07/16] Fix 3.16 pyenv version. --- .github/workflows/ci.yml | 2 +- .github/workflows/release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index afb4284..412d708 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,7 +25,7 @@ jobs: strategy: matrix: os: [ubuntu-24.04, macos-15] - python-version: [[3, 6, 15], [3, 7, 17], [3, 8, 18], [3, 16, "0-alpha.1"]] + python-version: [[3, 6, 15], [3, 7, 17], [3, 8, 18], [3, 16, "0a1"]] steps: - name: Checkout p537 uses: actions/checkout@v5 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 04cb10a..35fcf72 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -46,7 +46,7 @@ jobs: strategy: matrix: os: [ubuntu-24.04, macos-15] - python-version: [[3, 6, 15], [3, 7, 17], [3, 8, 18], [3, 16, "0-alpha.1"]] + python-version: [[3, 6, 15], [3, 7, 17], [3, 8, 18], [3, 16, "0a1"]] steps: - name: Checkout p537 ${{ needs.determine-tag.outputs.release-tag }} uses: actions/checkout@v5 From 0c8df1f8e186bbc4f4addb9add9aced25dc0bd5f Mon Sep 17 00:00:00 2001 From: John Sirois Date: Sun, 18 Oct 2026 17:40:02 -0700 Subject: [PATCH 08/16] Upgrade pyenv to pick up 3.16.0a1. --- .github/workflows/ci.yml | 5 ++--- .github/workflows/release.yml | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 412d708..f63ef34 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,9 +30,8 @@ jobs: - name: Checkout p537 uses: actions/checkout@v5 - name: "Setup Python ${{ join(matrix.python-version, '.') }}" - # Upgrade node16 -> node20: Out for review here: - # https://github.com/gabrielfalcao/pyenv-action/pull/444 - uses: pex-tool/pyenv-action@baec18679698d2f80064cc04eb9ad0c8dc5ca8f8 + # Upgrades pyenv to 2.8.10 to pick up 3.16.0a1. + uses: pex-tool/pyenv-action@dd5f104be647704ba0eed246cbf0928becf39bb9 env: ENSUREPIP: no with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 35fcf72..a52b6a3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -53,9 +53,8 @@ jobs: with: ref: ${{ needs.determine-tag.outputs.release-tag }} - name: "Setup Python ${{ join(matrix.python-version, '.') }}" - # Upgrade node16 -> node20: Out for review here: - # https://github.com/gabrielfalcao/pyenv-action/pull/444 - uses: pex-tool/pyenv-action@baec18679698d2f80064cc04eb9ad0c8dc5ca8f8 + # Upgrades pyenv to 2.8.10 to pick up 3.16.0a1. + uses: pex-tool/pyenv-action@dd5f104be647704ba0eed246cbf0928becf39bb9 env: ENSUREPIP: no with: From 0241f01151dbedf07595de140c9ecc6b5f9c888d Mon Sep 17 00:00:00 2001 From: John Sirois Date: Sun, 18 Oct 2026 17:44:31 -0700 Subject: [PATCH 09/16] Another attempt at a pyenv upgrade. --- .github/workflows/ci.yml | 2 +- .github/workflows/release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f63ef34..7815f9c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,7 +31,7 @@ jobs: uses: actions/checkout@v5 - name: "Setup Python ${{ join(matrix.python-version, '.') }}" # Upgrades pyenv to 2.8.10 to pick up 3.16.0a1. - uses: pex-tool/pyenv-action@dd5f104be647704ba0eed246cbf0928becf39bb9 + uses: pex-tool/pyenv-action@4742a5b7cb14532dbc845a6892035252f2e8b174 env: ENSUREPIP: no with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a52b6a3..57b97fa 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -54,7 +54,7 @@ jobs: ref: ${{ needs.determine-tag.outputs.release-tag }} - name: "Setup Python ${{ join(matrix.python-version, '.') }}" # Upgrades pyenv to 2.8.10 to pick up 3.16.0a1. - uses: pex-tool/pyenv-action@dd5f104be647704ba0eed246cbf0928becf39bb9 + uses: pex-tool/pyenv-action@4742a5b7cb14532dbc845a6892035252f2e8b174 env: ENSUREPIP: no with: From cb70403a37054ae4032dbd849e14381e88462dcc Mon Sep 17 00:00:00 2001 From: John Sirois Date: Sun, 18 Oct 2026 17:48:00 -0700 Subject: [PATCH 10/16] Yet another attempt at a pyenv upgrade. --- .github/workflows/ci.yml | 2 +- .github/workflows/release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7815f9c..ce5deba 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,7 +31,7 @@ jobs: uses: actions/checkout@v5 - name: "Setup Python ${{ join(matrix.python-version, '.') }}" # Upgrades pyenv to 2.8.10 to pick up 3.16.0a1. - uses: pex-tool/pyenv-action@4742a5b7cb14532dbc845a6892035252f2e8b174 + uses: pex-tool/pyenv-action@dcccfcc2bb18b008eca1ee92bbb05425e7126ead env: ENSUREPIP: no with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 57b97fa..fdc8a82 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -54,7 +54,7 @@ jobs: ref: ${{ needs.determine-tag.outputs.release-tag }} - name: "Setup Python ${{ join(matrix.python-version, '.') }}" # Upgrades pyenv to 2.8.10 to pick up 3.16.0a1. - uses: pex-tool/pyenv-action@4742a5b7cb14532dbc845a6892035252f2e8b174 + uses: pex-tool/pyenv-action@dcccfcc2bb18b008eca1ee92bbb05425e7126ead env: ENSUREPIP: no with: From 445fe03bfa791ef70ea24cad5f6a62b3199f0f0e Mon Sep 17 00:00:00 2001 From: John Sirois Date: Mon, 19 Oct 2026 07:43:12 -0700 Subject: [PATCH 11/16] Fix Python build. --- .github/workflows/ci.yml | 23 +++++++++++++++++++++++ .github/workflows/release.yml | 23 +++++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ce5deba..95de191 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,6 +29,29 @@ jobs: steps: - name: Checkout p537 uses: actions/checkout@v5 + - name: Install Python Build Requirements + run: | + apt update + DEBIAN_FRONTEND=noninteractive apt install \ + --yes \ + --no-install-recommends \ + build-essential \ + curl \ + git \ + libbz2-dev \ + libffi-dev \ + liblzma-dev \ + libncursesw5-dev \ + libreadline-dev \ + libsqlite3-dev \ + libssl-dev \ + libxml2-dev \ + libxmlsec1-dev \ + libzstd-dev \ + make \ + tk-dev \ + xz-utils \ + zlib1g-dev - name: "Setup Python ${{ join(matrix.python-version, '.') }}" # Upgrades pyenv to 2.8.10 to pick up 3.16.0a1. uses: pex-tool/pyenv-action@dcccfcc2bb18b008eca1ee92bbb05425e7126ead diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fdc8a82..0c0208a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -52,6 +52,29 @@ jobs: uses: actions/checkout@v5 with: ref: ${{ needs.determine-tag.outputs.release-tag }} + - name: Install Python Build Requirements + run: | + apt update + DEBIAN_FRONTEND=noninteractive apt install \ + --yes \ + --no-install-recommends \ + build-essential \ + curl \ + git \ + libbz2-dev \ + libffi-dev \ + liblzma-dev \ + libncursesw5-dev \ + libreadline-dev \ + libsqlite3-dev \ + libssl-dev \ + libxml2-dev \ + libxmlsec1-dev \ + libzstd-dev \ + make \ + tk-dev \ + xz-utils \ + zlib1g-dev - name: "Setup Python ${{ join(matrix.python-version, '.') }}" # Upgrades pyenv to 2.8.10 to pick up 3.16.0a1. uses: pex-tool/pyenv-action@dcccfcc2bb18b008eca1ee92bbb05425e7126ead From 4c79114b1bcffea950d5e88dfe116c23fd4b73a8 Mon Sep 17 00:00:00 2001 From: John Sirois Date: Mon, 19 Oct 2026 07:44:23 -0700 Subject: [PATCH 12/16] Fix perms. --- .github/workflows/ci.yml | 4 ++-- .github/workflows/release.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 95de191..9c69745 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,8 +31,8 @@ jobs: uses: actions/checkout@v5 - name: Install Python Build Requirements run: | - apt update - DEBIAN_FRONTEND=noninteractive apt install \ + sudo apt update + DEBIAN_FRONTEND=noninteractive sudo apt install \ --yes \ --no-install-recommends \ build-essential \ diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0c0208a..18b8adf 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -54,8 +54,8 @@ jobs: ref: ${{ needs.determine-tag.outputs.release-tag }} - name: Install Python Build Requirements run: | - apt update - DEBIAN_FRONTEND=noninteractive apt install \ + sudo apt update + DEBIAN_FRONTEND=noninteractive sudo apt install \ --yes \ --no-install-recommends \ build-essential \ From 15cd86c300c6dd378a4acc8dfec57a36e1101ecb Mon Sep 17 00:00:00 2001 From: John Sirois Date: Mon, 19 Oct 2026 07:47:22 -0700 Subject: [PATCH 13/16] Limit apt to Ubuntu. --- .github/workflows/ci.yml | 1 + .github/workflows/release.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9c69745..9b2e3e1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,6 +30,7 @@ jobs: - name: Checkout p537 uses: actions/checkout@v5 - name: Install Python Build Requirements + if: ${{ matrix.os == 'ubuntu-24.04' }} run: | sudo apt update DEBIAN_FRONTEND=noninteractive sudo apt install \ diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 18b8adf..eba961d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -53,6 +53,7 @@ jobs: with: ref: ${{ needs.determine-tag.outputs.release-tag }} - name: Install Python Build Requirements + if: ${{ matrix.os == 'ubuntu-24.04' }} run: | sudo apt update DEBIAN_FRONTEND=noninteractive sudo apt install \ From 8548020f6b9526dbf7d292506f4b2eb9dc22a727 Mon Sep 17 00:00:00 2001 From: John Sirois Date: Mon, 19 Oct 2026 11:55:32 -0700 Subject: [PATCH 14/16] Another swing at pyenv for 3.16.0a1. --- .github/workflows/actions.lock | 31 +++++++++++ .github/workflows/ci.yml | 94 +++++++++++++++++++--------------- .github/workflows/release.yml | 80 +++++++++++++++++------------ 3 files changed, 132 insertions(+), 73 deletions(-) create mode 100644 .github/workflows/actions.lock diff --git a/.github/workflows/actions.lock b/.github/workflows/actions.lock new file mode 100644 index 0000000..f42344f --- /dev/null +++ b/.github/workflows/actions.lock @@ -0,0 +1,31 @@ +# This file is machine-generated by `gh actions-lock`. +# Do not edit by hand; run `gh actions-lock` to update. +# Docs: https://gh.io/actions-lockfile +version: 'v0.0.3' +workflows: + '.github/workflows/ci.yml': + - 'actions/checkout@v7.0.1' + - 'actions/setup-python@v7.0.0' + - 'pex-tool/actions@main' + - 'pex-tool/pyenv-action@main' +dependencies: + 'actions/checkout@v7.0.1': + ref: 'v7.0.1' + commit: 'sha1-3d3c42e5aac5ba805825da76410c181273ba90b1' + owner_id: 44036562 + repo_id: 197814629 + 'actions/setup-python@v7.0.0': + ref: 'v7.0.0' + commit: 'sha1-5fda3b95a4ea91299a34e894583c3862153e4b97' + owner_id: 44036562 + repo_id: 192625525 + 'pex-tool/actions@main': + ref: 'main' + commit: 'sha1-e22fe0e0fe85e1f7eb5bbfc7674c7cbbf24ae6b5' + owner_id: 159246247 + repo_id: 891735357 + 'pex-tool/pyenv-action@main': + ref: 'main' + commit: 'sha1-dcccfcc2bb18b008eca1ee92bbb05425e7126ead' + owner_id: 159246247 + repo_id: 759510979 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9b2e3e1..bf5d950 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,41 +28,55 @@ jobs: python-version: [[3, 6, 15], [3, 7, 17], [3, 8, 18], [3, 16, "0a1"]] steps: - name: Checkout p537 - uses: actions/checkout@v5 - - name: Install Python Build Requirements - if: ${{ matrix.os == 'ubuntu-24.04' }} + uses: actions/checkout@v7.0.1 + - name: Install Python Build Deps + if: matrix.os == 'ubuntu-24.04' run: | sudo apt update - DEBIAN_FRONTEND=noninteractive sudo apt install \ - --yes \ - --no-install-recommends \ - build-essential \ - curl \ - git \ - libbz2-dev \ - libffi-dev \ - liblzma-dev \ - libncursesw5-dev \ - libreadline-dev \ - libsqlite3-dev \ - libssl-dev \ - libxml2-dev \ - libxmlsec1-dev \ - libzstd-dev \ - make \ - tk-dev \ - xz-utils \ - zlib1g-dev - - name: "Setup Python ${{ join(matrix.python-version, '.') }}" - # Upgrades pyenv to 2.8.10 to pick up 3.16.0a1. - uses: pex-tool/pyenv-action@dcccfcc2bb18b008eca1ee92bbb05425e7126ead - env: - ENSUREPIP: no + DEBIAN_FRONTEND=noninteractive sudo apt install -y \ + build-essential \ + curl \ + git \ + libbz2-dev \ + libffi-dev \ + liblzma-dev \ + libncursesw5-dev \ + libreadline-dev \ + libsqlite3-dev \ + libssl-dev \ + libxml2-dev \ + libxmlsec1-dev \ + libzstd-dev \ + make \ + tk-dev \ + xz-utils \ + zlib1g-dev + - name: Install Pyenv + run: | + cd "${RUNNER_TOOL_CACHE}" + git clone https://github.com/pyenv/pyenv + ( + cd pyenv + src/configure + make -C src + ) + export PYENV_ROOT="$PWD/pyenv" + echo "PYENV_ROOT=${PYENV_ROOT}" >> "${GITHUB_ENV}" + echo "${PYENV_ROOT}/bin" >> "${GITHUB_PATH}" + - name: Setup Python ${{ join(matrix.python-version, '.') }} + run: | + pyenv install ${{ join(matrix.python-version, '.') }} + echo "${PYENV_ROOT}/versions/${{ join(matrix.python-version, '.') }}/bin" >> "${GITHUB_PATH}" + - name: Setup Tox Python + uses: actions/setup-python@v7.0.0 with: - default: "${{ join(matrix.python-version, '.') }}" - command: pip install -U tox + python-version: 3.11 - name: Run Unit Tests - run: tox -e py${{ matrix.python-version[0] }}${{ matrix.python-version[1] }} + run: | + python3.11 -V + python3.11 -mpip install -U pip + python3.11 -mpip install -U tox + python3.11 -mtox -e py${{ matrix.python-version[0] }}${{ matrix.python-version[1] }} -- -vvs tests-39-315: name: (${{ matrix.os }}) Python 3.9 - 3.15 Tests needs: org-check @@ -72,37 +86,37 @@ jobs: os: [ubuntu-24.04, macos-15, windows-2025] steps: - name: Checkout p537 - uses: actions/checkout@v5 + uses: actions/checkout@v7.0.1 - name: Setup Python 3.9 - uses: actions/setup-python@v6 + uses: actions/setup-python@v7.0.0 with: python-version: "3.9" - name: Setup Python 3.10 - uses: actions/setup-python@v6 + uses: actions/setup-python@v7.0.0 with: python-version: "3.10" - name: Setup Python 3.11 - uses: actions/setup-python@v6 + uses: actions/setup-python@v7.0.0 with: python-version: "3.11" - name: Setup Python 3.12 - uses: actions/setup-python@v6 + uses: actions/setup-python@v7.0.0 with: python-version: "3.12" - name: Setup Python 3.13 - uses: actions/setup-python@v6 + uses: actions/setup-python@v7.0.0 with: python-version: "3.13" - name: Setup Python 3.14 - uses: actions/setup-python@v6 + uses: actions/setup-python@v7.0.0 with: python-version: "3.14" - name: Setup Python 3.15 - uses: actions/setup-python@v6 + uses: actions/setup-python@v7.0.0 with: python-version: "3.15" - name: Run Unit Tests - uses: pex-tool/actions/run-tox@7d8530c74d2e3ca4640d1ed9192b6e2b8c4f5f7b + uses: pex-tool/actions/run-tox@main with: tox-env: py39,py310,py311,py312,py313,py314,py315 final-status: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index eba961d..c79268e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -49,43 +49,57 @@ jobs: python-version: [[3, 6, 15], [3, 7, 17], [3, 8, 18], [3, 16, "0a1"]] steps: - name: Checkout p537 ${{ needs.determine-tag.outputs.release-tag }} - uses: actions/checkout@v5 + uses: actions/checkout@v7.0.1 with: ref: ${{ needs.determine-tag.outputs.release-tag }} - - name: Install Python Build Requirements - if: ${{ matrix.os == 'ubuntu-24.04' }} + - name: Install Python Build Deps + if: matrix.os == 'ubuntu-24.04' run: | sudo apt update - DEBIAN_FRONTEND=noninteractive sudo apt install \ - --yes \ - --no-install-recommends \ - build-essential \ - curl \ - git \ - libbz2-dev \ - libffi-dev \ - liblzma-dev \ - libncursesw5-dev \ - libreadline-dev \ - libsqlite3-dev \ - libssl-dev \ - libxml2-dev \ - libxmlsec1-dev \ - libzstd-dev \ - make \ - tk-dev \ - xz-utils \ - zlib1g-dev - - name: "Setup Python ${{ join(matrix.python-version, '.') }}" - # Upgrades pyenv to 2.8.10 to pick up 3.16.0a1. - uses: pex-tool/pyenv-action@dcccfcc2bb18b008eca1ee92bbb05425e7126ead - env: - ENSUREPIP: no + DEBIAN_FRONTEND=noninteractive sudo apt install -y \ + build-essential \ + curl \ + git \ + libbz2-dev \ + libffi-dev \ + liblzma-dev \ + libncursesw5-dev \ + libreadline-dev \ + libsqlite3-dev \ + libssl-dev \ + libxml2-dev \ + libxmlsec1-dev \ + libzstd-dev \ + make \ + tk-dev \ + xz-utils \ + zlib1g-dev + - name: Install Pyenv + run: | + cd "${RUNNER_TOOL_CACHE}" + git clone https://github.com/pyenv/pyenv + ( + cd pyenv + src/configure + make -C src + ) + export PYENV_ROOT="$PWD/pyenv" + echo "PYENV_ROOT=${PYENV_ROOT}" >> "${GITHUB_ENV}" + echo "${PYENV_ROOT}/bin" >> "${GITHUB_PATH}" + - name: Setup Python ${{ join(matrix.python-version, '.') }} + run: | + pyenv install ${{ join(matrix.python-version, '.') }} + echo "${PYENV_ROOT}/versions/${{ join(matrix.python-version, '.') }}/bin" >> "${GITHUB_PATH}" + - name: Setup Tox Python + uses: actions/setup-python@v7.0.0 with: - default: "${{ join(matrix.python-version, '.') }}" - command: pip install -U tox + python-version: 3.11 - name: Package ${{ needs.determine-tag.outputs.release-tag }} - run: tox -e package + run: | + python3.11 -V + python3.11 -mpip install -U pip + python3.11 -mpip install -U tox + python3.11 -mtox -e package - name: Upload Artifact uses: actions/upload-artifact@v4 with: @@ -102,11 +116,11 @@ jobs: python-version: [[3, 9], [3, 10], [3, 11], [3, 12], [3, 13], [3, 14], [3, 15]] steps: - name: Checkout p537 ${{ needs.determine-tag.outputs.release-tag }} - uses: actions/checkout@v5 + uses: actions/checkout@v7.0.1 with: ref: ${{ needs.determine-tag.outputs.release-tag }} - name: Setup Python ${{ join(matrix.python-version, '.') }} - uses: actions/setup-python@v6 + uses: actions/setup-python@v7.0.0 with: python-version: "${{ join(matrix.python-version, '.') }}" - name: Package ${{ needs.determine-tag.outputs.release-tag }} From 480c006a1a21f0692bfc397bc0064ceecdc05466 Mon Sep 17 00:00:00 2001 From: John Sirois Date: Mon, 19 Oct 2026 12:01:11 -0700 Subject: [PATCH 15/16] Try running tox under 3.9 insteal of 3.11. --- .github/workflows/ci.yml | 10 +++++----- .github/workflows/release.yml | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bf5d950..6cb168f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -70,13 +70,13 @@ jobs: - name: Setup Tox Python uses: actions/setup-python@v7.0.0 with: - python-version: 3.11 + python-version: 3.9 - name: Run Unit Tests run: | - python3.11 -V - python3.11 -mpip install -U pip - python3.11 -mpip install -U tox - python3.11 -mtox -e py${{ matrix.python-version[0] }}${{ matrix.python-version[1] }} -- -vvs + python3.9 -V + python3.9 -mpip install -U pip + python3.9 -mpip install -U tox + python3.9 -mtox -e py${{ matrix.python-version[0] }}${{ matrix.python-version[1] }} -- -vvs tests-39-315: name: (${{ matrix.os }}) Python 3.9 - 3.15 Tests needs: org-check diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c79268e..525e4a7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -93,13 +93,13 @@ jobs: - name: Setup Tox Python uses: actions/setup-python@v7.0.0 with: - python-version: 3.11 + python-version: 3.9 - name: Package ${{ needs.determine-tag.outputs.release-tag }} run: | - python3.11 -V - python3.11 -mpip install -U pip - python3.11 -mpip install -U tox - python3.11 -mtox -e package + python3.9 -V + python3.9 -mpip install -U pip + python3.9 -mpip install -U tox + python3.9 -mtox -e package - name: Upload Artifact uses: actions/upload-artifact@v4 with: From 753ffcd85d6621897d771da670b25c32bc7f91db Mon Sep 17 00:00:00 2001 From: John Sirois Date: Mon, 19 Oct 2026 12:07:19 -0700 Subject: [PATCH 16/16] Back to 3.11, constrain tox.ini instead. --- .github/workflows/ci.yml | 10 +++++----- .github/workflows/release.yml | 10 +++++----- tox.ini | 11 +++++++++-- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6cb168f..bf5d950 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -70,13 +70,13 @@ jobs: - name: Setup Tox Python uses: actions/setup-python@v7.0.0 with: - python-version: 3.9 + python-version: 3.11 - name: Run Unit Tests run: | - python3.9 -V - python3.9 -mpip install -U pip - python3.9 -mpip install -U tox - python3.9 -mtox -e py${{ matrix.python-version[0] }}${{ matrix.python-version[1] }} -- -vvs + python3.11 -V + python3.11 -mpip install -U pip + python3.11 -mpip install -U tox + python3.11 -mtox -e py${{ matrix.python-version[0] }}${{ matrix.python-version[1] }} -- -vvs tests-39-315: name: (${{ matrix.os }}) Python 3.9 - 3.15 Tests needs: org-check diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 525e4a7..c79268e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -93,13 +93,13 @@ jobs: - name: Setup Tox Python uses: actions/setup-python@v7.0.0 with: - python-version: 3.9 + python-version: 3.11 - name: Package ${{ needs.determine-tag.outputs.release-tag }} run: | - python3.9 -V - python3.9 -mpip install -U pip - python3.9 -mpip install -U tox - python3.9 -mtox -e package + python3.11 -V + python3.11 -mpip install -U pip + python3.11 -mpip install -U tox + python3.11 -mtox -e package - name: Upload Artifact uses: actions/upload-artifact@v4 with: diff --git a/tox.ini b/tox.ini index 0138691..a9f6afe 100644 --- a/tox.ini +++ b/tox.ini @@ -1,7 +1,8 @@ [tox] minversion = 3.26.0 isolated_build = true -skip_missing_interpreters = True +skip_missing_interpreters = true + envlist = py36 py37 @@ -16,8 +17,14 @@ envlist = py316 [testenv] +# We need newer Pip to operate under Python 3.14. +download = true + deps = - pytest + pytest==6.2.5; python_version == "3.6" + pytest==7.4.4; python_version == "3.7" + pytest==8.3.3; python_version >= "3.8" + commands = pytest -vs [testenv:package]