From 6450141a188567eadcf544e1f0cd08ea66fcf033 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 7 Jun 2024 13:39:48 +1000 Subject: [PATCH] Fix #122769: bpy.utils.register_submodule_factory fails with extensions The unregister function from register_submodule_factory didn't support a sub-module name argument. --- scripts/modules/bpy/utils/__init__.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/scripts/modules/bpy/utils/__init__.py b/scripts/modules/bpy/utils/__init__.py index a49aef8a905..a2ed24835cc 100644 --- a/scripts/modules/bpy/utils/__init__.py +++ b/scripts/modules/bpy/utils/__init__.py @@ -829,17 +829,16 @@ def register_submodule_factory(module_name, submodule_names): def register(): nonlocal module module = __import__(name=module_name, fromlist=submodule_names) - submodules[:] = [getattr(module, name) for name in submodule_names] - for mod in submodules: + submodules[:] = [(getattr(module, mod_name), mod_name) for mod_name in submodule_names] + for mod, _mod_name in submodules: mod.register() def unregister(): from sys import modules - for mod in reversed(submodules): + for mod, mod_name in reversed(submodules): mod.unregister() - name = mod.__name__ - delattr(module, name.partition(".")[2]) - del modules[name] + delattr(module, mod_name) + del modules[mod.__name__] submodules.clear() return register, unregister