Skip to content

Latest commit

 

History

History
24 lines (17 loc) · 1.47 KB

0002-python-support.md

File metadata and controls

24 lines (17 loc) · 1.47 KB

ADR-0002: Python Version Support

  • Status: Accepted
  • Date: 2026-08-02

Context

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.

Decision

  • 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.

Consequences

  • 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.