diff options
-rw-r--r-- | cura/CuraPackageManager.py | 14 |
1 files changed, 11 insertions, 3 deletions
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 |