From 4934f463a119175133b44ccc67e7bbc38179527b Mon Sep 17 00:00:00 2001 From: Ellwood Zwovic Date: Sat, 12 Aug 2017 19:42:51 -0700 Subject: [PATCH] Optimize package metadata fetching; avoid checking if packages are installed every redraw --- package_manager/bpkg/types.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/package_manager/bpkg/types.py b/package_manager/bpkg/types.py index 1194932..472705a 100644 --- a/package_manager/bpkg/types.py +++ b/package_manager/bpkg/types.py @@ -20,10 +20,13 @@ class Package: self.installed_location = None self.module_name = None + self.installed = False + self.is_user = False + self.enabled = False + self.set_from_dict(package_dict) - @property - def is_user(self) -> bool: + def test_is_user(self) -> bool: """Return true if package's install location is in user or preferences scripts path""" import bpy user_script_path = bpy.utils.script_path_user() @@ -41,8 +44,7 @@ class Package: return in_user or in_prefs - @property - def enabled(self) -> bool: + def test_enabled(self) -> bool: """Return true if package is enabled""" import bpy if self.module_name is not None: @@ -50,8 +52,7 @@ class Package: else: return False - @property - def installed(self) -> bool: + def test_installed(self) -> bool: """Return true if package is installed""" import addon_utils return len([Package.from_module(mod) for mod in addon_utils.modules(refresh=False) if @@ -60,11 +61,11 @@ class Package: def set_installed_metadata(self, installed_pkg): """Sets metadata specific to installed packages from the Package given as `installed_pkg`""" - # self.installed = installed_pkg.installed - # self.enabled = installed_pkg.enabled + self.installed = installed_pkg.test_installed() + self.enabled = installed_pkg.test_enabled() + self.is_user = installed_pkg.test_is_user() self.module_name = installed_pkg.module_name self.installed_location = installed_pkg.installed_location - # self.is_user = installed_pkg.is_user def to_dict(self) -> dict: """