Follow PEP 440 and install non-dev versions if `--pre` is not given
See original GitHub issuePeople installing scanpy==1.4.4.post1
(which specifies anndata>=0.6.22rc1
) currently get anndata==0.7rc2
. I think they should get anndata==0.6.22
instead.
What’s the problem this feature will solve?
Currently pip treats the >=
and rc
parts separately:
>=
means to pip “Anything bigger is OK” (except for rcs and alphas and betas)rc
means “The user is OK with release candidates”
I don’t think that makes sense: When you specify a dependency as >=X.YrcZ
, you mean “I need X.Y and consider the prereleases of X.Y to be stable enough”. It doesn’t mean you extend trust to any future prereleases of that package.
Describe the solution you’d like
If rc, alpha, beta, … appears in a version, >= should mean “get me any higher development versions of that version, or any higher release versions” E.g. >=0.6.22a1
should mean 0.6.22a2
, 0.6.22b1
, 0.6.22rc2
, are OK, and any stable version >=0.6.22
Follow PEP 440 as described below:
Issue Analytics
- State:
- Created 4 years ago
- Reactions:2
- Comments:14 (7 by maintainers)
Top GitHub Comments
I wouldn’t say conclusively (yet?) this is what the users expect as a consensus. And pip maintainers most certainly do not intend to send that message if they do decide to stick with the current behaviour. Please keep things reasonable here.
I don’t think there is a change in the version specification logic, but a weird quirk in the dependency discovery logic:
The “difference” between pip 19 and 20 you see is due to
co2mpas
changing its dependencies. pip did not change.