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