poetry: Repository "private" does not exist | Since 1.1.0

[[tool.poetry.source]]
name = "private"
url = "https://my.private.repo/simple"
secondary = true

Issue

When running a poetry install with a private repo (poetry config http-basic.private is set correctly), I get:

  Stack trace:

  7  /usr/local/lib/python3.7/site-packages/poetry/installation/executor.py:199 in _execute_operation
      197│
      198│             try:
    → 199│                 result = self._do_execute_operation(operation)
      200│             except EnvCommandError as e:
      201│                 if e.e.returncode == -2:

  6  /usr/local/lib/python3.7/site-packages/poetry/installation/executor.py:273 in _do_execute_operation
      271│             return 0
      272│
    → 273│         result = getattr(self, "_execute_{}".format(method))(operation)
      274│
      275│         if result != 0:

  5  /usr/local/lib/python3.7/site-packages/poetry/installation/executor.py:408 in _execute_install
      406│
      407│     def _execute_install(self, operation):  # type: (Install) -> None
    → 408│         return self._install(operation)
      409│
      410│     def _execute_update(self, operation):  # type: (Update) -> None

  4  /usr/local/lib/python3.7/site-packages/poetry/installation/executor.py:434 in _install
      432│             archive = self._download_link(operation, Link(package.source_url))
      433│         else:
    → 434│             archive = self._download(operation)
      435│
      436│         operation_message = self.get_operation_message(operation)

  3  /usr/local/lib/python3.7/site-packages/poetry/installation/executor.py:575 in _download
      573│
      574│     def _download(self, operation):  # type: (Operation) -> Path
    → 575│         link = self._chooser.choose_for(operation.package)
      576│
      577│         return self._download_link(operation, link)

  2  /usr/local/lib/python3.7/site-packages/poetry/installation/chooser.py:60 in choose_for
       58│         """
       59│         links = []
    →  60│         for link in self._get_links(package):
       61│             if link.is_wheel and not Wheel(link.filename).is_supported_by_environment(
       62│                 self._env

  1  /usr/local/lib/python3.7/site-packages/poetry/installation/chooser.py:92 in _get_links
       90│                 repository = self._pool.repository("pypi")
       91│         else:
    →  92│             repository = self._pool.repository(package.source_reference)
       93│
       94│         links = repository.find_links_for_package(package)

  ValueError

  Repository "private" does not exist.

  at /usr/local/lib/python3.7/site-packages/poetry/repositories/pool.py:53 in repository
       49│
       50│         if name in self._lookup:
       51│             return self._repositories[self._lookup[name]]
       52│
    →  53│         raise ValueError('Repository "{}" does not exist.'.format(name))
       54│
       55│     def add_repository(
       56│         self, repository, default=False, secondary=False
       57│     ):  # type: (Repository, bool, bool) -> Pool

If I downgrade to 1.0.10, everything works fine. This error popped at the 1.1.0

About this issue

  • Original URL
  • State: open
  • Created 4 years ago
  • Reactions: 2
  • Comments: 17 (5 by maintainers)

Most upvoted comments

I get a similar issue with the 1.1.2 version. link-python-common is a private repo project.

  • Installing link-python-common (1.0.0): Failed

  RuntimeError

  Unable to find installation candidates for link-python-common (1.0.0)

  at ~/.poetry/lib/poetry/installation/chooser.py:73 in choose_for
       69│             links.append(link)
       70│ 
       71│         if not links:
       72│             raise RuntimeError(
    →  73│                 "Unable to find installation candidates for {}".format(package)
       74│             )
       75│ 
       76│         # Get the best link
       77│         chosen = max(links, key=lambda link: self._sort_key(package, link))

Example of toml file:

[[tool.poetry.source]]
name = "example-test-pypi"
url = "https://exmaple-url-pypi/pypi"
secondary=true

[tool.poetry]
name = "my-example-project-toml"
version = "0.1.0"
description = ""

[tool.poetry.dependencies]
python = "^3.7.7"
link-python-common = "^1.0.0"
xmljson = "^0.2.0"
returns = "^0.13.0"
typing_extensions = "3.7.4"
attrs = "19.1.0"
defusedxml = "^0.6.0"

[tool.poetry.dev-dependencies]
pytest = "^5.1"
mypy = "^0.770.0"
wemake-python-styleguide = "^0.14.0"
pre-commit = "^1.18"
requests = "^2.23.0"

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

Also, I set poetry config http-basic.example-test-pypi my_example_pypy_user my_example_pypi_password

Is there anything I can do to fix this? I can make a PR if you guide me on where and what should be fixed.

Alright, I managed to make it work by tweaking the toml. I moved tool.poetry.dependencies to the top.

I had (which is working on 1.0.10 but not on 1.1.0+)

[[tool.poetry.source]]
name = "private"
url = "https://my.private.repo/simple/"
secondary = true

[tool.poetry]
name = "metrics"
version = "0"
description = ""
authors = [""]

[tool.black]
line-length = 88
target-version = ['py37']
include = '\.pyi?$'
exclude = '''
/(
    \.eggs
  | \.git
  | \.hg
  | \.mypy_cache
  | \.tox
  | \.venv
  | _build
  | buck-out
  | build
  | dist
)/
'''

[tool.coverage.run]
omit = [
    'tests/*',
    '*_pb2.py',
    '*_pb2_grpc.py'
]

[tool.poetry.dependencies]
python = "^3.7"
google-api-python-client = "==1.9.1"
grpcio = "==1.29.0"
grpcio-status = "==1.29.0"
private-logger = "==2.0.2"
protobuf = "==3.11.1"
sentry-sdk = "==0.15.1"
taskipy = ">=1.3.0"
numpy = "*"

[tool.poetry.dev-dependencies]
black = "==19.3b0"
flake8 = "==3.7.9"
mypy = "==0.770"

[tool.taskipy.tasks]
black = "black ."
mypy = "mypy . --ignore-missing-imports"
linter = "flake8 ."

And switched it to

[[tool.poetry.source]]
name = "private"
url = "https://my.private.repo/simple/"
secondary = true

[tool.poetry]
name = "metrics"
version = "0"
description = ""
authors = [""]

[tool.poetry.dependencies]
python = "^3.7"
google-api-python-client = "==1.9.1"
grpcio = "==1.29.0"
grpcio-status = "==1.29.0"
private-logger = "==2.0.2"
protobuf = "==3.11.1"
sentry-sdk = "==0.15.1"
taskipy = ">=1.3.0"
numpy = "*"

[tool.poetry.dev-dependencies]
black = "==19.3b0"
flake8 = "==3.7.9"
mypy = "==0.770"

[tool.black]
line-length = 88
target-version = ['py37']
include = '\.pyi?$'
exclude = '''
/(
    \.eggs
  | \.git
  | \.hg
  | \.mypy_cache
  | \.tox
  | \.venv
  | _build
  | buck-out
  | build
  | dist
)/
'''

[tool.coverage.run]
omit = [
    'tests/*',
    '*_pb2.py',
    '*_pb2_grpc.py'
]

[tool.taskipy.tasks]
black = "black ."
mypy = "mypy . --ignore-missing-imports"
linter = "flake8 ."

And now it works with 1.1.0+.

So I don’t know if we should close the issue, I think it’s still a bug.

I ran into this using poetry 1.6.1 when changing the private repository to be supplemental and specifying the source of my private package as the private repo directly.

Turns out deleting poetry.lock and then running install has solved the problem for me.

I have had the same issue. In my case I had sections in toml file in the following order:

[[tool.poetry.source]]
[tool.black]
[tool.pytest.ini_options]
[tool.poetry.scripts]
[tool.poetry]
[tool.poetry.dependencies]
[tool.poetry.dev-dependencies]
[build-system]

Managed to fix it by moving the tool.poetry.scripts after tool.poetry

Workaround pip install -U 'poetry<1.1.0' failed with 1.1.0-1.1.4

@RobinFrcd yeah; I am aware; i just want to demonstrate that the code got past the credential fetching.