Ruff sys-version-cmp-str10 (YTT302)
sys-version-cmp-str10 в Ruff проверяет сравнения, которые тестируют sys.version со строковыми литералами, что приведёт к неверным результатам, если номер основной версии будет увеличен до Python 10 или выше.
Почему это неправильно
Сравнение sys.version со строковым литералом может привести к ошибкам, так как сравнение производится лексикографически, а не семантически. Например, sys.version >= "3" вернёт False в Python 10, поскольку "10" лексикографически меньше, чем "3".
Вместо этого используйте sys.version_info для получения текущих номеров мажорной и минорной версий в виде кортежа, что позволяет корректно сравнивать с другими кортежами.
Пример ошибки
import sys
sys.version >= "3" # Эквивалентно False в Python 10.
Как правильно
import sys
sys.version_info >= (3,) # Эквивалентно True в Python 10.