From 64d0fd9ac2f9cbb263d99b1f9c77c66e13af8313 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Wed, 8 Oct 2025 15:20:52 -0400 Subject: [PATCH 1/5] 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 10af1d018..5ad86461b 100644 --- a/setup.py +++ b/setup.py @@ -65,6 +65,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 dc197d5f976af7742d28f7bcbfc3cb8ea84a3b05 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Wed, 8 Oct 2025 15:35:19 -0400 Subject: [PATCH 2/5] 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 be44fb06db81a1a2b3061b3aef06d79972271cc5 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Wed, 8 Oct 2025 16:32:44 -0400 Subject: [PATCH 3/5] 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 5ad86461b..b56b81721 100644 --- a/setup.py +++ b/setup.py @@ -61,7 +61,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", @@ -80,7 +79,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 57efcbaa3c72b277ba910a1bc7744c9c9976fd62 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Wed, 8 Oct 2025 19:17:58 -0400 Subject: [PATCH 4/5] 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 From 66ba0526174443ccea6babdadd973c5b6ea1e207 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Thu, 12 Feb 2026 21:55:52 -0800 Subject: [PATCH 5/5] Remove Python 3.14 (tables lacks wheels), keep 3.10 drop Python 3.14 can't be supported until the `tables` package ships 3.14 wheels. Keeping the 3.10 drop and actions upgrades. Co-Authored-By: Claude Opus 4.6 --- .github/workflows/pr.yaml | 8 ++++---- .python-version | 2 +- changelog_entry.yaml | 2 -- setup.py | 1 - 4 files changed, 5 insertions(+), 8 deletions(-) diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 8913cfd7a..cb8a029eb 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", "3.14" ] + python-version: [ "3.12", "3.13" ] 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.11', '3.12', '3.13', '3.14'] + python-version: ['3.11', '3.12', '3.13'] 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" || "${{ matrix.python-version }}" == "3.14" ]]; then - # For Python 3.13+, install newer tables first and ignore conflicts + if [[ "${{ matrix.python-version }}" == "3.13" ]]; 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/.python-version b/.python-version index 3767b4b17..24ee5b1be 100644 --- a/.python-version +++ b/.python-version @@ -1 +1 @@ -3.14 \ No newline at end of file +3.13 diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e6a81e5bc..817b3425d 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -1,6 +1,4 @@ - bump: minor 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 b56b81721..9abc0dfda 100644 --- a/setup.py +++ b/setup.py @@ -64,7 +64,6 @@ "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.",