Поэзия: Можем ли мы использовать «явный» приоритет для связанных зависимостей?Python

Программы на Python
Anonymous
Поэзия: Можем ли мы использовать «явный» приоритет для связанных зависимостей?

Сообщение Anonymous »

Предположим, у меня есть три пакета Python: A, B и C. Все они управляются поэтом и публикуются в частном репозитории пакетов.
Пакет B зависит от A, пакет C зависит от B, и все у них есть дополнительные зависимости от пакетов из репозитория PyPI.
Используя поэзию 1.5.1, я попробовал эту настройку, которая у меня не работает (я опустил ненужные части файла pyproject. toml для краткости):

Код: Выделить всё

B/pyproject.toml
:

Код: Выделить всё

[tool.poetry.dependencies]
A = {version = "*", source = "my-private"}

[[tool.poetry.source]]
name = "PyPI"
priority = "primary"

[[tool.poetry.source]]
name = "my-private"
url = "https://gitlab.com/api/v4/groups/65473942/-/packages/pypi/simple"
priority = "explicit"

Код: Выделить всё

C/pyproject.toml
:

Код: Выделить всё

[tool.poetry.dependencies]
B = {version = "*", source = "my-private"}

[[tool.poetry.source]]
name = "PyPI"
priority = "primary"

[[tool.poetry.source]]
name = "my-private"
url = "https://gitlab.com/api/v4/groups/65473942/-/packages/pypi/simple"
priority = "explicit"
Когда я запускаю блокировку поэзии в проекте B, все работает нормально. Я имею в виду, что пакет A находится в репозитории my-private, а все остальные зависимости находятся в PyPI.
Но когда я запускаю блокировку поэзии > в проекте C, то команда завершается с ошибкой, поскольку не удается найти пакет A. Мне кажется, что он пытается установить A из PyPI, но такого пакета нет.
Мои вопросы:
  • Это намеренное поведение или поэтическая ошибка?
  • Можно ли использовать явный приоритет для репозиториев, содержащих пакеты с транзитивными зависимостями ( зависит от B, который зависит от A — все хранится в частном репозитории)?
Единственное решение, которое я могу до сих пор не следует использовать явный приоритет.
Если я изменю приоритет репозитория my-private на значение по умолчанию (и удалю атрибут source в раздел «Зависимости»), то всё работает — все пакеты ищутся в репозитории my-private, и если они там не найдены, то PyPI используется как «запасной вариант».
Но мне все равно интересно, можно ли использовать явный приоритет в этом случае, потому что мне это кажется безопаснее (поэзия завершится неудачей, если мой пакет не будет найден в репозитории my-private и пакет с то же имя из PyPI не будет установлено по ошибке).
Мое текущее решение также не работает должным образом, когда я использую более одного частного репозитория (если они содержат пакеты с одинаковым именем).

Подробнее здесь: https://stackoverflow.com/questions/765 ... pendencies

Вернуться в «Python»