Подтвердить что ты не робот

Инструмент для определения того, какая минимальная версия Python требуется?

Есть ли что-то похожее на Pylint, которое будет смотреть на Python script (или запустить его) и определить, какая версия Python требуется для каждой строки (или функции)?

Например, теоретическое использование:

$ magic_tool <EOF
with something:
    pass
EOF
1: 'with' statement requires Python 2.6 or greater

$ magic_tool <EOF
class Something:
    @classmethod
    def blah(cls):
        pass
EOF
2: classmethod requires Python 2.2 or greater
$ magic_tool <EOF
print """Test
"""
EOF
1: Triple-quote requires Python 1.5 of later

Возможно ли такое? Я предполагаю, что самым простым способом было бы иметь все версии Python на диске, запустить script с каждым из них и посмотреть, какие ошибки происходят.

4b9b3361

Ответ 1

Вдохновленный этим замечательным вопросом, я недавно собрал script, который пытается это сделать. Вы можете найти его на github в pyqver.

Это достаточно полно, но есть некоторые аспекты, которые еще не обработаны (как указано в файле README). Не стесняйтесь развивать и улучшать его!

Ответ 2

Не настоящий полезный ответ, но здесь все равно. Я думаю, что это должно быть выполнимо, чтобы сделать (хотя, вероятно, довольно упражнение), например, вы можете убедиться, что у вас есть все официальные грамматики для версий, которые вы хотите проверить, например этот.

Затем проанализируйте бит кода, начиная с первой версии грамматики. Затем вам понадобится аналогичная карта всех встроенных пространств имен модулей и снова проанализируйте код, начиная с самой ранней версии, хотя было бы сложно различать встроенные модули и модули, внешние или что-то среднее между ElementTree.

В результате должен быть обзор версий, поддерживающих синтаксис кода, а также обзор модулей и какая версия (если это вообще необходимо) для ее использования. С помощью этого результата вы можете рассчитать наилучшую самую низкую и самую высокую версию.