Django 3.2 has been released but bokeh.server.django is not compatible with it

I have just installed Django 3.2 and run Bokeh 2.3.0 and channels 2.4.0. With Django 3.1.8 things work. With Django 3.2 there is an error at startup (config check). The Django team added a test in …django/apps/ checking whether the app label is an identifier, and ‘bokeh.server.django’ fails that test. It looks like usual app labels do not have periods and so they are valid identifiers, example labels are:
bootstrap3, help_yms, home_page, utilities, accounts, projects, dashboard_1, pm_poll, django_markdown2, django_tables2, admin, auth, contenttypes, sessions, messages, staticfiles, django_extensions, django_filters, debug_toolbar, sliders, stepup, dashboard_yield, logs, channels
so ‘bokeh.server.django’ doesn’t fit the pattern.

The Django team added the identifier requirement for the following reason (see ticket):
So Bokeh would need to change the label to be an identifier and fix the resulting issues.
How is this being initiated? Thanks in advance.

At minimum this line:

needs to be split into two definitions:

name = 'bokeh.server.django'
label = 'bokeh_server_django'

If fact, we could drop label altogether, as it is inferred from name. However, that would give label == "django", which may potentially conflict in a thirdparty app.

Please submit a PR if you can.

I filed bug #11148 on Bokeh GitHub.

The 2-line fix:

name = 'bokeh.server.django'
label = 'bokeh_server_django'

works but in the users’ code, calls to django.apps.get_app_config(…) need to call the new label.


Maybe this should be mentioned in the release notes when this is fixed.