Skip to content

Pedantic IncompatibleConstraintsError with scipy 1.11.2 on Debian #8409

@isosphere

Description

@isosphere
  • Poetry version: 1.6.1

  • Python version: 3.10.13 (installed from source)

  • OS version and name: Debian 12.1 (bookworm), x86_64

  • pyproject.toml: https://raw.githubusercontent.com/isosphere/VolAdjGIPDashboard/master/pyproject.toml

  • I am on the latest stable Poetry version, installed using a recommended method.

  • I have searched the issues of this repo and believe that this is not a duplicate.

  • I have consulted the FAQ and blog for any relevant entries or release notes.

  • If an exception occurs when executing a command, I executed it again in debug mode (-vvv option) and have included the output below.

Issue

poetry env info                                                                                                                                              09/05/2023 01:39:48 PM

Virtualenv
Python:         3.10.13
Implementation: CPython
Path:           /var/vegiportfolio/VolAdjGIPDashboard/.venv
Executable:     /var/vegiportfolio/VolAdjGIPDashboard/.venv/bin/python
Valid:          True

System
Platform:   linux
OS:         posix
Python:     3.10.13
Path:       /usr/bin
Executable: /usr/bin/bin/python3.10

pip 23.2.1

 poetry install -vvv                                                                                                                                          09/05/2023 01:38:22 PM
Loading configuration file /home/matt/.config/pypoetry/config.toml
Using virtualenv: /var/vegiportfolio/VolAdjGIPDashboard/.venv
Installing dependencies from lock file
Warning: poetry.lock is not consistent with pyproject.toml. You may be getting improper dependencies. Run `poetry lock [--no-update]` to fix it.

Finding the necessary packages for the current system

Package operations: 12 installs, 0 updates, 0 removals, 65 skipped

  • Installing scipy (1.11.2): Pending...
[keyring.backend] Loading KWallet
[keyring.backend] Loading SecretService
[keyring.backend] Loading Windows
[keyring.backend] Loading chainer
[keyring.backend] Loading libsecret
[keyring.backend] Loading macOS
No suitable keyring backend found
No suitable keyring backends were found
Keyring is not available, credentials will be stored and retrieved from configuration files as plaintext.
Creating new session for pypi.org
Skipping wheel scipy-1.11.2-cp310-cp310-macosx_10_9_x86_64.whl as this is not supported by the current environment
Skipping wheel scipy-1.11.2-cp310-cp310-macosx_12_0_arm64.whl as this is not supported by the current environment
Skipping wheel scipy-1.11.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl as this is not supported by the current environment
Skipping wheel scipy-1.11.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl as this is not supported by the current environment
Skipping wheel scipy-1.11.2-cp310-cp310-musllinux_1_1_x86_64.whl as this is not supported by the current environment
Skipping wheel scipy-1.11.2-cp310-cp310-win_amd64.whl as this is not supported by the current environment
Skipping wheel scipy-1.11.2-cp311-cp311-macosx_10_9_x86_64.whl as this is not supported by the current environment
Skipping wheel scipy-1.11.2-cp311-cp311-macosx_12_0_arm64.whl as this is not supported by the current environment
Skipping wheel scipy-1.11.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl as this is not supported by the current environment
Skipping wheel scipy-1.11.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl as this is not supported by the current environment
Skipping wheel scipy-1.11.2-cp311-cp311-musllinux_1_1_x86_64.whl as this is not supported by the current environment
Skipping wheel scipy-1.11.2-cp311-cp311-win_amd64.whl as this is not supported by the current environment
Skipping wheel scipy-1.11.2-cp312-cp312-macosx_10_9_x86_64.whl as this is not supported by the current environment
Skipping wheel scipy-1.11.2-cp312-cp312-macosx_12_0_arm64.whl as this is not supported by the current environment
Skipping wheel scipy-1.11.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl as this is not supported by the current environment
Skipping wheel scipy-1.11.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl as this is not supported by the current environment
Skipping wheel scipy-1.11.2-cp312-cp312-musllinux_1_1_x86_64.whl as this is not supported by the current environment
Skipping wheel scipy-1.11.2-cp312-cp312-win_amd64.whl as this is not supported by the current environment
Skipping wheel scipy-1.11.2-cp39-cp39-macosx_10_9_x86_64.whl as this is not supported by the current environment
Skipping wheel scipy-1.11.2-cp39-cp39-macosx_12_0_arm64.whl as this is not supported by the current environment
Skipping wheel scipy-1.11.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl as this is not supported by the current environment
Skipping wheel scipy-1.11.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl as this is not supported by the current environment
Skipping wheel scipy-1.11.2-cp39-cp39-musllinux_1_1_x86_64.whl as this is not supported by the current environment
Skipping wheel scipy-1.11.2-cp39-cp39-win_amd64.whl as this is not supported by the current environment
  • Installing scipy (1.11.2): Preparing...
  • Installing scipy (1.11.2): Failed

  Stack trace:

  18  ~/.local/share/pypoetry/venv/lib/python3.10/site-packages/poetry/installation/executor.py:286 in _execute_operation
       284│
       285│             try:
     → 286│                 result = self._do_execute_operation(operation)
       287│             except EnvCommandError as e:
       288│                 if e.e.returncode == -2:

  17  ~/.local/share/pypoetry/venv/lib/python3.10/site-packages/poetry/installation/executor.py:386 in _do_execute_operation
       384│             return 0
       385│
     → 386│         result: int = getattr(self, f"_execute_{method}")(operation)
       387│
       388│         if result != 0:

  16  ~/.local/share/pypoetry/venv/lib/python3.10/site-packages/poetry/installation/executor.py:511 in _execute_install
       509│
       510│     def _execute_install(self, operation: Install | Update) -> int:
     → 511│         status_code = self._install(operation)
       512│
       513│         self._save_url_reference(operation)

  15  ~/.local/share/pypoetry/venv/lib/python3.10/site-packages/poetry/installation/executor.py:549 in _install
       547│             archive = self._download_link(operation, Link(package.source_url))
       548│         else:
     → 549│             archive = self._download(operation)
       550│
       551│         operation_message = self.get_operation_message(operation)

  14  ~/.local/share/pypoetry/venv/lib/python3.10/site-packages/poetry/installation/executor.py:753 in _download
       751│             self._yanked_warnings.append(message)
       752│
     → 753│         return self._download_link(operation, link)
       754│
       755│     def _download_link(self, operation: Install | Update, link: Link) -> Path:

  13  ~/.local/share/pypoetry/venv/lib/python3.10/site-packages/poetry/installation/executor.py:800 in _download_link
       798│             self._write(operation, message)
       799│
     → 800│             archive = self._chef.prepare(archive, output_dir=output_dir)
       801│
       802│         # Use the original archive to provide the correct hash.

  12  ~/.local/share/pypoetry/venv/lib/python3.10/site-packages/poetry/installation/chef.py:101 in prepare
        99│             return self._prepare(archive, destination=destination, editable=editable)
       100│
     → 101│         return self._prepare_sdist(archive, destination=output_dir)
       102│
       103│     def _prepare(

  11  ~/.local/share/pypoetry/venv/lib/python3.10/site-packages/poetry/installation/chef.py:185 in _prepare_sdist
       183│             destination.mkdir(parents=True, exist_ok=True)
       184│
     → 185│             return self._prepare(
       186│                 sdist_dir,
       187│                 destination,

  10  ~/.local/share/pypoetry/venv/lib/python3.10/site-packages/poetry/installation/chef.py:116 in _prepare
       114│                 runner=quiet_subprocess_runner,
       115│             )
     → 116│             env.install(builder.build_system_requires)
       117│
       118│             stdout = StringIO()

   9  ~/.local/share/pypoetry/venv/lib/python3.10/site-packages/poetry/installation/chef.py:80 in install
        78│         )
        79│         installer.update(True)
     →  80│         installer.run()
        81│
        82│

   8  ~/.local/share/pypoetry/venv/lib/python3.10/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:

   7  ~/.local/share/pypoetry/venv/lib/python3.10/site-packages/poetry/installation/installer.py:241 in _do_install
       239│                 source_root=self._env.path.joinpath("src")
       240│             ):
     → 241│                 ops = solver.solve(use_latest=self._whitelist).calculate_operations()
       242│         else:
       243│             self._io.write_line("Installing dependencies from lock file")

   6  ~/.local/share/pypoetry/venv/lib/python3.10/site-packages/poetry/puzzle/solver.py:72 in solve
        70│         with self._progress(), self._provider.use_latest_for(use_latest or []):
        71│             start = time.time()
     →  72│             packages, depths = self._solve()
        73│             end = time.time()
        74│

   5  ~/.local/share/pypoetry/venv/lib/python3.10/site-packages/poetry/puzzle/solver.py:155 in _solve
       153│
       154│         try:
     → 155│             result = resolve_version(self._package, self._provider)
       156│
       157│             packages = result.packages

   4  ~/.local/share/pypoetry/venv/lib/python3.10/site-packages/poetry/mixology/__init__.py:18 in resolve_version
        16│     solver = VersionSolver(root, provider)
        17│
     →  18│     return solver.solve()
        19│

   3  ~/.local/share/pypoetry/venv/lib/python3.10/site-packages/poetry/mixology/version_solver.py:164 in solve
       162│             while next is not None:
       163│                 self._propagate(next)
     → 164│                 next = self._choose_package_version()
       165│
       166│             return self._result()

   2  ~/.local/share/pypoetry/venv/lib/python3.10/site-packages/poetry/mixology/version_solver.py:503 in _choose_package_version
       501│             package = locked
       502│
     → 503│         package = self._provider.complete_package(package)
       504│
       505│         conflict = False

   1  ~/.local/share/pypoetry/venv/lib/python3.10/site-packages/poetry/puzzle/provider.py:609 in complete_package
       607│             # For dependency resolution, markers of duplicate dependencies must be
       608│             # mutually exclusive.
     → 609│             deps = self._resolve_overlapping_markers(package, deps)
       610│
       611│             if len(deps) == 1:

  IncompatibleConstraintsError

  Incompatible constraints in requirements of -root- (0.0.0):
  numpy (==1.22.0) ; platform_machine == "loongarch64"
  numpy (==1.22.3) ; python_version == "3.10" and platform_system == "Windows" and platform_python_implementation != "PyPy"

  at ~/.local/share/pypoetry/venv/lib/python3.10/site-packages/poetry/puzzle/provider.py:913 in _resolve_overlapping_markers
      909│                     specific_source_dependency = dep
      910│                 constraint = constraint.intersect(dep.constraint)
      911│             if constraint.is_empty():
      912│                 # conflict in overlapping area
    → 913│                 raise IncompatibleConstraintsError(package, *used_dependencies)
      914│
      915│             if not any(uses):
      916│                 # This is an edge case where the dependency is not required
      917│                 # for the resulting marker. However, we have to consider it anyway

This is an x86_64 system on Debian Linux - the above restrictions are irrelevant, or at least the meaning of this error is misleading.

numpy 1.25.2 is installed in the virtual env.

I've reinstalled poetry, and also the virtual env, to no avail. Not sure how to move forward. I've tried specifying different scipy versions, but I just get different variations on the above. I don't understand how constraints that don't apply to my system are preventing installation.

Any advice appreciated!

Possibly related to #7257.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/solverRelated to the dependency resolverkind/bugSomething isn't working as expectedstatus/triageThis issue needs to be triaged

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions