Skip to content

Commit 4bb9453

Browse files
LukaszMrugalanashif
authored andcommitted
scripts: twister: Python Version Guard
Twister shall now verify that the user does not use an obsolete Python version. If user's Python is deemed too old, it will raise a relevant error. This check will also happen when running Twister via west. Signed-off-by: Lukasz Mrugala <[email protected]>
1 parent 5c9b0a5 commit 4bb9453

File tree

3 files changed

+17
-2
lines changed

3 files changed

+17
-2
lines changed

scripts/pylib/twister/twisterlib/environment.py

+11
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,17 @@ def _get_installed_packages() -> Generator[str, None, None]:
5151
yield dist.metadata['Name']
5252

5353

54+
def python_version_guard():
55+
min_ver = (3, 10)
56+
if sys.version_info < min_ver:
57+
min_ver_str = '.'.join([str(v) for v in min_ver])
58+
cur_ver_line = f"{sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro}"
59+
print(f"Unsupported Python version {cur_ver_line}.")
60+
print(f"Currently, Twister requires at least Python {min_ver_str}.")
61+
print("Install a newer Python version and retry.")
62+
sys.exit(1)
63+
64+
5465
installed_packages: List[str] = list(_get_installed_packages())
5566
PYTEST_PLUGIN_INSTALLED = 'pytest-twister-harness' in installed_packages
5667

scripts/twister

+4-1
Original file line numberDiff line numberDiff line change
@@ -203,12 +203,15 @@ if not ZEPHYR_BASE:
203203
sys.path.insert(0, os.path.join(ZEPHYR_BASE, "scripts/pylib/twister/"))
204204
sys.path.insert(0, os.path.join(ZEPHYR_BASE, "scripts/pylib/build_helpers"))
205205

206-
from twisterlib.environment import add_parse_arguments, parse_arguments
206+
from twisterlib.environment import add_parse_arguments, parse_arguments, python_version_guard
207207
from twisterlib.twister_main import main
208208

209+
209210
if __name__ == "__main__":
210211
ret = 0
211212
try:
213+
python_version_guard()
214+
212215
parser = add_parse_arguments()
213216
options = parse_arguments(parser, sys.argv[1:])
214217
default_options = parse_arguments(parser, [], on_init=False)

scripts/west_commands/twister_cmd.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
sys.path.insert(0, str(twister_path))
1919
sys.path.insert(0, str(twister_path / "pylib" / "twister"))
2020

21-
from twisterlib.environment import add_parse_arguments, parse_arguments
21+
from twisterlib.environment import add_parse_arguments, parse_arguments, python_version_guard
2222
from twisterlib.twister_main import main
2323

2424
TWISTER_DESCRIPTION = """\
@@ -37,6 +37,7 @@ def __init__(self):
3737
TWISTER_DESCRIPTION,
3838
accepts_unknown_args=True,
3939
)
40+
python_version_guard()
4041

4142
def do_add_parser(self, parser_adder):
4243
parser = parser_adder.add_parser(

0 commit comments

Comments
 (0)