@@ -155,12 +155,7 @@ def resolve_dependencies(
155
155
for req_file in requirement_files :
156
156
deps = dependencies .get_dependencies_from_requirements (requirements_file = req_file )
157
157
for extra_data in dependencies .get_extra_data_from_requirements (requirements_file = req_file ):
158
- extra_index_urls = extra_data .get ("extra_index_urls" ) or []
159
- index_url = extra_data .get ("index_url" ) or []
160
- if isinstance (extra_index_urls , list ):
161
- index_urls = (* index_urls , * tuple (extra_index_urls ))
162
- if isinstance (index_url , str ):
163
- index_urls = (* index_urls , index_url )
158
+ index_urls = get_index_urls (index_urls , extra_data )
164
159
direct_dependencies .extend (deps )
165
160
package_data = [
166
161
pkg_data .to_dict () for pkg_data in PipRequirementsFileHandler .parse (location = req_file )
@@ -324,6 +319,25 @@ async def get_pypi_data(package):
324
319
)
325
320
326
321
322
+ def get_index_urls (index_urls : Tuple , extra_data : Dict ) -> Tuple :
323
+ """
324
+ Return a list of index URLs from the extra_data.
325
+ The extra_data is a dictionary that may contain
326
+ "extra_index_urls" and "index_url" keys.
327
+ """
328
+ if isinstance (index_urls , str ):
329
+ index_urls = [index_urls ]
330
+ if isinstance (index_urls , tuple ):
331
+ index_urls = list (index_urls )
332
+ extra_index_urls = extra_data .get ("extra_index_urls" ) or []
333
+ index_url = extra_data .get ("index_url" ) or []
334
+ if isinstance (extra_index_urls , list ):
335
+ index_urls = (* index_urls , * tuple (extra_index_urls ))
336
+ if isinstance (index_url , str ):
337
+ index_urls = (* index_urls , * tuple ([index_url ]))
338
+ return tuple (set (index_urls ))
339
+
340
+
327
341
resolver_api = resolve_dependencies
328
342
329
343
0 commit comments