@@ -155,12 +155,7 @@ def resolve_dependencies(
155155 for req_file in requirement_files :
156156 deps = dependencies .get_dependencies_from_requirements (requirements_file = req_file )
157157 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 )
164159 direct_dependencies .extend (deps )
165160 package_data = [
166161 pkg_data .to_dict () for pkg_data in PipRequirementsFileHandler .parse (location = req_file )
@@ -324,6 +319,25 @@ async def get_pypi_data(package):
324319 )
325320
326321
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+
327341resolver_api = resolve_dependencies
328342
329343
0 commit comments