11"""Utilities for working with Bazel modules""" 
22
3- def  _repo_name (label_or_name ):
4-     """Utility to provide Label compatibility with Bazel 5. 
5- 
6-     Under Bazel 5, calls `Label.workspace_name`. Otherwise calls 
7-     `Label.repo_name`. 
8- 
9-     Args: 
10-         label_or_name: a Label or repository name string 
11- 
12-     Returns: 
13-         The repository name returned directly from the Label API, or the 
14-             original string if not a Label 
15-     """ 
16-     if  hasattr (label_or_name , "repo_name" ):
17-         return  label_or_name .repo_name 
18- 
19-     return  getattr (label_or_name , "workspace_name" , label_or_name )
3+ _repo_attr  =  (
4+     "repo_name"  if  hasattr (Label ("//:all" ), "repo_name" ) else  "workspace_name" 
5+ )
206
217def  apparent_repo_name (label_or_name ):
228    """Return a repository's apparent repository name. 
@@ -30,7 +16,7 @@ def apparent_repo_name(label_or_name):
3016    Returns: 
3117        The apparent repository name 
3218    """ 
33-     repo_name  =  _repo_name ( label_or_name ).lstrip ("@" )
19+     repo_name  =  getattr ( label_or_name ,  _repo_attr ,  label_or_name ).lstrip ("@" )
3420    delimiter_indices  =  []
3521
3622    # Bazed on this pattern from the Bazel source: 
@@ -49,44 +35,3 @@ def apparent_repo_name(label_or_name):
4935        return  repo_name [:delimiter_indices [0 ]]
5036
5137    return  repo_name [delimiter_indices [- 1 ] +  1 :]
52- 
53- def  apparent_repo_label_string (label ):
54-     """Return a Label string starting with its apparent repo name. 
55- 
56-     Args: 
57-         label: a Label instance 
58- 
59-     Returns: 
60-         str(label) with its canonical repository name replaced with its apparent 
61-             repository name 
62-     """ 
63-     repo_name  =  _repo_name (label )
64-     if  len (repo_name ) ==  0 :
65-         return  str (label )
66- 
67-     label_str  =  "@"  +  str (label ).lstrip ("@" )
68-     return  label_str .replace (label .repo_name , apparent_repo_name (label ))
69- 
70- _IS_BZLMOD_ENABLED  =  str (Label ("//:all" )).startswith ("@@" )
71- 
72- _MAIN_REPO_PREFIX  =  "@@//"  if  _IS_BZLMOD_ENABLED  else  "@//" 
73- 
74- def  adjust_main_repo_prefix (target_pattern ):
75-     """Updates the main repo prefix to match the current Bazel version. 
76- 
77-     The main repo prefix will be "@//" for Bazel < 7.1.0, and "@@//" for Bazel 
78-     >= 7.1.0 under Bzlmod. This macro automatically updates strings representing 
79-     include/exclude target patterns so that they match actual main repository 
80-     target Labels correctly. 
81- 
82-     Args: 
83-         target_pattern: a string used to match a BUILD target pattern 
84- 
85-     Returns: 
86-         the string with any main repository prefix updated to match the current 
87-             Bazel version 
88-     """ 
89-     if  target_pattern .startswith ("@//" ) or  target_pattern .startswith ("@@//" ):
90-         return  _MAIN_REPO_PREFIX  +  target_pattern .lstrip ("@/" )
91- 
92-     return  target_pattern 
0 commit comments