-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
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
Solve upgrade can create incompatible dependency versions in lock file + other bugs #6282
Conversation
…nd reversing those dependencies to see what truly must be considered
…rrect reverse results, rewrite the reverse test to use --json-tree to prevent consistency in testing issues, and convert off click echo
e68751e
to
c34fa08
Compare
…ses + pip session requests performance issue patch
…ses + pip session requests performance issue patch
…rify interface to resolver category
categories = ["develop"] | ||
elif not categories or "packages" in categories: | ||
categories = ["default"] | ||
if not categories: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If the original authors had just made the package group names identical between Pipfile and lock it would have saved 50% of my headache here.
@@ -223,7 +223,7 @@ def requirement_from_lockfile( | |||
if "extras" in package_info | |||
else "" | |||
) | |||
pip_line = f"{package_name}{extras}=={version}{os_markers}{markers}{hashes}" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The cause of our version specifiers being too strict, because this method is actually used in more places than just requirement_from_lockfile
👎
k in entry_dict | ||
for k in ["sys_platform", "python_version", "os_name", "platform_machine"] | ||
): | ||
return None, entry_dict |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You are replicating code from plette here why not just import it?
|
||
@property | ||
def original_markers(self): | ||
original_markers, lockfile_dict = self.get_markers_from_dict(self.lockfile_dict) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These local methods might be added to plette.
if isinstance(self.extras, list): | ||
self.extras = set(self.extras) | ||
if isinstance(self.hashes, list): | ||
self.hashes = set(self.hashes) | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same as comment above.
The issue
pipenv upgrade relied on the dependent packages being updated, but sometimes the package being requested for update is a dependency of another package in the tree. This applies a more sophisticated approach to considering both ends of that equation.
Fixes #6281
Fixes #6273
Fixes #6280
Fixes #6217
Fixes #6149
Fixes #6144
Fixes #6165
Fixed #6115
Probably Fixes #6249
Probably Fixes #6154
Possibly fixes #6116
Possibly fixes #6237
The fix
Adds test that fails on main branch but passes here:
The checklist
news/
directory to describe this fix with the extension.bugfix.rst
,.feature.rst
,.behavior.rst
,.doc.rst
..vendor.rst
. or.trivial.rst
(this will appear in the release changelog). Use semantic line breaks and name the file after the issue number or the PR #.