mirror of
https://github.com/enpaul/tox-poetry-installer.git
synced 2025-09-18 03:13:25 +00:00
Change version to 0.9, address some review nits and use poetry 1.2 rather than pre-release.
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# pylint: disable=missing-docstring
|
||||
__title__ = "tox-poetry-installer"
|
||||
__summary__ = "A plugin for Tox that lets you install test environment dependencies from the Poetry lockfile"
|
||||
__version__ = "1.0a1"
|
||||
__version__ = "0.9.0"
|
||||
__url__ = "https://github.com/enpaul/tox-poetry-installer/"
|
||||
__license__ = "MIT"
|
||||
__authors__ = ["Ethan Paul <24588726+enpaul@users.noreply.github.com>"]
|
||||
|
@@ -20,6 +20,7 @@ PEP508_VERSION_DELIMITERS: Tuple[str, ...] = ("~=", "==", "!=", ">", "<")
|
||||
REPORTER_PREFIX: str = f"{__about__.__title__}:"
|
||||
|
||||
# Internal list of packages that poetry has deemed unsafe and are excluded from the lockfile
|
||||
# TODO: This functionality is no longer needed, should remove in a future update.
|
||||
UNSAFE_PACKAGES: Set[str] = set()
|
||||
|
||||
# Number of threads to use for installing dependencies by default
|
||||
|
@@ -193,7 +193,7 @@ def tox_testenv_install_deps(venv: ToxVirtualEnv, action: ToxAction) -> Optional
|
||||
f"Identified {len(dev_deps)} development dependencies to install to env"
|
||||
)
|
||||
else:
|
||||
dev_deps = set()
|
||||
dev_deps = []
|
||||
logger.info("Env does not install development dependencies, skipping")
|
||||
|
||||
env_deps = utilities.find_additional_deps(
|
||||
@@ -220,7 +220,7 @@ def tox_testenv_install_deps(venv: ToxVirtualEnv, action: ToxAction) -> Optional
|
||||
f"Identified {len(project_deps)} project dependencies to install to env"
|
||||
)
|
||||
else:
|
||||
project_deps = set()
|
||||
project_deps = []
|
||||
logger.info("Env does not install project package dependencies, skipping")
|
||||
except exceptions.ToxPoetryInstallerException as err:
|
||||
venv.status = err.__class__.__name__
|
||||
@@ -231,7 +231,7 @@ def tox_testenv_install_deps(venv: ToxVirtualEnv, action: ToxAction) -> Optional
|
||||
logger.error(f"Internal plugin error: {err}")
|
||||
raise err
|
||||
|
||||
dependencies = dev_deps | env_deps | project_deps
|
||||
dependencies = utilities.dedupe_packages(dev_deps + env_deps + project_deps)
|
||||
if (
|
||||
venv.envconfig.config.option.parallel_install_threads
|
||||
!= constants.DEFAULT_INSTALL_THREADS
|
||||
|
@@ -182,7 +182,7 @@ def find_project_deps(
|
||||
venv: "_poetry.VirtualEnv",
|
||||
poetry: "_poetry.Poetry",
|
||||
extras: Sequence[str] = (),
|
||||
) -> Set[PoetryPackage]:
|
||||
) -> List[PoetryPackage]:
|
||||
"""Find the root project dependencies
|
||||
|
||||
Recursively identify the dependencies of the root project package
|
||||
@@ -218,7 +218,7 @@ def find_project_deps(
|
||||
dep_name.lower(), packages, venv, allow_missing=[poetry.package.name]
|
||||
)
|
||||
|
||||
return set(dependencies)
|
||||
return dedupe_packages(dependencies)
|
||||
|
||||
|
||||
def find_additional_deps(
|
||||
@@ -226,7 +226,7 @@ def find_additional_deps(
|
||||
venv: "_poetry.VirtualEnv",
|
||||
poetry: "_poetry.Poetry",
|
||||
dep_names: Sequence[str],
|
||||
) -> Set[PoetryPackage]:
|
||||
) -> List[PoetryPackage]:
|
||||
"""Find additional dependencies
|
||||
|
||||
Recursively identify the dependencies of an arbitrary list of package names
|
||||
@@ -243,12 +243,12 @@ def find_additional_deps(
|
||||
dep_name.lower(), packages, venv, allow_missing=[poetry.package.name]
|
||||
)
|
||||
|
||||
return set(dependencies)
|
||||
return dedupe_packages(dependencies)
|
||||
|
||||
|
||||
def find_dev_deps(
|
||||
packages: PackageMap, venv: "_poetry.VirtualEnv", poetry: "_poetry.Poetry"
|
||||
) -> Set[PoetryPackage]:
|
||||
) -> List[PoetryPackage]:
|
||||
"""Find the dev dependencies
|
||||
|
||||
Recursively identify the Poetry dev dependencies
|
||||
@@ -277,4 +277,15 @@ def find_dev_deps(
|
||||
)
|
||||
|
||||
# Poetry 1.2 unions these two toml sections.
|
||||
return dev_group_deps | legacy_dev_group_deps
|
||||
return dedupe_packages(dev_group_deps + legacy_dev_group_deps)
|
||||
|
||||
|
||||
def dedupe_packages(packages: Sequence[PoetryPackage]) -> List[PoetryPackage]:
|
||||
"""Deduplicates a sequence of PoetryPackages while preserving ordering
|
||||
|
||||
Adapted from StackOverflow: https://stackoverflow.com/a/480227
|
||||
"""
|
||||
seen: Set[PoetryPackage] = set()
|
||||
# Make this faster, avoid method lookup below
|
||||
seen_add = seen.add
|
||||
return [p for p in packages if not (p in seen or seen_add(p))]
|
||||
|
Reference in New Issue
Block a user