From a28fccdd3750209788f8b76b537bb7b72d4728a3 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Wed, 8 Oct 2025 15:20:52 -0400 Subject: [PATCH 1/4] Add Python 3.14 support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add Python 3.14 to classifiers in setup.py - Add Python 3.14 to CI test matrix - Update dependency installation for Python 3.13+ to include 3.14 Fixes #399 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .github/workflows/pr.yaml | 8 ++++---- changelog_entry.yaml | 4 ++++ setup.py | 1 + 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 92f9fb735..33416ba9a 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -34,7 +34,7 @@ jobs: strategy: matrix: os: [ ubuntu-latest, windows-latest ] - python-version: [ "3.12", "3.13" ] + python-version: [ "3.12", "3.13", "3.14" ] fail-fast: false runs-on: ${{ matrix.os }} steps: @@ -67,7 +67,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, windows-latest] - python-version: ['3.10', '3.11', '3.12', '3.13'] + python-version: ['3.10', '3.11', '3.12', '3.13', '3.14'] steps: - name: Checkout repo uses: actions/checkout@v4 @@ -83,8 +83,8 @@ jobs: run: python -m pytest --version - name: Install -us package from PyPI run: | - if [[ "${{ matrix.python-version }}" == "3.13" ]]; then - # For Python 3.13, install newer tables first and ignore conflicts + if [[ "${{ matrix.python-version }}" == "3.13" || "${{ matrix.python-version }}" == "3.14" ]]; then + # For Python 3.13+, install newer tables first and ignore conflicts pip install "tables>=3.10.1" pip install policyengine-us --no-deps # Install remaining dependencies manually diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb..f1d50a6c0 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: minor + changes: + added: + - Support for Python 3.14 diff --git a/setup.py b/setup.py index 21c152562..59bbf7134 100644 --- a/setup.py +++ b/setup.py @@ -63,6 +63,7 @@ "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", "Topic :: Scientific/Engineering :: Information Analysis", ], description="Core microsimulation engine enabling country-specific policy models.", From 917d2666c600579d9822b9bc4b1d825c8c97d2d7 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Wed, 8 Oct 2025 15:35:19 -0400 Subject: [PATCH 2/4] Add .python-version for uv default --- .python-version | 1 + 1 file changed, 1 insertion(+) create mode 100644 .python-version diff --git a/.python-version b/.python-version new file mode 100644 index 000000000..3767b4b17 --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.14 \ No newline at end of file From e426667203417c9cf0c6a46f61426a065e6c33bd Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Wed, 8 Oct 2025 16:32:44 -0400 Subject: [PATCH 3/4] Drop Python 3.10 support (following SPEC 0 policy) --- .github/workflows/pr.yaml | 2 +- changelog_entry.yaml | 2 ++ setup.py | 3 +-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 33416ba9a..c2b4b90b6 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -67,7 +67,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, windows-latest] - python-version: ['3.10', '3.11', '3.12', '3.13', '3.14'] + python-version: ['3.11', '3.12', '3.13', '3.14'] steps: - name: Checkout repo uses: actions/checkout@v4 diff --git a/changelog_entry.yaml b/changelog_entry.yaml index f1d50a6c0..e6a81e5bc 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -2,3 +2,5 @@ changes: added: - Support for Python 3.14 + removed: + - Support for Python 3.10 (following SPEC 0 policy) diff --git a/setup.py b/setup.py index 59bbf7134..dfa0c8536 100644 --- a/setup.py +++ b/setup.py @@ -59,7 +59,6 @@ "License :: OSI Approved :: GNU Affero General Public License v3", "Operating System :: POSIX", "Programming Language :: Python", - "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", @@ -78,7 +77,7 @@ "policyengine-core=policyengine_core.scripts.policyengine_command:main", ], }, - python_requires=">=3.10", + python_requires=">=3.11", extras_require={ "dev": dev_requirements, # Note: For Python 3.13, policyengine-us requires special installation From 1b22170ead990042b8f718ff89232c32fa56beef Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Wed, 8 Oct 2025 19:17:58 -0400 Subject: [PATCH 4/4] Upgrade actions/checkout from @v3 to @v4 --- .github/workflows/pr.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index c2b4b90b6..8913cfd7a 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -39,7 +39,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Checkout repo - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Enable long paths in Git (Windows only) if: runner.os == 'Windows' run: git config --system core.longpaths true