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