📦 Add a stable extra for pip upper bound#2257
📦 Add a stable extra for pip upper bound#2257webknjaz wants to merge 2 commits intojazzband:mainfrom
stable extra for pip upper bound#2257Conversation
webknjaz
left a comment
There was a problem hiding this comment.
We'll need some sort of linting for keeping these in sync w/ CI and perhaps docs.
There was a problem hiding this comment.
Pull Request Overview
This PR introduces version constraints for pip to ensure compatibility testing. It adds a new optional dependency group called supported-pip that limits pip to versions below 25.3, and integrates this constraint into the tox testing environments for pipsupported and piplowest configurations.
- Added a new
supported-pipoptional dependency group inpyproject.tomlwith pip version constraint< 25.3 - Updated tox configuration to use the
supported-pipextras forpipsupportedandpiplowesttest environments
Reviewed Changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| pyproject.toml | Adds supported-pip optional dependency group with pip version constraint |
| tox.ini | Integrates supported-pip extras into pipsupported and piplowest test environments |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
sirosen
left a comment
There was a problem hiding this comment.
I am trying to decide what we should name this extra -- not taking it as a given that the proposed name, supported-pip, is best.
I think supported-pip may be confusing if we start pinning anything other than pip in the future. And I think we should at least start with pip-only, which makes the possibility of such confusion stronger in the future. So I think we should remove pip from the name of the extra.
That would leave us with pip-tools[supported], which I think is good. I can't come up with anything better, at least!
That's a good point. Alternatively, we could have multiple composable extras and the users could use |
|
@sirosen should we include this in 7.5.2? |
|
I still feel uncertain about it, at least as far as naming is concerned. |
|
Okay, fair. |
|
I have been thinking about the name here even more. The My main issue is that the opposite of "supported" is "unsupported", so I don't like the possible implication that What if we used (We could start with Stable/unstable is common terminology, and for Python users, familiar with RTD sites, stable/latest is also common. @webknjaz, WDYT? |
|
|
423bd3d to
ac50e3a
Compare
|
@sirosen I've made all the requested changes but I'm not sure if it's time to undraft this yet. Perhaps, we should have some linting/automation for keeping things in sync as a prerequisite for merging the patch. |
pip-supported extra for upper boundstable extra for pip upper bound
ac50e3a to
985cdee
Compare
There was a problem hiding this comment.
985cdee to
c6ac8fc
Compare
242eabe to
ca8ba56
Compare
It is supposed to correspond to the range of what's tested in our CI. Co-Authored-By: Jimmy Merrild Krag <beruic@gmail.com> Co-Authored-By: Stephen Rosen <sirosen@globus.org>
ca8ba56 to
a9d5e56
Compare
|
I'm quite looking forward to this extra as I've been requiring pip-tools as a dev dependency and have been stymied lately by #2252 and a previous pip–pip-tools compatibility problem along the same lines. So it will be quite useful to me to be able to require this extra at some point, to easily give users a known-good configuration. (Although I may cease maintaining my project before this PR lands.) With that in mind, I +0.5 the idea that this PR should be undrafted and incorporated as soon as possible, and the linting/automation to keep it in sync (which is also important) should be a subsequent PR. I mean, the stable requirement is hardly going to get less stable fast if it isn't updated, right? I'd like to be able to require [stable] as soon as the next release of pip-tools, if possible, which will give me compatibility now and effortless forwards-compatibility later; likely a strict improvement on the current situation where I pin on my end. There also doesn't seem to be anywhere where the current compatibility with pip is listed in the docs, although I may have missed something. There used to be one with #1089 but that seems gone now. This is a mixed blessing because it means I, personally, currently have nowhere to look for that, but also that's one fewer thing to ensure compatibility with using the aforementioned "automation for keeping things in sync". This extra should probably be mentioned in the readme/documentation, and not just the changelog. Its name is not fully self-explanatory (and can't be; its name would have to be a complicated sentence in its own right to be fully explanatory) yet it is a feature that will be useful to end-users. It seems to me like you should just require known-good dependencies by default and then rely on the user to pass |
I'm a bit uncertain, because this increases the risk of having multiple places out-of-sync. But if @sirosen @beruic have different opinions, we could probably make such a split. @wyattscarpenter FTR, you could technically start depending on this extra already — Python ecosystem usually ignores those that don't exist.
Yeah, people wanted to get rid of the manually maintained table some time ago. I don't recall being too happy about it but I was also less involved, I suppose. Somebody from GH removed it: #1950. It's been on my mind for quite a while too: #2148 (comment). Actually, @sirosen and I also had the exact same conversation in the fall about needing to ressurect that. And I want this to be provided by a Sphinx extension instead of being hardcoded in README.
Agreed.
There's been a lot of interest in this over many years but we still don't have a metadata standard to express this. And so I don't think that any installer will support such feature until there's an accepted PEP. |
|
Yeah, I think we have to figure out what we want a little, which is why I've been avoiding putting any pressure on this PR to move faster.
I'm still not totally sure what I think we should do about older versions of For the current version, it's easier to decide to document it, but for older versions... we enter more murky territory, since we don't actively support old versions. I'd have trouble picking out how many we document. I'm considering the merits of using the
I think that's sufficiently separate from the goal of this PR that I wouldn't want to fold it in. @webknjaz, what do you think of opening an issue for using |
|
I wouldn't care about the older versions until somebody asks. That's busy work that we don't have a proof anybody will ever want to make use of. I also like Sphinx over An issue sounds good. |
|
I didn't get into detail in my previous response b/c I had a health incident and wasn't feeling well. Here's a few more notes I had in mind.
Either this, or the oposite direction would be an in-tree PEP 517 build backend wrapper. Having a standard backend is probably less maintenance overhead. And PEP 621 is good as the source of truth.
Both have plugin systems in place. It's quite easy to use For tox, this would be the
Ideally, the CI matrix would be generated from the same info w/o any need to have additional checks. OTOH, with the current mapping to tox factors with min/max pip, this isn't even needed in the current form. |
- currenty `pip-tools` - `v7.5.2` is incompatible `pip` > `v23.5`. - ref: jazzband/pip-tools#2257
- currenty pip-tools v7.5.2 is incompatible with pip >25.3 - ref: jazzband/pip-tools#2257 Signed-off-by: Danish Ali <D.A.Shaikh10@gmail.com>
It is supposed to correspond to the range of what's tested in our CI.
Contributor checklist
changelog.d/(seechangelog.d/README.mdfor instructions) or the PR text says "no changelog needed".Maintainer checklist
skip-changeloglabel.