Commit 68f44676 by Sébastien Eustace

Update poetry-core

parent adc3cde3
......@@ -352,14 +352,21 @@ dev = ["pre-commit", "tox"]
[[package]]
name = "poetry-core"
version = "1.0.2"
version = "1.1.0a0"
description = "Poetry PEP 517 Build Backend"
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
python-versions = "^3.6"
develop = false
[package.dependencies]
importlib-metadata = {version = ">=1.7.0,<2.0.0", markers = "python_version >= \"2.7\" and python_version < \"2.8\" or python_version >= \"3.5\" and python_version < \"3.8\""}
importlib-metadata = {version = "^1.7.0", markers = "python_version >= \"3.5\" and python_version < \"3.8\""}
[package.source]
type = "git"
url = "https://github.com/python-poetry/poetry-core"
reference = "master"
resolved_reference = "d0b8f3ff1d2ec94e317d8ec20920f32a5d4992ef"
[[package]]
name = "pre-commit"
......@@ -668,7 +675,7 @@ testing = ["pytest (>=3.5,!=3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake
[metadata]
lock-version = "1.1"
python-versions = "^3.6"
content-hash = "3061627bdc17958f2b0d1dfc86e448e167ff3e97639e6f3c8f67bf0b06d9995c"
content-hash = "0039f039cc6768e38203b79e8aee64fa11a96b781da515b68587b90c97ed048a"
[metadata.files]
appdirs = [
......@@ -900,10 +907,7 @@ pluggy = [
{file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"},
{file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"},
]
poetry-core = [
{file = "poetry-core-1.0.2.tar.gz", hash = "sha256:ff505d656a6cf40ffbf84393d8b5bf37b78523a15def3ac473b6fad74261ee71"},
{file = "poetry_core-1.0.2-py2.py3-none-any.whl", hash = "sha256:ee0ed4164440eeab27d1b01bc7b9b3afdc3124f68d4ea28d0821a402a9c7c044"},
]
poetry-core = []
pre-commit = [
{file = "pre_commit-2.9.0-py2.py3-none-any.whl", hash = "sha256:4aee0db4808fa48d2458cedd5b9a084ef24dda1a0fa504432a11977a4d1cfd0a"},
{file = "pre_commit-2.9.0.tar.gz", hash = "sha256:b2d106d51c6ba6217e859d81774aae33fd825fe7de0dcf0c46e2586333d7a92e"},
......
......@@ -71,7 +71,7 @@ class AddCommand(InstallerCommand, InitCommand):
def handle(self) -> int:
from tomlkit import inline_table
from poetry.core.semver import parse_constraint
from poetry.core.semver.helpers import parse_constraint
packages = self.argument("name")
is_dev = self.option("dev")
......
......@@ -19,7 +19,7 @@ class BuildCommand(EnvCommand):
]
def handle(self) -> None:
from poetry.core.masonry import Builder
from poetry.core.masonry.builder import Builder
fmt = "all"
if self.option("format"):
......
......@@ -11,10 +11,6 @@ from typing import Tuple
from cleo.helpers import argument
from cleo.helpers import option
from poetry.core.pyproject import PyProjectException
from poetry.core.toml.file import TOMLFile
from poetry.factory import Factory
from .command import Command
......@@ -94,6 +90,9 @@ To remove a repository (repo is a short alias for repositories):
from pathlib import Path
from poetry.config.file_config_source import FileConfigSource
from poetry.core.pyproject.exceptions import PyProjectException
from poetry.core.toml.file import TOMLFile
from poetry.factory import Factory
from poetry.locations import CONFIG_DIR
config = Factory.create_config(self.io)
......
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import os
import re
import sys
......@@ -17,9 +14,6 @@ from typing import Union
from cleo.helpers import option
from tomlkit import inline_table
from poetry.core.pyproject import PyProjectException
from poetry.core.pyproject.toml import PyProjectTOML
from .command import Command
from .env_command import EnvCommand
......@@ -70,6 +64,7 @@ The <c1>init</c1> command creates a basic <comment>pyproject.toml</> file in the
def handle(self) -> int:
from pathlib import Path
from poetry.core.pyproject.toml import PyProjectTOML
from poetry.core.vcs.git import GitConfig
from poetry.layouts import layout
from poetry.utils.env import SystemEnv
......@@ -384,6 +379,7 @@ The <c1>init</c1> command creates a basic <comment>pyproject.toml</> file in the
return package.pretty_name, selector.find_recommended_require_version(package)
def _parse_requirements(self, requirements: List[str]) -> List[Dict[str, str]]:
from poetry.core.pyproject.exceptions import PyProjectException
from poetry.puzzle.provider import Provider
result = []
......@@ -534,7 +530,7 @@ The <c1>init</c1> command creates a basic <comment>pyproject.toml</> file in the
return author
def _validate_license(self, license: str) -> str:
from poetry.core.spdx import license_by_id
from poetry.core.spdx.helpers import license_by_id
if license:
license_by_id(license)
......
......@@ -22,7 +22,7 @@ class NewCommand(Command):
def handle(self) -> None:
from pathlib import Path
from poetry.core.semver import parse_constraint
from poetry.core.semver.helpers import parse_constraint
from poetry.core.vcs.git import GitConfig
from poetry.layouts import layout
from poetry.utils.env import SystemEnv
......
......@@ -14,27 +14,18 @@ from gzip import GzipFile
from pathlib import Path
from typing import TYPE_CHECKING
from typing import Any
from urllib.error import HTTPError
from urllib.request import urlopen
from cleo.helpers import argument
from cleo.helpers import option
from poetry.console.exceptions import PoetrySimpleConsoleException
from poetry.core.packages import Dependency
from ..command import Command
if TYPE_CHECKING:
from poetry.core.packages import Package
from poetry.core.semver import Version
try:
from urllib.error import HTTPError
from urllib.request import urlopen
except ImportError:
from urllib2 import HTTPError
from urllib2 import urlopen
from poetry.core.packages.package import Package
from poetry.core.semver.version import Version
BIN = """# -*- coding: utf-8 -*-
......@@ -89,7 +80,8 @@ class SelfUpdateCommand(Command):
def handle(self) -> None:
from poetry.__version__ import __version__
from poetry.core.semver import Version
from poetry.core.packages.dependency import Dependency
from poetry.core.semver.version import Version
from poetry.repositories.pypi_repository import PyPiRepository
self._check_recommended_installation()
......@@ -250,6 +242,8 @@ class SelfUpdateCommand(Command):
def _check_recommended_installation(self) -> None:
from pathlib import Path
from poetry.console.exceptions import PoetrySimpleConsoleException
current = Path(__file__)
try:
current.relative_to(self.home)
......
# -*- coding: utf-8 -*-
from typing import TYPE_CHECKING
from typing import List
from typing import Optional
......@@ -13,8 +12,8 @@ from .env_command import EnvCommand
if TYPE_CHECKING:
from cleo.io.io import IO # noqa
from poetry.core.packages import Dependency
from poetry.core.packages import Package
from poetry.core.packages.dependency import Dependency
from poetry.core.packages.package import Package
from poetry.repositories import Repository
from poetry.repositories.installed_repository import InstalledRepository
......@@ -408,7 +407,7 @@ lists all packages available."""
return selector.find_best_candidate(name, ">={}".format(package.pretty_version))
def get_update_status(self, latest: "Package", package: "Package") -> str:
from poetry.core.semver import parse_constraint
from poetry.core.semver.helpers import parse_constraint
if latest.full_pretty_version == package.full_pretty_version:
return "up-to-date"
......
......@@ -7,7 +7,7 @@ from .command import Command
if TYPE_CHECKING:
from poetry.core.semver import Version
from poetry.core.semver.version import Version
class VersionCommand(Command):
......@@ -79,7 +79,7 @@ patch, minor, major, prepatch, preminor, premajor, prerelease.
)
def increment_version(self, version: str, rule: str) -> "Version":
from poetry.core.semver import Version
from poetry.core.semver.version import Version
try:
version = Version.parse(version)
......
......@@ -14,9 +14,9 @@ from typing import Union
import pkginfo
from poetry.core.factory import Factory
from poetry.core.packages import Package
from poetry.core.packages import ProjectPackage
from poetry.core.packages import dependency_from_pep_508
from poetry.core.packages.dependency import Dependency
from poetry.core.packages.package import Package
from poetry.core.packages.project_package import ProjectPackage
from poetry.core.pyproject.toml import PyProjectTOML
from poetry.core.utils.helpers import parse_requires
from poetry.core.utils.helpers import temporary_directory
......@@ -170,11 +170,11 @@ class PackageInfo:
for req in self.requires_dist or []:
try:
# Attempt to parse the PEP-508 requirement string
dependency = dependency_from_pep_508(req, relative_to=root_dir)
dependency = Dependency.create_from_pep_508(req, relative_to=root_dir)
except InvalidMarker:
# Invalid marker, We strip the markers hoping for the best
req = req.split(";")[0]
dependency = dependency_from_pep_508(req, relative_to=root_dir)
dependency = Dependency.create_from_pep_508(req, relative_to=root_dir)
except ValueError:
# Likely unable to parse constraint so we skip it
self._log(
......
......@@ -2,7 +2,7 @@ from typing import TYPE_CHECKING
if TYPE_CHECKING:
from poetry.core.packages import Package
from poetry.core.packages.package import Package
class BaseInstaller:
......
......@@ -5,7 +5,7 @@ from .base_installer import BaseInstaller
if TYPE_CHECKING:
from poetry.core.packages import Package
from poetry.core.packages.package import Package
class NoopInstaller(BaseInstaller):
......
......@@ -5,7 +5,7 @@ from .operation import Operation
if TYPE_CHECKING:
from poetry.core.packages import Package
from poetry.core.packages.package import Package
class Install(Operation):
......
# -*- coding: utf-8 -*-
from typing import TYPE_CHECKING
from typing import Optional
if TYPE_CHECKING:
from poetry.core.packages import Package
from poetry.core.packages.package import Package
class Operation(object):
......
......@@ -5,7 +5,7 @@ from .operation import Operation
if TYPE_CHECKING:
from poetry.core.packages import Package
from poetry.core.packages.package import Package
class Uninstall(Operation):
......
......@@ -5,7 +5,7 @@ from .operation import Operation
if TYPE_CHECKING:
from poetry.core.packages import Package
from poetry.core.packages.package import Package
class Update(Operation):
......
......@@ -19,7 +19,7 @@ from .base_installer import BaseInstaller
if TYPE_CHECKING:
from poetry.core.packages import Package
from poetry.core.packages.package import Package
class PipInstaller(BaseInstaller):
......@@ -242,8 +242,8 @@ class PipInstaller(BaseInstaller):
return self.run(*args)
def install_git(self, package: "Package") -> None:
from poetry.core.packages import Package
from poetry.core.vcs import Git
from poetry.core.packages.package import Package
from poetry.core.vcs.git import Git
src_dir = self._env.path / "src" / package.name
if src_dir.exists():
......
......@@ -6,7 +6,7 @@ from .version_solver import VersionSolver
if TYPE_CHECKING:
from poetry.core.packages import ProjectPackage
from poetry.core.packages.project_package import ProjectPackage
from poetry.packages import DependencyPackage
from poetry.puzzle.provider import Provider
......
......@@ -6,8 +6,8 @@ from .term import Term
if TYPE_CHECKING:
from poetry.core.packages import Dependency
from poetry.core.packages import Package
from poetry.core.packages.dependency import Dependency
from poetry.core.packages.package import Package
from .incompatibility import Incompatibility
......
......@@ -3,7 +3,7 @@ from typing import List
from typing import Optional
from typing import Tuple
from poetry.core.semver import parse_constraint
from poetry.core.semver.helpers import parse_constraint
from .incompatibility import Incompatibility
from .incompatibility_cause import ConflictCause
......
......@@ -9,8 +9,8 @@ from .term import Term
if TYPE_CHECKING:
from poetry.core.packages import Dependency
from poetry.core.packages import Package
from poetry.core.packages.dependency import Dependency
from poetry.core.packages.package import Package
class PartialSolution:
......
......@@ -3,8 +3,8 @@ from typing import List
if TYPE_CHECKING:
from poetry.core.packages import Package
from poetry.core.packages import ProjectPackage
from poetry.core.packages.package import Package
from poetry.core.packages.project_package import ProjectPackage
class SolverResult:
......
......@@ -10,7 +10,7 @@ if TYPE_CHECKING:
class PythonRequirementSolution(Solution):
def __init__(self, exception: "PackageNotFoundCause") -> None:
from poetry.core.semver import parse_constraint
from poetry.core.semver.helpers import parse_constraint
from poetry.mixology.incompatibility_cause import PythonCause
self._title = "Check your dependencies Python requirement."
......
# -*- coding: utf-8 -*-
from typing import TYPE_CHECKING
from typing import Optional
from poetry.core.packages import Dependency
from poetry.core.packages.dependency import Dependency
from .set_relation import SetRelation
if TYPE_CHECKING:
from poetry.core.semver import VersionTypes
from poetry.core.semver.helpers import VersionTypes
class Term(object):
......
# -*- coding: utf-8 -*-
import time
from typing import TYPE_CHECKING
......@@ -7,9 +6,9 @@ from typing import List
from typing import Optional
from typing import Union
from poetry.core.packages import Dependency
from poetry.core.packages import Package
from poetry.core.packages import ProjectPackage
from poetry.core.packages.dependency import Dependency
from poetry.core.packages.package import Package
from poetry.core.packages.project_package import ProjectPackage
from .failure import SolveFailure
from .incompatibility import Incompatibility
......
......@@ -26,10 +26,9 @@ from tomlkit.exceptions import TOMLKitError
import poetry.repositories
from poetry.core.packages import dependency_from_pep_508
from poetry.core.packages.dependency import Dependency
from poetry.core.packages.package import Package
from poetry.core.semver import parse_constraint
from poetry.core.semver.helpers import parse_constraint
from poetry.core.semver.version import Version
from poetry.core.toml.file import TOMLFile
from poetry.core.version.markers import parse_marker
......@@ -148,7 +147,7 @@ class Locker(object):
for dep in deps:
try:
dependency = dependency_from_pep_508(dep)
dependency = Dependency.create_from_pep_508(dep)
except InvalidRequirement:
# handle lock files with invalid PEP 508
m = re.match(r"^(.+?)(?:\[(.+?)])?(?:\s+\((.+)\))?$", dep)
......
......@@ -6,8 +6,8 @@ from .dependency_package import DependencyPackage
if TYPE_CHECKING:
from poetry.core.packages import Dependency
from poetry.core.packages import Package
from poetry.core.packages.dependency import Dependency
from poetry.core.packages.package import Package
class PackageCollection(list):
......
from __future__ import absolute_import
from __future__ import unicode_literals
from pathlib import Path
from typing import TYPE_CHECKING
from poetry.core.packages import ProjectPackage
from poetry.core.poetry import Poetry as BasePoetry
from .__version__ import __version__
from .config.config import Config
from .packages import Locker
from .repositories.pool import Pool
if TYPE_CHECKING:
from poetry.core.packages.project_package import ProjectPackage
from .config.config import Config
from .packages.locker import Locker
from .repositories.pool import Pool
class Poetry(BasePoetry):
......@@ -20,10 +22,12 @@ class Poetry(BasePoetry):
self,
file: Path,
local_config: dict,
package: ProjectPackage,
locker: Locker,
config: Config,
package: "ProjectPackage",
locker: "Locker",
config: "Config",
):
from .repositories.pool import Pool # noqa
super(Poetry, self).__init__(file, local_config, package)
self._locker = locker
......@@ -31,28 +35,28 @@ class Poetry(BasePoetry):
self._pool = Pool()
@property
def locker(self) -> Locker:
def locker(self) -> "Locker":
return self._locker
@property
def pool(self) -> Pool:
def pool(self) -> "Pool":
return self._pool
@property
def config(self) -> Config:
def config(self) -> "Config":
return self._config
def set_locker(self, locker: Locker) -> "Poetry":
def set_locker(self, locker: "Locker") -> "Poetry":
self._locker = locker
return self
def set_pool(self, pool: Pool) -> "Poetry":
def set_pool(self, pool: "Pool") -> "Poetry":
self._pool = pool
return self
def set_config(self, config: Config) -> "Poetry":
def set_config(self, config: "Config") -> "Poetry":
self._config = config
return self
......@@ -16,13 +16,13 @@ from typing import Union
from cleo.ui.progress_indicator import ProgressIndicator
from poetry.core.packages import Dependency
from poetry.core.packages import DirectoryDependency
from poetry.core.packages import FileDependency
from poetry.core.packages import Package
from poetry.core.packages import URLDependency
from poetry.core.packages import VCSDependency
from poetry.core.packages.dependency import Dependency
from poetry.core.packages.directory_dependency import DirectoryDependency
from poetry.core.packages.file_dependency import FileDependency
from poetry.core.packages.package import Package
from poetry.core.packages.url_dependency import URLDependency
from poetry.core.packages.utils.utils import get_python_constraint_from_marker
from poetry.core.packages.vcs_dependency import VCSDependency
from poetry.core.semver.version import Version
from poetry.core.vcs.git import Git
from poetry.core.version.markers import MarkerUnion
......
......@@ -13,7 +13,7 @@ from typing import Union
from cleo.io.io import IO
from poetry.core.packages import Package
from poetry.core.packages.package import Package
from poetry.core.packages.project_package import ProjectPackage
from poetry.installation.operations import Install
from poetry.installation.operations import Uninstall
......@@ -31,11 +31,11 @@ from .provider import Provider
if TYPE_CHECKING:
from poetry.core.packages import Dependency
from poetry.core.packages import DirectoryDependency
from poetry.core.packages import FileDependency
from poetry.core.packages import URLDependency
from poetry.core.packages import VCSDependency
from poetry.core.packages.dependency import Dependency
from poetry.core.packages.directory_dependency import DirectoryDependency
from poetry.core.packages.file_dependency import FileDependency
from poetry.core.packages.url_dependency import URLDependency
from poetry.core.packages.vcs_dependency import VCSDependency
from poetry.installation.operations import OperationTypes
......
......@@ -4,8 +4,8 @@ from typing import Optional
if TYPE_CHECKING:
from poetry.core.packages import Dependency
from poetry.core.packages import Package
from poetry.core.packages.dependency import Dependency
from poetry.core.packages.package import Package
class BaseRepository(object):
......
......@@ -4,7 +4,7 @@ from pathlib import Path
from typing import Set
from typing import Union
from poetry.core.packages import Package
from poetry.core.packages.package import Package
from poetry.core.utils.helpers import module_name
from poetry.utils._compat import metadata
from poetry.utils.env import Env
......
......@@ -19,12 +19,12 @@ from cachecontrol import CacheControl
from cachecontrol.caches.file_cache import FileCache
from cachy import CacheManager
from poetry.core.packages import Package
from poetry.core.packages.package import Package
from poetry.core.packages.utils.link import Link
from poetry.core.semver import Version
from poetry.core.semver import VersionConstraint
from poetry.core.semver import VersionRange
from poetry.core.semver import parse_constraint
from poetry.core.semver.helpers import parse_constraint
from poetry.core.semver.version import Version
from poetry.core.semver.version_constraint import VersionConstraint
from poetry.core.semver.version_range import VersionRange
from poetry.locations import REPOSITORY_CACHE_DIR
from poetry.utils.helpers import canonicalize_name
from poetry.utils.patterns import wheel_file_re
......@@ -38,7 +38,7 @@ from .pypi_repository import PyPiRepository
if TYPE_CHECKING:
from poetry.core.packages import Dependency
from poetry.core.packages.dependency import Dependency
try:
from html import unescape
......
......@@ -9,8 +9,8 @@ from .repository import Repository
if TYPE_CHECKING:
from poetry.core.packages import Dependency
from poetry.core.packages import Package
from poetry.core.packages.dependency import Dependency
from poetry.core.packages.package import Package
class Pool(BaseRepository):
......
......@@ -4,6 +4,7 @@ import urllib.parse
from collections import defaultdict
from pathlib import Path
from typing import TYPE_CHECKING
from typing import Dict
from typing import List
from typing import Union
......@@ -16,14 +17,13 @@ from cachecontrol.controller import logger as cache_control_logger
from cachy import CacheManager
from html5lib.html5parser import parse
from poetry.core.packages import Dependency
from poetry.core.packages import Package
from poetry.core.packages import dependency_from_pep_508
from poetry.core.packages.dependency import Dependency
from poetry.core.packages.package import Package
from poetry.core.packages.utils.link import Link
from poetry.core.semver import VersionConstraint
from poetry.core.semver import VersionRange
from poetry.core.semver import parse_constraint
from poetry.core.semver.exceptions import ParseVersionError
from poetry.core.semver.helpers import parse_constraint
from poetry.core.semver.version_constraint import VersionConstraint
from poetry.core.semver.version_range import VersionRange
from poetry.core.version.markers import parse_marker
from poetry.locations import REPOSITORY_CACHE_DIR
from poetry.utils._compat import to_str
......@@ -31,7 +31,6 @@ from poetry.utils.helpers import download_file
from poetry.utils.helpers import temporary_directory
from poetry.utils.patterns import wheel_file_re
from ..inspection.info import PackageInfo
from .exceptions import PackageNotFound
from .remote_repository import RemoteRepository
......@@ -41,6 +40,10 @@ cache_control_logger.setLevel(logging.ERROR)
logger = logging.getLogger(__name__)
if TYPE_CHECKING:
from poetry.inspection.info import PackageInfo
class PyPiRepository(RemoteRepository):
CACHE_VERSION = parse_constraint("1.0.0")
......@@ -214,13 +217,15 @@ class PyPiRepository(RemoteRepository):
return data
def get_release_info(self, name: str, version: str) -> PackageInfo:
def get_release_info(self, name: str, version: str) -> "PackageInfo":
"""
Return the release information given a package name and a version.
The information is returned from the cache if it exists
or retrieved from the remote server.
"""
from poetry.inspection.info import PackageInfo
if self._disable_cache:
return PackageInfo.load(self._get_release_info(name, version))
......@@ -254,6 +259,8 @@ class PyPiRepository(RemoteRepository):
return links
def _get_release_info(self, name: str, version: str) -> dict:
from poetry.inspection.info import PackageInfo
self._log("Getting info for {} ({}) from PyPI".format(name, version), "debug")
json_data = self._get("pypi/{}/{}/json".format(name, version))
......@@ -330,7 +337,7 @@ class PyPiRepository(RemoteRepository):
return json_data
def _get_info_from_urls(self, urls: Dict[str, List[str]]) -> PackageInfo:
def _get_info_from_urls(self, urls: Dict[str, List[str]]) -> "PackageInfo":
# Checking wheels first as they are more likely to hold
# the necessary information
if "bdist_wheel" in urls:
......@@ -377,11 +384,11 @@ class PyPiRepository(RemoteRepository):
return info
py2_requires_dist = set(
dependency_from_pep_508(r).to_pep_508()
Dependency.create_from_pep_508(r).to_pep_508()
for r in info.requires_dist
)
py3_requires_dist = set(
dependency_from_pep_508(r).to_pep_508()
Dependency.create_from_pep_508(r).to_pep_508()
for r in py3_info.requires_dist
)
base_requires_dist = py2_requires_dist & py3_requires_dist
......@@ -391,14 +398,14 @@ class PyPiRepository(RemoteRepository):
# Normalizing requires_dist
requires_dist = list(base_requires_dist)
for requirement in py2_only_requires_dist:
dep = dependency_from_pep_508(requirement)
dep = Dependency.create_from_pep_508(requirement)
dep.marker = dep.marker.intersect(
parse_marker("python_version == '2.7'")
)
requires_dist.append(dep.to_pep_508())
for requirement in py3_only_requires_dist:
dep = dependency_from_pep_508(requirement)
dep = Dependency.create_from_pep_508(requirement)
dep.marker = dep.marker.intersect(
parse_marker("python_version >= '3'")
)
......@@ -422,7 +429,9 @@ class PyPiRepository(RemoteRepository):
return self._get_info_from_sdist(urls["sdist"][0])
def _get_info_from_wheel(self, url: str) -> PackageInfo:
def _get_info_from_wheel(self, url: str) -> "PackageInfo":
from poetry.inspection.info import PackageInfo
self._log(
"Downloading wheel: {}".format(
urllib.parse.urlparse(url).path.rsplit("/")[-1]
......@@ -438,7 +447,9 @@ class PyPiRepository(RemoteRepository):
return PackageInfo.from_wheel(filepath)
def _get_info_from_sdist(self, url: str) -> PackageInfo:
def _get_info_from_sdist(self, url: str) -> "PackageInfo":
from poetry.inspection.info import PackageInfo
self._log(
"Downloading sdist: {}".format(
urllib.parse.urlparse(url).path.rsplit("/")[-1]
......
......@@ -2,17 +2,13 @@ from typing import TYPE_CHECKING
from typing import List
from typing import Optional
from poetry.core.semver import VersionConstraint
from poetry.core.semver import VersionRange
from poetry.core.semver import parse_constraint
from .base_repository import BaseRepository
if TYPE_CHECKING:
from poetry.core.packages import Dependency
from poetry.core.packages import Link
from poetry.core.packages import Package
from poetry.core.packages.dependency import Dependency
from poetry.core.packages.package import Package
from poetry.core.packages.utils.link import Link
class Repository(BaseRepository):
......@@ -41,6 +37,10 @@ class Repository(BaseRepository):
return package.clone()
def find_packages(self, dependency: "Dependency") -> List["Package"]:
from poetry.core.semver.helpers import parse_constraint
from poetry.core.semver.version_constraint import VersionConstraint
from poetry.core.semver.version_range import VersionRange
constraint = dependency.constraint
packages = []
ignored_pre_release_packages = []
......
......@@ -31,7 +31,7 @@ from packaging.tags import interpreter_name
from packaging.tags import interpreter_version
from packaging.tags import sys_tags
from poetry.core.semver import parse_constraint
from poetry.core.semver.helpers import parse_constraint
from poetry.core.semver.version import Version
from poetry.core.toml.file import TOMLFile
from poetry.core.version.markers import BaseMarker
......
from typing import TYPE_CHECKING
from typing import Iterable
from typing import Iterator
from typing import List
from typing import Mapping
from typing import Sequence
from poetry.core.packages import Package
from poetry.utils.helpers import canonicalize_name
if TYPE_CHECKING:
from poetry.core.packages.package import Package # noqa
def get_extra_package_names(
packages: Sequence[Package],
packages: Sequence["Package"],
extras: Mapping[str, List[str]],
extra_names: Sequence[str],
) -> Iterator[str]:
......@@ -21,6 +23,9 @@ def get_extra_package_names(
in the `extras` section of `poetry.lock`.
:param extra_names: A list of strings specifying names of extra groups to resolve.
"""
from poetry.core.packages.package import Package # noqa
from poetry.utils.helpers import canonicalize_name
if not extra_names:
return []
......
......@@ -10,7 +10,7 @@ from typing import Optional
from typing import Tuple
from typing import Union
from poetry.core.semver import Version
from poetry.core.semver.version import Version
class SetupReader(object):
......
......@@ -2,8 +2,8 @@ from typing import TYPE_CHECKING
from typing import Optional
from typing import Union
from poetry.core.packages import Package
from poetry.core.semver import Version
from poetry.core.packages.package import Package
from poetry.core.semver.version import Version
if TYPE_CHECKING:
......
......@@ -24,7 +24,7 @@ classifiers = [
[tool.poetry.dependencies]
python = "^3.6"
poetry-core = "^1.0.2"
poetry-core = { git = "https://github.com/python-poetry/poetry-core", branch = "master"}
cleo = "^1.0.0a1"
crashtest = "^0.3.0"
requests = "^2.18"
......
......@@ -2,7 +2,7 @@ from pathlib import Path
from typing import Optional
from typing import Union
from poetry.core.semver import Version
from poetry.core.semver.version import Version
def build_venv(
......
......@@ -5,7 +5,7 @@ from pathlib import Path
import pytest
import tomlkit
from poetry.core.semver import Version
from poetry.core.semver.version import Version
from poetry.core.toml.file import TOMLFile
from poetry.utils.env import MockEnv
from tests.console.commands.env.helpers import build_venv
......
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import sys
from pathlib import Path
import pytest
from poetry.core.semver import Version
from poetry.core.semver.version import Version
from poetry.repositories.legacy_repository import LegacyRepository
from tests.helpers import get_dependency
from tests.helpers import get_package
......
......@@ -4,7 +4,7 @@ import os
import pytest
from poetry.config.config_source import ConfigSource
from poetry.core.pyproject import PyProjectException
from poetry.core.pyproject.exceptions import PyProjectException
from poetry.factory import Factory
......
......@@ -7,9 +7,9 @@ from pathlib import Path
from poetry.console.application import Application
from poetry.core.masonry.utils.helpers import escape_name
from poetry.core.masonry.utils.helpers import escape_version
from poetry.core.packages import Dependency
from poetry.core.packages import Link
from poetry.core.packages import Package
from poetry.core.packages.dependency import Dependency
from poetry.core.packages.package import Package
from poetry.core.packages.utils.link import Link
from poetry.core.toml.file import TOMLFile
from poetry.core.vcs.git import ParsedUrl
from poetry.factory import Factory
......
......@@ -9,7 +9,7 @@ import pytest
from cleo.io.null_io import NullIO
from poetry.core.packages import ProjectPackage
from poetry.core.packages.project_package import ProjectPackage
from poetry.core.toml.file import TOMLFile
from poetry.factory import Factory
from poetry.installation import Installer as BaseInstaller
......
......@@ -8,7 +8,7 @@ import pytest
from cleo.io.null_io import NullIO
from poetry.core.packages import ProjectPackage
from poetry.core.packages.project_package import ProjectPackage
from poetry.core.toml.file import TOMLFile
from poetry.factory import Factory
from poetry.installation import Installer as BaseInstaller
......
from poetry.core.packages import Package
from poetry.core.packages.package import Package
from poetry.factory import Factory
from poetry.mixology.failure import SolveFailure
from poetry.mixology.version_solver import VersionSolver
......
......@@ -5,9 +5,9 @@ import pytest
from cleo.io.null_io import NullIO
from poetry.core.packages import ProjectPackage
from poetry.core.packages.directory_dependency import DirectoryDependency
from poetry.core.packages.file_dependency import FileDependency
from poetry.core.packages.project_package import ProjectPackage
from poetry.core.packages.vcs_dependency import VCSDependency
from poetry.inspection.info import PackageInfo
from poetry.puzzle.provider import Provider
......
......@@ -4,9 +4,9 @@ import pytest
from cleo.io.null_io import NullIO
from poetry.core.packages import Package
from poetry.core.packages import ProjectPackage
from poetry.core.packages import dependency_from_pep_508
from poetry.core.packages.dependency import Dependency
from poetry.core.packages.package import Package
from poetry.core.packages.project_package import ProjectPackage
from poetry.core.version.markers import parse_marker
from poetry.factory import Factory
from poetry.puzzle import Solver
......@@ -1362,9 +1362,9 @@ def test_solver_finds_compatible_package_for_dependency_python_not_fully_compati
def test_solver_does_not_trigger_new_resolution_on_duplicate_dependencies_if_only_extras(
solver, repo, package
):
dep1 = dependency_from_pep_508('B (>=1.0); extra == "foo"')
dep1 = Dependency.create_from_pep_508('B (>=1.0); extra == "foo"')
dep1.activate()
dep2 = dependency_from_pep_508('B (>=2.0); extra == "bar"')
dep2 = Dependency.create_from_pep_508('B (>=2.0); extra == "bar"')
dep2.activate()
package.add_dependency(
......@@ -1496,7 +1496,7 @@ def test_solver_ignores_dependencies_with_incompatible_python_full_version_marke
package_a = get_package("A", "1.0.0")
package_a.requires.append(
dependency_from_pep_508(
Dependency.create_from_pep_508(
'B (<2.0); platform_python_implementation == "PyPy" and python_full_version < "2.7.9"'
)
)
......
......@@ -5,7 +5,7 @@ import pytest
from pytest_mock.plugin import MockFixture
from poetry.core.packages import Package
from poetry.core.packages.package import Package
from poetry.repositories.installed_repository import InstalledRepository
from poetry.utils._compat import metadata
from poetry.utils.env import MockEnv as BaseMockEnv
......
......@@ -5,7 +5,7 @@ from pathlib import Path
import pytest
import requests
from poetry.core.packages import Dependency
from poetry.core.packages.dependency import Dependency
from poetry.factory import Factory
from poetry.repositories.exceptions import PackageNotFound
from poetry.repositories.exceptions import RepositoryError
......
......@@ -9,7 +9,7 @@ import pytest
from requests.exceptions import TooManyRedirects
from requests.models import Response
from poetry.core.packages import Dependency
from poetry.core.packages.dependency import Dependency
from poetry.factory import Factory
from poetry.repositories.pypi_repository import PyPiRepository
from poetry.utils._compat import encode
......
......@@ -11,7 +11,7 @@ import tomlkit
from cleo.io.null_io import NullIO
from poetry.core.semver import Version
from poetry.core.semver.version import Version
from poetry.core.toml.file import TOMLFile
from poetry.factory import Factory
from poetry.utils.env import GET_BASE_PREFIX
......
......@@ -4,7 +4,7 @@ from pathlib import Path
import pytest
from poetry.core.packages import dependency_from_pep_508
from poetry.core.packages.dependency import Dependency
from poetry.core.toml.file import TOMLFile
from poetry.factory import Factory
from poetry.packages import Locker as BaseLocker
......@@ -273,25 +273,23 @@ def test_exporter_can_export_requirements_txt_poetry(tmp_dir, poetry):
# │ │ └── six >=1.4.1
# │ └── jeepney >=0.6 (circular dependency aborted here)
expected = {
"poetry": dependency_from_pep_508("poetry==1.1.4"),
"junit-xml": dependency_from_pep_508("junit-xml==1.9"),
"keyring": dependency_from_pep_508("keyring==21.8.0"),
"secretstorage": dependency_from_pep_508(
"poetry": Dependency.create_from_pep_508("poetry==1.1.4"),
"junit-xml": Dependency.create_from_pep_508("junit-xml==1.9"),
"keyring": Dependency.create_from_pep_508("keyring==21.8.0"),
"secretstorage": Dependency.create_from_pep_508(
"secretstorage==3.3.0; sys_platform=='linux'"
),
"cryptography": dependency_from_pep_508(
"cryptography": Dependency.create_from_pep_508(
"cryptography==3.2; sys_platform=='linux'"
),
"six": dependency_from_pep_508("six==1.15.0"),
"six": Dependency.create_from_pep_508("six==1.15.0"),
}
for line in content.strip().split("\n"):
dependency = dependency_from_pep_508(line)
dependency = Dependency.create_from_pep_508(line)
assert dependency.name in expected
expected_dependency = expected.pop(dependency.name)
assert dependency == expected_dependency
print(dependency.marker)
print(expected_dependency.marker)
assert dependency.marker == expected_dependency.marker
......@@ -356,13 +354,15 @@ def test_exporter_can_export_requirements_txt_pyinstaller(tmp_dir, poetry):
# ├── macholib >=1.8 -- only on Darwin
# │ └── altgraph >=0.15
expected = {
"pyinstaller": dependency_from_pep_508("pyinstaller==4.0"),
"altgraph": dependency_from_pep_508("altgraph==0.17"),
"macholib": dependency_from_pep_508("macholib==1.8; sys_platform == 'darwin'"),
"pyinstaller": Dependency.create_from_pep_508("pyinstaller==4.0"),
"altgraph": Dependency.create_from_pep_508("altgraph==0.17"),
"macholib": Dependency.create_from_pep_508(
"macholib==1.8; sys_platform == 'darwin'"
),
}
for line in content.strip().split("\n"):
dependency = dependency_from_pep_508(line)
dependency = Dependency.create_from_pep_508(line)
assert dependency.name in expected
expected_dependency = expected.pop(dependency.name)
assert dependency == expected_dependency
......@@ -427,20 +427,20 @@ def test_exporter_can_export_requirements_txt_with_nested_packages_and_markers(
content = f.read()
expected = {
"a": dependency_from_pep_508("a==1.2.3; python_version < '3.7'"),
"b": dependency_from_pep_508(
"a": Dependency.create_from_pep_508("a==1.2.3; python_version < '3.7'"),
"b": Dependency.create_from_pep_508(
"b==4.5.6; platform_system == 'Windows' and python_version < '3.7'"
),
"c": dependency_from_pep_508(
"c": Dependency.create_from_pep_508(
"c==7.8.9; sys_platform == 'win32' and python_version < '3.7'"
),
"d": dependency_from_pep_508(
"d": Dependency.create_from_pep_508(
"d==0.0.1; platform_system == 'Windows' and python_version < '3.7' or sys_platform == 'win32' and python_version < '3.7'"
),
}
for line in content.strip().split("\n"):
dependency = dependency_from_pep_508(line)
dependency = Dependency.create_from_pep_508(line)
assert dependency.name in expected
expected_dependency = expected.pop(dependency.name)
assert dependency == expected_dependency
......
import pytest
from poetry.core.packages import Package
from poetry.core.packages.package import Package
from poetry.factory import Factory
from poetry.utils.extras import get_extra_package_names
......
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