Optimize package metadata fetching; avoid checking if packages are installed every redraw

This commit is contained in:
Ellwood Zwovic
2017-08-12 19:42:51 -07:00
parent 6691b0b226
commit 4934f463a1

View File

@@ -20,10 +20,13 @@ class Package:
self.installed_location = None self.installed_location = None
self.module_name = None self.module_name = None
self.installed = False
self.is_user = False
self.enabled = False
self.set_from_dict(package_dict) self.set_from_dict(package_dict)
@property def test_is_user(self) -> bool:
def is_user(self) -> bool:
"""Return true if package's install location is in user or preferences scripts path""" """Return true if package's install location is in user or preferences scripts path"""
import bpy import bpy
user_script_path = bpy.utils.script_path_user() user_script_path = bpy.utils.script_path_user()
@@ -41,8 +44,7 @@ class Package:
return in_user or in_prefs return in_user or in_prefs
@property def test_enabled(self) -> bool:
def enabled(self) -> bool:
"""Return true if package is enabled""" """Return true if package is enabled"""
import bpy import bpy
if self.module_name is not None: if self.module_name is not None:
@@ -50,8 +52,7 @@ class Package:
else: else:
return False return False
@property def test_installed(self) -> bool:
def installed(self) -> bool:
"""Return true if package is installed""" """Return true if package is installed"""
import addon_utils import addon_utils
return len([Package.from_module(mod) for mod in addon_utils.modules(refresh=False) if 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): def set_installed_metadata(self, installed_pkg):
"""Sets metadata specific to installed packages from the Package given as `installed_pkg`""" """Sets metadata specific to installed packages from the Package given as `installed_pkg`"""
# self.installed = installed_pkg.installed self.installed = installed_pkg.test_installed()
# self.enabled = installed_pkg.enabled self.enabled = installed_pkg.test_enabled()
self.is_user = installed_pkg.test_is_user()
self.module_name = installed_pkg.module_name self.module_name = installed_pkg.module_name
self.installed_location = installed_pkg.installed_location self.installed_location = installed_pkg.installed_location
# self.is_user = installed_pkg.is_user
def to_dict(self) -> dict: def to_dict(self) -> dict:
""" """