Release v1.1.0
What's Changed
- style(optimizer): ruff format + lint cleanup (CI quality gate) (73789d2)
- refactor(optimizer): narrow hook child-model resolution excepts to (FieldDoesNotExist, AttributeError) (7d3dde4)
- feat(optimizer): per-field optimize_ hook for nested lists (Phase E) (518c4d0)
- style(optimizer): ruff format + lint cleanup (CI quality gate) (0467b64)
- test(optimizer): cover .only() narrowing on a mixed annotated prefetch child (Phase D W1) (0c09f54)
- feat(optimizer): compose AnnotatedField with window-sliced prefetch (Phase D D2) (c6fdc70)
- style(optimizer): ruff format + lint cleanup (CI quality gate) (c9074d1)
- feat(optimizer): AnnotatedField — GraphQL-selection-driven DB annotations (Phase D D1) (7d7c8c5)
- fix(optimizer): filter-aware totalCount for windowed nested lists + close Phase C coverage gaps (27453a6)
- feat(optimizer): activate window-slice nested pagination (Phase C C3) (5171a29)
- feat(optimizer): build_window_prefetch + walker descent, dormant (Phase C C2) (42dedc8)
- style(optimizer): ruff format + lint cleanup (CI quality gate) (dc26d41)
- feat(optimizer): window-slice paginator hook + OPTIMIZE_NESTED_PAGINATION (Phase C C1) (e604b89)
- style(optimizer): ruff format + lint cleanup (CI quality gate) (20b2d8f)
- test(optimizer): drop dead Phase B red-first import guard (a8c0468)
- fix(optimizer): drop prefetch-crossing select_related; add Phase B e2e suite (PR2) (2990fcb)
- style(optimizer): ruff format + lint cleanup (CI quality gate) (108ba5d)
- feat(optimizer): narrow prefetch querysets with .only() (Phase B PR1) (fdd7fde)
- build: sync uv.lock with Django >=4.2 / version 1.1.0 (a37f878)
- feat(optimizer): add OPTIMIZER_SAFE_MODE and optimize GenericForeignKey prefetch (2628eae)
- build!: require Django >=4.2 (drop EOL 4.0/4.1) (81347d2)
- refactor: inline _compat and _graphene_settings into domain modules (983e42d)
- refactor(api)!: drop the Extra prefix from public class names (8f1c081)
- test: mark Test* schema fixtures with test = False (b281da4)
- docs(example): demonstrate nested writes and enable MAX_QUERY_DEPTH (cd93303)
- docs: name graphene-django and graphene-django-extras in migration callout (ad456d6)
- feat: default DEFAULT_PAGINATION_CLASS to LimitOffsetGraphqlPagination (88eada7)
- docs: render :material-*: icons via pymdownx.emoji instead of plain emoji (965f0dd)
- build: drop direct graphql-relay dependency (transitive via graphene) (1283c6e)
- fix: correct over-strict time-ago assertion and drop unused example imports (2946f3a)
- docs: fix material-icon shortcodes, correct naming, add cost-analysis section (66b8a6a)
- docs(example): showcase all features in playground and rewrite its README (ffc77fb)
- test: strengthen weak assertions and fix misleading tests (00017e9)
- refactor: remove dead code and fix stale comments/docstring (387c58a)
- docs: add issue forms (bug/feature) and route docs link to template chooser (ff05d43)
- docs: switch downloads badge to pepy datasource (f65ca43)
- fix(ci): let pytest-cov produce coverage.xml instead of coverage run (7d4b5e2)
- ci: pass CODECOV_TOKEN to codecov upload (ae6868d)
Installation
pip install django-graphex==1.1.0Full Changelog: v1.0.0...v1.1.0
What's Changed
- Phase A foundations + Phase B PR1: prefetch .only() narrowing by @eamigo86 in #1
- Phase B PR2: drop prefetch-crossing select_related + e2e suite by @eamigo86 in #9
- Phase C C1: window-slice paginator hook + OPTIMIZE_NESTED_PAGINATION by @eamigo86 in #3
- Phase C C2: build_window_prefetch + walker descent (dormant) by @eamigo86 in #4
- Phase C C3: activate window-slice nested pagination + filter-aware totalCount by @eamigo86 in #5
- Phase D D1: AnnotatedField — GraphQL-selection-driven DB annotations by @eamigo86 in #6
- Phase D D2: compose AnnotatedField with window-sliced prefetch by @eamigo86 in #7
- Phase E: per-field optimize_ hook for nested lists by @eamigo86 in #8
Full Changelog: v1.0.0...v1.1.0