@@ -40,16 +40,19 @@ simple==0.0.1 \
40
40
41
41
def hub_builder (
42
42
env ,
43
+ enable_pipstar = False ,
43
44
debug = False ,
44
45
config = None ,
45
46
minor_mapping = {},
47
+ evaluate_markers_fn = None ,
46
48
simpleapi_download_fn = None ,
47
49
available_interpreters = {}):
48
50
builder = _hub_builder (
49
51
name = "pypi" ,
50
52
module_name = "unit_test" ,
51
53
config = config or struct (
52
54
# no need to evaluate the markers with the interpreter
55
+ enable_pipstar = enable_pipstar ,
53
56
platforms = {
54
57
"{}_{}{}" .format (os , cpu , freethreaded ): _plat (
55
58
name = "{}_{}{}" .format (os , cpu , freethreaded ),
@@ -73,13 +76,13 @@ def hub_builder(
73
76
netrc = None ,
74
77
auth_patterns = None ,
75
78
),
76
- evaluate_markers_fn = None ,
77
79
whl_overrides = {},
78
80
minor_mapping = minor_mapping or {"3.15" : "3.15.19" },
79
81
available_interpreters = available_interpreters or {
80
82
"python_3_15_host" : "unit_test_interpreter_target" ,
81
83
},
82
84
simpleapi_download_fn = simpleapi_download_fn or (lambda * a , ** k : {}),
85
+ evaluate_markers_fn = evaluate_markers_fn ,
83
86
logger = repo_utils .logger (
84
87
struct (
85
88
os = struct (
@@ -300,6 +303,14 @@ _tests.append(_test_simple_multiple_python_versions)
300
303
def _test_simple_with_markers (env ):
301
304
builder = hub_builder (
302
305
env ,
306
+ evaluate_markers_fn = lambda _ , requirements , ** __ : {
307
+ key : [
308
+ platform
309
+ for platform in platforms
310
+ if ("x86_64" in platform and "platform_machine ==" in key ) or ("x86_64" not in platform and "platform_machine !=" in key )
311
+ ]
312
+ for key , platforms in requirements .items ()
313
+ },
303
314
)
304
315
builder .pip_parse (
305
316
_mock_mctx (
@@ -394,6 +405,7 @@ def _test_torch_experimental_index_url(env):
394
405
env ,
395
406
config = struct (
396
407
netrc = None ,
408
+ enable_pipstar = False ,
397
409
auth_patterns = {},
398
410
platforms = {
399
411
"{}_{}" .format (os , cpu ): _plat (
@@ -419,6 +431,15 @@ def _test_torch_experimental_index_url(env):
419
431
"python_3_12_host" : "unit_test_interpreter_target" ,
420
432
},
421
433
minor_mapping = {"3.12" : "3.12.19" },
434
+ evaluate_markers_fn = lambda _ , requirements , ** __ : {
435
+ # todo once 2692 is merged, this is going to be easier to test.
436
+ key : [
437
+ platform
438
+ for platform in platforms
439
+ if ("x86_64" in platform and "platform_machine ==" in key ) or ("x86_64" not in platform and "platform_machine !=" in key )
440
+ ]
441
+ for key , platforms in requirements .items ()
442
+ },
422
443
simpleapi_download_fn = mocksimpleapi_download ,
423
444
)
424
445
builder .pip_parse (
@@ -495,6 +516,7 @@ torch==2.4.1+cpu ; platform_machine == 'x86_64' \
495
516
pypi .whl_libraries ().contains_exactly ({
496
517
"pypi_312_torch_cp312_cp312_linux_x86_64_8800deef" : {
497
518
"dep_template" : "@pypi//{name}:{target}" ,
519
+ "experimental_target_platforms" : ["linux_x86_64" ],
498
520
"filename" : "torch-2.4.1+cpu-cp312-cp312-linux_x86_64.whl" ,
499
521
"python_interpreter_target" : "unit_test_interpreter_target" ,
500
522
"requirement" : "torch==2.4.1+cpu" ,
@@ -503,6 +525,7 @@ torch==2.4.1+cpu ; platform_machine == 'x86_64' \
503
525
},
504
526
"pypi_312_torch_cp312_cp312_manylinux_2_17_aarch64_36109432" : {
505
527
"dep_template" : "@pypi//{name}:{target}" ,
528
+ "experimental_target_platforms" : ["linux_aarch64" ],
506
529
"filename" : "torch-2.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" ,
507
530
"python_interpreter_target" : "unit_test_interpreter_target" ,
508
531
"requirement" : "torch==2.4.1" ,
@@ -511,6 +534,7 @@ torch==2.4.1+cpu ; platform_machine == 'x86_64' \
511
534
},
512
535
"pypi_312_torch_cp312_cp312_win_amd64_3a570e5c" : {
513
536
"dep_template" : "@pypi//{name}:{target}" ,
537
+ "experimental_target_platforms" : ["windows_x86_64" ],
514
538
"filename" : "torch-2.4.1+cpu-cp312-cp312-win_amd64.whl" ,
515
539
"python_interpreter_target" : "unit_test_interpreter_target" ,
516
540
"requirement" : "torch==2.4.1+cpu" ,
@@ -519,6 +543,7 @@ torch==2.4.1+cpu ; platform_machine == 'x86_64' \
519
543
},
520
544
"pypi_312_torch_cp312_none_macosx_11_0_arm64_72b484d5" : {
521
545
"dep_template" : "@pypi//{name}:{target}" ,
546
+ "experimental_target_platforms" : ["osx_aarch64" ],
522
547
"filename" : "torch-2.4.1-cp312-none-macosx_11_0_arm64.whl" ,
523
548
"python_interpreter_target" : "unit_test_interpreter_target" ,
524
549
"requirement" : "torch==2.4.1" ,
@@ -596,6 +621,8 @@ simple==0.0.3 \
596
621
"pypi_315_extra" : {
597
622
"dep_template" : "@pypi//{name}:{target}" ,
598
623
"download_only" : True ,
624
+ # TODO @aignas 2025-04-20: ensure that this is in the hub repo
625
+ # "experimental_target_platforms": ["cp315_linux_x86_64"],
599
626
"extra_pip_args" : ["--platform=manylinux_2_17_x86_64" , "--python-version=315" , "--implementation=cp" , "--abi=cp315" ],
600
627
"python_interpreter_target" : "unit_test_interpreter_target" ,
601
628
"requirement" : "extra==0.0.1 --hash=sha256:deadb00f" ,
@@ -794,6 +821,12 @@ git_dep @ git+https://git.server/repo/project@deadbeefdeadbeef
794
821
pypi .whl_libraries ().contains_exactly ({
795
822
"pypi_315_any_name" : {
796
823
"dep_template" : "@pypi//{name}:{target}" ,
824
+ "experimental_target_platforms" : [
825
+ "linux_aarch64" ,
826
+ "linux_x86_64" ,
827
+ "osx_aarch64" ,
828
+ "windows_aarch64" ,
829
+ ],
797
830
"extra_pip_args" : ["--extra-args-for-sdist-building" ],
798
831
"filename" : "any-name.tar.gz" ,
799
832
"python_interpreter_target" : "unit_test_interpreter_target" ,
@@ -803,6 +836,12 @@ git_dep @ git+https://git.server/repo/project@deadbeefdeadbeef
803
836
},
804
837
"pypi_315_direct_without_sha_0_0_1_py3_none_any" : {
805
838
"dep_template" : "@pypi//{name}:{target}" ,
839
+ "experimental_target_platforms" : [
840
+ "linux_aarch64" ,
841
+ "linux_x86_64" ,
842
+ "osx_aarch64" ,
843
+ "windows_aarch64" ,
844
+ ],
806
845
"filename" : "direct_without_sha-0.0.1-py3-none-any.whl" ,
807
846
"python_interpreter_target" : "unit_test_interpreter_target" ,
808
847
"requirement" : "direct_without_sha==0.0.1" ,
@@ -823,6 +862,12 @@ git_dep @ git+https://git.server/repo/project@deadbeefdeadbeef
823
862
},
824
863
"pypi_315_simple_py3_none_any_deadb00f" : {
825
864
"dep_template" : "@pypi//{name}:{target}" ,
865
+ "experimental_target_platforms" : [
866
+ "linux_aarch64" ,
867
+ "linux_x86_64" ,
868
+ "osx_aarch64" ,
869
+ "windows_aarch64" ,
870
+ ],
826
871
"filename" : "simple-0.0.1-py3-none-any.whl" ,
827
872
"python_interpreter_target" : "unit_test_interpreter_target" ,
828
873
"requirement" : "simple==0.0.1" ,
@@ -831,6 +876,12 @@ git_dep @ git+https://git.server/repo/project@deadbeefdeadbeef
831
876
},
832
877
"pypi_315_some_pkg_py3_none_any_deadbaaf" : {
833
878
"dep_template" : "@pypi//{name}:{target}" ,
879
+ "experimental_target_platforms" : [
880
+ "linux_aarch64" ,
881
+ "linux_x86_64" ,
882
+ "osx_aarch64" ,
883
+ "windows_aarch64" ,
884
+ ],
834
885
"filename" : "some_pkg-0.0.1-py3-none-any.whl" ,
835
886
"python_interpreter_target" : "unit_test_interpreter_target" ,
836
887
"requirement" : "some_pkg==0.0.1" ,
@@ -839,6 +890,12 @@ git_dep @ git+https://git.server/repo/project@deadbeefdeadbeef
839
890
},
840
891
"pypi_315_some_py3_none_any_deadb33f" : {
841
892
"dep_template" : "@pypi//{name}:{target}" ,
893
+ "experimental_target_platforms" : [
894
+ "linux_aarch64" ,
895
+ "linux_x86_64" ,
896
+ "osx_aarch64" ,
897
+ "windows_aarch64" ,
898
+ ],
842
899
"filename" : "some-other-pkg-0.0.1-py3-none-any.whl" ,
843
900
"python_interpreter_target" : "unit_test_interpreter_target" ,
844
901
"requirement" : "some_other_pkg==0.0.1" ,
@@ -868,6 +925,14 @@ _tests.append(_test_simple_get_index)
868
925
def _test_optimum_sys_platform_extra (env ):
869
926
builder = hub_builder (
870
927
env ,
928
+ evaluate_markers_fn = lambda _ , requirements , ** __ : {
929
+ key : [
930
+ platform
931
+ for platform in platforms
932
+ if ("darwin" in key and "osx" in platform ) or ("linux" in key and "linux" in platform )
933
+ ]
934
+ for key , platforms in requirements .items ()
935
+ },
871
936
)
872
937
builder .pip_parse (
873
938
_mock_mctx (
@@ -881,14 +946,13 @@ optimum[onnxruntime-gpu]==1.17.1 ; sys_platform == 'linux'
881
946
_parse (
882
947
hub_name = "pypi" ,
883
948
python_version = "3.15" ,
884
- requirements_by_platform = {
885
- "universal.txt" : "linux_*,osx_*" ,
886
- },
949
+ requirements_lock = "universal.txt" ,
887
950
),
888
951
)
889
952
pypi = builder .build ()
890
953
891
- pypi .exposed_packages ().contains_exactly (["optimum" ])
954
+ # FIXME @aignas 2025-09-07: we should expose the `optimum` package
955
+ pypi .exposed_packages ().contains_exactly ([])
892
956
pypi .group_map ().contains_exactly ({})
893
957
pypi .whl_map ().contains_exactly ({
894
958
"optimum" : {
@@ -931,7 +995,9 @@ _tests.append(_test_optimum_sys_platform_extra)
931
995
def _test_pipstar_platforms (env ):
932
996
builder = hub_builder (
933
997
env ,
998
+ enable_pipstar = True ,
934
999
config = struct (
1000
+ enable_pipstar = True ,
935
1001
netrc = None ,
936
1002
auth_patterns = {},
937
1003
platforms = {
0 commit comments