diff --git a/README.md b/README.md index eaa72c12813..6fd3ae13740 100644 --- a/README.md +++ b/README.md @@ -97,72 +97,6 @@ It takes inspiration in tools that exist in other languages, like `composer` (PH And, finally, I started `poetry` to bring another exhaustive dependency resolver to the Python community apart from [Conda's](https://conda.io). -### What about Pipenv? - -In short: I do not like the CLI it provides, or some of the decisions made, -and I think we can make a better and more intuitive one. Here are a few things -that I don't like. - -#### Dependency resolution - -The dependency resolution is erratic and will fail even if there is a solution. Let's take an example: - -```bash -pipenv install oslo.utils==1.4.0 -``` - -will fail with this error: - -```text -Could not find a version that matches pbr!=0.7,!=2.1.0,<1.0,>=0.6,>=2.0.0 -``` - -while Poetry will get you the right set of packages: - -```bash -poetry add oslo.utils=1.4.0 -``` - -results in : - -```text - - Installing pytz (2018.3) - - Installing netifaces (0.10.6) - - Installing netaddr (0.7.19) - - Installing oslo.i18n (2.1.0) - - Installing iso8601 (0.1.12) - - Installing six (1.11.0) - - Installing babel (2.5.3) - - Installing pbr (0.11.1) - - Installing oslo.utils (1.4.0) -``` - -This is possible thanks to the efficient dependency resolver at the heart of Poetry. - -Here is a breakdown of what exactly happens here: - -`oslo.utils (1.4.0)` depends on: - -- `pbr (>=0.6,!=0.7,<1.0)` -- `Babel (>=1.3)` -- `six (>=1.9.0)` -- `iso8601 (>=0.1.9)` -- `oslo.i18n (>=1.3.0)` -- `netaddr (>=0.7.12)` -- `netifaces (>=0.10.4)` - -What interests us is `pbr (>=0.6,!=0.7,<1.0)`. - -At this point, poetry will choose `pbr==0.11.1` which is the latest version that matches the constraint. - -Next it will try to select `oslo.i18n==3.20.0` which is the latest version that matches `oslo.i18n (>=1.3.0)`. - -However this version requires `pbr (!=2.1.0,>=2.0.0)` which is incompatible with `pbr==0.11.1`, -so `poetry` will try to find a version of `oslo.i18n` that satisfies `pbr (>=0.6,!=0.7,<1.0)`. - -By analyzing the releases of `oslo.i18n`, it will find `oslo.i18n==2.1.0` which requires `pbr (>=0.11,<2.0)`. -At this point the rest of the resolution is straightforward since there is no more conflict. - ## Resources * [Official Website](https://python-poetry.org)