PyAPI: don't adjust prefs when an fails to load

Recent addons commit meant that addons would be enabled even if they weren't found.
This would give an error (which is fine), but also remove from preferences.
This commit is contained in:
Campbell Barton 2015-01-23 21:09:31 +11:00
parent 2dfe5e30ac
commit 3ff3f563e5
Notes: blender-bot 2023-10-12 12:49:04 +02:00
Referenced by issue #43421, bmesh.ops.bisect_edges returns insufficient data.
4 changed files with 9 additions and 7 deletions

View File

@ -251,7 +251,7 @@ def _addon_remove(module_name):
addons.remove(addon)
def enable(module_name, default_set=True, persistent=False, handle_error=None):
def enable(module_name, default_set=False, persistent=False, handle_error=None):
"""
Enables an addon by name.
@ -308,7 +308,8 @@ def enable(module_name, default_set=True, persistent=False, handle_error=None):
mod.__addon_enabled__ = False
except:
handle_error()
_addon_remove(module_name)
if default_set:
_addon_remove(module_name)
return None
# 2) try register collected modules
@ -322,7 +323,8 @@ def enable(module_name, default_set=True, persistent=False, handle_error=None):
getattr(mod, "__file__", module_name))
handle_error()
del sys.modules[module_name]
_addon_remove(module_name)
if default_set:
_addon_remove(module_name)
return None
# * OK loaded successfully! *

View File

@ -1737,7 +1737,7 @@ class WM_OT_addon_enable(Operator):
err_str = traceback.format_exc()
print(err_str)
mod = addon_utils.enable(self.module, handle_error=err_cb)
mod = addon_utils.enable(self.module, default_set=True, handle_error=err_cb)
if mod:
info = addon_utils.module_bl_info(mod)

View File

@ -63,7 +63,7 @@ def test_load_addons():
for mod in modules:
mod_name = mod.__name__
print("\tenabling:", mod_name)
addon_utils.enable(mod_name)
addon_utils.enable(mod_name, default_set=True)
if mod_name not in addons:
addons_fail.append(mod_name)
@ -87,7 +87,7 @@ def reload_addons(do_reload=True, do_reverse=True):
for mod in modules:
mod_name = mod.__name__
print("\tenabling:", mod_name)
addon_utils.enable(mod_name)
addon_utils.enable(mod_name, default_set=True)
assert(mod_name in addons)
for mod in modules:

View File

@ -74,7 +74,7 @@ def load_addons():
for mod in modules:
mod_name = mod.__name__
addon_utils.enable(mod_name)
addon_utils.enable(mod_name, default_set=True)
assert(mod_name in addons)