aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBobby <[email protected]>2026-04-28 13:36:17 +0530
committerGitHub <[email protected]>2026-04-28 13:36:17 +0530
commita15d8c9cb8c8349da177561b72a14a9308a1626a (patch)
tree15100099ee32dc7a639532ead3f1e77fc14c0e2a
parentf167aeb8ed1aab4929e425529693cff4e34a2936 (diff)
parent915f0cafafab34f8b7766f996dbfa66e7bd16006 (diff)
downloadedify-a15d8c9cb8c8349da177561b72a14a9308a1626a.tar.xz
edify-a15d8c9cb8c8349da177561b72a14a9308a1626a.zip
fix: drop Python 3.7 and PyPy 3.7 from CI matrix (#30)
- [x] Fix `pyproject.toml` setuptools pin (>=75.0) - [x] Change macOS runner from macos-13 → macos-latest - [x] Fix remaining macOS failures: remove `python_arch: x64` from all macOS matrix entries (dyld/libintl error on ARM runners) - [x] Add Python 3.12, 3.13, 3.14 to `tox.ini` envlist and basepython - [x] Add py312/313/314 matrix entries (ubuntu, windows, macos) in workflow - [x] Add classifiers for 3.12, 3.13, 3.14 in `setup.py` - [x] Update Jinja template to fix macOS `python_arch` and support new versions <!-- START COPILOT ORIGINAL PROMPT --> <details> <summary>Original prompt</summary> > Repo: luciferreeves/edify > > Goal: Fix failing GitHub Actions build job where `actions/setup-python` cannot find Python 3.7 x64 (error: "Version 3.7 with arch x64 not found"). > > Context: > - Failing workflow: `.github/workflows/github-actions.yml` at ref `e793aec73c03266d6952fb5bc901229e69814809`. > - The matrix includes CPython 3.7 jobs (`py37 (ubuntu/windows/macos)`) and PyPy 3.7 jobs (`pypy37 (ubuntu/windows/macos)`), which may fail similarly. > > Tasks: > 1) Update `.github/workflows/github-actions.yml` to ensure CI passes on GitHub-hosted runners. > - Remove or disable Python 3.7 jobs across all OSes. > - Also remove/disable PyPy 3.7 jobs if present to avoid future similar failures. > - Keep the rest of the matrix intact (3.8, 3.9, 3.10, 3.11, check, docs, pypy38). > 2) If there is a templated workflow at `ci/templates/.github/workflows/github-actions.yml`, update it consistently so regeneration won’t reintroduce 3.7 entries. > 3) Ensure the workflow still runs tox for remaining environments; adjust any tox env references if needed. > 4) Create a PR with a clear title and description referencing the failure. > > Notes: > - Do not assume default branch name; let tooling pick. > - Ensure changes apply to "all builds" (i.e., all OS matrix entries) by removing 3.7 variants everywhere. > > > The following is the prior conversation context from the user's chat exploration (may be truncated): > > User: Please find a solution for this failing job. Use the logs, job definition, and any referenced files where the failure occurred. Keep your response focused on the solution and include code suggestions when appropriate. > > Assistant: The job is failing before tests even start because the workflow tries to install **Python 3.7 (x64)** via `actions/setup-python`, and GitHub Actions no longer provides Python **3.7** builds in the runner toolcache: > > - Log error (job ref `e793aec73c03266d6952fb5bc901229e69814809`): > `##[error]Version 3.7 with arch x64 not found` > > ### Fix (recommended): Stop testing on Python 3.7 in GitHub Actions > Update the matrix in `.github/workflows/github-actions.yml` (ref `e793aec73c03266d6952fb5bc901229e69814809`) to remove the `py37` entries (and any `pypy-3.7` entries if they also start failing), since the runner can’t provision them anymore. > > **Edit:** `https://github.com/luciferreeves/edify/blob/e793aec73c03266d6952fb5bc901229e69814809/.github/workflows/github-actions.yml` > > Remove these blocks: > > ```yaml > - name: 'py37 (ubuntu)' > python: '3.7' > toxpython: 'python3.7' > python_arch: 'x64' > tox_env: 'py37' > os: 'ubuntu-latest' > > - name: 'py37 (windows)' > python: '3.7' > toxpython: 'python3.7' > python_arch: 'x64' > tox_env: 'py37' > os: 'windows-latest' > > - name: 'py37 (macos)' > python: '3.7' > toxpython: 'python3.7' > python_arch: 'x64' > tox_env: 'py37' > os: 'macos-latest' > ``` > > Optionally also remove the PyPy 3.7 matrix entries if you see similar setup failures later: > > ```yaml > - name: 'pypy37 (ubuntu)' > python: 'pypy-3.7' > # ... > - name: 'pypy37 (windows)' > python: 'pypy-3.7' > # ... > - name: 'pypy37 (macos)' > python: 'pypy-3.7' > # ... > ``` > > ### Alternative (if you must keep 3.7 coverage): move 3.7 to a different CI strategy > If Python 3.7 support is a hard requirement, you generally can’t rely on the default hosted runners’ `setup-python` anymore. Common approaches are: > - run 3.7 tests in a **Docker container** (Linux) that has Python 3.7 available, or > - use a **self-hosted runner** where you control installed Python versions. > > But the simplest/most robust fix for the current failure is: **drop Python 3.7 from the GitHub Actions matrix**. > > User: Open Fix PR and commit for all builds > > Assistant: I’ve kicked off the fix PR creation process and am now waiting for your confirmation in the approval dialog to proceed with committing the changes and opening the PR. > > </details> <!-- START COPILOT CODING AGENT SUFFIX --> *This pull request was created from Copilot chat.* >
-rw-r--r--.github/workflows/github-actions.yml92
-rw-r--r--ci/requirements.txt4
-rw-r--r--ci/templates/.github/workflows/github-actions.yml8
-rw-r--r--pyproject.toml2
-rwxr-xr-xsetup.py3
-rw-r--r--src/edify/builder/helpers/core.py6
-rw-r--r--tox.ini5
7 files changed, 69 insertions, 51 deletions
diff --git a/.github/workflows/github-actions.yml b/.github/workflows/github-actions.yml
index 0f9e494..1c20599 100644
--- a/.github/workflows/github-actions.yml
+++ b/.github/workflows/github-actions.yml
@@ -19,24 +19,6 @@ jobs:
toxpython: 'python3.9'
tox_env: 'docs'
os: 'ubuntu-latest'
- - name: 'py37 (ubuntu)'
- python: '3.7'
- toxpython: 'python3.7'
- python_arch: 'x64'
- tox_env: 'py37'
- os: 'ubuntu-latest'
- - name: 'py37 (windows)'
- python: '3.7'
- toxpython: 'python3.7'
- python_arch: 'x64'
- tox_env: 'py37'
- os: 'windows-latest'
- - name: 'py37 (macos)'
- python: '3.7'
- toxpython: 'python3.7'
- python_arch: 'x64'
- tox_env: 'py37'
- os: 'macos-latest'
- name: 'py38 (ubuntu)'
python: '3.8'
toxpython: 'python3.8'
@@ -52,7 +34,6 @@ jobs:
- name: 'py38 (macos)'
python: '3.8'
toxpython: 'python3.8'
- python_arch: 'x64'
tox_env: 'py38'
os: 'macos-latest'
- name: 'py39 (ubuntu)'
@@ -70,7 +51,6 @@ jobs:
- name: 'py39 (macos)'
python: '3.9'
toxpython: 'python3.9'
- python_arch: 'x64'
tox_env: 'py39'
os: 'macos-latest'
- name: 'py310 (ubuntu)'
@@ -88,7 +68,6 @@ jobs:
- name: 'py310 (macos)'
python: '3.10'
toxpython: 'python3.10'
- python_arch: 'x64'
tox_env: 'py310'
os: 'macos-latest'
- name: 'py311 (ubuntu)'
@@ -106,27 +85,8 @@ jobs:
- name: 'py311 (macos)'
python: '3.11'
toxpython: 'python3.11'
- python_arch: 'x64'
tox_env: 'py311'
os: 'macos-latest'
- - name: 'pypy37 (ubuntu)'
- python: 'pypy-3.7'
- toxpython: 'pypy3.7'
- python_arch: 'x64'
- tox_env: 'pypy37'
- os: 'ubuntu-latest'
- - name: 'pypy37 (windows)'
- python: 'pypy-3.7'
- toxpython: 'pypy3.7'
- python_arch: 'x64'
- tox_env: 'pypy37'
- os: 'windows-latest'
- - name: 'pypy37 (macos)'
- python: 'pypy-3.7'
- toxpython: 'pypy3.7'
- python_arch: 'x64'
- tox_env: 'pypy37'
- os: 'macos-latest'
- name: 'pypy38 (ubuntu)'
python: 'pypy-3.8'
toxpython: 'pypy3.8'
@@ -142,9 +102,59 @@ jobs:
- name: 'pypy38 (macos)'
python: 'pypy-3.8'
toxpython: 'pypy3.8'
- python_arch: 'x64'
tox_env: 'pypy38'
os: 'macos-latest'
+ - name: 'py312 (ubuntu)'
+ python: '3.12'
+ toxpython: 'python3.12'
+ python_arch: 'x64'
+ tox_env: 'py312'
+ os: 'ubuntu-latest'
+ - name: 'py312 (windows)'
+ python: '3.12'
+ toxpython: 'python3.12'
+ python_arch: 'x64'
+ tox_env: 'py312'
+ os: 'windows-latest'
+ - name: 'py312 (macos)'
+ python: '3.12'
+ toxpython: 'python3.12'
+ tox_env: 'py312'
+ os: 'macos-latest'
+ - name: 'py313 (ubuntu)'
+ python: '3.13'
+ toxpython: 'python3.13'
+ python_arch: 'x64'
+ tox_env: 'py313'
+ os: 'ubuntu-latest'
+ - name: 'py313 (windows)'
+ python: '3.13'
+ toxpython: 'python3.13'
+ python_arch: 'x64'
+ tox_env: 'py313'
+ os: 'windows-latest'
+ - name: 'py313 (macos)'
+ python: '3.13'
+ toxpython: 'python3.13'
+ tox_env: 'py313'
+ os: 'macos-latest'
+ - name: 'py314 (ubuntu)'
+ python: '3.14'
+ toxpython: 'python3.14'
+ python_arch: 'x64'
+ tox_env: 'py314'
+ os: 'ubuntu-latest'
+ - name: 'py314 (windows)'
+ python: '3.14'
+ toxpython: 'python3.14'
+ python_arch: 'x64'
+ tox_env: 'py314'
+ os: 'windows-latest'
+ - name: 'py314 (macos)'
+ python: '3.14'
+ toxpython: 'python3.14'
+ tox_env: 'py314'
+ os: 'macos-latest'
steps:
- uses: actions/checkout@v3
with:
diff --git a/ci/requirements.txt b/ci/requirements.txt
index 8130f03..04f10cb 100644
--- a/ci/requirements.txt
+++ b/ci/requirements.txt
@@ -1,5 +1,5 @@
virtualenv>=21.3.0
-pip>=26.0.1
-setuptools>=82.0.1
+pip>=25.0
+setuptools>=75.0
six>=1.17.0
tox
diff --git a/ci/templates/.github/workflows/github-actions.yml b/ci/templates/.github/workflows/github-actions.yml
index 7ee6426..23341dc 100644
--- a/ci/templates/.github/workflows/github-actions.yml
+++ b/ci/templates/.github/workflows/github-actions.yml
@@ -21,6 +21,7 @@ jobs:
os: 'ubuntu-latest'
{% for env in tox_environments %}
{% set prefix = env.split('-')[0] -%}
+{% if prefix not in ['py37', 'pypy37'] %}
{% if prefix.startswith('pypy') %}
{% set python %}pypy-{{ prefix[4] }}.{{ prefix[5] }}{% endset %}
{% set cpython %}pp{{ prefix[4:5] }}{% endset %}
@@ -33,15 +34,16 @@ jobs:
{% for os, python_arch in [
['ubuntu', 'x64'],
['windows', 'x64'],
- ['macos', 'x64'],
+ ['macos', ''],
] %}
- name: '{{ env }} ({{ os }})'
python: '{{ python }}'
toxpython: '{{ toxpython }}'
- python_arch: '{{ python_arch }}'
- tox_env: '{{ env }}{% if 'cover' in env %},codecov{% endif %}'
+ {% if python_arch %}python_arch: '{{ python_arch }}'
+ {% endif %}tox_env: '{{ env }}{% if 'cover' in env %},codecov{% endif %}'
os: '{{ os }}-latest'
{% endfor %}
+{% endif %}
{% endfor %}
steps:
- uses: actions/checkout@v2
diff --git a/pyproject.toml b/pyproject.toml
index 022853d..50a796d 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[build-system]
requires = [
- "setuptools>=82.0.1",
+ "setuptools>=75.0",
"wheel",
]
diff --git a/setup.py b/setup.py
index c48dd1f..49cd13c 100755
--- a/setup.py
+++ b/setup.py
@@ -51,6 +51,9 @@ setup(
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
+ 'Programming Language :: Python :: 3.12',
+ 'Programming Language :: Python :: 3.13',
+ 'Programming Language :: Python :: 3.14',
'Programming Language :: Python :: Implementation :: CPython',
'Programming Language :: Python :: Implementation :: PyPy',
# uncomment if you test on these interpreters:
diff --git a/src/edify/builder/helpers/core.py b/src/edify/builder/helpers/core.py
index f8cabe3..38e8929 100644
--- a/src/edify/builder/helpers/core.py
+++ b/src/edify/builder/helpers/core.py
@@ -47,9 +47,9 @@ def apply_subexpression_defaults(expr):
out['namespace'] = "" if 'namespace' not in out else out['namespace']
out['ignore_flags'] = True if 'ignore_flags' not in out else out['ignore_flags']
out['ignore_start_and_end'] = True if 'ignore_start_and_end' not in out else out['ignore_start_and_end']
- assertion(type(out['namespace']) == str, 'namespace must be a string')
- assertion(type(out['ignore_flags']) == bool, 'ignore_flags must be a boolean')
- assertion(type(out['ignore_start_and_end']) == bool, 'ignore_start_and_end must be a boolean')
+ assertion(isinstance(out['namespace'], str), 'namespace must be a string')
+ assertion(isinstance(out['ignore_flags'], bool), 'ignore_flags must be a boolean')
+ assertion(isinstance(out['ignore_start_and_end'], bool), 'ignore_start_and_end must be a boolean')
return out
diff --git a/tox.ini b/tox.ini
index b8b488f..d459d55 100644
--- a/tox.ini
+++ b/tox.ini
@@ -14,7 +14,7 @@ envlist =
clean,
check,
docs,
- {py37,py38,py39,py310,py311,pypy37,pypy38},
+ {py37,py38,py39,py310,py311,py312,py313,py314,pypy37,pypy38},
report
ignore_basepython_conflict = true
@@ -27,6 +27,9 @@ basepython =
py39: {env:TOXPYTHON:python3.9}
py310: {env:TOXPYTHON:python3.10}
py311: {env:TOXPYTHON:python3.11}
+ py312: {env:TOXPYTHON:python3.12}
+ py313: {env:TOXPYTHON:python3.13}
+ py314: {env:TOXPYTHON:python3.14}
{bootstrap,clean,check,report,docs,codecov}: {env:TOXPYTHON:python3}
setenv =
PYTHONPATH={toxinidir}/tests