- Status: Accepted
- Date: 2026-08-02
UploadKit packages need a consistent CPython support range so Core, feature packages, testing utilities, and framework integrations can be tested and released together. Callers also need a clear floor for typing features such as dataclass(..., slots=True) and X | Y unions.
- Supported range: CPython 3.10 through 3.14 (declared as
requires-python = ">=3.10"). - Do not set an upper bound (
<3.15) unless CI proves a hard incompatibility. - Every package must declare classifiers for 3.10, 3.11, 3.12, 3.13, and 3.14.
- Every package must run CI on that matrix (pytest + coverage).
- Applies to Core, feature packages, testing, and all framework integrations (Django, FastAPI, Flask, and future adapters).
- Framework packages must also respect the host framework’s own Python matrix. Where the framework does not yet support a newer CPython (for example Django on 3.14), document the gap and allow that CI cell to continue-on-error until the framework catches up.
- New packages (including FastAPI and Flask when implemented) must copy the same
requires-python, classifiers, and CI matrix template.
- Packages may use Python 3.10 language features; they must not require 3.11+-only syntax without a backport.
- Local and CI verification on 3.10 is mandatory before claiming support.
- FastAPI/Flask repos inherit this policy when they grow beyond LICENSE-only scaffolds.