From ad315e0f407cf9b908268eecb222f3db47ccf3b1 Mon Sep 17 00:00:00 2001 From: Matt Davis Date: Fri, 3 Mar 2023 22:48:04 -0500 Subject: [PATCH 1/5] Fix dev flag support in update/upgrade. --- pipenv/routines/update.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pipenv/routines/update.py b/pipenv/routines/update.py index ca9f6aecf6..d6d632c0c3 100644 --- a/pipenv/routines/update.py +++ b/pipenv/routines/update.py @@ -80,6 +80,7 @@ def do_update( editable_packages=editable, pypi_mirror=pypi_mirror, categories=categories, + dev=dev, lock_only=lock_only, ) @@ -106,13 +107,16 @@ def upgrade( editable_packages=None, pypi_mirror=None, categories=None, + dev=False, lock_only=False, ): lockfile = project._lockfile() if not pre: pre = project.settings.get("allow_prereleases") - if not categories: + if dev: + categories = ["develop"] + elif not categories: categories = ["default"] package_args = [p for p in packages] + [f"-e {pkg}" for pkg in editable_packages] From 2719bba6f68d61eaf6baf7abd8f1c6f608d7c264 Mon Sep 17 00:00:00 2001 From: Matt Davis Date: Thu, 9 Mar 2023 19:51:29 -0500 Subject: [PATCH 2/5] Sometimes an older package in the lock restricts the addition of a newer package. --- pipenv/routines/update.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pipenv/routines/update.py b/pipenv/routines/update.py index d6d632c0c3..5a44a8b9bc 100644 --- a/pipenv/routines/update.py +++ b/pipenv/routines/update.py @@ -188,8 +188,9 @@ def upgrade( ) # Mutate the existing lockfile with the upgrade data for the categories for package_name, _ in upgrade_lock_data.items(): - correct_package_lock = full_lock_resolution[package_name] - lockfile[category][package_name] = correct_package_lock + correct_package_lock = full_lock_resolution.get(package_name) + if correct_package_lock: + lockfile[category][package_name] = correct_package_lock lockfile.update({"_meta": project.get_lockfile_meta()}) project.write_lockfile(lockfile) From 8e82a9a81527b398a6c367231799ecdabea5b414 Mon Sep 17 00:00:00 2001 From: Matt Davis Date: Thu, 9 Mar 2023 19:58:50 -0500 Subject: [PATCH 3/5] Correct issue where pep423 name is added along side non pep423 name and simplify code path. --- pipenv/routines/update.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pipenv/routines/update.py b/pipenv/routines/update.py index 5a44a8b9bc..7600956622 100644 --- a/pipenv/routines/update.py +++ b/pipenv/routines/update.py @@ -7,6 +7,7 @@ convert_deps_to_pip, get_pipfile_category_using_lockfile_section, is_star, + pep423_name, ) from pipenv.utils.project import ensure_project from pipenv.utils.resolver import venv_resolve_deps @@ -128,6 +129,7 @@ def upgrade( section = {} package = Requirement.from_line(package) package_name, package_val = package.pipfile_entry + package_name = pep423_name(package_name) requested_packages[package_name] = package try: if not is_star(section[package_name]) and is_star(package_val): @@ -168,10 +170,7 @@ def upgrade( packages = project.get_pipfile_section(pipfile_category) for package_name, requirement in requested_packages.items(): requested_package = reqs[package_name] - if package_name not in packages: - packages.append(package_name, requested_package) - else: - packages[package_name] = requested_package + packages[package_name] = requested_package if lock_only is False: project.add_package_to_pipfile(requirement, category=pipfile_category) From 30d2609ce40d49b3c3cc8e70e93eef90fab4d360 Mon Sep 17 00:00:00 2001 From: Matt Davis Date: Thu, 9 Mar 2023 20:01:17 -0500 Subject: [PATCH 4/5] restore change that prevents blowing away pipfile category. --- pipenv/routines/update.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pipenv/routines/update.py b/pipenv/routines/update.py index 7600956622..249d6d140e 100644 --- a/pipenv/routines/update.py +++ b/pipenv/routines/update.py @@ -170,7 +170,10 @@ def upgrade( packages = project.get_pipfile_section(pipfile_category) for package_name, requirement in requested_packages.items(): requested_package = reqs[package_name] - packages[package_name] = requested_package + if package_name not in packages: + packages.append(package_name, requested_package) + else: + packages[package_name] = requested_package if lock_only is False: project.add_package_to_pipfile(requirement, category=pipfile_category) From f888e5c2f1ff42a816dcafb33dc0901c5f9634ee Mon Sep 17 00:00:00 2001 From: Matt Davis Date: Thu, 9 Mar 2023 20:03:25 -0500 Subject: [PATCH 5/5] actually pass dev flag state to upgrade command. --- pipenv/cli/command.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pipenv/cli/command.py b/pipenv/cli/command.py index a0417332f7..cb3e0c25fd 100644 --- a/pipenv/cli/command.py +++ b/pipenv/cli/command.py @@ -282,6 +282,7 @@ def upgrade(state, **kwargs): packages=state.installstate.packages, editable_packages=state.installstate.editables, categories=state.installstate.categories, + dev=state.installstate.dev, system=state.system, lock_only=state.installstate.lock_only, )