﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
33196	AppConfig.label identifier enforcement unnecessarily complicates upgrades for some apps	Simon Weber	nobody	"[https://code.djangoproject.com/ticket/32285 #32285] introduced a new ImproperlyConfigured exception when an app label isn't a valid python identifier. This was intended to prevent confusion caused by periods in app labels.

But, this also prevents using app labels containing things like hyphens, which seem to still work fine when the check is removed. There's a few mentions online where this has caused surprises, such as for [https://github.com/FortAwesome/Font-Awesome/issues/17801 fontawesome] and [https://github.com/sehmaschine/django-grappelli/issues/957 django-greppelli]. I suspect this will get worse as we get closer to 3.1 support ending.

Notably, [https://docs.djangoproject.com/en/3.2/ref/applications/#django.apps.AppConfig.label the docs] say the label //should// be an identifier, not that it //must//. So, what do you think about changing the exception to something that can be overridden, like a warning or system check? This is still a strong signal to users about the source of potential problems, but also saves a lot of pain in cases like mine -- as it stands, I'd need to update thousands of previously-working references across project source, migrations, and databases.

I'd be happy to write the patch if we can agree on an approach."	Cleanup/optimization	closed	Core (Other)	3.2	Normal	wontfix		Simon Weber Carlton Gibson	Unreviewed	0	0	0	0	0	0
