Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog/871.bugfix.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Remove Twine's dependencies from the ``User-Agent`` header when uploading.
4 changes: 2 additions & 2 deletions setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
14 changes: 2 additions & 12 deletions tests/test_repository.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down
11 changes: 8 additions & 3 deletions twine/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import rich.highlighter
import rich.logging
import rich.theme
from packaging import requirements

import twine

Expand Down Expand Up @@ -71,8 +70,14 @@ 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",
"keyring",
"pkginfo",
"requests",
"requests-toolbelt",
"urllib3",
)
return [(dep, importlib_metadata.version(dep)) for dep in deps] # type: ignore[no-untyped-call] # python/importlib_metadata#288 # noqa: E501


Expand Down
4 changes: 0 additions & 4 deletions twine/repository.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()
)
Expand Down