Skip to content

pyproject declares python >=3.11,<3.15 but the lock installs on 3.11 only #295

Description

@Polichinel

pyproject.toml line 12 declares:

python = ">=3.11,<3.15"

That is not true. poetry.lock resolves and installs on cp311 only. A contributor arriving on 3.12 or 3.13 is told the project supports them, runs poetry install, and watches it fail while building a package they have never heard of.

Measured (2026-08-22, wheel availability checked directly against the index)

interpreter pyarrow 16.1.0 levenshtein 0.20.9
cp311 yes yes
cp312 yes no
cp313 no no

Two independent blockers:

Why it matters

CI runs 3.11 and the delivery's conda prefix is 3.11.15, so nothing in production or CI is affected. The cost is entirely at onboarding: the declaration is the first thing a new contributor reads and it points them at an interpreter the lock cannot serve. This repo's stated position is that things are declared rather than inferred (ADR-003) — a declared range wider than the one that works is the same defect in the other direction.

It also makes tests/test_locked_environment.py give wrong advice. That test prints "Run poetry install" as the remedy for drift, and its own design notes rule out reporting a remedy that cannot work. On 3.12+ it does exactly that. See C-104 in the risk register, updated with the same measurements.

Proposed fix

Narrow the declaration to what is true:

python = ">=3.11,<3.12"

and say why in a comment, pointing at ingester3's levenshtein cap as the binding constraint, so the next person to widen it knows what to check first.

Widening it again is not a pyproject edit — it needs ingester3 to lift the levenshtein cap, and (for 3.13) #174's three-repo fixture re-vendor to land first. Those are the two named triggers.

Not urgent: no production or CI impact. Cheap and it stops lying.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions