Announcing Poetry 1.1.0
The Poetry team is pleased to announce the immediate availability of Poetry 1.1.0.
Thanks to the maintainers, community and everyone involved in making this release possible.
This release brings a lot of new features and improvements.
If you have a previous version of Poetry installed via the official installer, getting Poetry 1.1.0 is as easy as:
$ poetry self update
1.1
branch of Poetry will be the last to support Python 2.7 and Python 3.5.
Future minor releases, starting with 1.2
, will be only compatible with Python 3.6+.This article will highlight the most important features and changes but the full list is available in the change log.
Brand new installer #
This release brings a brand new, faster installer that supports parallel operations.
The user experience has also been improved by displaying each step of the installation process so users know the progress of the operation.
Note that since it’s a fundamental internal change, it’s still considered experimental.
If you encounter issues with the new installer, you can report them on the Bug tracker.
If these issues are blocking your workflow you can disable the new installer by setting the experimental.new-installer
to false
poetry config experimental.new-installer false
Standalone build backend #
The PEP-517 build backend of Poetry has been extracted into its own, standalone, library.
This change allows for faster builds - via pip
for instance - for Poetry-managed projects.
New projects created with Poetry will already use the proper build-system
backend, but for existing
projects, the build-system
section must be changed from:
[build-system]
requires = ["poetry>=1.1.0"]
build-backend = "poetry.masonry.api"
to
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
UX improvements #
Errors are now better displayed and more intuitive so that they are easier to understand and debug.
Some of them will also be provided with possible solutions and links to the documentation.
Dependency resolution improvements #
The dependency resolution algorithm has been further improved in order to fix some long standing issues.
It’s also now much more accurate for cases of multiple constraints dependencies.
This improved accuracy came at the cost of speed in some cases.
It means that you might see a longer dependency resolution process depending of your set of dependencies.
Lock file format changes #
The format of the lock has changed slightly compared to previous versions to make improvements to the dependency resolution process and installation.
While this version can read previous lock files without issue, older versions of Poetry might not be able to read this new lock file format.
What this actually means is that Poetry 1.0 will not necessarily be able to read lock files generated by Poetry 1.1 and trying to do so might lead to infinite recursions.
Note that lock file formats are now versioned, so Poetry will now either display a warning or return an error if there are incompatibilities or it can’t read the lock file.
Improved install
command #
The install
command now supports a --remove-untracked
option to keep your environment in sync
with the poetry.lock
file. This option ensures that you only have the packages
that are strictly required by your project.
poetry install --remove-untracked
Improved publish
command #
The publish
command now supports a --dry-run
option to check if everything is in order
before uploading to a remote repository.
Publishing error handling and reporting have been improved to help debug issues when uploading packages.
poetry publish --dry-run
Directory dependencies are now non-editable by default #
In previous versions, directory dependencies were installed in “editable” mode by default.
However, this is no longer the case in Poetry 1.1 and they will now be installed fully in the environment.
If you still want to install them in editable mode you need to set the develop
property to true
:
[tool.poetry.dependencies]
my-package = {path = "../path/to/dependency", develop = true}