|
| 1 | +--- |
| 2 | +layout: single |
| 3 | +title: "Announcing Poetry 1.6.0" |
| 4 | +date: 2023-08-20 |
| 5 | +categories: [releases] |
| 6 | +tags: ["1.x", "1.6"] |
| 7 | +--- |
| 8 | + |
| 9 | +The Poetry team is pleased to announce the immediate availability of Poetry **1.6.0**. |
| 10 | + |
| 11 | +<!--more--> |
| 12 | + |
| 13 | +If you have a previous version of Poetry installed via the [official installer](/docs/#installation), |
| 14 | +getting Poetry **1.6.0** is as easy as: |
| 15 | + |
| 16 | +```bash |
| 17 | +$ poetry self update |
| 18 | +``` |
| 19 | + |
| 20 | +## Highlights |
| 21 | + |
| 22 | +### Official Poetry badge |
| 23 | + |
| 24 | +Poetry provides an official badge that can be used to indicate that a project is managed with Poetry. |
| 25 | +See the [documentation](docs/community/#badge) for details. |
| 26 | + |
| 27 | +### Support for repositories that do not provide a supported hash algorithm |
| 28 | + |
| 29 | +Some outdated package indices do only provide insecure MD5 hashes. |
| 30 | +Poetry 1.6 supports these repositories by calculating a SHA256 hash for the lockfile by itself. |
| 31 | + |
| 32 | +{{% note %}} |
| 33 | +If you care about security, you should still switch to modern package indices that provide secure hashes. |
| 34 | +{{% /note %}} |
| 35 | + |
| 36 | +### Full support for duplicate dependencies with overlapping markers |
| 37 | + |
| 38 | +Poetry 1.6 fully supports duplicate dependencies with overlapping markers. |
| 39 | +Therefore, it transforms a set of dependencies with overlapping markers into |
| 40 | +an equivalent set of dependencies mutually exclusive markers during dependency resolution. |
| 41 | +For example, |
| 42 | + |
| 43 | +```toml |
| 44 | +my-package = [ |
| 45 | + { version = ">=1.0" }, |
| 46 | + { version = "<2", markers = "python_version < '3.10'" }, |
| 47 | + { version = ">=1.5", markers = "sys_platform == 'win32'" }, |
| 48 | +] |
| 49 | +``` |
| 50 | + |
| 51 | +becomes |
| 52 | + |
| 53 | +```toml |
| 54 | +my-package = [ |
| 55 | + { version = ">=1.0", markers = "python_version >= '3.10' and sys_platform != 'win32'" }, |
| 56 | + { version = "<2", markers = "python_version < '3.10' and sys_platform != 'win32'" }, |
| 57 | + { version = ">=1.5", markers = "python_version >= '3.10' and sys_platform = 'win32'" }, |
| 58 | + { version = ">=1.5,<2", markers = "python_version < '3.10' and sys_platform == 'win32'" }, |
| 59 | +] |
| 60 | +``` |
| 61 | + |
| 62 | +so that for each of the resulting markers a valid solution can be found. |
| 63 | + |
| 64 | +If there is a conflict between the constraints of duplicate dependencies with overlapping markers, |
| 65 | +a comprehensive error message is displayed. |
| 66 | +Previously, overlapping markers could result in incorrect dependency resolutions. |
| 67 | + |
| 68 | +### Improved performance of `poetry lock` for certain edge cases |
| 69 | + |
| 70 | +Especially since the release of urllib3 2.0, Poetry has been affected |
| 71 | +by a dramatic performance regression under certain circumstances when boto3 or botocore |
| 72 | +were among the dependencies. That's because Poetry's algorithm decided to resolve |
| 73 | +dependencies with fewer candidates first to find conflicts faster |
| 74 | +(urllib3 has far fewer releases than boto3/botocore). However, all of the many versions |
| 75 | +of boto3/botocore are incompatible with `urllib3 >= 2.0`, so the algorithm has |
| 76 | +to try all of them before it chooses an older version of urllib3. |
| 77 | +Even though resolving dependencies with fewer candidates first will find conflicts |
| 78 | +a bit faster in some cases, it tends to be a lot slower in other cases. |
| 79 | +Therefore, we inverted the heuristics to resolve dependencies with more candidates first, |
| 80 | +which seems to be a bit slower in some cases, but a lot faster in other cases. |
| 81 | + |
| 82 | +## Other important Changes |
| 83 | + |
| 84 | +### Dropping support for Python 3.7 as runtime environment |
| 85 | + |
| 86 | +Poetry 1.6 drops runtime support for Python 3.7. |
| 87 | + |
| 88 | +{{% note %}} |
| 89 | +This change is about installing and running Poetry itself. |
| 90 | +Managing projects requiring Python 3.7 might still work. |
| 91 | +{{% /note %}} |
| 92 | + |
| 93 | +## Changelog |
| 94 | + |
| 95 | +### TODO: insert changelog |
0 commit comments