-
-
Notifications
You must be signed in to change notification settings - Fork 422
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support pdm outdated
#358
Comments
Some points need more discussion:
|
The design will be as the following:
If anything is not clear, feel free to reply in this thread |
It's all clear, thank you for giving me advice (sorry for replying late, I'm at working currently). I'll try one when I have a time. |
Never mind, I can implement it if you are not able to. |
Wow, thank you very much. It's great. |
I would prefer to have a direct In my opinion tools like pdm should help the developer as much as they can. I guess this is also one of the reasons pdm became successful because for me it is easier to work with than pipenv or pip + venv. Creating a shell script or coming back to this thread is just annoying as the command is too long to be easily remembered. On the technical side it seems really easy to make pdm call its other --dry-run --unconstrained --top command on pdm outdated. |
Agree on that. |
The problem is that the latest version on PyPI may not satisfy the current dependency specifications, so you will never be able to upgrade to that version unless you modify |
Good point how about 4 columns?
|
I suggest to work based on existing solutions: |
There are 5 levels of versions available for a specific package:
Note 4 and 5 can be different, because transitive dependencies can constrain each other even we remove all version specifiers. I'm not sure what versions users care the most and if users can understand the meaning of these versions. And the yarn/pnpm solution seems too simple to me. It's worth to mention that |
@frostming Is it correct that PDM currently does not support updating the |
@frostming I would go MVP here if at all possible.
I suspect this will be the cheapest to calculate and should help determine if there is further need for additional effort on this. |
So you suggest 1,3,5 as listed in my previous comment. My point is |
I respectfully disagree - it's the 5 that is the main part missing for me. |
For me personally it is also 5 which is the most useful and interesting. |
This function is not difficult to implement at all. It's just a matter of requesting new versions from PyPI. However, I tend to avoid introducing a command that overlaps too much with other command functions. In addition to the |
I know very little about the overhead of each approach, so would be hard for me to take a clear stance here, here is what I think:
On the other hand: So, with that in mind, I guess the trade off is between, as you said "avoid introducing a command that overlaps too much with other command functions" , Familiarity of the interface and Actual effort for the change. My vote would be for a clear and simple |
It seems most people in this thread prefer The output should contain 4 columns, listing the package name, installed version, the latest possible version that satisfy the constraints, and the latest version on PyPI, respectively.
Here comes the first question:
We will likely include the Secondly, we can support Thirdly, we can support passing a package name as the argument: Fourthly, we'll support Anything to add? |
I only see value in the URL column on top of what @frostming proposed. The URL column can be used to quickly check out what wheels/artifacts have been released. This also begs the question, what does latest mean? I often see that there are no compatible binary wheels for some package, e.g. none for RCs as opposed to stable versions. |
No, |
Thanks for the clarification. |
Nope, "pinned" means recorded in the lockfile. There might be packages that are not in the lockfile but installed by, for example, pip. |
I see. In such case I suspect these are mainly edge-cases residuals (pip install behind the back of PDM, an incomplete deletion of a remove dependency, an upgrade that no longer depends on a sub-dependency and such), |
Close #358 Signed-off-by: Frost Ming <me@frostming.com>
* feat: New command `pdm outdated` Close #358 Signed-off-by: Frost Ming <me@frostming.com> * fix function Signed-off-by: Frost Ming <me@frostming.com> * add news Signed-off-by: Frost Ming <me@frostming.com> * fix completions Signed-off-by: Frost Ming <me@frostming.com>
Is your feature request related to a problem? Please describe.
There is no any related problem.
Describe the solution you'd like
pdm outdated
, orpdm list --outdated
.Reason:
It's common feature of package manager and I used them often.
If this proposal is positive, I will try implementing and send PR.
Remarks:
I think
pdm outdated
is better thanpdm list --outdated
because I want an exact one option.pdm outdated
-> returns only top-level dependencies.pdm outdated -a(--all)
-> returns all dependencies.Motivation came from this issue python-poetry/poetry#2684 (comment).
The text was updated successfully, but these errors were encountered: