mirror of
https://github.com/pypa/pip
synced 2023-12-13 21:30:23 +01:00
Merge pull request #6440 from nicolasbock/index_with_git
Protect `@` as safe character when cleaning URLs
This commit is contained in:
commit
60d3f11961
3 changed files with 10 additions and 2 deletions
2
news/6440.bugfix
Normal file
2
news/6440.bugfix
Normal file
|
@ -0,0 +1,2 @@
|
|||
Fix a regression that caused `@` to be quoted in pypiserver links.
|
||||
This interfered with parsing the revision string from VCS urls.
|
|
@ -336,6 +336,7 @@ class FoundCandidates(object):
|
|||
* `evaluator`: A CandidateEvaluator object to sort applicable candidates
|
||||
by order of preference.
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
candidates, # type: List[InstallationCandidate]
|
||||
|
@ -1061,7 +1062,9 @@ def _clean_link(url):
|
|||
path = urllib_request.pathname2url(
|
||||
urllib_request.url2pathname(result.path))
|
||||
else:
|
||||
path = urllib_parse.quote(urllib_parse.unquote(result.path))
|
||||
# In addition to the `/` character we protect `@` so that
|
||||
# revision strings in VCS URLs are properly parsed.
|
||||
path = urllib_parse.quote(urllib_parse.unquote(result.path), safe="/@")
|
||||
return urllib_parse.urlunparse(result._replace(path=path))
|
||||
|
||||
|
||||
|
|
|
@ -308,7 +308,10 @@ def test_request_retries(caplog):
|
|||
# URL with something that looks like a drive letter, but is
|
||||
# not. The `:` should be quoted.
|
||||
("https://localhost.localdomain/T:/path/",
|
||||
"https://localhost.localdomain/T%3A/path/")
|
||||
"https://localhost.localdomain/T%3A/path/"),
|
||||
# VCS URL containing revision string.
|
||||
("git+ssh://example.com/path to/repo.git@1.0#egg=my-package-1.0",
|
||||
"git+ssh://example.com/path%20to/repo.git@1.0#egg=my-package-1.0")
|
||||
]
|
||||
)
|
||||
def test_clean_link(url, clean_url):
|
||||
|
|
Loading…
Reference in a new issue