Problem
pyproject.toml contradicts itself and reality:
requires-python = ">=3.7" — Python 3.7 has been EOL since June 2023, and 3.8–3.11 are neither in CI nor in the classifiers, which list exactly 3.12 / 3.13 / 3.14.
- Floors
numpy>=1.17.0 (2019), numba>=0.49.0 (2020), scipy>=1.5.0 (2020) permit pip to build environments untested for years — while the code has moved on (util/compat.py exists for NumPy≥2 semantics; _dle.py carries a NumPy 2.4 workaround). The floors are also internally inconsistent with the classifiers: numba 0.49 cannot run on any Python version the classifiers name (the first numba supporting 3.12 is 0.59).
Net effect: pip install quantecon succeeds on configurations we do not support, and failure surfaces later as user bug reports. Wrong metadata is a shipped defect.
Proposed change
- Set
requires-python = ">=3.12" to match CI and classifiers (or extend CI first if broader support is intended — either way, make the three agree).
- Raise floors to the oldest combination actually exercised, e.g. the versions resolved by
environment.yml on the oldest supported Python.
- While in the file: decide
Development Status :: 4 - Beta (12+ years in; 5 - Production/Stable likely reflects reality) — one-line change, same edit.
- Add a release-checklist line: metadata review on every Python-version or floor change.
Acceptance criteria
From the July 2026 technical-debt audit (AI-assisted; claims verified against 28d4b3b on 2026-07-25).
Problem
pyproject.tomlcontradicts itself and reality:requires-python = ">=3.7"— Python 3.7 has been EOL since June 2023, and 3.8–3.11 are neither in CI nor in the classifiers, which list exactly 3.12 / 3.13 / 3.14.numpy>=1.17.0(2019),numba>=0.49.0(2020),scipy>=1.5.0(2020) permit pip to build environments untested for years — while the code has moved on (util/compat.pyexists for NumPy≥2 semantics;_dle.pycarries a NumPy 2.4 workaround). The floors are also internally inconsistent with the classifiers: numba 0.49 cannot run on any Python version the classifiers name (the first numba supporting 3.12 is 0.59).Net effect:
pip install quanteconsucceeds on configurations we do not support, and failure surfaces later as user bug reports. Wrong metadata is a shipped defect.Proposed change
requires-python = ">=3.12"to match CI and classifiers (or extend CI first if broader support is intended — either way, make the three agree).environment.ymlon the oldest supported Python.Development Status :: 4 - Beta(12+ years in;5 - Production/Stablelikely reflects reality) — one-line change, same edit.Acceptance criteria
requires-python, classifiers, and the CI matrix name the same version setpip installon a now-unsupported Python is refused by the resolver (users there keep resolving to older quantecon releases — the correct outcome)From the July 2026 technical-debt audit (AI-assisted; claims verified against
28d4b3bon 2026-07-25).