@@ -431,32 +431,6 @@ def parse_modules(
431
431
Returns:
432
432
A struct with the following attributes:
433
433
"""
434
- defaults = {
435
- "platforms" : {},
436
- }
437
- for mod in module_ctx .modules :
438
- if not (mod .is_root or mod .name == "rules_python" ):
439
- continue
440
-
441
- for tag in mod .tags .default :
442
- _configure (
443
- defaults ,
444
- arch_name = tag .arch_name ,
445
- constraint_values = tag .constraint_values ,
446
- # The env_ values is only used if the `PIPSTAR` is enabled
447
- env_implementation_name = tag .env_implementation_name ,
448
- env_os_name = tag .env_os_name ,
449
- env_platform_machine = tag .env_platform_machine ,
450
- env_platform_release = tag .env_platform_release ,
451
- env_platform_system = tag .env_platform_system ,
452
- env_platform_version = tag .env_platform_version ,
453
- env_sys_platform = tag .env_sys_platform ,
454
- os_name = tag .os_name ,
455
- platform = tag .platform ,
456
- target_settings = tag .target_settings ,
457
- override = mod .is_root ,
458
- )
459
-
460
434
whl_mods = {}
461
435
for mod in module_ctx .modules :
462
436
for whl_mod in mod .tags .whl_mods :
@@ -488,6 +462,36 @@ You cannot use both the additive_build_content and additive_build_content_file a
488
462
srcs_exclude_glob = whl_mod .srcs_exclude_glob ,
489
463
)
490
464
465
+ defaults = {
466
+ "platforms" : {},
467
+ }
468
+ for mod in module_ctx .modules :
469
+ if not (mod .is_root or mod .name == "rules_python" ):
470
+ continue
471
+
472
+ for tag in mod .tags .default :
473
+ _configure (
474
+ defaults ,
475
+ arch_name = tag .arch_name ,
476
+ constraint_values = tag .constraint_values ,
477
+ # The env_ values is only used if the `PIPSTAR` is enabled
478
+ env_implementation_name = tag .env_implementation_name ,
479
+ env_os_name = tag .env_os_name ,
480
+ env_platform_machine = tag .env_platform_machine ,
481
+ env_platform_release = tag .env_platform_release ,
482
+ env_platform_system = tag .env_platform_system ,
483
+ env_platform_version = tag .env_platform_version ,
484
+ env_sys_platform = tag .env_sys_platform ,
485
+ os_name = tag .os_name ,
486
+ platform = tag .platform ,
487
+ target_settings = tag .target_settings ,
488
+ override = mod .is_root ,
489
+ # TODO @aignas 2025-05-19: add more attr groups:
490
+ # * for AUTH
491
+ # * for index config
492
+ )
493
+
494
+ # Merge override API with the builder?
491
495
_overriden_whl_set = {}
492
496
whl_overrides = {}
493
497
for module in module_ctx .modules :
@@ -597,6 +601,8 @@ You cannot use both the additive_build_content and additive_build_content_file a
597
601
elif pip_attr .experimental_index_url_overrides :
598
602
fail ("'experimental_index_url_overrides' is a no-op unless 'experimental_index_url' is set" )
599
603
604
+ # TODO @aignas 2025-05-19: superimpose the pip.parse on top of the defaults
605
+ # and then pass everything as pip_attr
600
606
out = _create_whl_repos (
601
607
module_ctx ,
602
608
pip_attr = pip_attr ,
@@ -754,6 +760,16 @@ def _pip_impl(module_ctx):
754
760
_default_attrs = {
755
761
"arch_name" : attr .string (),
756
762
"constraint_values" : attr .label_list (),
763
+ "os_name" : attr .string (),
764
+ "platform" : attr .string (),
765
+ # TODO @aignas 2025-05-19: use the following
766
+ "target_settings" : attr .label_list (
767
+ doc = """\
768
+ A list of config_settings that must be satisfied by the target configuration in order for this
769
+ platform to be matched during analysis phase.
770
+ """ ,
771
+ ),
772
+ } | {
757
773
# The values for PEP508 env marker evaluation during the lock file parsing
758
774
"env_implementation_name" : attr .string (),
759
775
"env_os_name" : attr .string (doc = "default will be inferred from {obj}`os_name`" ),
@@ -762,14 +778,22 @@ _default_attrs = {
762
778
"env_platform_system" : attr .string (doc = "default will be inferred from {obj}`os_name`" ),
763
779
"env_platform_version" : attr .string (),
764
780
"env_sys_platform" : attr .string (),
781
+ # TODO @aignas 2025-05-19: add wiring for the following
782
+ } | AUTH_ATTRS | {
783
+ # TODO @aignas 2025-05-19: add wiring for the following
765
784
"extra_index_urls" : attr .string_list (),
766
785
"index_url" : attr .string (),
767
- "os_name" : attr .string (),
768
- "platform" : attr .string (),
769
- "target_settings" : attr .label_list (
786
+ "index_url_overrides" : attr .string_dict (),
787
+ "simpleapi_skip" : attr .string_list (
770
788
doc = """\
771
- A list of config_settings that must be satisfied by the target configuration in order for this
772
- platform to be matched during analysis phase.
789
+ The list of packages to skip fetching metadata for from SimpleAPI index. You should
790
+ normally not need this attribute, but in case you do, please report this as a bug
791
+ to `rules_python` and use this attribute until the bug is fixed.
792
+
793
+ EXPERIMENTAL: this may be removed without notice.
794
+
795
+ :::{versionadded} 1.4.0
796
+ :::
773
797
""" ,
774
798
),
775
799
"whls_limit" : attr .int (default = - 1 ),
0 commit comments