@@ -21,10 +21,10 @@ load(":full_version.bzl", "full_version")
21
21
load (":python_register_toolchains.bzl" , "python_register_toolchains" )
22
22
load (":pythons_hub.bzl" , "hub_repo" )
23
23
load (":repo_utils.bzl" , "repo_utils" )
24
- load (":semver.bzl" , "semver" )
25
24
load (":text_util.bzl" , "render" )
26
25
load (":toolchains_repo.bzl" , "multi_toolchain_aliases" )
27
26
load (":util.bzl" , "IS_BAZEL_6_4_OR_HIGHER" )
27
+ load (":version.bzl" , "version" )
28
28
29
29
# This limit can be increased essentially arbitrarily, but doing so will cause a rebuild of all
30
30
# targets using any of these toolchains due to the changed repository name.
@@ -412,16 +412,16 @@ def _fail_multiple_default_toolchains(first, second):
412
412
second = second ,
413
413
))
414
414
415
- def _validate_version (* , version , _fail = fail ):
416
- parsed = semver ( version )
417
- if parsed .patch == None or parsed .build or parsed .pre_release :
418
- _fail ("The 'python_version' attribute needs to specify an 'X.Y.Z' semver-compatible version, got: '{}'" .format (version ))
415
+ def _validate_version (* , version_string , _fail = fail ):
416
+ parsed = version . parse ( version_string , strict = True )
417
+ if len ( parsed .release ) != 3 or parsed .pre or parsed .local or parsed . post :
418
+ _fail ("The 'python_version' attribute needs to specify an 'X.Y.Z' semver-compatible version, got: '{}'" .format (parsed . string ))
419
419
return False
420
420
421
421
return True
422
422
423
423
def _process_single_version_overrides (* , tag , _fail = fail , default ):
424
- if not _validate_version (version = tag .python_version , _fail = _fail ):
424
+ if not _validate_version (version_string = tag .python_version , _fail = _fail ):
425
425
return
426
426
427
427
available_versions = default ["tool_versions" ]
@@ -471,7 +471,7 @@ def _process_single_version_overrides(*, tag, _fail = fail, default):
471
471
kwargs .setdefault (tag .python_version , {})["distutils" ] = tag .distutils
472
472
473
473
def _process_single_version_platform_overrides (* , tag , _fail = fail , default ):
474
- if not _validate_version (version = tag .python_version , _fail = _fail ):
474
+ if not _validate_version (version_string = tag .python_version , _fail = _fail ):
475
475
return
476
476
477
477
available_versions = default ["tool_versions" ]
@@ -512,11 +512,11 @@ def _process_global_overrides(*, tag, default, _fail = fail):
512
512
513
513
if tag .minor_mapping :
514
514
for minor_version , full_version in tag .minor_mapping .items ():
515
- parsed = semver (minor_version )
516
- if parsed .patch != None or parsed .build or parsed .pre_release :
515
+ parsed = version . parse (minor_version , strict = True )
516
+ if len ( parsed .release ) != 2 or parsed .pre or parsed .local or parsed . post :
517
517
fail ("Expected the key to be of `X.Y` format but got `{}`" .format (minor_version ))
518
- parsed = semver (full_version )
519
- if parsed .patch == None :
518
+ parsed = version . parse (full_version , strict = True )
519
+ if len ( parsed .release ) != 3 or parsed . pre or parsed . local or parsed . post :
520
520
fail ("Expected the value to at least be of `X.Y.Z` format but got `{}`" .format (minor_version ))
521
521
522
522
default ["minor_mapping" ] = tag .minor_mapping
@@ -605,8 +605,8 @@ def _get_toolchain_config(*, modules, _fail = fail):
605
605
606
606
versions = {}
607
607
for version_string in available_versions :
608
- v = semver (version_string )
609
- versions .setdefault ("{}.{}" .format (v .major , v .minor ), []).append ((int ( v . patch ) , version_string ))
608
+ v = version . parse (version_string , strict = True )
609
+ versions .setdefault ("{}.{}" .format (v .release [ 0 ] , v .release [ 1 ] ), []).append ((v . release [ 2 ] , version_string ))
610
610
611
611
minor_mapping = {
612
612
major_minor : max (subset )[1 ]
0 commit comments