def import_submodules(package, recursive=True):
"""Import all submodules of a module, recursively, including subpackages
:param package: package (name or actual module)
:type package: str | module
:rtype: dict[str, types.ModuleType]
"""
if isinstance(package, str):
package = importlib.import_module(package)
for loader, name, is_pkg in pkgutil.walk_packages(
package.__path__, package.__name__ + '.'):
if TEST_DIR in name:
continue
imported = importlib.import_module(name)
for prop in getattr(imported, "TRAITS", []):
symbolize(name, prop)
if recursive and is_pkg:
import_submodules(name)
# This is where the names defined in submodules are imported
评论列表
文章目录