﻿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
33387	Separate between words in Django commands and methods	אורי	nobody	"I checked the list of [https://docs.djangoproject.com/en/4.0/ref/django-admin/ Django commands], and a long time ago I noticed that many of them contain two or even three words but they are not separated. For example `makemigrations`, `makemessages`, `changepassword` and `createsuperuser`. Although I found commands with separated words such as `remove_stale_contenttypes` (which I was not aware of until right now). I checked [https://www.python.org/dev/peps/pep-0008/#function-and-variable-names PEP 8] and there it is written:

> Function names should be lowercase, with words separated by underscores as necessary to improve readability.
>
> Variable names follow the same convention as function names.

I think Django commands should follow the same logic, and separate words by underscores (`make_migrations`, `make_messages`, `change_password`, `create_super_user`, `remove_stale_content_types`). I suggest that you add the new spelling while keeping the old spelling working, or maybe deprecate the old spelling but for at least 3 Django releases, so they will still work. But according to PEP 8 I think words should be separated by underscores.

This is also relevant to `TestCase` methods such as `setUp` and `tearDownClass`. Although there I assume Django inherits them from Python the language, and maybe the changes should be done also there.

By the way, I already defined a few such commands in Speedy Net since 2019:
https://github.com/speedy-net/speedy-net/tree/master/speedy/core/base/management/commands"	Cleanup/optimization	closed	Core (Management commands)	dev	Normal	wontfix			Unreviewed	0	0	0	0	0	0
