1# SPDX-FileCopyrightText: 2021 Espressif Systems (Shanghai) CO LTD 2# 3# SPDX-License-Identifier: Apache-2.0 4# 5# Script for checking the compatibility of the Python interpreter with ESP-IDF. 6# 7# There are related tools/detect_python.{sh,fish} scripts which are called earlier when the paths are not properly 8# set-up and they only intend to prefer the use of Python 3 over Python 2. Why not more? All possible executables 9# (python3.6, python3.7, ...) cannot be hardcoded there and at the end, the user is responsible to set-up a system 10# where "python" or "python3" of compatible version is available. 11 12import sys 13 14try: 15 # Python 2 is not supported anymore but still the old way of typing is used here in order to give a nice Python 16 # version failure and not a typing exception. 17 from typing import Iterable 18except ImportError: 19 pass 20 21OLDEST_PYTHON_SUPPORTED = (3, 6) # keep it as tuple for comparison with sys.version_info 22 23 24def _ver_to_str(it): # type: (Iterable) -> str 25 return '.'.join(str(x) for x in it) 26 27 28def is_supported(): # type: () -> bool 29 return sys.version_info[:2] >= OLDEST_PYTHON_SUPPORTED[:2] 30 31 32def check(): # type: () -> None 33 if not is_supported(): 34 raise RuntimeError('ESP-IDF supports Python {} or newer but you are using Python {}. Please upgrade your ' 35 'installation as described in the documentation.'.format(_ver_to_str(OLDEST_PYTHON_SUPPORTED), 36 _ver_to_str(sys.version_info[:3]))) 37