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.