1818DEFAULT_PLAYWRIGHT_VERSION = "1.44.0"
1919
2020
21+ @dataclasses .dataclass
22+ class VersionPair :
23+ pyodide_version : tuple [int , int ]
24+ python_version : str
25+
26+
27+ PYODIDE_TO_PYTHON_VERSION : list [VersionPair ] = [
28+ VersionPair (pyodide_version = (0 , 28 ), python_version = "3.13" ),
29+ VersionPair (pyodide_version = (0 , 25 ), python_version = "3.12" ),
30+ VersionPair (pyodide_version = (0 , 23 ), python_version = "3.11" ),
31+ ]
32+
33+
34+ def python_version_for_pyodide (pyodide_version : str ) -> str :
35+ pyodide_ver = tuple (int (x ) for x in pyodide_version .split ("." )[:2 ])
36+ for pair in PYODIDE_TO_PYTHON_VERSION :
37+ if pyodide_ver >= pair .pyodide_version :
38+ return pair .python_version
39+ return "3.10"
40+
41+
2142@dataclasses .dataclass
2243class TestConfig :
2344 pyodide_version : str
@@ -26,6 +47,7 @@ class TestConfig:
2647 browser : str
2748 browser_version : str = ""
2849 playwright_version : str = ""
50+ python_version : str = ""
2951
3052 @property
3153 def runtime (self ) -> str :
@@ -130,7 +152,13 @@ def build_configs(args: dict[str, list[str]]) -> list[TestConfig]:
130152 for _os , _pyodide_version , _runner , _browser in itertools .product (
131153 os , pyodide_version , runner , browser
132154 ):
133- config = TestConfig (_pyodide_version , _os , _runner , _browser )
155+ config = TestConfig (
156+ _pyodide_version ,
157+ _os ,
158+ _runner ,
159+ _browser ,
160+ python_version = python_version_for_pyodide (_pyodide_version ),
161+ )
134162
135163 if not is_valid_config (config ):
136164 continue
0 commit comments