From 194abe55d934e4f1499b9cd007139f5a2e5608f6 Mon Sep 17 00:00:00 2001 From: JS Ng Date: Wed, 7 Oct 2026 12:49:11 +0800 Subject: [PATCH 1/2] Support bugfix-tier Python 3.14 in CI (allow-to-fail) Widen the Python range to >=3.11,<3.15 so the lock admits bugfix-tier 3.14 (unofficial 'eventually' support: CI-tested with failures allowed, never deployed to prod). Security tier 3.11-3.13 stays CI-required; the matrix gains 3.13 (declared but never tested before) and 3.14 (soft leg via continue-on-error). --- .github/workflows/python-tests.yml | 4 ++++ pyproject.toml | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/python-tests.yml b/.github/workflows/python-tests.yml index 25a75ea..2847410 100644 --- a/.github/workflows/python-tests.yml +++ b/.github/workflows/python-tests.yml @@ -8,12 +8,16 @@ on: jobs: test: runs-on: ubuntu-latest + # Bugfix-tier leg: 3.14 runs for signal but never blocks. + continue-on-error: ${{ matrix.python-version == '3.14' }} strategy: fail-fast: false matrix: python-version: - "3.11" - "3.12" + - "3.13" + - "3.14" steps: - name: Check out repository diff --git a/pyproject.toml b/pyproject.toml index d984935..5f6a992 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,11 @@ description = "Campus API for Python projects" authors = ["NYJC Computing "] [tool.poetry.dependencies] -python = ">=3.11,<3.14" +# Python support tiers (python.org release status): +# - security (3.11-3.13): officially supported; CI-required. +# - bugfix (3.14): unofficial ("not yet but eventually"); CI-tested with +# failures allowed; never deployed to prod. +python = ">=3.11,<3.15" flask = "^3.0.0" campus-suite = {git = "https://github.com/nyjc-computing/campus.git", branch = "weekly"} From f8fd17c053638a93c5f8eaaaaa73ef7a6ff2ae31 Mon Sep 17 00:00:00 2001 From: JS Ng Date: Wed, 7 Oct 2026 13:00:07 +0800 Subject: [PATCH 2/2] Relock against widened campus-suite weekly (<3.15) Campus weekly now declares >=3.11.0,<3.15 (bugfix-tier 3.14 admitted), so this lock can track it. Pinned versions preserved; campus-suite resolved to the widened weekly tip. Transitive campus-api-python briefly follows campus's interim pin (its widening branch) until the flip-back PR lands on weekly. --- poetry.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index ae1e41f..1d78d9c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -134,7 +134,7 @@ name = "campus-suite" version = "0.1.16" description = "Campus Suite - Complete education management platform deployment orchestrator and client library" optional = false -python-versions = ">=3.11.0,<3.14" +python-versions = ">=3.11.0,<3.15" groups = ["main"] files = [] develop = false @@ -142,7 +142,7 @@ develop = false [package.dependencies] bcrypt = "^5.0.0" boto3 = "^1.35.0" -campus-api-python = {git = "https://github.com/nyjc-computing/campus-api-python.git", branch = "main"} +campus-api-python = {git = "https://github.com/nyjc-computing/campus-api-python.git", branch = "py-support-policy"} flask = "^3.0.0" gunicorn = "^26.2.0" psycopg2-binary = "^2.9.0" @@ -154,7 +154,7 @@ werkzeug = "^3.0.0" type = "git" url = "https://github.com/nyjc-computing/campus.git" reference = "weekly" -resolved_reference = "a12f02328ea1fe27163ea79f4fd9ba8869eeb3f3" +resolved_reference = "3e76e0a42159810a7efb3094f790052d6f32edbd" [[package]] name = "certifi" @@ -909,5 +909,5 @@ watchdog = ["watchdog (>=2.3)"] [metadata] lock-version = "2.1" -python-versions = ">=3.11,<3.14" -content-hash = "727c9d78cd3424798b39a7cdc7ec11ab3b95ee9502f4db829db43fa65faae29b" +python-versions = ">=3.11,<3.15" +content-hash = "96efa4aa931d87d618c0f34681daf6ffba10a359baae98aa4de94666c9d132cd"