|
| 1 | +--- |
| 2 | +layout: single |
| 3 | +title: "Announcing Poetry 2.3.0" |
| 4 | +date: 2026-01-18 |
| 5 | +categories: [releases] |
| 6 | +tags: ["2.x", "2.3"] |
| 7 | +--- |
| 8 | + |
| 9 | +The Poetry team is pleased to announce the immediate availability of Poetry **2.3.0**. |
| 10 | + |
| 11 | +<!--more--> |
| 12 | + |
| 13 | +If you have a previous version of Poetry installed via `pipx`, |
| 14 | +getting Poetry **2.3.0** is as easy as: |
| 15 | + |
| 16 | +```bash |
| 17 | +$ pipx upgrade poetry |
| 18 | +``` |
| 19 | + |
| 20 | +If you used the [official installer](/docs/#installation), you can run: |
| 21 | + |
| 22 | +```bash |
| 23 | +$ poetry self update |
| 24 | +``` |
| 25 | + |
| 26 | +## Highlights |
| 27 | + |
| 28 | +### Changing the default of `installer.re-resolve` from `true` to `false` |
| 29 | + |
| 30 | +With Poetry 2.0.0, the new `installer.re-resolve` config setting was [introduced](blog/announcing-poetry-2.0.0/#locking-resulting-markers-and-groups). |
| 31 | +The default of this setting is changed from `true` to `false` in Poetry 2.3.0. |
| 32 | + |
| 33 | +By default, Poetry will now evaluate the locked groups and markers to decide |
| 34 | +if a package should be installed. This makes it clearer and easier to understand |
| 35 | +why a package is (or is not) installed in certain environments. |
| 36 | +It also fixes some shortcomings of the previous default behavior. |
| 37 | + |
| 38 | +If you encounter any issues, you can still restore the old default behavior by setting `installer.re-resolve` to `true`. |
| 39 | +Then, Poetry will ignore the locked markers and groups and re-resolve the dependencies |
| 40 | +with the packages from the lock file being the only source for packages. |
| 41 | + |
| 42 | +### Adding support for exporting `pylock.toml` files with `poetry-plugin-export` |
| 43 | + |
| 44 | +[PEP 751](https://peps.python.org/pep-0751/) defines a standard format for lock files named `pylock.toml`. |
| 45 | +Poetry is not yet able to replace `poetry.lock` with `pylock.toml`, but it now provides all necessary information |
| 46 | +for [poetry-plugin-export](https://github.com/python-poetry/poetry-plugin-export) to export `pylock.toml` files. |
| 47 | +Exporting `pylock.toml` requires at least Poetry 2.3.0 and poetry-plugin-export 1.10.0. |
| 48 | + |
| 49 | +## Other important Changes |
| 50 | + |
| 51 | +### Considering PEP 735 dependency groups in the lock file hash |
| 52 | + |
| 53 | +Poetry 2.2.0 introduced support for [PEP 735](https://peps.python.org/pep-0735/) dependency groups. |
| 54 | +Unfortunately, it was forgotten to consider such groups in the lock file hash so that Poetry is not able to determine |
| 55 | +that a change to such groups is not yet reflected in the lock file. This has been fixed in Poetry 2.3.0. |
| 56 | +While Poetry 2.3.0 is fine with lock files created by Poetry 2.2.x, Poetry 2.2.x will recognize lock files |
| 57 | +created by Poetry 2.3.0 as outdated. Therefore, it is recommended to [require](/docs/pyproject/#requires-poetry) |
| 58 | +Poetry 2.3.0 or later when using PEP 735 dependency groups. |
| 59 | + |
| 60 | +## Upcoming Changes |
| 61 | + |
| 62 | +### Defaulting to `setuptools` instead of `poetry-core` if no build system is defined |
| 63 | + |
| 64 | +Per [PEP 517](https://peps.python.org/pep-0517/), a build tool should fall back to `setuptools` if no build system is |
| 65 | +defined in the `[build-system]` section of `pyproject.toml`. However, to avoid immediate disruption, Poetry will |
| 66 | +currently issue a **warning** in such cases and continue using the built-in `poetry-core` backend by default. |
| 67 | +This behavior will change in a future minor release so that Poetry will default to `setuptools` |
| 68 | +if no `[build-system]` section is defined. |
| 69 | + |
| 70 | +## Changelog |
| 71 | + |
| 72 | +# TODO |
0 commit comments