Ruff undefined-local-with-import-star-usage (F405)

undefined-local-with-import-star-usage в Ruff проверяет использование имён, которые могут быть неопределёнными, но также могут быть импортированы с использованием глобального импорта (*).

Почему это неправильно

Глобальный импорт (например, from module import *) затрудняет определение доступных символов в текущем пространстве имен. Если модуль содержит глобальный импорт, а имя в текущем пространстве имен не было явно определено или импортировано, становится неясно, является ли имя неопределённым или было импортировано.

Если имя определено через глобальный импорт, его следует импортировать явно, чтобы избежать путаницы.

Если имя не определено в глобальном импорте, его следует явно объявить или импортировать.

Пример ошибки

from math import *

def area(radius):
    return pi * radius**2

Как правильно

from math import pi

def area(radius):
    return pi * radius**2