@@ -22,6 +22,7 @@ load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
2222load (
2323 "//python:versions.bzl" ,
2424 "DEFAULT_RELEASE_BASE_URL" ,
25+ "MINOR_MAPPING" ,
2526 "PLATFORMS" ,
2627 "TOOL_VERSIONS" ,
2728 "get_release_info" ,
@@ -583,6 +584,7 @@ def python_register_toolchains(
583584 register_coverage_tool = False ,
584585 set_python_version_constraint = False ,
585586 tool_versions = None ,
587+ minor_mapping = None ,
586588 ** kwargs ):
587589 """Convenience macro for users which does typical setup.
588590
@@ -607,6 +609,8 @@ def python_register_toolchains(
607609 tool_versions: {type}`dict` contains a mapping of version with SHASUM
608610 and platform info. If not supplied, the defaults in
609611 python/versions.bzl will be used.
612+ minor_mapping: {type}`dict[str, str]` contains a mapping from `X.Y` to `X.Y.Z`
613+ version.
610614 **kwargs: passed to each {obj}`python_repository` call.
611615 """
612616
@@ -616,8 +620,9 @@ def python_register_toolchains(
616620
617621 base_url = kwargs .pop ("base_url" , DEFAULT_RELEASE_BASE_URL )
618622 tool_versions = tool_versions or TOOL_VERSIONS
623+ minor_mapping = minor_mapping or MINOR_MAPPING
619624
620- python_version = full_version (python_version )
625+ python_version = full_version (version = python_version , minor_mapping = minor_mapping )
621626
622627 toolchain_repo_name = "{name}_toolchains" .format (name = name )
623628
@@ -716,6 +721,7 @@ def python_register_multi_toolchains(
716721 name ,
717722 python_versions ,
718723 default_version = None ,
724+ minor_mapping = None ,
719725 ** kwargs ):
720726 """Convenience macro for registering multiple Python toolchains.
721727
@@ -724,11 +730,15 @@ def python_register_multi_toolchains(
724730 python_versions: {type}`list[str]` the Python versions.
725731 default_version: {type}`str` the default Python version. If not set,
726732 the first version in python_versions is used.
733+ minor_mapping: {type}`dict[str, str]` mapping between `X.Y` to `X.Y.Z`
734+ format. Defaults to the value in `//python:versions.bzl`.
727735 **kwargs: passed to each {obj}`python_register_toolchains` call.
728736 """
729737 if len (python_versions ) == 0 :
730738 fail ("python_versions must not be empty" )
731739
740+ minor_mapping = minor_mapping or MINOR_MAPPING
741+
732742 if not default_version :
733743 default_version = python_versions .pop (0 )
734744 for python_version in python_versions :
@@ -742,12 +752,14 @@ def python_register_multi_toolchains(
742752 name = name + "_" + python_version .replace ("." , "_" ),
743753 python_version = python_version ,
744754 set_python_version_constraint = True ,
755+ minor_mapping = minor_mapping ,
745756 ** kwargs
746757 )
747758 python_register_toolchains (
748759 name = name + "_" + default_version .replace ("." , "_" ),
749760 python_version = default_version ,
750761 set_python_version_constraint = False ,
762+ minor_mapping = minor_mapping ,
751763 ** kwargs
752764 )
753765
@@ -757,4 +769,5 @@ def python_register_multi_toolchains(
757769 python_version : name + "_" + python_version .replace ("." , "_" )
758770 for python_version in (python_versions + [default_version ])
759771 },
772+ minor_mapping = minor_mapping ,
760773 )
0 commit comments