Target a single Python version#
mibare requires Python 3.14 (requires-python = ">=3.14") and tests only 3.14. It is an application, not a library: users run it through uvx, pipx or mise’s pypi: backend, each of which provisions its own interpreter, so a wide supported range buys them nothing and costs a tox/CI matrix, a tomli backport and type-checker targets pinned to the oldest version. The importable core from ADR 0001 is an architectural seam for a future front end, not a promise to support other projects importing it on older interpreters. We rejected keeping 3.10+ for a hypothetical library audience, and rejected pinning ==3.14.*: the lower bound stays open so newer interpreters are not blocked, and a new version is added to the classifiers and CI matrix only once it is tested.
Consequences#
Classifiers list 3.14 and CPython only; PyPy is dropped because it has no 3.14 yet.
Code may use 3.14 features, and ruff, mypy, basedpyright, ty, pyrefly and prek all target 3.14.
copier-pyprojectassumes a multi-version matrix, so acopier updatemay try to restore the old versions; reject those hunks.Reopen this decision if mibare is published as a library with outside importers.