-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Description
- I have searched the issues of this repo and believe that this is not a duplicate.
- I have searched the documentation and believe that my question is not covered.
Feature Request
When installed, Poetry installs the latest available versions of packages in it's dependency graph.
This has lead to multiple occasions where even when installing a specific version of the Poetry client, differences in the installed libraries have lead to an inconsistent experience.
- e.g. Poetry refuses to install package with correct hash #4523
- which was caused by ongoing releases in
poetry-coredeprecating support formd5hashes
- which was caused by ongoing releases in
- e.g. "Unable to find installation candidates for" packages cached from a LegacyRepository (
/simple) #4688- which was caused by an update to
cachecontrol
- which was caused by an update to
It's quite ironic for a tool which promotes reproducible builds through the use of a lockfile that it should suffer from breakages caused by installing itself via pip.
Given the purpose of Poetry (and poetry-core), it's very likely to be installed and used in a CI pipeline, where stability and reliability are strong concerns. I humbly submit that installing Poetry and poetry-core should be a reproducible act for a given version number.
Suggest that this may be achievable by (preferring the first)
- Having a
poetry buildmode that outputs asetup.pywith frozen dependency specifications based on the lock file- and using this mode for subsequent releases of
poetryandpoetry-core
- and using this mode for subsequent releases of
- Using the output of
pip freezeforinstall-poetry.pyinstead of
if self._git:
specification = "git+" + version
elif self._path:
specification = version
else:
specification = f"poetry=={version}"
subprocess.run(
[str(python), "-m", "pip", "install", specification],