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.
This commit is contained in:
Campbell Barton
2024-06-07 13:39:48 +10:00
parent 239f032186
commit 6450141a18

View File

@@ -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