Commit 490ddf00 by Jake Bier Committed by Sébastien Eustace

Resolve specified extras of poetry directory dependencies (#282) (#323)

* Resolve specified extras of poetry directory dependencies (#282)

* Copy poetry package extras to directory dependency

* Exclude unspecified extras during version resolution

* Add tests in test_installer

* Pass build on Python 3.5

* Remove Python version in test & fixture
parent ec98cdc0
......@@ -77,6 +77,7 @@ class DirectoryDependency(Dependency):
self._package = Package(package.pretty_name, package.version)
self._package.requires += package.requires
self._package.dev_requires += package.dev_requires
self._package.extras = package.extras
self._package.python_versions = package.python_versions
self._package.platform = package.platform
else:
......
......@@ -314,9 +314,10 @@ class Provider:
]
def complete_package(self, package): # type: (str, Version) -> Package
if package.is_root() or package.source_type in {"git", "file", "directory"}:
if package.is_root() or package.source_type in {"git", "file"}:
return package
if package.source_type != "directory":
package = self._pool.package(
package.name, package.version.text, extras=package.requires_extras
)
......
[tool.poetry]
name = "project-with-extras"
version = "1.2.3"
description = "This is a description"
authors = ["Your Name <you@example.com>"]
license = "MIT"
[tool.poetry.dependencies]
python = "*"
pendulum = { version = ">=1.4.4", optional = true }
cachy = { version = ">=0.2.0", optional = true }
[tool.poetry.extras]
extras_a = [ "pendulum" ]
extras_b = [ "cachy" ]
[tool.poetry.dev-dependencies]
[[package]]
description = ""
category = "main"
name = "pendulum"
optional = false
platform = "*"
python-versions = "*"
version = "1.4.4"
[[package]]
category = "main"
description = ""
name = "project-with-extras"
optional = false
platform = "*"
python-versions = "*"
version = "1.2.3"
[package.dependencies]
pendulum = ">=1.4.4"
[package.source]
reference = ""
type = "directory"
url = "tests/fixtures/project_with_extras"
[metadata]
content-hash = "123456789"
platform = "*"
python-versions = "*"
[metadata.hashes]
project-with-extras = []
pendulum = []
......@@ -609,7 +609,26 @@ def test_run_installs_with_local_file(installer, locker, repo, package):
assert len(installer.installer.installs) == 2
def test_run_installs_with_local_directory(installer, locker, repo, package):
def test_run_installs_with_local_poetry_directory_and_extras(
installer, locker, repo, package, tmpdir
):
file_path = Path("tests/fixtures/project_with_extras/")
package.add_dependency("demo", {"path": str(file_path), "extras": ["extras_a"]})
repo.add_package(get_package("pendulum", "1.4.4"))
installer.run()
expected = fixture("with-directory-dependency-poetry")
assert locker.written_data == expected
assert len(installer.installer.installs) == 2
def test_run_installs_with_local_setuptools_directory(
installer, locker, repo, package, tmpdir
):
file_path = Path("tests/fixtures/project_with_setup/")
package.add_dependency("demo", {"path": str(file_path)})
......@@ -618,7 +637,7 @@ def test_run_installs_with_local_directory(installer, locker, repo, package):
installer.run()
expected = fixture("with-directory-dependency")
expected = fixture("with-directory-dependency-setuptools")
assert locker.written_data == expected
......
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