Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"Unimplemented comparison of constraints" error for platform_version dependency marker #9434

Closed
FeodorFitsner opened this issue May 22, 2024 · 1 comment · Fixed by python-poetry/poetry-core#722
Labels
area/core Related to the poetry-core library kind/bug Something isn't working as expected

Comments

@FeodorFitsner
Copy link

Description

Getting "Unimplemented comparison of constraints" error while trying to use platform_version marker in dependency.

Running:

% poetry install

Gives:

Installing dependencies from lock file

Unimplemented comparison of constraints

Dependency from pyproject.toml:

[tool.poetry.dependencies]
oauthlib = { version = "^3.2.2", markers = "platform_system == 'Darwin' and 'arm' not in platform_version" }

Workarounds

No workarounds.

Poetry Installation Method

install.python-poetry.org

Operating System

macOS 14.5 (23F79)

Poetry Version

1.8.3

Poetry Configuration

cache-dir = "/Users/user/Library/Caches/pypoetry"
experimental.system-git-client = false
installer.max-workers = null
installer.modern-installation = true
installer.no-binary = null
installer.parallel = true
keyring.enabled = true
solver.lazy-wheel = true
virtualenvs.create = true
virtualenvs.in-project = null
virtualenvs.options.always-copy = false
virtualenvs.options.no-pip = false
virtualenvs.options.no-setuptools = false
virtualenvs.options.system-site-packages = false
virtualenvs.path = "{cache-dir}/virtualenvs"  # /Users/user/Library/Caches/pypoetry/virtualenvs
virtualenvs.prefer-active-python = false
virtualenvs.prompt = "{project_name}-py{python_version}"
warnings.export = true

Python Sysconfig

No response

Example pyproject.toml

[tool.poetry.dependencies]
oauthlib = { version = "^3.2.2", markers = "platform_system == 'Darwin' and 'arm' not in platform_version" }

Poetry Runtime Logs

Installing dependencies from lock file

Finding the necessary packages for the current system

  Stack trace:

  19  ~/Library/Application Support/pypoetry/venv/lib/python3.11/site-packages/cleo/application.py:327 in run
       325│ 
       326│             try:
     → 327│                 exit_code = self._run(io)
       328│             except BrokenPipeError:
       329│                 # If we are piped to another process, it may close early and send a

  18  ~/Library/Application Support/pypoetry/venv/lib/python3.11/site-packages/poetry/console/application.py:190 in _run
       188│         self._load_plugins(io)
       189│ 
     → 190│         exit_code: int = super()._run(io)
       191│         return exit_code
       192│ 

  17  ~/Library/Application Support/pypoetry/venv/lib/python3.11/site-packages/cleo/application.py:431 in _run
       429│             io.input.interactive(interactive)
       430│ 
     → 431│         exit_code = self._run_command(command, io)
       432│         self._running_command = None
       433│ 

  16  ~/Library/Application Support/pypoetry/venv/lib/python3.11/site-packages/cleo/application.py:473 in _run_command
       471│ 
       472│         if error is not None:
     → 473│             raise error
       474│ 
       475│         return terminate_event.exit_code

  15  ~/Library/Application Support/pypoetry/venv/lib/python3.11/site-packages/cleo/application.py:457 in _run_command
       455│ 
       456│             if command_event.command_should_run():
     → 457│                 exit_code = command.run(io)
       458│             else:
       459│                 exit_code = ConsoleCommandEvent.RETURN_CODE_DISABLED

  14  ~/Library/Application Support/pypoetry/venv/lib/python3.11/site-packages/cleo/commands/base_command.py:117 in run
       115│         io.input.validate()
       116│ 
     → 117│         return self.execute(io) or 0
       118│ 
       119│     def merge_application_definition(self, merge_args: bool = True) -> None:

  13  ~/Library/Application Support/pypoetry/venv/lib/python3.11/site-packages/cleo/commands/command.py:61 in execute
        59│ 
        60│         try:
     →  61│             return self.handle()
        62│         except KeyboardInterrupt:
        63│             return 1

  12  ~/Library/Application Support/pypoetry/venv/lib/python3.11/site-packages/poetry/console/commands/install.py:153 in handle
       151│         self.installer.verbose(self.io.is_verbose())
       152│ 
     → 153│         return_code = self.installer.run()
       154│ 
       155│         if return_code != 0:

  11  ~/Library/Application Support/pypoetry/venv/lib/python3.11/site-packages/poetry/installation/installer.py:104 in run
       102│             self.verbose(True)
       103│ 
     → 104│         return self._do_install()
       105│ 
       106│     def dry_run(self, dry_run: bool = True) -> Installer:

  10  ~/Library/Application Support/pypoetry/venv/lib/python3.11/site-packages/poetry/installation/installer.py:301 in _do_install
       299│ 
       300│         with solver.use_environment(self._env):
     → 301│             ops = solver.solve(use_latest=self._whitelist).calculate_operations(
       302│                 with_uninstalls=self._requires_synchronization,
       303│                 synchronize=self._requires_synchronization,

   9  ~/Library/Application Support/pypoetry/venv/lib/python3.11/site-packages/poetry/puzzle/solver.py:71 in solve
        69│         with self._progress(), self._provider.use_latest_for(use_latest or []):
        70│             start = time.time()
     →  71│             packages, depths = self._solve()
        72│             end = time.time()
        73│ 

   8  ~/Library/Application Support/pypoetry/venv/lib/python3.11/site-packages/poetry/puzzle/solver.py:154 in _solve
       152│ 
       153│         try:
     → 154│             result = resolve_version(self._package, self._provider)
       155│ 
       156│             packages = result.packages

   7  ~/Library/Application Support/pypoetry/venv/lib/python3.11/site-packages/poetry/mixology/__init__.py:18 in resolve_version
        16│     solver = VersionSolver(root, provider)
        17│ 
     →  18│     return solver.solve()
        19│ 

   6  ~/Library/Application Support/pypoetry/venv/lib/python3.11/site-packages/poetry/mixology/version_solver.py:175 in solve
       173│             while next is not None:
       174│                 self._propagate(next)
     → 175│                 next = self._choose_package_version()
       176│ 
       177│             return self._result()

   5  ~/Library/Application Support/pypoetry/venv/lib/python3.11/site-packages/poetry/mixology/version_solver.py:514 in _choose_package_version
       512│             package = locked
       513│ 
     → 514│         package = self._provider.complete_package(package)
       515│ 
       516│         conflict = False

   4  ~/Library/Application Support/pypoetry/venv/lib/python3.11/site-packages/poetry/puzzle/provider.py:544 in complete_package
       542│                 continue
       543│ 
     → 544│             if self._env and not dep.marker.validate(self._env.marker_env):
       545│                 continue
       546│ 

   3  ~/Library/Application Support/pypoetry/venv/lib/python3.11/site-packages/poetry/core/version/markers.py:649 in validate
        647│ 
        648│     def validate(self, environment: dict[str, Any] | None) -> bool:
     →  649│         return all(m.validate(environment) for m in self._markers)
        650│ 
        651│     def without_extras(self) -> BaseMarker:

   2  ~/Library/Application Support/pypoetry/venv/lib/python3.11/site-packages/poetry/core/version/markers.py:649 in <genexpr>
        647│ 
        648│     def validate(self, environment: dict[str, Any] | None) -> bool:
     →  649│         return all(m.validate(environment) for m in self._markers)
        650│ 
        651│     def without_extras(self) -> BaseMarker:

   1  ~/Library/Application Support/pypoetry/venv/lib/python3.11/site-packages/poetry/core/version/markers.py:268 in validate
        266│         # to know that.
        267│         constraint = self._parser(environment[self._name])
     →  268│         return self._constraint.allows(constraint)  # type: ignore[arg-type]
        269│ 
        270│     def without_extras(self) -> BaseMarker:

  ValueError

  Unimplemented comparison of constraints

  at ~/Library/Application Support/pypoetry/venv/lib/python3.11/site-packages/poetry/core/constraints/generic/constraint.py:58 in allows
       54│         return self._operator
       55│ 
       56│     def allows(self, other: BaseConstraint) -> bool:
       57│         if not isinstance(other, Constraint):
    →  58│             raise ValueError("Unimplemented comparison of constraints")
       59│ 
       60│         is_equal_op = self._operator == "=="
       61│         is_non_equal_op = self._operator == "!="
       62│         is_other_equal_op = other.operator == "=="
@FeodorFitsner FeodorFitsner added kind/bug Something isn't working as expected status/triage This issue needs to be triaged labels May 22, 2024
@radoering radoering added area/core Related to the poetry-core library and removed status/triage This issue needs to be triaged labels Jul 27, 2024
Copy link

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Aug 30, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area/core Related to the poetry-core library kind/bug Something isn't working as expected
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants