Commit 64e8af3b by Phil Jones Committed by Sébastien Eustace

Bugfix cope with arbitrary equals (#620)

When loading installed packages pip freeze can output lines with
``===``, arbitrary equals, qualifiers instead of ``==``. This allows
poetry to parse either.

This fixes #433, based on the suggestion present in the discussion.
parent 48e21915
import re
from poetry.packages import Package
from poetry.utils.env import Env
......@@ -17,7 +19,7 @@ class InstalledRepository(Repository):
freeze_output = env.run("pip", "freeze")
for line in freeze_output.split("\n"):
if "==" in line:
name, version = line.split("==")
name, version = re.split("={2,3}", line)
repo.add_package(Package(name, version, version))
elif line.startswith("-e "):
line = line[3:].strip()
......
......@@ -4,6 +4,7 @@ from poetry.utils.env import MockEnv as BaseMockEnv
FREEZE_RESULTS = """cleo==0.6.8
-e git+https://github.com/sdispater/pendulum.git@bb058f6b78b2d28ef5d9a5e759cfa179a1a713d6#egg=pendulum
orator===0.9.8
"""
......@@ -18,7 +19,7 @@ class MockEnv(BaseMockEnv):
def test_load():
repository = InstalledRepository.load(MockEnv())
assert len(repository.packages) == 2
assert len(repository.packages) == 3
cleo = repository.packages[0]
assert cleo.name == "cleo"
......@@ -30,3 +31,7 @@ def test_load():
assert pendulum.source_type == "git"
assert pendulum.source_url == "https://github.com/sdispater/pendulum.git"
assert pendulum.source_reference == "bb058f6b78b2d28ef5d9a5e759cfa179a1a713d6"
orator = repository.packages[2]
assert orator.name == "orator"
assert orator.version.text == "0.9.8"
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