Commit 1ebd629e by Sébastien Eustace

Fix an error when adding packages with invalid versions

parent 201fb6da
......@@ -5,6 +5,7 @@
### Fixed
- Fixed the way packages information are retrieved for legacy repositories.
- Fixed an error when adding packages with invalid versions.
## [0.12.10] - 2018-11-22
......
......@@ -34,6 +34,7 @@ from poetry.packages import Package
from poetry.semver import parse_constraint
from poetry.semver import VersionConstraint
from poetry.semver import VersionRange
from poetry.semver.exceptions import ParseVersionError
from poetry.utils._compat import Path
from poetry.utils._compat import to_str
from poetry.utils.helpers import parse_requires
......@@ -116,7 +117,16 @@ class PyPiRepository(Repository):
)
continue
package = Package(name, version)
try:
package = Package(name, version)
except ParseVersionError:
self._log(
'Unable to parse version "{}" for the {} package, skipping'.format(
version, name
),
level="debug",
)
continue
if package.is_prerelease() and not allow_prereleases:
continue
......
class ParseVersionError(ValueError):
pass
......@@ -4,6 +4,7 @@ from typing import List
from typing import Union
from .empty_constraint import EmptyConstraint
from .exceptions import ParseVersionError
from .patterns import COMPLETE_VERSION
from .version_constraint import VersionConstraint
from .version_range import VersionRange
......@@ -197,7 +198,7 @@ class Version(VersionRange):
def parse(cls, text): # type: (str) -> Version
match = COMPLETE_VERSION.match(text)
if match is None:
raise ValueError('Unable to parse "{}".'.format(text))
raise ParseVersionError('Unable to parse "{}".'.format(text))
text = text.rstrip(".")
......
......@@ -18,6 +18,7 @@ from tests.helpers import get_package
from tests.repositories.test_legacy_repository import (
MockRepository as MockLegacyRepository,
)
from tests.repositories.test_pypi_repository import MockRepository as MockPyPIRepository
@pytest.fixture()
......@@ -1534,3 +1535,20 @@ def test_solver_can_solve_with_legacy_repository_using_proper_python_compatible_
check_solver_result(
ops, [{"job": "install", "package": get_package("isort", "4.3.4")}]
)
def test_solver_skips_invalid_versions(package, installed, locked, io):
package.python_versions = "^3.7"
repo = MockPyPIRepository()
pool = Pool([repo])
solver = Solver(package, pool, installed, locked, io)
package.add_dependency("trackpy", "^0.4")
ops = solver.solve()
check_solver_result(
ops, [{"job": "install", "package": get_package("trackpy", "0.4.1")}]
)
{
"info": {
"author": "Trackpy Contributors",
"author_email": "daniel.b.allan@gmail.com",
"bugtrack_url": null,
"classifiers": [],
"description": "",
"description_content_type": "",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/soft-matter/trackpy",
"keywords": "",
"license": "",
"maintainer": "",
"maintainer_email": "",
"name": "trackpy",
"package_url": "https://pypi.org/project/trackpy/",
"platform": "",
"project_url": "https://pypi.org/project/trackpy/",
"project_urls": {
"Homepage": "https://github.com/soft-matter/trackpy"
},
"release_url": "https://pypi.org/project/trackpy/0.4.1/",
"requires_dist": null,
"requires_python": "",
"summary": "particle-tracking toolkit",
"version": "0.4.1"
},
"last_serial": 3786947,
"releases": {
"0.4.1": [
{
"comment_text": "",
"digests": {
"md5": "4c92e8b74840f57c6047f56a4a4412c4",
"sha256": "f682f75e99f6c29c65e8531899b957c67d9d5a027b28b44258fa2c4a18e851cd"
},
"downloads": -1,
"filename": "trackpy-0.4.1.tar.gz",
"has_sig": false,
"md5_digest": "4c92e8b74840f57c6047f56a4a4412c4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 121998,
"upload_time": "2018-04-21T09:59:50",
"url": "https://files.pythonhosted.org/packages/62/31/797febf2ea8ea316c345c1d0f10503c3901f3fca5c3ffdc6e92717efdcad/trackpy-0.4.1.tar.gz"
}
],
"unknown": [
{
"comment_text": "",
"digests": {
"md5": "6a879fe7871bd5c62d41b5a2ed84a5cd",
"sha256": "88fedb53b03451a56422d4ecb393ea6bb043e821b3ee1e6518485b303e3bddf5"
},
"downloads": -1,
"filename": "trackpy-unknown.tar.gz",
"has_sig": false,
"md5_digest": "6a879fe7871bd5c62d41b5a2ed84a5cd",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 63292,
"upload_time": "2014-10-13T17:33:16",
"url": "https://files.pythonhosted.org/packages/35/23/3b6422d3c006251e2ad857f5fe520b193d473154f88d1f27de50798f2c6c/trackpy-unknown.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "4c92e8b74840f57c6047f56a4a4412c4",
"sha256": "f682f75e99f6c29c65e8531899b957c67d9d5a027b28b44258fa2c4a18e851cd"
},
"downloads": -1,
"filename": "trackpy-0.4.1.tar.gz",
"has_sig": false,
"md5_digest": "4c92e8b74840f57c6047f56a4a4412c4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 121998,
"upload_time": "2018-04-21T09:59:50",
"url": "https://files.pythonhosted.org/packages/62/31/797febf2ea8ea316c345c1d0f10503c3901f3fca5c3ffdc6e92717efdcad/trackpy-0.4.1.tar.gz"
}
]
}
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