Source code for galaxy.util.submodules

from __future__ import absolute_import

import logging
from os import listdir

log = logging.getLogger(__name__)


[docs]def submodules(module): unsorted_submodule_names = __submodule_names(module) submodule_names = sorted(unsorted_submodule_names, reverse=True) submodules = [] for submodule_name in submodule_names: full_submodule = "%s.%s" % (module.__name__, submodule_name) try: __import__(full_submodule) submodule = getattr(module, submodule_name) submodules.append(submodule) except BaseException: message = "%s dynamic module could not be loaded (traceback follows):" % (full_submodule) log.exception(message) return submodules
def __submodule_names(module): module_dir = module.__path__[0] names = [] for fname in listdir(module_dir): if not(fname.startswith("_")) and fname.endswith(".py"): submodule_name = fname[:-len(".py")] names.append(submodule_name) return names