Source code for aflow.utility
"""Utility functions for interacting with file system, shell, etc.
"""
from os import path
from six import string_types
import six
def _get_reporoot():
"""Returns the absolute path to the repo root directory on the current
system.
"""
from os import path
import aflow
apath = path.abspath(aflow.__file__)
return path.dirname(path.dirname(apath))
[docs]def load_module(modname, modpath, search_locs=None):
"""Loads the module specification and returns it as a python object.
Args:
modname (str): name that the module should be loaded under.
modpath (str): full path to the code file in which the module is
defined.
search_locs (str): path to search for additional submodules.
"""
if six.PY2:# pragma: no cover
import imp
result = imp.load_source(modname, modpath)
return result
else:
from importlib.util import spec_from_file_location as specff
from importlib.util import module_from_spec as modfs
from importlib.machinery import SourceFileLoader
spec = specff(modname, modpath, submodule_search_locations=search_locs)
result = modfs(spec)
spec.loader.exec_module(result)
return result
reporoot = _get_reporoot()
"""The absolute path to the repo root on the local machine.
"""