Ruff camelcase-imported-as-constant (N814)
camelcase-imported-as-constant в Ruff проверяет случаи, когда идентификаторы в стиле CamelCase импортируются с алиасами, оформленными в виде имен констант (ALL_CAPS_SNAKE_CASE).
Почему это неправильно
PEP 8 рекомендует определенные соглашения о наименовании классов, функций, констант и других сущностей. Использование несоответствующих стилей именования между импортируемым объектом и его алиасом может ввести читателя в заблуждение, заставив ожидать, что импортируемый объект относится к другому типу. Например, можно перепутать класс с константой.
Алиасы импортов должны следовать тому же стилю именования, что и импортируемый элемент.
Пример ошибки
from example import MyClassName as MY_CLASS_NAME
Как правильно
from example import MyClassName
Особые случаи
PEP 8 допускает неоднозначность в случаях, когда идентификатор состоит из одной заглавной буквы. PEP 8 определяет, что классы должны именоваться в стиле CamelCase, а константы — в стиле ALL_CAPS_SNAKE_CASE. Однако для одиночного символа верхнего регистра невозможно надежно определить, к какому стилю он относится, так как оба варианта дадут одинаковый результат.
Поэтому это правило не применяется, если алиас для импортируемого идентификатора состоит из одной заглавной буквы.
Один из распространенных примеров — класс Q в Django:
from django.db.models import Q # Допустимо