@@ -285,19 +285,20 @@ def _process_tag_classes(mod):
285
285
"url" : tag .url ,
286
286
}
287
287
288
+ register_all = False
288
289
for tag in mod .tags .override :
289
290
base_url = tag .base_url
290
- available_versions = {
291
- v : available_versions [ v ]
292
- for v in tag . available_python_versions
293
- }
294
- break
295
-
296
- register_all = False
297
- for tag in mod . tags . rules_python_private_testing :
298
- if tag .register_all_versions :
291
+ if tag . available_python_versions :
292
+ available_versions = {
293
+ v : available_versions [ v ]
294
+ for v in tag . available_python_versions
295
+ }
296
+
297
+ if tag . register_all_versions and mod . name != "rules_python" :
298
+ fail ( "This override can only be used by 'rules_python'" )
299
+ elif tag .register_all_versions :
299
300
register_all = True
300
- break
301
+ break
301
302
302
303
if register_all :
303
304
arg_structs .extend ([
@@ -409,14 +410,17 @@ _override = tag_class(
409
410
doc = """Tag class used to override defaults and behaviour of the module extension.""" ,
410
411
attrs = {
411
412
"available_python_versions" : attr .string_list (
412
- mandatory = True ,
413
+ mandatory = False ,
413
414
doc = "The list of available python tool versions to use. Must be in `X.Y.Z` format." ,
414
415
),
415
- "base_url" : attr .string_list (
416
+ "base_url" : attr .string (
416
417
mandatory = False ,
417
418
doc = "The base URL to be used when downloading toolchains." ,
418
419
default = DEFAULT_RELEASE_BASE_URL ,
419
420
),
421
+
422
+ # Internal attributes that are only usable from `rules_python`
423
+ "register_all_versions" : attr .bool (default = False ),
420
424
},
421
425
)
422
426
0 commit comments