88
99from tox .config .loader .section import Section
1010from tox .config .loader .toml import TomlLoader
11- from tox .config .loader .toml ._product import expand_factor_group , extract_label
11+ from tox .config .loader .toml ._product import FactorGroup , expand_factor_group , extract_default , extract_label
1212from tox .config .types import MissingRequiredConfigKeyError
1313from tox .report import HandledError
1414
@@ -183,9 +183,9 @@ def _table_at(content: dict[str, TomlTypes], keys: tuple[str, ...]) -> dict[str,
183183 return content
184184
185185
186- def _build_env_base_map (env_base_content : dict [str , TomlTypes ]) -> tuple [dict [str , str ], dict [str , list [ str ] ]]:
186+ def _build_env_base_map (env_base_content : dict [str , TomlTypes ]) -> tuple [dict [str , str ], dict [str , FactorGroup ]]:
187187 result : dict [str , str ] = {}
188- all_labels : dict [str , list [ str ] ] = {}
188+ all_labels : dict [str , FactorGroup ] = {}
189189 for base_name , config in env_base_content .items ():
190190 if not isinstance (config , dict ):
191191 msg = f"env_base.{ base_name } must be a table"
@@ -202,9 +202,10 @@ def _build_env_base_map(env_base_content: dict[str, TomlTypes]) -> tuple[dict[st
202202 for idx , g in enumerate (factors_raw ):
203203 values = expand_factor_group (g )
204204 expanded .append (values )
205- all_labels [str (idx )] = values
205+ group = FactorGroup (values = values , default = extract_default (g , values ))
206+ all_labels [str (idx )] = group
206207 if (label := extract_label (g )) is not None :
207- all_labels [label ] = values
208+ all_labels [label ] = group
208209 names = ["-" .join (combo ) for combo in product (* expanded )]
209210 else :
210211 names = [str (f ) for f in factors_raw ]
@@ -213,20 +214,21 @@ def _build_env_base_map(env_base_content: dict[str, TomlTypes]) -> tuple[dict[st
213214 return result , all_labels
214215
215216
216- def _extract_env_list_labels (env_list_raw : TomlTypes ) -> dict [str , list [ str ] ]:
217+ def _extract_env_list_labels (env_list_raw : TomlTypes ) -> dict [str , FactorGroup ]:
217218 if not isinstance (env_list_raw , list ):
218219 return {}
219- labels : dict [str , list [ str ] ] = {}
220+ labels : dict [str , FactorGroup ] = {}
220221 for item in env_list_raw :
221222 if isinstance (item , dict ) and "product" in item :
222223 raw_groups = item ["product" ]
223224 if not isinstance (raw_groups , list ):
224225 continue
225226 for idx , g in enumerate (raw_groups ):
226227 values = expand_factor_group (g )
227- labels [str (idx )] = values
228+ group = FactorGroup (values = values , default = extract_default (g , values ))
229+ labels [str (idx )] = group
228230 if (label := extract_label (g )) is not None :
229- labels [label ] = values
231+ labels [label ] = group
230232 return labels
231233
232234
0 commit comments