@@ -22,6 +22,7 @@ load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
22
22
load (
23
23
"//python:versions.bzl" ,
24
24
"DEFAULT_RELEASE_BASE_URL" ,
25
+ "MINOR_MAPPING" ,
25
26
"PLATFORMS" ,
26
27
"TOOL_VERSIONS" ,
27
28
"get_release_info" ,
@@ -583,6 +584,7 @@ def python_register_toolchains(
583
584
register_coverage_tool = False ,
584
585
set_python_version_constraint = False ,
585
586
tool_versions = None ,
587
+ minor_mapping = None ,
586
588
** kwargs ):
587
589
"""Convenience macro for users which does typical setup.
588
590
@@ -607,6 +609,8 @@ def python_register_toolchains(
607
609
tool_versions: {type}`dict` contains a mapping of version with SHASUM
608
610
and platform info. If not supplied, the defaults in
609
611
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.
610
614
**kwargs: passed to each {obj}`python_repository` call.
611
615
"""
612
616
@@ -616,8 +620,9 @@ def python_register_toolchains(
616
620
617
621
base_url = kwargs .pop ("base_url" , DEFAULT_RELEASE_BASE_URL )
618
622
tool_versions = tool_versions or TOOL_VERSIONS
623
+ minor_mapping = minor_mapping or MINOR_MAPPING
619
624
620
- python_version = full_version (python_version )
625
+ python_version = full_version (version = python_version , minor_mapping = minor_mapping )
621
626
622
627
toolchain_repo_name = "{name}_toolchains" .format (name = name )
623
628
@@ -716,6 +721,7 @@ def python_register_multi_toolchains(
716
721
name ,
717
722
python_versions ,
718
723
default_version = None ,
724
+ minor_mapping = None ,
719
725
** kwargs ):
720
726
"""Convenience macro for registering multiple Python toolchains.
721
727
@@ -724,11 +730,15 @@ def python_register_multi_toolchains(
724
730
python_versions: {type}`list[str]` the Python versions.
725
731
default_version: {type}`str` the default Python version. If not set,
726
732
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`.
727
735
**kwargs: passed to each {obj}`python_register_toolchains` call.
728
736
"""
729
737
if len (python_versions ) == 0 :
730
738
fail ("python_versions must not be empty" )
731
739
740
+ minor_mapping = minor_mapping or MINOR_MAPPING
741
+
732
742
if not default_version :
733
743
default_version = python_versions .pop (0 )
734
744
for python_version in python_versions :
@@ -742,12 +752,14 @@ def python_register_multi_toolchains(
742
752
name = name + "_" + python_version .replace ("." , "_" ),
743
753
python_version = python_version ,
744
754
set_python_version_constraint = True ,
755
+ minor_mapping = minor_mapping ,
745
756
** kwargs
746
757
)
747
758
python_register_toolchains (
748
759
name = name + "_" + default_version .replace ("." , "_" ),
749
760
python_version = default_version ,
750
761
set_python_version_constraint = False ,
762
+ minor_mapping = minor_mapping ,
751
763
** kwargs
752
764
)
753
765
@@ -757,4 +769,5 @@ def python_register_multi_toolchains(
757
769
python_version : name + "_" + python_version .replace ("." , "_" )
758
770
for python_version in (python_versions + [default_version ])
759
771
},
772
+ minor_mapping = minor_mapping ,
760
773
)
0 commit comments