Source code for modlit.modules

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Created by pat on 5/6/18
"""
.. currentmodule:: modlit.modules
.. moduleauthor:: Pat Daburu <pat@daburu.net>

Sometimes we need to do things like loading modules dynamically.  The tools
to help with that are in here.
"""
import pkgutil
from typing import List


[docs]def walk_load(package, skip_modules: List[str] = None): """ Walk and load the modules in a package. :param package: the package that contains the model classes :param skip_modules: a list of names of the modules that should be skipped when importing the package """ # Get the package's name... prefix = package.__name__ + '.' # ...so that we may import all its modules, one-by-one! for _, modname, _ in pkgutil.walk_packages( package.__path__, prefix): # If a module is explicitly excluded by name... if skip_modules and modname in skip_modules: # ...skip it. continue else: # Otherwise, load it up! _ = __import__(modname)