From 1f6550e77c224fd82a8df9f69b4e4e34b7ea72ce Mon Sep 17 00:00:00 2001 From: Ethan Paul <24588726+enpaul@users.noreply.github.com> Date: Thu, 28 Oct 2021 20:09:56 -0400 Subject: [PATCH] Fix error when package under test depends directly on unsafe dependencies Fixes #65 --- tox_poetry_installer/exceptions.py | 5 +++++ tox_poetry_installer/utilities.py | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/tox_poetry_installer/exceptions.py b/tox_poetry_installer/exceptions.py index 44d476f..b789e19 100644 --- a/tox_poetry_installer/exceptions.py +++ b/tox_poetry_installer/exceptions.py @@ -11,6 +11,7 @@ All exceptions should inherit from the common base exception :exc:`ToxPoetryInst +-- LockedDepNotFoundError +-- ExtraNotFoundError +-- LockedDepsRequiredError + +-- RequiresUnsafeDepError """ @@ -41,3 +42,7 @@ class ExtraNotFoundError(ToxPoetryInstallerException): class LockedDepsRequiredError(ToxPoetryInstallerException): """Environment cannot specify unlocked dependencies when locked dependencies are required""" + + +class RequiresUnsafeDepError(ToxPoetryInstallerException): + """Package under test depends on an unsafe dependency and cannot be installed""" diff --git a/tox_poetry_installer/utilities.py b/tox_poetry_installer/utilities.py index 87e1d98..ee12501 100644 --- a/tox_poetry_installer/utilities.py +++ b/tox_poetry_installer/utilities.py @@ -166,6 +166,11 @@ def find_project_deps( :param extras: Sequence of extra names to include the dependencies of """ + if any(dep.name in constants.UNSAFE_PACKAGES for dep in poetry.package.requires): + raise exceptions.RequiresUnsafeDepError( + f"Project package requires one or more unsafe dependencies ({', '.join(constants.UNSAFE_PACKAGES)}) which cannot be installed with Poetry" + ) + base_deps: List[PoetryPackage] = [ packages[item.name] for item in poetry.package.requires