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