From 2ade49d9aa38ae924c4b48b33ad56fc04e816111 Mon Sep 17 00:00:00 2001 From: Antonio-Marius Tricolici <32434188+mtricolici98@users.noreply.github.com> Date: Fri, 1 Sep 2023 14:51:45 +0000 Subject: [PATCH 1/4] bugfix: user-agent python-requests Replaced user agent to avoid bot protection on private repositories --- src/poetry/utils/authenticator.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/poetry/utils/authenticator.py b/src/poetry/utils/authenticator.py index dd432e97a04..485a248bfe7 100644 --- a/src/poetry/utils/authenticator.py +++ b/src/poetry/utils/authenticator.py @@ -19,6 +19,9 @@ from cachecontrol import CacheControlAdapter from cachecontrol.caches import FileCache +from requests_toolbelt import user_agent + +from poetry.__version__ import __version__ from poetry.config.config import Config from poetry.exceptions import PoetryException from poetry.utils.constants import REQUESTS_TIMEOUT @@ -193,7 +196,8 @@ def authenticated_url(self, url: str) -> str: def request( self, method: str, url: str, raise_for_status: bool = True, **kwargs: Any ) -> requests.Response: - headers = kwargs.get("headers") + headers = kwargs.get("headers", {}) + headers['User-agent'] = user_agent('poetry', __version__) request = requests.Request(method, url, headers=headers) credential = self.get_credentials_for_url(url) From b380b76863d208e13d7bd384d948ff3bf7d40fbd Mon Sep 17 00:00:00 2001 From: Antonio-Marius Tricolici <32434188+mtricolici98@users.noreply.github.com> Date: Mon, 4 Sep 2023 05:23:06 +0000 Subject: [PATCH 2/4] bugfix: Handled none type exception --- src/poetry/utils/authenticator.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/poetry/utils/authenticator.py b/src/poetry/utils/authenticator.py index 485a248bfe7..a9acd8135bc 100644 --- a/src/poetry/utils/authenticator.py +++ b/src/poetry/utils/authenticator.py @@ -18,7 +18,6 @@ from cachecontrol import CacheControlAdapter from cachecontrol.caches import FileCache - from requests_toolbelt import user_agent from poetry.__version__ import __version__ @@ -196,8 +195,8 @@ def authenticated_url(self, url: str) -> str: def request( self, method: str, url: str, raise_for_status: bool = True, **kwargs: Any ) -> requests.Response: - headers = kwargs.get("headers", {}) - headers['User-agent'] = user_agent('poetry', __version__) + headers = kwargs.get("headers", {}) or {} + headers["User-agent"] = user_agent("poetry", __version__) request = requests.Request(method, url, headers=headers) credential = self.get_credentials_for_url(url) From 110943d09ed983a739b62c58b1b55db697ee09da Mon Sep 17 00:00:00 2001 From: Antonio-Marius Tricolici <32434188+mtricolici98@users.noreply.github.com> Date: Wed, 6 Sep 2023 08:03:17 +0000 Subject: [PATCH 3/4] Moved header assignment to session creation. --- src/poetry/utils/authenticator.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/poetry/utils/authenticator.py b/src/poetry/utils/authenticator.py index a9acd8135bc..77966ad3f08 100644 --- a/src/poetry/utils/authenticator.py +++ b/src/poetry/utils/authenticator.py @@ -136,9 +136,11 @@ def __init__( self._get_repository_config_for_url ) self._pool_size = pool_size + self.user_agent = user_agent("poetry", __version__) def create_session(self) -> requests.Session: session = requests.Session() + session.headers["User-Agent"] = self.user_agent if self._cache_control is None: return session @@ -195,8 +197,7 @@ def authenticated_url(self, url: str) -> str: def request( self, method: str, url: str, raise_for_status: bool = True, **kwargs: Any ) -> requests.Response: - headers = kwargs.get("headers", {}) or {} - headers["User-agent"] = user_agent("poetry", __version__) + headers = kwargs.get("headers") request = requests.Request(method, url, headers=headers) credential = self.get_credentials_for_url(url) From 9d35aebaaf69a11fd6b9b131cffdd41d464800d0 Mon Sep 17 00:00:00 2001 From: Antonio-Marius Tricolici <32434188+mtricolici98@users.noreply.github.com> Date: Mon, 11 Sep 2023 05:25:10 +0000 Subject: [PATCH 4/4] Made user_agent attribute private --- src/poetry/utils/authenticator.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/poetry/utils/authenticator.py b/src/poetry/utils/authenticator.py index 77966ad3f08..23b52df97dc 100644 --- a/src/poetry/utils/authenticator.py +++ b/src/poetry/utils/authenticator.py @@ -136,11 +136,11 @@ def __init__( self._get_repository_config_for_url ) self._pool_size = pool_size - self.user_agent = user_agent("poetry", __version__) + self._user_agent = user_agent("poetry", __version__) def create_session(self) -> requests.Session: session = requests.Session() - session.headers["User-Agent"] = self.user_agent + session.headers["User-Agent"] = self._user_agent if self._cache_control is None: return session