Fix include_bundles in extension static bundles and add type safety.

Review Request #13652 — Created March 20, 2024 and submitted

Information

Djblets
release-5.x

Reviewers

Several years ago, during a Django upgrade, we updated the extension
static media template tag code to correctly join strings together for
loading bundles, using format_html_join instead of naively joining
strings. This was commit 080996bf0.

Part of this involved yielding tuples in a generator, but we missed some
yields. When using include_bundles, we ended up yielding strings and
not tuples of strings, and this broke the process by which they were
joined.

This fixes that issue, and adds type safety throughout the template tag
code.

Unit tests have also been updated to cover include_bundles, so it
doesn't regress.

Unit tests and type checkers pass.

Summary ID
Fix include_bundles in extension static bundles and add type safety.
Several years ago, during a Django upgrade, we updated the extension static media template tag code to correctly join strings together for loading bundles, using `format_html_join` instead of naively joining strings. This was commit 080996bf0. Part of this involved yielding tuples in a generator, but we missed some yields. When using `include_bundles`, we ended up yielding strings and not tuples of strings, and this broke the process by which they were joined. This fixes that issue, and adds type safety throughout the template tag code. Unit tests have also been updated to cover `include_bundles`, so it doesn't regress.
46bbf38debcbb809f46cf576ec09ddd3682078bb
Description From Last Updated

We should start getting Iterator from collections.abc instead.

daviddavid
david
  1. 
      
  2. Show all issues

    We should start getting Iterator from collections.abc instead.

    1. Not until we move exclusively to 3.9+. collections.abc.Iterator[...] isn't valid in 3.8.

    2. It should be, at least as a type hint, assuming we have from __future__ import annotations.

  3. 
      
chipx86
Review request changed
Status:
Completed
Change Summary:
Pushed to release-5.x (a0666d6)