From 1e3125f5f817bb109f805cf131a1d9aa9f82d149 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Bidoul?= Date: Sat, 22 Aug 2020 11:42:39 +0200 Subject: [PATCH] Relax invalid url detection We accept any url that urlparse accepts, provided it has a scheme. --- packaging/requirements.py | 9 ++------- tests/test_requirements.py | 4 ++-- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/packaging/requirements.py b/packaging/requirements.py index bb71cc0b..53bb2f41 100644 --- a/packaging/requirements.py +++ b/packaging/requirements.py @@ -112,15 +112,10 @@ def __init__(self, requirement_string): self.name = req.name if req.url: parsed_url = urlparse.urlparse(req.url) - if parsed_url.scheme and "+" in parsed_url.scheme: - # VCS url - pass - elif parsed_url.scheme == "file": + if parsed_url.scheme == "file": if urlparse.urlunparse(parsed_url) != req.url: raise InvalidRequirement("Invalid URL given") - elif not (parsed_url.scheme and parsed_url.netloc) or ( - not parsed_url.scheme and not parsed_url.netloc - ): + elif not parsed_url.scheme: raise InvalidRequirement("Invalid URL: {0}".format(req.url)) self.url = req.url else: diff --git a/tests/test_requirements.py b/tests/test_requirements.py index 946b1c15..d8afdcff 100644 --- a/tests/test_requirements.py +++ b/tests/test_requirements.py @@ -104,9 +104,9 @@ def test_url_and_marker(self): def test_invalid_url(self): with pytest.raises(InvalidRequirement) as e: - Requirement("name @ gopher:/foo/com") + Requirement("name @ /a/b") assert "Invalid URL: " in str(e.value) - assert "gopher:/foo/com" in str(e.value) + assert "/a/b" in str(e.value) def test_file_url(self): req = Requirement("name @ file:///absolute/path")