Skip to content

FIX: Correct install metadata: requires-python, dependency floors, classifiers #869

Description

@mmcky

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

  1. 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).
  2. Raise floors to the oldest combination actually exercised, e.g. the versions resolved by environment.yml on the oldest supported Python.
  3. While in the file: decide Development Status :: 4 - Beta (12+ years in; 5 - Production/Stable likely reflects reality) — one-line change, same edit.
  4. Add a release-checklist line: metadata review on every Python-version or floor change.

Acceptance criteria

  • requires-python, classifiers, and the CI matrix name the same version set
  • pip install on a now-unsupported Python is refused by the resolver (users there keep resolving to older quantecon releases — the correct outcome)
  • Floors verified by at least one CI leg or a documented local run

From the July 2026 technical-debt audit (AI-assisted; claims verified against 28d4b3b on 2026-07-25).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions