Skip to content

Infinite loop on add conflict #7398

@JuliusDegesys

Description

@JuliusDegesys
  • Poetry version: Poetry (version 1.3.2)

  • Python version: 3.9.11

  • OS version and name: macOS 13.0.1

  • pyproject.toml: Link

  • 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

When using a path-based dependency, trying to add a new package that conflicts with a sub-dependency leads to an infinite loop.

$ tree .
.
├── my-package
│   ├── setup.py
│   └── src
└── pyproject.toml

cat pyproject.toml

[tool.poetry]
name = "debug-poetry"
version = "0.1.0"
description = ""
authors = []
readme = "README.md"
packages = [{include = "debug_poetry"}]

[tool.poetry.dependencies]
python = "^3.9"
foo = { path = "./my-package", develop = true }

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

my-package/setup.py:

from distutils.core import setup

setup(
    name="foo",
    version="1",
    py_modules=["foo"],
    package_dir={"src": "src"},
    install_requires=["requests~=2.25.1"],
)

At first, I run poetry install --sync --no-root

$ poetry install --sync --no-root              
Creating virtualenv debug-poetry-_DvXptOW-py3.9 in /Users/julius/Library/Caches/pypoetry/virtualenvs
Installing dependencies from lock file

Package operations: 6 installs, 0 updates, 0 removals

  • Installing certifi (2022.12.7)
  • Installing chardet (4.0.0)
  • Installing idna (2.10)
  • Installing urllib3 (1.26.14)
  • Installing requests (2.25.1)
  • Installing foo (1 /Users/julius/src/debug_poetry/my-package)

Then, if I try to add requests@latest, poetry goes into an infinite loop:

$ poetry add -vvv requests@latest | less       
Using virtualenv: /Users/julius/Library/Caches/pypoetry/virtualenvs/debug-poetry-_DvXptOW-py3.9
[keyring.backend] Loading KWallet
[keyring.backend] Loading SecretService
[keyring.backend] Loading Windows
[keyring.backend] Loading chainer
[keyring.backend] Loading libsecret
[keyring.backend] Loading macOS
Creating new session for pypi.org
Source (PyPI): 145 packages found for requests *
Using version ^2.28.2 for requests

Updating dependencies
Resolving dependencies...
   1: fact: debug-poetry is 0.1.0
   1: derived: debug-poetry
   1: fact: debug-poetry depends on foo (*)
   1: fact: debug-poetry depends on requests (^2.28.2)
   1: selecting debug-poetry (0.1.0)
   1: derived: requests (>=2.28.2,<3.0.0)
   1: derived: foo (*) @ file:///Users/julius/src/debug_poetry/my-package
Source (PyPI): 1 packages found for requests >=2.28.2,<3.0.0
   1: fact: foo (1) depends on requests (>=2.25.1,<2.26.0)
   1: derived: not foo (1) @ file:///Users/julius/src/debug_poetry/my-package
   1: fact: foo (1) depends on requests (>=2.25.1,<2.26.0)
   1: conflict: foo (1) depends on requests (>=2.25.1,<2.26.0)
   1: ! foo (1) @ file:///Users/julius/src/debug_poetry/my-package is partially satisfied by not foo (1) @ file:///Users/julius/src/debug_poetry/my-package
   1: ! which is caused by "foo (1) @ file:///Users/julius/src/debug_poetry/my-package depends on requests (>=2.25.1,<2.26.0)"
   1: ! thus: foo (1) @ file:///Users/julius/src/debug_poetry/my-package requires requests (>=2.25.1,<2.26.0)
   1: ! foo (1) @ file:///Users/julius/src/debug_poetry/my-package is partially satisfied by not foo (1) @ file:///Users/julius/src/debug_poetry/my-package
   1: ! which is caused by "foo (1) @ file:///Users/julius/src/debug_poetry/my-package depends on requests (>=2.25.1,<2.26.0)"
   1: ! thus: foo (1) @ file:///Users/julius/src/debug_poetry/my-package requires requests (>=2.25.1,<2.26.0)
   1: ! foo (1) @ file:///Users/julius/src/debug_poetry/my-package is partially satisfied by not foo (1) @ file:///Users/julius/src/debug_poetry/my-package
   1: ! which is caused by "foo (1) @ file:///Users/julius/src/debug_poetry/my-package depends on requests (>=2.25.1,<2.26.0)"
   1: ! thus: foo (1) @ file:///Users/julius/src/debug_poetry/my-package requires requests (>=2.25.1,<2.26.0)
   1: ! foo (1) @ file:///Users/julius/src/debug_poetry/my-package is partially satisfied by not foo (1) @ file:///Users/julius/src/debug_poetry/my-package
   1: ! which is caused by "foo (1) @ file:///Users/julius/src/debug_poetry/my-package depends on requests (>=2.25.1,<2.26.0)"
   1: ! thus: foo (1) @ file:///Users/julius/src/debug_poetry/my-package requires requests (>=2.25.1,<2.26.0)
   1: ! foo (1) @ file:///Users/julius/src/debug_poetry/my-package is partially satisfied by not foo (1) @ file:///Users/julius/src/debug_poetry/my-package
   1: ! which is caused by "foo (1) @ file:///Users/julius/src/debug_poetry/my-package depends on requests (>=2.25.1,<2.26.0)"
   1: ! thus: foo (1) @ file:///Users/julius/src/debug_poetry/my-package requires requests (>=2.25.1,<2.26.0)
...
...
...

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind/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