@@ -89,8 +89,7 @@ def parse_modules(*, module_ctx, logger, _fail = fail):
8989 mod = mod ,
9090 seen_versions = seen_versions ,
9191 config = config ,
92- module_ctx = module_ctx ,
93- logger = logger ,
92+ default_python_version = default_python_version ,
9493 )
9594
9695 for toolchain_attr in toolchain_attr_structs :
@@ -962,25 +961,25 @@ def _create_defaults_attr_struct(*, tag):
962961 pyproject_toml = getattr (tag , "pyproject_toml" , None ),
963962 )
964963
965- def _create_toolchain_attr_structs (* , mod , config , seen_versions , module_ctx , logger ):
964+ def _create_toolchain_attr_structs (* , mod , config , seen_versions , default_python_version ):
966965 arg_structs = []
967966
968- # Check if pyproject_toml was specified in defaults
969- # If so, register a toolchain for it
970- for tag in mod . tags . defaults :
971- pyproject_toml = getattr ( tag , "pyproject_toml" , None )
972- if pyproject_toml :
973- pyproject_version = read_pyproject_version (
974- module_ctx ,
975- pyproject_toml ,
976- logger ,
977- )
978- if pyproject_version and pyproject_version not in seen_versions :
979- arg_structs .append (_create_toolchain_attrs_struct (
980- python_version = pyproject_version ,
981- toolchain_tag_count = 1 ,
982- ))
983- seen_versions [pyproject_version ] = True
967+ # Auto-register a toolchain for the default version if not already
968+ # registered via an explicit python. toolchain() call.
969+ # This works for any default source: pyproject_toml, python_version_file,
970+ # python_version_env, or python_version.
971+ has_explicit_toolchain = default_python_version and any ([
972+ tag . python_version == default_python_version
973+ for tag in mod . tags . toolchain
974+ ])
975+ if ( default_python_version and
976+ default_python_version not in seen_versions and
977+ mod . is_root and not has_explicit_toolchain ) :
978+ arg_structs .append (_create_toolchain_attrs_struct (
979+ python_version = default_python_version ,
980+ toolchain_tag_count = 1 ,
981+ ))
982+ seen_versions [default_python_version ] = True
984983
985984 for tag in mod .tags .toolchain :
986985 arg_structs .append (_create_toolchain_attrs_struct (
0 commit comments