Compatibility
What Baldur v1.0 runs on, and what continuous integration verifies on every commit. Two facts matter for each dependency:
- Minimum — the lowest version Baldur declares it works against (the floor
pinned in
pyproject.toml). Anything at or above this is expected to work. - Tested in CI — the exact versions exercised on every commit. This is the proof, not just a claim. A minimum wider than the tested set means the floor is supported, but only the listed combinations are run end-to-end.
Runtime
| Component | Minimum | Tested in CI |
|---|---|---|
| Python | 3.11 | 3.11 · 3.12 · 3.13 |
Python is tested on the three current releases. There is no upper bound in the package metadata. Python 3.14 runs in CI as a non-blocking preview job — it collects a signal ahead of time and is not a supported version; it will be listed above once it is green and stays green.
Web frameworks
Baldur's core is framework-agnostic; the framework adapters are optional extras.
| Framework | Extra | Minimum | Tested in CI |
|---|---|---|---|
| Django | baldur-framework[django] |
4.2 | 4.2 LTS · 5.2 LTS · 6.0 |
| FastAPI | baldur-framework[fastapi] |
0.100 | latest ≥ floor (smoke) |
| Flask | baldur-framework[flask] |
2.3 | latest ≥ floor (smoke) |
Django is tested against the two current LTS releases plus the latest feature release. FastAPI and Flask run a quickstart smoke test (install the extra, start the app, hit a protected endpoint) against the latest release satisfying the floor.
Background tasks
| Component | Extra | Minimum | Tested in CI |
|---|---|---|---|
| Celery | baldur-framework[celery] |
5.3 | 5.4 |
Infrastructure (optional)
Baldur runs zero-config on an in-memory backend with no infrastructure. Redis is optional and only needed to share state across multiple workers.
| Component | Minimum | Tested in CI |
|---|---|---|
| Redis server | — | 7.x |
redis-py client |
4.0 | resolved from the extra |
| PostgreSQL server | — | 16.x |
psycopg2-binary client |
2.9 | resolved from the extra |
The distinction matters: Redis server 7.x is the data store Baldur's
integration suite runs against, while redis-py 4.0 is the floor for the
client library installed by baldur-framework[redis] (and by the celery,
arq, and rq extras). The same split applies to PostgreSQL: server 16.x
is what the integration suite provisions, and psycopg2-binary 2.9 is the
client floor installed by baldur-framework[postgres].
Test matrix shape
The Python × Django combinations are tested as a full grid — every pair the two projects both support is exercised on every commit:
| Python | Django 4.2 LTS | Django 5.2 LTS | Django 6.0 |
|---|---|---|---|
| 3.11 | ✅ | ✅ | — |
| 3.12 | ✅ | ✅ | ✅ |
| 3.13 | — | ✅ | ✅ |
The two blank cells are upstream limits rather than gaps in coverage: Django 6.0 requires Python 3.12 or newer, and Django 4.2 supports Python 3.12 at most. Every remaining combination is a real CI job, so a failure identifies which axis — the Python version or the Django version — carries the incompatibility.
Version support policy
Baldur follows a latest-minor support model: the current minor release line
receives patches, and the previous minor reaches end of life the day a new minor
ships. See SECURITY.md
for the full policy.
Not in this matrix
- Message-queue, orchestration, and cloud-provider adapters — these are not part of the v1.0 productized surface and are not covered by this matrix.