Skip to content

Commit

Permalink
Filter unnecessary deps from User-Agent string (#871)
Browse files Browse the repository at this point in the history
* Canonicalize dependencies

Closes: #870

* 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

* Update package list

* Remove dependencies from User-Agent

* Add changelog entry

Co-authored-by: Brian Rutledge <brian@bhrutledge.com>
  • Loading branch information
stefanor and bhrutledge committed Feb 28, 2022
1 parent a9e9cd6 commit c506b22
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 21 deletions.
1 change: 1 addition & 0 deletions changelog/871.bugfix.rst
@@ -0,0 +1 @@
Remove Twine's dependencies from the ``User-Agent`` header when uploading.
4 changes: 2 additions & 2 deletions setup.cfg
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
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
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 @@ -72,8 +71,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
Expand Up @@ -89,12 +89,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

0 comments on commit c506b22

Please sign in to comment.