PyAPI: check modules are registered before unregister
authorCampbell Barton <ideasman42@gmail.com>
Wed, 29 Mar 2017 01:35:00 +0000 (12:35 +1100)
committerCampbell Barton <ideasman42@gmail.com>
Wed, 29 Mar 2017 01:38:02 +0000 (12:38 +1100)
Needed since templates may unregister classes.

Also replace old modules on reloading.

release/scripts/startup/bl_operators/__init__.py
release/scripts/startup/bl_ui/__init__.py

index c28c14610039bdc7666c402a9aea83774e6ccbf3..1e0dbe6925e13b4363bf0a8ee2c6b551bf600543 100644 (file)
@@ -21,8 +21,7 @@
 # support reloading sub-modules
 if "bpy" in locals():
     from importlib import reload
-    for val in _modules_loaded:
-        reload(val)
+    _modules_loaded[:] = [reload(val) for val in _modules_loaded]
     del reload
 
 _modules = [
@@ -73,4 +72,5 @@ def unregister():
     from bpy.utils import unregister_class
     for mod in reversed(_modules_loaded):
         for cls in reversed(mod.classes):
-            unregister_class(cls)
+            if cls.is_registered:
+                unregister_class(cls)
index 3e81724c1f922d59468f0b138b75608e22da2027..5b609605cee2a8998fc0593a99d01a4c8143c73e 100644 (file)
@@ -23,8 +23,7 @@
 # support reloading sub-modules
 if "bpy" in locals():
     from importlib import reload
-    for val in _modules_loaded:
-        reload(val)
+    _modules_loaded[:] = [reload(val) for val in _modules_loaded]
     del reload
 
 _modules = [
@@ -149,7 +148,8 @@ def unregister():
     from bpy.utils import unregister_class
     for mod in reversed(_modules_loaded):
         for cls in reversed(mod.classes):
-            unregister_class(cls)
+            if cls.is_registered:
+                unregister_class(cls)
 
 # Define a default UIList, when a list does not need any custom drawing...
 # Keep in sync with its #defined name in UI_interface.h