From aae63795b2bf5bcde9e846215fd62fa1addd60a4 Mon Sep 17 00:00:00 2001 From: Noah Gorny Date: Thu, 2 Jul 2020 21:59:43 +0300 Subject: [PATCH 1/3] reqfile: Update extra-index-url/index-url in session from requirements file Also update the relevant tests --- src/pip/_internal/network/session.py | 8 ++++++++ src/pip/_internal/req/req_file.py | 4 ++++ tests/unit/test_req_file.py | 13 +++++++++---- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/pip/_internal/network/session.py b/src/pip/_internal/network/session.py index 39a4a546edc..68ef68db535 100644 --- a/src/pip/_internal/network/session.py +++ b/src/pip/_internal/network/session.py @@ -305,6 +305,14 @@ def __init__(self, *args, **kwargs): for host in trusted_hosts: self.add_trusted_host(host, suppress_logging=True) + def update_index_urls(self, new_index_urls): + # type: (List[str]) -> None + """ + :param new_index_urls: New index urls to update the authentication + handler with. + """ + self.auth.index_urls = new_index_urls + def add_trusted_host(self, host, source=None, suppress_logging=False): # type: (str, Optional[str], bool) -> None """ diff --git a/src/pip/_internal/req/req_file.py b/src/pip/_internal/req/req_file.py index 1050582289a..72a568bdfc3 100644 --- a/src/pip/_internal/req/req_file.py +++ b/src/pip/_internal/req/req_file.py @@ -256,6 +256,10 @@ def handle_option_line( value = relative_to_reqs_file find_links.append(value) + if session: + # We need to update the auth urls in session + session.update_index_urls(index_urls) + search_scope = SearchScope( find_links=find_links, index_urls=index_urls, diff --git a/tests/unit/test_req_file.py b/tests/unit/test_req_file.py index 879f088a41d..69d93a0cdc2 100644 --- a/tests/unit/test_req_file.py +++ b/tests/unit/test_req_file.py @@ -341,17 +341,22 @@ def test_set_finder_no_index(self, line_processor, finder): line_processor("--no-index", "file", 1, finder=finder) assert finder.index_urls == [] - def test_set_finder_index_url(self, line_processor, finder): - line_processor("--index-url=url", "file", 1, finder=finder) + def test_set_finder_index_url(self, line_processor, finder, session): + line_processor( + "--index-url=url", "file", 1, finder=finder, session=session) assert finder.index_urls == ['url'] + assert session.auth.index_urls == ['url'] def test_set_finder_find_links(self, line_processor, finder): line_processor("--find-links=url", "file", 1, finder=finder) assert finder.find_links == ['url'] - def test_set_finder_extra_index_urls(self, line_processor, finder): - line_processor("--extra-index-url=url", "file", 1, finder=finder) + def test_set_finder_extra_index_urls( + self, line_processor, finder, session): + line_processor( + "--extra-index-url=url", "file", 1, finder=finder, session=session) assert finder.index_urls == ['url'] + assert session.auth.index_urls == ['url'] def test_set_finder_trusted_host( self, line_processor, caplog, session, finder From 3e70cbe5714010effd6c3c4867d41cec07c3faff Mon Sep 17 00:00:00 2001 From: Noah Gorny Date: Thu, 2 Jul 2020 22:11:29 +0300 Subject: [PATCH 2/3] news: Add --extra-index-url req file bugfix news --- news/8103.bugfix | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 news/8103.bugfix diff --git a/news/8103.bugfix b/news/8103.bugfix new file mode 100644 index 00000000000..76f17e136cf --- /dev/null +++ b/news/8103.bugfix @@ -0,0 +1,2 @@ +Propagate ``--extra-index-url`` from requirements file properly to session auth, +in order that keyrings and other auths will work as expected. From 24d5fe86c04a8e6f728c34eab8aabd13e1a8cc8a Mon Sep 17 00:00:00 2001 From: Noah Date: Thu, 13 Aug 2020 15:34:00 +0300 Subject: [PATCH 3/3] Update news/8103.bugfix Co-authored-by: Pradyun Gedam <3275593+pradyunsg@users.noreply.github.com> --- news/8103.bugfix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/news/8103.bugfix b/news/8103.bugfix index 76f17e136cf..55e4d6571aa 100644 --- a/news/8103.bugfix +++ b/news/8103.bugfix @@ -1,2 +1,2 @@ Propagate ``--extra-index-url`` from requirements file properly to session auth, -in order that keyrings and other auths will work as expected. +so that keyring auth will work as expected.