From 4c570c87e9388d9d7b01c6bf70da448aa73a6d2c Mon Sep 17 00:00:00 2001 From: casper Date: Fri, 3 Dec 2021 17:19:18 +0100 Subject: Make sure recently installed packages only appear once in package list Some packages might be added to both `getPackagesToInstall` and `getAllInstalledPackagesInfo` cura 8587 --- cura/CuraPackageManager.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'cura/CuraPackageManager.py') diff --git a/cura/CuraPackageManager.py b/cura/CuraPackageManager.py index e6123c1947..6c62442758 100644 --- a/cura/CuraPackageManager.py +++ b/cura/CuraPackageManager.py @@ -68,16 +68,24 @@ class CuraPackageManager(PackageManager): def iterateAllLocalPackages(self) -> Generator[Dict[str, Any], None, None]: """ A generator which returns an unordered list of all the PackageModels""" + handled_packages = set() for packages in self.getAllInstalledPackagesInfo().values(): for package_info in packages: - yield package_info + if not handled_packages.__contains__(package_info["package_id"]): + handled_packages.add(package_info["package_id"]) + yield package_info # Get all to be removed package_info's. These packages are still used in the current session so the user might # still want to interact with these. for package_data in self.getPackagesToRemove().values(): - yield package_data["package_info"] + for package_data in self.getPackagesToRemove().values(): + if not handled_packages.__contains__(package_data["package_info"]["package_id"]): + handled_packages.add(package_data["package_info"]["package_id"]) + yield package_data["package_info"] # Get all to be installed package_info's. Since the user might want to interact with these for package_data in self.getPackagesToInstall().values(): - yield package_data["package_info"] + if not handled_packages.__contains__(package_data["package_info"]["package_id"]): + handled_packages.add(package_data["package_info"]["package_id"]) + yield package_data["package_info"] \ No newline at end of file -- cgit v1.2.3