From 3ad1e4fab9816355cfcae1931528e85778281d7b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 7 Jan 2016 23:33:51 +1100 Subject: addon_utils: improve docstrings Also make error handler take the exception as its argument. --- release/scripts/modules/addon_utils.py | 34 +++++++++++++++++++----------- release/scripts/startup/bl_operators/wm.py | 4 ++-- 2 files changed, 24 insertions(+), 14 deletions(-) (limited to 'release') diff --git a/release/scripts/modules/addon_utils.py b/release/scripts/modules/addon_utils.py index 560ddb9c954..95c0e5f187d 100644 --- a/release/scripts/modules/addon_utils.py +++ b/release/scripts/modules/addon_utils.py @@ -259,8 +259,14 @@ def enable(module_name, *, default_set=False, persistent=False, handle_error=Non """ Enables an addon by name. - :arg module_name: The name of the addon and module. + :arg module_name: the name of the addon and module. :type module_name: string + :arg default_set: Set the user-preference. + :type default_set: bool + :arg persistent: Ensure the addon is enabled for the entire session (after loading new files). + :type persistent: bool + :arg handle_error: Called in the case of an error, taking an exception argument. + :type handle_error: function :return: the loaded module or None on failure. :rtype: module """ @@ -270,7 +276,7 @@ def enable(module_name, *, default_set=False, persistent=False, handle_error=Non from bpy_restrict_state import RestrictBlend if handle_error is None: - def handle_error(): + def handle_error(ex): import traceback traceback.print_exc() @@ -286,10 +292,10 @@ def enable(module_name, *, default_set=False, persistent=False, handle_error=Non # in most cases the caller should 'check()' first. try: mod.unregister() - except: + except Exception as ex: print("Exception in module unregister(): %r" % getattr(mod, "__file__", module_name)) - handle_error() + handle_error(ex) return None mod.__addon_enabled__ = False @@ -301,8 +307,8 @@ def enable(module_name, *, default_set=False, persistent=False, handle_error=Non try: importlib.reload(mod) - except: - handle_error() + except Exception as ex: + handle_error(ex) del sys.modules[module_name] return None mod.__addon_enabled__ = False @@ -329,7 +335,7 @@ def enable(module_name, *, default_set=False, persistent=False, handle_error=Non if type(ex) is ImportError and ex.name == module_name: print("addon not found: %r" % module_name) else: - handle_error() + handle_error(ex) if default_set: _addon_remove(module_name) @@ -341,10 +347,10 @@ def enable(module_name, *, default_set=False, persistent=False, handle_error=Non # 3) try run the modules register function try: mod.register() - except: + except Exception as ex: print("Exception in module register(): %r" % getattr(mod, "__file__", module_name)) - handle_error() + handle_error(ex) del sys.modules[module_name] if default_set: _addon_remove(module_name) @@ -366,11 +372,15 @@ def disable(module_name, *, default_set=False, handle_error=None): :arg module_name: The name of the addon and module. :type module_name: string + :arg default_set: Set the user-preference. + :type default_set: bool + :arg handle_error: Called in the case of an error, taking an exception argument. + :type handle_error: function """ import sys if handle_error is None: - def handle_error(): + def handle_error(ex): import traceback traceback.print_exc() @@ -385,10 +395,10 @@ def disable(module_name, *, default_set=False, handle_error=None): try: mod.unregister() - except: + except Exception as ex: print("Exception in module unregister(): %r" % getattr(mod, "__file__", module_name)) - handle_error() + handle_error(ex) else: print("addon_utils.disable: %s not %s." % (module_name, "disabled" if mod is None else "loaded")) diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py index b9dc691f41f..363b14c950d 100644 --- a/release/scripts/startup/bl_operators/wm.py +++ b/release/scripts/startup/bl_operators/wm.py @@ -1782,7 +1782,7 @@ class WM_OT_addon_enable(Operator): err_str = "" - def err_cb(): + def err_cb(ex): import traceback nonlocal err_str err_str = traceback.format_exc() @@ -1826,7 +1826,7 @@ class WM_OT_addon_disable(Operator): err_str = "" - def err_cb(): + def err_cb(ex): import traceback nonlocal err_str err_str = traceback.format_exc() -- cgit v1.2.3