Ruff unused-import (F401)
unused-import в Ruff проверяет наличие неиспользуемых импортов.
Почему это неправильно
Неиспользуемые импорты создают лишнюю нагрузку на производительность во время выполнения и могут привести к возникновению циклических зависимостей. Они также усложняют чтение кода.
Если оператор import используется для проверки доступности модуля, вместо этого используйте importlib.util.find_spec.
Если импорт предназначен для реэкспорта символа в составе публичного API модуля, используйте "избыточное" алиасное имя, чтобы Ruff и другие инструменты не помечали его как неиспользуемый:
from module import member as member
Альтернативно, можно объявить символ как часть интерфейса модуля, используя __all__:
# __init__.py
import some_module
__all__ = ["some_module"]
Безопасность исправлений
Удаление неиспользуемых импортов безопасно, за исключением файлов __init__.py.
Применение исправлений в __init__.py пока находится в режиме предварительного просмотра. Тип предлагаемого исправления зависит от типа неиспользуемого импорта. Ruff предложит безопасное исправление для экспорта импортов первого уровня с помощью избыточного алиаса или добавления в __all__, если такая декларация уже есть в файле. Если в файле присутствует несколько объявлений __all__, исправление не будет предложено. Для сторонних и стандартных библиотек Ruff предложит небезопасное исправление в виде удаления импорта, поскольку это изменит интерфейс модуля.
Пример ошибки
import numpy as np # неиспользуемый импорт
def area(radius):
return 3.14 * radius**2
Как правильно
def area(radius):
return 3.14 * radius**2