From 5fcc8153f6b26fbe4b892c4f0d8f7f506c327683 Mon Sep 17 00:00:00 2001 From: Ellwood Zwovic Date: Mon, 24 Jul 2017 17:42:00 -0700 Subject: [PATCH] Recursively reload submodules --- package_manager/__init__.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/package_manager/__init__.py b/package_manager/__init__.py index e9ae92a..7959d0d 100644 --- a/package_manager/__init__.py +++ b/package_manager/__init__.py @@ -17,12 +17,23 @@ import logging log = logging.getLogger(__name__) if 'bpy' in locals(): - import importlib + from importlib import reload - log.debug("Reloading") - subproc = importlib.reload(subproc) - bpkg = importlib.reload(bpkg) + def recursive_reload(mod): + """Reloads the given module and all its submodules""" + log.debug("Reloading %s", mod) + from types import ModuleType + reloaded_mod = reload(mod) + for attr in [getattr(mod, attr_name) for attr_name in dir(mod)]: + if type(attr) is ModuleType and attr.__name__.startswith(mod.__name__): + recursive_reload(attr) + return reloaded_mod + + subproc = recursive_reload(subproc) + utils = recursive_reload(utils) + bpkg = recursive_reload(bpkg) Package = bpkg.Package + else: from . import subproc from . import bpkg