Commit 930515b3 by Edward George Committed by Sébastien Eustace

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.
parent 2df0d2c6
...@@ -2,6 +2,7 @@ import os ...@@ -2,6 +2,7 @@ import os
import re import re
from poetry.semver import Version from poetry.semver import Version
from poetry.utils.patterns import wheel_file_re
from poetry.version.requirements import Requirement from poetry.version.requirements import Requirement
from .dependency import Dependency from .dependency import Dependency
...@@ -70,7 +71,7 @@ def dependency_from_pep_508(name): ...@@ -70,7 +71,7 @@ def dependency_from_pep_508(name):
link = Link(path_to_url(os.path.normpath(os.path.abspath(link.path)))) link = Link(path_to_url(os.path.normpath(os.path.abspath(link.path))))
# wheel file # wheel file
if link.is_wheel: if link.is_wheel:
m = re.match(r"^(?P<namever>(?P<name>.+?)-(?P<ver>\d.*?))", link.filename) m = wheel_file_re.match(link.filename)
if not m: if not m:
raise ValueError("Invalid wheel name: {}".format(link.filename)) raise ValueError("Invalid wheel name: {}".format(link.filename))
......
...@@ -191,3 +191,14 @@ def test_dependency_from_pep_508_with_url(): ...@@ -191,3 +191,14 @@ def test_dependency_from_pep_508_with_url():
assert "django-utils" == dep.name assert "django-utils" == dep.name
assert dep.is_url() assert dep.is_url()
assert "https://example.com/django-utils-1.0.0.tar.gz" == dep.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"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment