From 76668134078c9cfd8b70e1e4ea9edeb3d63d8fd8 Mon Sep 17 00:00:00 2001 From: Ellwood Zwovic Date: Mon, 14 Aug 2017 13:39:38 -0700 Subject: [PATCH] Fix failure to store installation state, store repositories in a set --- package_manager/__init__.py | 24 +++++++++++++++++++++++- package_manager/bpkg/types.py | 4 ++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/package_manager/__init__.py b/package_manager/__init__.py index c1286ca..c54014e 100644 --- a/package_manager/__init__.py +++ b/package_manager/__init__.py @@ -328,7 +328,12 @@ class PACKAGE_OT_uninstall(SubprocMixin, bpy.types.Operator): def get_installed_packages(refresh=False) -> list: """Get list of packages installed on disk""" import addon_utils - return [Package.from_module(mod) for mod in addon_utils.modules(refresh=refresh)] + installed_pkgs = [] + for mod in addon_utils.modules(refresh=refresh): + pkg = Package.from_module(mod) + pkg.installed = True + installed_pkgs.append(pkg) + return installed_pkgs def get_repo_storage_path() -> Path: return Path(bpy.utils.user_resource('CONFIG', 'repositories')) @@ -805,6 +810,22 @@ class USERPREF_PT_packages(bpy.types.Panel): else: collapsed(metapkg, row)# }}} + # addon_preferences = userpref.addons[module_name].preferences + # if addon_preferences is not None: + # draw = getattr(addon_preferences, "draw", None) + # if draw is not None: + # addon_preferences_class = type(addon_preferences) + # box_prefs = col_box.box() + # box_prefs.label("Preferences:") + # addon_preferences_class.layout = box_prefs + # try: + # draw(context) + # except: + # import traceback + # traceback.print_exc() + # box_prefs.label(text="Error (see console)", icon='ERROR') + # del addon_preferences_class.layout + # def center_message(layout, msg: str): """draw a label in the center of an extra-tall row""" @@ -946,6 +967,7 @@ def build_packagelist() -> OrderedDict:# {{{ for repo in known_repositories: for pkg in repo.packages: + pkg.repositories.add(repo) if pkg.name is None: return OrderedDict() if pkg.name in masterlist: diff --git a/package_manager/bpkg/types.py b/package_manager/bpkg/types.py index 472705a..c89ef77 100644 --- a/package_manager/bpkg/types.py +++ b/package_manager/bpkg/types.py @@ -16,7 +16,7 @@ class Package: self.url = "" self.files = [] - self.repositories = [] + self.repositories = set() self.installed_location = None self.module_name = None @@ -288,7 +288,7 @@ class ConsolidatedPackage: for pkg in self: if pkg == newpkg: - pkg.repositories + pkg.repositories.union(newpkg.repositories) if newpkg.installed: pkg.set_installed_metadata(newpkg) break