示例#1
0
文件: ast.py 项目: basaundi/najash
def name_path(mod, pkg):
    loader = None
    parent = None
    path = sys.path
    if pkg:
        pkg_path = name_path(pkg, None)
        if pkg_path:
            path = [dirname(pkg_path), ] + path
    parts = mod.split('.')
    prefix = ''
    for part in parts:
        if not part:
            prefix += '.'
            continue
        name = prefix + part
        loader = PathFinder.find_module(name, path)
        prefix = ''
        if loader:
            parent = dirname(loader.path)
            if loader.is_package(name):
                path = parent,
            else:
                path = tuple()
    if not loader:
        return None
    return loader.path
示例#2
0
def load(directory):
    curdir = os.path.join(directory, 'scripts', 'pbs', 'commands')
    commands = {}

    for dir, subdirs, files in os.walk(curdir):
        for filename in files:
            name, ext = os.path.splitext(filename)
            if ext == '.py' and name != '__init__':
                loader = PathFinder.find_module(name, [curdir])
                commands[name] = loader.load_module()

    return commands
示例#3
0
    def get_alternative(mod, pkg = None):
        if mod.startswith('.') and pkg:
            loader = PathFinder.find_module(pkg, path)
            if loader:
                modpath = ast.name_path(mod, pkg)
                mod = pkg + mod

        fname = mod.replace('.', '/') + '.js' # FIXME
        for p in path:
            if os.path.isdir(p):
                candidate = os.path.join(p, fname)
                if os.path.isfile(candidate):
                    return candidate, mod
        return None, None
示例#4
0
    def _load_module(module_name, filename, *paths):
        name, ext = os.path.splitext(filename)

        if ext in ('.py', ''):
            loader = PathFinder.find_module(name, path=paths)
            if loader is None:
                loader = PathFinder.find_module(name)
            if loader is None:
                raise ImportError(
                    'Could not find module {} on path {} or sys.path'.format(
                        name, paths))
        else:
            loader = None
            for path in paths:
                p = os.path.normpath(os.path.join(path, filename))
                if os.path.exists(p):
                    loader = SourceFileLoader(module_name, p)

            if loader is None:
                raise ImportError(
                    'Could not find module {} on path {}'.format(name, paths))

        loader.name = module_name
        return loader.load_module()
示例#5
0
    def _load_module(module_name, filename, *paths):
        name, ext = os.path.splitext(filename)

        if ext in ('.py', ''):
            loader = PathFinder.find_module(name, path=paths)
            if loader is None:
                loader = PathFinder.find_module(name)
            if loader is None:
                raise ImportError(
                    'Could not find module {} on path {} or sys.path'.format(
                        name, paths))
        else:
            loader = None
            for path in paths:
                p = os.path.normpath(os.path.join(path, filename))
                if os.path.exists(p):
                    loader = SourceFileLoader(module_name, p)

            if loader is None:
                raise ImportError(
                    'Could not find module {} on path {}'.format(name, paths))

        loader.name = module_name
        return loader.load_module()
示例#6
0
    def _get_source(self, module_name, package_path):
        if six.PY2:
            import imp
            (file, pathname, desc) = imp.find_module(
                module_name.split('.')[-1],
                package_path
            )

            source_code = file.read()
            file.close()
            file_path = file.name
        else:
            from importlib.machinery import PathFinder
            loader = PathFinder.find_module(module_name, package_path)
            source_code = loader.get_source(module_name)
            file_path = loader.path

        return source_code, file_path
示例#7
0
 def find_module(self, fullname, path=None):
     if path is None and fullname in self._path_dct:
         p = self._path_dct[fullname]
         loader = PathFinder.find_module(fullname, path=[p])
         return loader
     return None
示例#8
0
 def find_module(self, fullname, path=None):
     if path is None and fullname in self._path_dct:
         p = self._path_dct[fullname]
         loader = PathFinder.find_module(fullname, path=[p])
         return loader
     return None
 def find_module(cls, fullname, path=None):
     loader = PathFinder.find_module(fullname, path=path)
     if not loader:
         return
     loader = CustomLoader(loader)
     return loader
import sys
from importlib.machinery import PathFinder

loader = PathFinder.find_module("AutomaticPackageReloader")
mod = loader.load_module("AutomaticPackageReloader")
sys.modules["AutomaticPackageReloader"] = mod

from AutomaticPackageReloader import package_reloader as package_reloader38  # noqa


class PackageReloader33ReloadCommand(
        package_reloader38.PackageReloaderReloadCommand):
    pass