Skip to content

Commit

Permalink
Only consider desired markers in solver.
Browse files Browse the repository at this point in the history
  • Loading branch information
Klaus Azesberger committed Jan 31, 2022
1 parent 808f08f commit 43ec2cb
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 2 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Change Log

## [1.1.8.1] - 2022-01-31

### Changed

- Changed dependency resolution to only consider desired target environment markers to speed up dependency resolution. Defaults to hard coded values.

## [1.1.8] - 2021-08-19

### Fixed
Expand Down
4 changes: 4 additions & 0 deletions poetry/installation/installer.py
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,10 @@ def _do_install(self, local_repo):
raise ValueError("Extra [{}] is not specified.".format(extra))

self._io.write_line("<info>Updating dependencies</>")

# TODO (kazesberger) use/read/parse custom poetry config from pyproject.toml and provide opportunity to
# configure "target environment markers" so we can skip any non-validating dependency markers

solver = Solver(
self._package,
self._pool,
Expand Down
33 changes: 32 additions & 1 deletion poetry/puzzle/provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

from contextlib import contextmanager
from tempfile import mkdtemp
from typing import Any
from typing import Any, Dict
from typing import List
from typing import Optional

Expand Down Expand Up @@ -479,6 +479,37 @@ def complete_package(
if self._env and not dep.marker.validate(self._env.marker_env):
continue

def get_target_env_markers_from_env_vars() -> Dict[str, str]:
import os

ENV_VAR_PREFIX = "POETRY_MARKER_"
DEFAULT_HARDCODED_MARKERS_DICT = {'implementation_name': 'cpython',
'implementation_version': '3.8.10',
'interpreter_name': 'cp',
'interpreter_version': '38',
'os_name': 'posix',
'platform_machine': 'x86_64',
'platform_python_implementation': 'CPython',
'platform_release': '5.11.0-46-generic',
'platform_system': 'Linux',
'platform_version': '#51~20.04.1-Ubuntu SMP Fri Jan 7 06:51:40 UTC 2022',
'python_full_version': '3.8.10',
'python_version': '3.8',
'sys_platform': 'linux',
'version_info': [3, 8, 10, 'final', 0]}

target_markers = []
for key, val in os.environ.items():
if key[:14] == ENV_VAR_PREFIX:
target_markers.append((key[len(ENV_VAR_PREFIX):].lower(), val))
if target_markers:
return target_markers
else:
return DEFAULT_HARDCODED_MARKERS_DICT

if not dep.marker.validate(get_target_env_markers_from_env_vars()):
continue

if not package.is_root():
if (dep.is_optional() and dep.name not in optional_dependencies) or (
dep.in_extras
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "poetry"
version = "1.1.8"
version = "1.1.8.1"
description = "Python dependency management and packaging made easy."
authors = [
"Sébastien Eustace <sebastien@eustace.io>"
Expand Down

0 comments on commit 43ec2cb

Please # to comment.