Commit 69f2f6db by Sébastien Eustace

Fix potential errors when resolving dependencies for specific packages

parent e82ec7dd
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
### Fixed ### Fixed
- Fixed installation of Poetry git dependencies with a build system. - Fixed installation of Poetry git dependencies with a build system.
- Fixed possible errors when resolving dependencies for specific packages.
## [0.12.4] - 2018-10-21 ## [0.12.4] - 2018-10-21
......
...@@ -73,6 +73,7 @@ class Package(object): ...@@ -73,6 +73,7 @@ class Package(object):
self._python_constraint = parse_constraint("*") self._python_constraint = parse_constraint("*")
self._python_marker = AnyMarker() self._python_marker = AnyMarker()
self.platform = None
self.marker = AnyMarker() self.marker = AnyMarker()
self.root_dir = None self.root_dir = None
...@@ -168,19 +169,6 @@ class Package(object): ...@@ -168,19 +169,6 @@ class Package(object):
return self._python_marker return self._python_marker
@property @property
def platform(self): # type: () -> str
return self._platform
@platform.setter
def platform(self, value): # type: (str) -> None
self._platform = value
self._platform_constraint = parse_generic_constraint(value)
@property
def platform_constraint(self):
return self._platform_constraint
@property
def license(self): def license(self):
return self._license return self._license
......
class RepositoryError(Exception):
pass
class PackageNotFound(Exception):
pass
...@@ -41,6 +41,7 @@ from poetry.utils._compat import Path ...@@ -41,6 +41,7 @@ from poetry.utils._compat import Path
from poetry.utils.helpers import canonicalize_name, get_http_basic_auth from poetry.utils.helpers import canonicalize_name, get_http_basic_auth
from poetry.version.markers import InvalidMarker from poetry.version.markers import InvalidMarker
from .exceptions import PackageNotFound
from .pypi_repository import PyPiRepository from .pypi_repository import PyPiRepository
...@@ -297,7 +298,7 @@ class LegacyRepository(PyPiRepository): ...@@ -297,7 +298,7 @@ class LegacyRepository(PyPiRepository):
def _get_release_info(self, name, version): # type: (str, str) -> dict def _get_release_info(self, name, version): # type: (str, str) -> dict
page = self._get("/{}/".format(canonicalize_name(name).replace(".", "-"))) page = self._get("/{}/".format(canonicalize_name(name).replace(".", "-")))
if page is None: if page is None:
raise ValueError('No package named "{}"'.format(name)) raise PackageNotFound('No package named "{}"'.format(name))
data = { data = {
"name": name, "name": name,
...@@ -310,7 +311,7 @@ class LegacyRepository(PyPiRepository): ...@@ -310,7 +311,7 @@ class LegacyRepository(PyPiRepository):
links = list(page.links_for_version(Version.parse(version))) links = list(page.links_for_version(Version.parse(version)))
if not links: if not links:
raise ValueError( raise PackageNotFound(
'No valid distribution links found for package: "{}" version: "{}"'.format( 'No valid distribution links found for package: "{}" version: "{}"'.format(
name, version name, version
) )
......
from typing import List from typing import List
from typing import Union from typing import Union
import poetry.packages
from .base_repository import BaseRepository from .base_repository import BaseRepository
from .exceptions import PackageNotFound
from .repository import Repository from .repository import Repository
...@@ -65,7 +65,7 @@ class Pool(BaseRepository): ...@@ -65,7 +65,7 @@ class Pool(BaseRepository):
for repository in self._repositories: for repository in self._repositories:
try: try:
package = repository.package(name, version, extras=extras) package = repository.package(name, version, extras=extras)
except ValueError: except PackageNotFound:
continue continue
if package: if package:
......
...@@ -41,6 +41,7 @@ from poetry.utils.helpers import temporary_directory ...@@ -41,6 +41,7 @@ from poetry.utils.helpers import temporary_directory
from poetry.utils.env import Env from poetry.utils.env import Env
from poetry.version.markers import InvalidMarker from poetry.version.markers import InvalidMarker
from .exceptions import PackageNotFound
from .repository import Repository from .repository import Repository
...@@ -225,7 +226,7 @@ class PyPiRepository(Repository): ...@@ -225,7 +226,7 @@ class PyPiRepository(Repository):
def _get_package_info(self, name): # type: (str) -> dict def _get_package_info(self, name): # type: (str) -> dict
data = self._get("pypi/{}/json".format(name)) data = self._get("pypi/{}/json".format(name))
if data is None: if data is None:
raise ValueError("Package [{}] not found.".format(name)) raise PackageNotFound("Package [{}] not found.".format(name))
return data return data
...@@ -261,7 +262,7 @@ class PyPiRepository(Repository): ...@@ -261,7 +262,7 @@ class PyPiRepository(Repository):
json_data = self._get("pypi/{}/{}/json".format(name, version)) json_data = self._get("pypi/{}/{}/json".format(name, version))
if json_data is None: if json_data is None:
raise ValueError("Package [{}] not found.".format(name)) raise PackageNotFound("Package [{}] not found.".format(name))
info = json_data["info"] info = json_data["info"]
data = { data = {
......
import pytest import pytest
from poetry.repositories.exceptions import PackageNotFound
from poetry.repositories.legacy_repository import LegacyRepository from poetry.repositories.legacy_repository import LegacyRepository
from poetry.repositories.legacy_repository import Page from poetry.repositories.legacy_repository import Page
from poetry.utils._compat import Path from poetry.utils._compat import Path
...@@ -55,5 +56,5 @@ def test_sdist_format_support(): ...@@ -55,5 +56,5 @@ def test_sdist_format_support():
def test_missing_version(mocker): def test_missing_version(mocker):
repo = MockRepository() repo = MockRepository()
with pytest.raises(ValueError): with pytest.raises(PackageNotFound):
repo._get_release_info("missing_version", "1.1.0") repo._get_release_info("missing_version", "1.1.0")
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