From e8e8387dfe53f7b61941600775476c08c35ccfd4 Mon Sep 17 00:00:00 2001 From: Cesar Lizarraga Date: Fri, 2 Aug 2024 16:35:23 -0500 Subject: [PATCH 1/8] Issue 180: Fix not parsing pip.conf index urls Signed-off-by: Cesar Lizarraga --- src/python_inspector/api.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/python_inspector/api.py b/src/python_inspector/api.py index ce98ff31..d49fe557 100644 --- a/src/python_inspector/api.py +++ b/src/python_inspector/api.py @@ -10,6 +10,7 @@ # import os +import subprocess from netrc import netrc from typing import Dict from typing import List @@ -71,6 +72,21 @@ def to_dict(self, generic_paths=False): "resolution": self.resolution, } +def pip_conf_get_index_urls() -> list: + pip_index_url_cmd = "pip config get global.index-url" + pip_extra_index_url_cmd = "pip config get global.extra-index-url" + index_urls = subprocess.run(pip_index_url_cmd, capture_output=True) + if index_urls.returncode != 0: + index_urls = [] + else: + index_urls = index_urls.stdout.decode("utf-8").split() + extra_index_urls = subprocess.run(pip_extra_index_url_cmd, capture_output=True) + if extra_index_urls.returncode != 0: + extra_index_urls = [] + else: + extra_index_urls = extra_index_urls.stdout.decode("utf-8").split() + all_index_urls = [url for url in index_urls + extra_index_urls if url != ""] + return all_index_urls def resolve_dependencies( requirement_files=tuple(), @@ -146,6 +162,11 @@ def resolve_dependencies( files = [] + pip_conf_index_urls = pip_conf_get_index_urls() + + if pip_conf_index_urls != []: + index_urls = tuple(pip_conf_index_urls) + tuple(index_urls) + if PYPI_SIMPLE_URL not in index_urls: index_urls = tuple([PYPI_SIMPLE_URL]) + tuple(index_urls) From 0218fc5983b02ef56f67d594c5a7ee1028d48f0f Mon Sep 17 00:00:00 2001 From: Cesar Lizarraga Date: Fri, 2 Aug 2024 17:05:30 -0500 Subject: [PATCH 2/8] Fix 180: Make subprocess commands proper lists Signed-off-by: Cesar Lizarraga --- src/python_inspector/api.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/python_inspector/api.py b/src/python_inspector/api.py index d49fe557..b3187452 100644 --- a/src/python_inspector/api.py +++ b/src/python_inspector/api.py @@ -73,8 +73,8 @@ def to_dict(self, generic_paths=False): } def pip_conf_get_index_urls() -> list: - pip_index_url_cmd = "pip config get global.index-url" - pip_extra_index_url_cmd = "pip config get global.extra-index-url" + pip_index_url_cmd = ["pip", "config", "get", "global.index-url"] + pip_extra_index_url_cmd = ["pip", "config", "get", "global.extra-index-url"] index_urls = subprocess.run(pip_index_url_cmd, capture_output=True) if index_urls.returncode != 0: index_urls = [] From 0f1fb7df91be78c3a0c48cb927f9e758ba586139 Mon Sep 17 00:00:00 2001 From: Cesar Lizarraga Date: Fri, 2 Aug 2024 17:40:03 -0500 Subject: [PATCH 3/8] Fix 180: Parse environment variables as well Signed-off-by: Cesar Lizarraga --- src/python_inspector/api.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/python_inspector/api.py b/src/python_inspector/api.py index b3187452..e3c579ae 100644 --- a/src/python_inspector/api.py +++ b/src/python_inspector/api.py @@ -73,6 +73,7 @@ def to_dict(self, generic_paths=False): } def pip_conf_get_index_urls() -> list: + # Get index urls from pip pip_index_url_cmd = ["pip", "config", "get", "global.index-url"] pip_extra_index_url_cmd = ["pip", "config", "get", "global.extra-index-url"] index_urls = subprocess.run(pip_index_url_cmd, capture_output=True) @@ -85,7 +86,13 @@ def pip_conf_get_index_urls() -> list: extra_index_urls = [] else: extra_index_urls = extra_index_urls.stdout.decode("utf-8").split() - all_index_urls = [url for url in index_urls + extra_index_urls if url != ""] + + # Extract index urls from environment variables + pip_index_url_env = [] if os.getenv("PIP_INDEX_URL") is not None else os.getenv("PIP_INDEX_URL").split() + pip_extra_index_url_env = [] if os.getenv("PIP_EXTRA_INDEX_URL") is not None else os.getenv("PIP_EXTRA_INDEX_URL").split() + pip_env_urls = pip_index_url_env + pip_extra_index_url_env + + all_index_urls = [url for url in index_urls + extra_index_urls + pip_env_urls if url != ""] return all_index_urls def resolve_dependencies( From 4bf69cfd230cc9ebb45d977e2574ed9fc7a79908 Mon Sep 17 00:00:00 2001 From: Cesar Lizarraga Date: Fri, 2 Aug 2024 18:03:23 -0500 Subject: [PATCH 4/8] Fix 180: Fix typo in ternary statements Signed-off-by: Cesar Lizarraga --- src/python_inspector/api.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/python_inspector/api.py b/src/python_inspector/api.py index e3c579ae..a3fb10e0 100644 --- a/src/python_inspector/api.py +++ b/src/python_inspector/api.py @@ -88,8 +88,8 @@ def pip_conf_get_index_urls() -> list: extra_index_urls = extra_index_urls.stdout.decode("utf-8").split() # Extract index urls from environment variables - pip_index_url_env = [] if os.getenv("PIP_INDEX_URL") is not None else os.getenv("PIP_INDEX_URL").split() - pip_extra_index_url_env = [] if os.getenv("PIP_EXTRA_INDEX_URL") is not None else os.getenv("PIP_EXTRA_INDEX_URL").split() + pip_index_url_env = [] if os.getenv("PIP_INDEX_URL") is None else os.getenv("PIP_INDEX_URL").split() + pip_extra_index_url_env = [] if os.getenv("PIP_EXTRA_INDEX_URL") is None else os.getenv("PIP_EXTRA_INDEX_URL").split() pip_env_urls = pip_index_url_env + pip_extra_index_url_env all_index_urls = [url for url in index_urls + extra_index_urls + pip_env_urls if url != ""] From e3e6a249ff1dd006ac208a929a9de291be278045 Mon Sep 17 00:00:00 2001 From: Cesar Lizarraga Date: Mon, 5 Aug 2024 10:32:38 -0500 Subject: [PATCH 5/8] Fix 180: Make sure to use pip as defined by python Signed-off-by: Cesar Lizarraga --- src/python_inspector/api.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/python_inspector/api.py b/src/python_inspector/api.py index a3fb10e0..ef18f0e5 100644 --- a/src/python_inspector/api.py +++ b/src/python_inspector/api.py @@ -73,9 +73,14 @@ def to_dict(self, generic_paths=False): } def pip_conf_get_index_urls() -> list: - # Get index urls from pip - pip_index_url_cmd = ["pip", "config", "get", "global.index-url"] - pip_extra_index_url_cmd = ["pip", "config", "get", "global.extra-index-url"] + """ + Returns a list of index_urls as provided by `pip config get`. If none, it returns an empty list. + """ + + # Get index URLS from pip and split them into lists. + # Index URLs are split by whitespace + pip_index_url_cmd = ["/usr/bin/env", "python", "-m", "pip", "config", "get", "global.index-url"] + pip_extra_index_url_cmd = ["/usr/bin/env", "python", "-m", "pip", "config", "get", "global.extra-index-url"] index_urls = subprocess.run(pip_index_url_cmd, capture_output=True) if index_urls.returncode != 0: index_urls = [] From 575858dc72b166f9bbd26b5186cb927251d012ca Mon Sep 17 00:00:00 2001 From: Cesar Lizarraga Date: Mon, 5 Aug 2024 13:24:01 -0500 Subject: [PATCH 6/8] Fix 180: Add some pycodestyle changes Signed-off-by: Cesar Lizarraga --- src/python_inspector/api.py | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/python_inspector/api.py b/src/python_inspector/api.py index ef18f0e5..9b6609c8 100644 --- a/src/python_inspector/api.py +++ b/src/python_inspector/api.py @@ -72,34 +72,43 @@ def to_dict(self, generic_paths=False): "resolution": self.resolution, } + def pip_conf_get_index_urls() -> list: """ - Returns a list of index_urls as provided by `pip config get`. If none, it returns an empty list. + Returns a list of index_urls as provided by `pip config get`. + If none, it returns an empty list. """ # Get index URLS from pip and split them into lists. # Index URLs are split by whitespace - pip_index_url_cmd = ["/usr/bin/env", "python", "-m", "pip", "config", "get", "global.index-url"] - pip_extra_index_url_cmd = ["/usr/bin/env", "python", "-m", "pip", "config", "get", "global.extra-index-url"] + pip_index_url_cmd = ["/usr/bin/env", "python", "-m", "pip", + "config", "get", "global.index-url"] + pip_extra_index_url_cmd = ["/usr/bin/env", "python", "-m", "pip", + "config", "get", "global.extra-index-url"] index_urls = subprocess.run(pip_index_url_cmd, capture_output=True) if index_urls.returncode != 0: index_urls = [] else: index_urls = index_urls.stdout.decode("utf-8").split() - extra_index_urls = subprocess.run(pip_extra_index_url_cmd, capture_output=True) + extra_index_urls = subprocess.run(pip_extra_index_url_cmd, + capture_output=True) if extra_index_urls.returncode != 0: extra_index_urls = [] else: extra_index_urls = extra_index_urls.stdout.decode("utf-8").split() # Extract index urls from environment variables - pip_index_url_env = [] if os.getenv("PIP_INDEX_URL") is None else os.getenv("PIP_INDEX_URL").split() - pip_extra_index_url_env = [] if os.getenv("PIP_EXTRA_INDEX_URL") is None else os.getenv("PIP_EXTRA_INDEX_URL").split() + pip_index_url_env = [] if os.getenv("PIP_INDEX_URL") is None \ + else os.getenv("PIP_INDEX_URL").split() + pip_extra_index_url_env = [] if os.getenv("PIP_EXTRA_INDEX_URL") is None \ + else os.getenv("PIP_EXTRA_INDEX_URL").split() pip_env_urls = pip_index_url_env + pip_extra_index_url_env - all_index_urls = [url for url in index_urls + extra_index_urls + pip_env_urls if url != ""] + all_index_urls = [url for url in index_urls + extra_index_urls + + pip_env_urls if url != ""] return all_index_urls + def resolve_dependencies( requirement_files=tuple(), setup_py_file=None, From f7ffe07328128973382c2ed7f3022444d142518b Mon Sep 17 00:00:00 2001 From: Cesar Lizarraga Date: Mon, 5 Aug 2024 13:29:20 -0500 Subject: [PATCH 7/8] Fix 180: Make pycodestyle even happier Signed-off-by: Cesar Lizarraga --- src/python_inspector/api.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/python_inspector/api.py b/src/python_inspector/api.py index 9b6609c8..e5e0f7ae 100644 --- a/src/python_inspector/api.py +++ b/src/python_inspector/api.py @@ -81,10 +81,10 @@ def pip_conf_get_index_urls() -> list: # Get index URLS from pip and split them into lists. # Index URLs are split by whitespace - pip_index_url_cmd = ["/usr/bin/env", "python", "-m", "pip", - "config", "get", "global.index-url"] - pip_extra_index_url_cmd = ["/usr/bin/env", "python", "-m", "pip", - "config", "get", "global.extra-index-url"] + base_pip = ["/usr/bin/env", "python", "-m", "pip"] + config = ["config", "get"] + pip_index_url_cmd = base_pip + config + ["global.index-url"] + pip_extra_index_url_cmd = base_pip + config + ["global.extra-index-url"] index_urls = subprocess.run(pip_index_url_cmd, capture_output=True) if index_urls.returncode != 0: index_urls = [] From a45e3152d5bde9deafe896bba8492d18f14a7f61 Mon Sep 17 00:00:00 2001 From: Cesar Lizarraga Date: Wed, 7 Aug 2024 09:37:47 -0500 Subject: [PATCH 8/8] Fix 180: Remove `/usr/bin/env` since this also runs on Windows --- src/python_inspector/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/python_inspector/api.py b/src/python_inspector/api.py index e5e0f7ae..4fccfcf8 100644 --- a/src/python_inspector/api.py +++ b/src/python_inspector/api.py @@ -81,7 +81,7 @@ def pip_conf_get_index_urls() -> list: # Get index URLS from pip and split them into lists. # Index URLs are split by whitespace - base_pip = ["/usr/bin/env", "python", "-m", "pip"] + base_pip = ["python", "-m", "pip"] config = ["config", "get"] pip_index_url_cmd = base_pip + config + ["global.index-url"] pip_extra_index_url_cmd = base_pip + config + ["global.extra-index-url"]