Skip to content

Commit 8e809df

Browse files
committed
Ensure stable order of index URLs
Signed-off-by: Philippe Ombredanne <pombredanne@nexb.com>
1 parent 6a49b2b commit 8e809df

File tree

3 files changed

+27
-193
lines changed

3 files changed

+27
-193
lines changed

src/python_inspector/api.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
from python_inspector.resolution import get_reqs_insecurely
4343
from python_inspector.resolution import get_requirements_from_python_manifest
4444
from python_inspector.utils import Candidate
45+
from python_inspector.utils import unique
4546
from python_inspector.utils_pypi import PLATFORMS_BY_OS
4647
from python_inspector.utils_pypi import Environment
4748
from python_inspector.utils_pypi import PypiSimpleRepository
@@ -336,7 +337,7 @@ def get_index_urls(index_urls: Tuple, extra_data: Dict) -> Tuple:
336337
index_urls = (*index_urls, *tuple(extra_index_urls))
337338
if isinstance(index_url, str):
338339
index_urls = (*index_urls, *tuple([index_url]))
339-
return tuple(set(index_urls))
340+
return tuple(unique(index_urls))
340341

341342

342343
resolver_api = resolve_dependencies

src/python_inspector/utils.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,3 +101,20 @@ def remove_test_data_dir_variable_prefix(path, placeholder="<file>"):
101101
return cleaned.replace("\\", "/")
102102
else:
103103
return placeholder
104+
105+
106+
def unique(sequence):
107+
"""
108+
Return a list of unique items found in sequence. Preserve the original sequence order.
109+
Items must be hashable.
110+
For example:
111+
>>> unique([1, 5, 3, 5])
112+
[1, 5, 3]
113+
"""
114+
seen = set()
115+
deduped = []
116+
for item in sequence:
117+
if item not in seen:
118+
deduped.append(item)
119+
seen.add(item)
120+
return deduped

0 commit comments

Comments
 (0)