From d405a06991c5fba9ec72224a6ddba5a21822ac77 Mon Sep 17 00:00:00 2001 From: Stefano Rivera Date: Wed, 9 Feb 2022 10:00:10 -0400 Subject: [PATCH 1/5] Canonicalize dependencies Closes: #870 --- setup.cfg | 4 ++-- tests/test_repository.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/setup.cfg b/setup.cfg index 3073d0dc..30b18682 100644 --- a/setup.cfg +++ b/setup.cfg @@ -37,12 +37,12 @@ packages = python_requires = >=3.6 install_requires= pkginfo >= 1.8.1 - readme_renderer >= 21.0 + readme-renderer >= 21.0 requests >= 2.20 requests-toolbelt >= 0.8.0, != 0.9.0 urllib3 >= 1.26.0 tqdm >= 4.14 - importlib_metadata >= 3.6 + importlib-metadata >= 3.6 keyring >= 15.1 rfc3986 >= 1.4.0 rich diff --git a/tests/test_repository.py b/tests/test_repository.py index 0c0098c7..80a70723 100644 --- a/tests/test_repository.py +++ b/tests/test_repository.py @@ -94,7 +94,7 @@ def test_make_user_agent_string(default_repo): "requests/", "requests-toolbelt/", "pkginfo/", - "importlib_metadata/", + "importlib-metadata/", ) assert all(p in user_agent for p in packages) From 00b48e97a5cc58613dd125aeb47c42c9a14871d0 Mon Sep 17 00:00:00 2001 From: Stefano Rivera Date: Sat, 26 Feb 2022 23:03:57 -0400 Subject: [PATCH 2/5] Explicitly select packages for User-Agent inclusion Revert back to a manual list of packages reported in the User-Agent string and --version. Reverting the part of #858 that switched to parsing twine's requires. See: #870 --- twine/cli.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/twine/cli.py b/twine/cli.py index d137e850..9aed13f8 100644 --- a/twine/cli.py +++ b/twine/cli.py @@ -20,7 +20,6 @@ import rich.highlighter import rich.logging import rich.theme -from packaging import requirements import twine @@ -71,8 +70,13 @@ def configure_output() -> None: def list_dependencies_and_versions() -> List[Tuple[str, str]]: - requires = importlib_metadata.requires("twine") # type: ignore[no-untyped-call] # python/importlib_metadata#288 # noqa: E501 - deps = [requirements.Requirement(r).name for r in requires] + deps = ( + "importlib-metadata", + "pkginfo", + "requests", + "requests-toolbelt", + "tqdm", + ) return [(dep, importlib_metadata.version(dep)) for dep in deps] # type: ignore[no-untyped-call] # python/importlib_metadata#288 # noqa: E501 From e11f85feb28f2be49a3898221a76298541a3140f Mon Sep 17 00:00:00 2001 From: Brian Rutledge Date: Sun, 27 Feb 2022 06:10:35 -0500 Subject: [PATCH 3/5] Update package list --- twine/cli.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/twine/cli.py b/twine/cli.py index 9aed13f8..722a73f5 100644 --- a/twine/cli.py +++ b/twine/cli.py @@ -72,10 +72,11 @@ def configure_output() -> None: def list_dependencies_and_versions() -> List[Tuple[str, str]]: deps = ( "importlib-metadata", + "keyring", "pkginfo", "requests", "requests-toolbelt", - "tqdm", + "urllib3", ) return [(dep, importlib_metadata.version(dep)) for dep in deps] # type: ignore[no-untyped-call] # python/importlib_metadata#288 # noqa: E501 From be44784b4455e65c90b6a12b79ccf8a3b6cdd77f Mon Sep 17 00:00:00 2001 From: Brian Rutledge Date: Sun, 27 Feb 2022 06:18:03 -0500 Subject: [PATCH 4/5] Remove dependencies from User-Agent --- tests/test_repository.py | 14 ++------------ twine/repository.py | 4 ---- 2 files changed, 2 insertions(+), 16 deletions(-) diff --git a/tests/test_repository.py b/tests/test_repository.py index 80a70723..a035ffc8 100644 --- a/tests/test_repository.py +++ b/tests/test_repository.py @@ -85,18 +85,8 @@ def test_set_certificate_authority(default_repo): def test_make_user_agent_string(default_repo): - """Add twine and its dependencies to User-Agent session header.""" - assert "User-Agent" in default_repo.session.headers - - user_agent = default_repo.session.headers["User-Agent"] - packages = ( - "twine/", - "requests/", - "requests-toolbelt/", - "pkginfo/", - "importlib-metadata/", - ) - assert all(p in user_agent for p in packages) + """Add twine to User-Agent session header.""" + assert "twine/" in default_repo.session.headers["User-Agent"] def response_with(**kwattrs): diff --git a/twine/repository.py b/twine/repository.py index 087a2f31..bca21d91 100644 --- a/twine/repository.py +++ b/twine/repository.py @@ -88,12 +88,8 @@ def _make_adapter_with_retries() -> adapters.HTTPAdapter: @staticmethod def _make_user_agent_string() -> str: - from twine import cli - - dependencies = cli.list_dependencies_and_versions() user_agent_string = ( user_agent.UserAgentBuilder("twine", twine.__version__) - .include_extras(dependencies) .include_implementation() .build() ) From 493390cec9ecfbfc3e1821b5e46840f2461f2070 Mon Sep 17 00:00:00 2001 From: Brian Rutledge Date: Sun, 27 Feb 2022 06:20:24 -0500 Subject: [PATCH 5/5] Add changelog entry --- changelog/871.bugfix.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog/871.bugfix.rst diff --git a/changelog/871.bugfix.rst b/changelog/871.bugfix.rst new file mode 100644 index 00000000..0af5ea72 --- /dev/null +++ b/changelog/871.bugfix.rst @@ -0,0 +1 @@ +Remove Twine's dependencies from the ``User-Agent`` header when uploading.