From 927100669d4a791efc779ea3b2324f4cdd6b6b1e Mon Sep 17 00:00:00 2001 From: sinoroc Date: Thu, 1 Oct 2020 22:13:01 +0200 Subject: [PATCH] WIP Install locked versions of dependencies GitHub: https://github.com/sinoroc/tox-poetry-dev-dependencies/issues/24 --- src/tox_poetry_dev_dependencies/_hooks.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/tox_poetry_dev_dependencies/_hooks.py b/src/tox_poetry_dev_dependencies/_hooks.py index 21ecec3..360e3a4 100644 --- a/src/tox_poetry_dev_dependencies/_hooks.py +++ b/src/tox_poetry_dev_dependencies/_hooks.py @@ -6,6 +6,7 @@ import typing import poetry.core.factory +import poetry.core.poetry import tox if typing.TYPE_CHECKING: @@ -48,6 +49,12 @@ def tox_addoption(parser: tox.config.Parser) -> None: "'PIP_EXTRA_INDEX_URL')." ), ) + parser.add_testenv_attribute( + 'poetry_install_locked_dependencies', + 'bool', + "Install locked versions of the dependencies according to lock file", + default=False, + ) @tox.hookimpl # type: ignore[misc] @@ -58,6 +65,8 @@ def tox_configure(config: tox.config.Config) -> None: except NoPoetryFound: pass else: + pinned_deps = _get_pinned_deps(poetry_) + # dev_deps = _get_dev_requirements(poetry_) _add_dev_dependencies(config, dev_deps) # @@ -131,6 +140,17 @@ def _get_dev_requirements( return requirements +def _get_pinned_deps( + poetry_: poetry.core.poetry.Poetry, +) -> typing.List[tox.config.DepConfig]: + # + pinned_deps = [ + tox.config.DepConfig(dependency.to_dependency().to_pep_508()) + for dependency in poetry_.locker.get_packages() + ] + return pinned_deps + + def _get_index_servers( poetry_: poetry.core.poetry.Poetry, ) -> 'IndexServersT':