Repository navigation
[4.5.0] - 2026-10-12
Minor release. No breaking changes.
Added
- Python 3.15 support. Added the
Programming Language :: Python :: 3.15trove classifier and extended the CI test matrix (SQLite, DuckDB, Postgres, MySQL, siblings, release smoke) to Python 3.15. The minimum supported version remains 3.11. The classifier is also declared in thedjanorm-mypysibling package.
Changed
- Dependency floors raised for Python 3.15 wheels (users on 3.11–3.14 are unaffected — these are the first releases that publish
cp315/abi3wheels):djanorm[postgresql]:psycopg[binary,pool]>=3.3.6(was>=3.3.3;psycopg-binaryfirst ships acp315wheel at 3.3.6).djanorm[parquet]:pyarrow>=26.0(was>=14.0; first release withcp315wheels).djanorm[libsql]:pyturso>=0.6.0(was>=0.5.1; first release withcp315wheels; 0.7+ also shipsabi3).djanorm[image]anddjanorm[dev]:Pillow>=12.3.0(was>=12.2.0/>=10.0; first release withcp315manylinux wheels — without one, a 3.15 install falls back to an sdist build that needs system libjpeg headers).
- Lockfile refreshed to versions that ship
cp315manylinux wheels so a Python 3.15uv sync --extra=allinstalls binaries instead of compiling from source:numpy2.5.x,pydantic2.14 /pydantic-core2.50,msgspec0.22,markupsafe3.0.4,cffi2.1,pillow12.3. - Test suite isolation sped up ~2.4×. The autouse
clean_datafixture was still calling_recreate_schema(DROP + CREATE of all 6 base tables) on the common same-backend path, contradicting its own docstring and doubling work with the DELETE-based teardown. Schema is now created once per session byschema_managerand only rows are cleaned between tests. Full suite (SQLite + Postgres parametrisation): ~15.5 min → ~6.5 min locally; the SQLite-only CI leg drops from ~95 s to ~64 s.