Comments (4)
It should, but it doesn't, because... the existing pip resolver doesn't actually do the right thing. :)
pip's resolver is seeing the tablib requirement before the tablib[pandas] requirement, and moving forward with the first one (because the name matches an already-made choice). That's how the old resolver works (it's a bug, yes), it's a really stupid bug but it's fairly tricky to solve correctly in the current approach of the resolver.
We'd fix this in the next-gen resolver for pip though, which is what we're collecting test cases like this here for!
from zazo.
Thanks for filing this @atugushev! IIUC, records[pandas] should depend on tablib[pandas], instead of the plain tablib.
from zazo.
@pradyunsg shouldn't pip actually install pandas when records[pandas]
has tablib
in install_requires and tablib[pandas]
in extras_require (i.e. union of all extras provided by install_requires and any chosen extras_require)?
this combo, of tablib with and without [pandas]
should imo correctly result in pandas being installed:
$ pipgrip --tree --lock records[pandas]==0.5.3
records[pandas]==0.5.3 (0.5.3)
├── docopt (0.6.2)
├── openpyxl<2.5.0 (2.4.11)
│ ├── et-xmlfile (1.0.1)
│ └── jdcal (1.4.1)
├── sqlalchemy (1.3.16)
├── tablib>=0.11.4 (1.1.0)
└── tablib[pandas] (1.1.0)
└── pandas (1.0.3)
├── numpy>=1.13.3 (1.18.2)
├── python-dateutil>=2.6.1 (2.8.1)
│ └── six>=1.5 (1.14.0)
└── pytz>=2017.2 (2019.3)
$ cat ./pipgrip.lock
records==0.5.3
docopt==0.6.2
openpyxl==2.4.11
et-xmlfile==1.0.1
jdcal==1.4.1
sqlalchemy==1.3.16
tablib==1.1.0
pandas==1.0.3
numpy==1.18.2
python-dateutil==2.8.1
six==1.14.0
pytz==2019.3
from zazo.
Fixed in the new resolver 👍🏼
from zazo.
Related Issues (19)
- <squat>
- Determine a way to sustainably create tests for real world conflicts HOT 2
- Package conflicts detection in large compound projects HOT 3
- elasticsearch 7.0.0 and requests 2.21.0 HOT 1
- dependency failure: hacking, flake8, pycodestyle HOT 2
- Do not break already-installed packages in other directories HOT 4
- Do not overwrite files from already-installed packages HOT 2
- Tricky case: pyrax==1.9.8 -- pip._vendor.resolvelib.resolvers.ResolutionTooDeep: 100 HOT 9
- Example pip9 dependency resolution problem with packages: cherrypy, cheroot, six HOT 3
- `ResolutionTooDeep: 100` with all pinned dependencies, even when they are already satisfied HOT 3
- Pip 20.2.2 with use-feature=2020-resolver is not able to find a conflict in an hour HOT 1
- pip9 dependency failure: tornado + sprockets.http
- pip9 dependency failure: boto3, bravado
- Does this resolve environment markers? HOT 5
- The resolver needs to be able to cope with currently-broken installations HOT 2
- Provide a programming API for the resolver HOT 2
- pip10 dependency failure: flake8-import-order pytest-flake8 HOT 2
- Look into PubGrub
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from zazo.