This is a pre-release. djust 1.2.0 has shipped since.
Part of djust 1.2 — read the 1.2 release notes.
Changed
- Exhaustive template differential sweeps moved to nightly CI.
python/tests/test_differential_reachability_manifest_2345.pyandpython/tests/test_refusal_collapsed_agreement_2454.pyare now marked with@pytest.mark.nightlyand excluded from PR CI runs and pre-push hooks (-m "not nightly"), shaving ~8.6 minutes of serial test runtime off PRs and developer pushes while continuing to run in the daily scheduled CI workflow and viamake test-nightly. - Test suite runtime hotspots optimized.
TestV004LifecycleMethodsinpython/tests/test_checks.pynow batches its lifecycle method hook scan into a single pass rather than repeating 8 full liveview checks, reducing the class runtime from ~13s to ~1.5s.TestTitleExhaustiveinpython/tests/test_truncate_slugify_parity_2262.pynow uses 4096-codepoint batches with an identical-string fast path, cutting test runtime from ~78s to ~25s while asserting all 4.4M character probes against Django.
Fixed
start_asyncwork from a NOTIFY-released activity event now runs (#2946). An event queued for a hiddendj-activitypanel and released by adb_notifygoes through the WebSocket consumer's deferred-event dispatcher, which started background work only when the legacy_async_pendingfield was set.start_asyncqueues_async_tasks, so the callback was silently dropped. The dispatcher now starts queued work unconditionally, like the runtime's own dispatcher already did (#1887).djust.components: probing a name that does not exist —hasattr(djust.components, "Thing"), or anything that walks the public API — no longer recurses until the interpreter gives up. The lazy loader reached its subpackage withfrom . import components, which asks the import machinery for an attribute on the module doing the asking; until that submodule is bound the lookup came straight back into the loader, which asked again. Introduced in 1.2.0rc9; 1.2.0rc6 through rc8 are unaffected.