@@ -105,7 +105,6 @@ def _create_whl_repos(
105105
106106    # containers to aggregate outputs from this function 
107107    whl_map  =  {}
108-     exposed_packages  =  {}
109108    extra_aliases  =  {
110109        whl_name : {alias : True  for  alias  in  aliases }
111110        for  whl_name , aliases  in  pip_attr .extra_hub_aliases .items ()
@@ -219,8 +218,6 @@ def _create_whl_repos(
219218    )
220219
221220    for  whl_name , requirements  in  requirements_by_platform .items ():
222-         whl_name  =  normalize_name (whl_name )
223- 
224221        group_name  =  whl_group_mapping .get (whl_name )
225222        group_deps  =  requirement_cycles .get (group_name , [])
226223
@@ -261,68 +258,55 @@ def _create_whl_repos(
261258            if  v  !=  default 
262259        })
263260
264-         is_exposed  =  False 
265-         if  get_index_urls :
266-             # TODO @aignas 2024-05-26: move to a separate function 
267-             found_something  =  False 
268-             for  requirement  in  requirements :
269-                 is_exposed  =  is_exposed  or  requirement .is_exposed 
270-                 dists  =  requirement .whls 
271-                 if  not  pip_attr .download_only  and  requirement .sdist :
272-                     dists  =  dists  +  [requirement .sdist ]
273- 
274-                 for  distribution  in  dists :
275-                     found_something  =  True 
276-                     is_reproducible  =  False 
277- 
278-                     args  =  dict (whl_library_args )
279-                     if  pip_attr .netrc :
280-                         args ["netrc" ] =  pip_attr .netrc 
281-                     if  pip_attr .auth_patterns :
282-                         args ["auth_patterns" ] =  pip_attr .auth_patterns 
283- 
284-                     if  not  distribution .filename .endswith (".whl" ):
285-                         # pip is not used to download wheels and the python 
286-                         # `whl_library` helpers are only extracting things, however 
287-                         # for sdists, they will be built by `pip`, so we still 
288-                         # need to pass the extra args there. 
289-                         args ["extra_pip_args" ] =  requirement .extra_pip_args 
290- 
291-                     # This is no-op because pip is not used to download the wheel. 
292-                     args .pop ("download_only" , None )
293- 
294-                     repo_name  =  whl_repo_name (pip_name , distribution .filename , distribution .sha256 )
295-                     args ["requirement" ] =  requirement .srcs .requirement 
296-                     args ["urls" ] =  [distribution .url ]
297-                     args ["sha256" ] =  distribution .sha256 
298-                     args ["filename" ] =  distribution .filename 
299-                     args ["experimental_target_platforms" ] =  requirement .target_platforms 
300- 
301-                     # Pure python wheels or sdists may need to have a platform here 
302-                     target_platforms  =  None 
303-                     if  distribution .filename .endswith ("-any.whl" ) or  not  distribution .filename .endswith (".whl" ):
304-                         if  len (requirements ) >  1 :
305-                             target_platforms  =  requirement .target_platforms 
306- 
307-                     whl_libraries [repo_name ] =  args 
308- 
309-                     whl_map .setdefault (whl_name , {})[whl_config_setting (
310-                         version  =  major_minor ,
311-                         filename  =  distribution .filename ,
312-                         target_platforms  =  target_platforms ,
313-                     )] =  repo_name 
314- 
315-             if  found_something :
316-                 if  is_exposed :
317-                     exposed_packages [whl_name ] =  None 
318-                 continue 
319- 
320-         is_exposed  =  False 
261+         # TODO @aignas 2024-05-26: move to a separate function 
321262        for  requirement  in  requirements :
322-             is_exposed  =  is_exposed  or  requirement .is_exposed 
323-             if  get_index_urls :
324-                 logger .warn (lambda : "falling back to pip for installing the right file for {}" .format (requirement .srcs .requirement_line ))
263+             dists  =  requirement .whls 
264+             if  not  pip_attr .download_only  and  requirement .sdist :
265+                 dists  =  dists  +  [requirement .sdist ]
266+ 
267+             for  distribution  in  dists :
268+                 args  =  dict (whl_library_args )
269+                 if  pip_attr .netrc :
270+                     args ["netrc" ] =  pip_attr .netrc 
271+                 if  pip_attr .auth_patterns :
272+                     args ["auth_patterns" ] =  pip_attr .auth_patterns 
273+ 
274+                 if  not  distribution .filename .endswith (".whl" ):
275+                     # pip is not used to download wheels and the python 
276+                     # `whl_library` helpers are only extracting things, however 
277+                     # for sdists, they will be built by `pip`, so we still 
278+                     # need to pass the extra args there. 
279+                     args ["extra_pip_args" ] =  requirement .extra_pip_args 
280+ 
281+                 # This is no-op because pip is not used to download the wheel. 
282+                 args .pop ("download_only" , None )
283+ 
284+                 repo_name  =  whl_repo_name (pip_name , distribution .filename , distribution .sha256 )
285+                 args ["requirement" ] =  requirement .srcs .requirement 
286+                 args ["urls" ] =  [distribution .url ]
287+                 args ["sha256" ] =  distribution .sha256 
288+                 args ["filename" ] =  distribution .filename 
289+                 args ["experimental_target_platforms" ] =  requirement .target_platforms 
290+ 
291+                 # Pure python wheels or sdists may need to have a platform here 
292+                 target_platforms  =  None 
293+                 if  distribution .filename .endswith ("-any.whl" ) or  not  distribution .filename .endswith (".whl" ):
294+                     if  len (requirements ) >  1 :
295+                         target_platforms  =  requirement .target_platforms 
296+ 
297+                 whl_libraries [repo_name ] =  args 
298+ 
299+                 whl_map .setdefault (whl_name , {})[whl_config_setting (
300+                     version  =  major_minor ,
301+                     filename  =  distribution .filename ,
302+                     target_platforms  =  target_platforms ,
303+                 )] =  repo_name 
304+ 
305+             if  dists :
306+                 is_reproducible  =  False 
307+                 continue 
325308
309+             # Fallback to a pip-installed wheel 
326310            args  =  dict (whl_library_args )  # make a copy 
327311            args ["requirement" ] =  requirement .srcs .requirement_line 
328312            if  requirement .extra_pip_args :
@@ -343,13 +327,14 @@ def _create_whl_repos(
343327                target_platforms  =  target_platforms  or  None ,
344328            )] =  repo_name 
345329
346-         if  is_exposed :
347-             exposed_packages [whl_name ] =  None 
348- 
349330    return  struct (
350331        is_reproducible  =  is_reproducible ,
351332        whl_map  =  whl_map ,
352-         exposed_packages  =  exposed_packages ,
333+         exposed_packages  =  {
334+             whl_name : None 
335+             for  whl_name , requirements  in  requirements_by_platform .items ()
336+             if  len ([r  for  r  in  requirements  if  r .is_exposed ]) >  0 
337+         },
353338        extra_aliases  =  extra_aliases ,
354339        whl_libraries  =  whl_libraries ,
355340    )
0 commit comments