From 930515b3b281c40853f9f62f03580a605ffb58ed Mon Sep 17 00:00:00 2001 From: Edward George Date: Wed, 22 Jan 2020 21:51:10 +0100 Subject: [PATCH] fix: correct parsing of wheel version with regex. (#1932) The previous regexp was only taking the first integer of the version number, this presented problems when the major version number reached double digits. Poetry would determine that the version of the dependency is '1', rather than, ie: '14'. This caused failures to solve versions. --- poetry/packages/__init__.py | 3 ++- tests/packages/test_main.py | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/poetry/packages/__init__.py b/poetry/packages/__init__.py index caa9c1c28a6..e0a2203c9d3 100644 --- a/poetry/packages/__init__.py +++ b/poetry/packages/__init__.py @@ -2,6 +2,7 @@ import re from poetry.semver import Version +from poetry.utils.patterns import wheel_file_re from poetry.version.requirements import Requirement from .dependency import Dependency @@ -70,7 +71,7 @@ def dependency_from_pep_508(name): link = Link(path_to_url(os.path.normpath(os.path.abspath(link.path)))) # wheel file if link.is_wheel: - m = re.match(r"^(?P(?P.+?)-(?P\d.*?))", link.filename) + m = wheel_file_re.match(link.filename) if not m: raise ValueError("Invalid wheel name: {}".format(link.filename)) diff --git a/tests/packages/test_main.py b/tests/packages/test_main.py index 7cc93397f0d..586be5a31b8 100644 --- a/tests/packages/test_main.py +++ b/tests/packages/test_main.py @@ -191,3 +191,14 @@ def test_dependency_from_pep_508_with_url(): assert "django-utils" == dep.name assert dep.is_url() assert "https://example.com/django-utils-1.0.0.tar.gz" == dep.url + + +def test_dependency_from_pep_508_with_wheel_url(): + name = ( + "example_wheel @ https://example.com/example_wheel-14.0.2-py2.py3-none-any.whl" + ) + + dep = dependency_from_pep_508(name) + + assert "example-wheel" == dep.name + assert str(dep.constraint) == "14.0.2"