Beispiel #1
0
 def chase_imports(self):
     modules = set()
     queue = [self.file_name_root]
     for name in queue:
         try:
             modobj = filepath.try_import(module_name=name)
             file = getattr(modobj, '__file__', None)
             if not file:
                 sys.stderr.write("Module object %s missing __name__ att\n" % name)
                 raise Exception
             (base, _) = os.path.splitext(file)
             m = ModuleCompiler(base + '.py')
             if file not in (m.file, m.pycfile):
                 sys.stderr.write("Module cannot be parsed: %s\n" % file)
                 raise Exception
             if not os.path.exists(m.file):
                 sys.stderr.write("Module does not exist: %s\n" % m.file)
                 raise Exception
             if not filepath.is_writable(m.pycfile):
                 sys.stderr.write("Path cannot be written to: %s\n" % m.pycfile)
             else:
                 modules.add(m)
             found = m.find_imports()
             for f in found:
                 if f not in queue:
                     queue.append(f)
         except:
             raise
     return list(modules)
Beispiel #2
0
    def __init__(self, obj):
        if not obj:
            self = None
            return

        self.modulename = obj.__module__    # original name
        self.set_default_module_name()
        self.objname = obj.__name__

        try:
            path = filepath.try_import(module_name=self.modulename).__file__
        except ImportError:
            raise   # XXX capitulate?
        self.file = os.path.abspath(path)
Beispiel #3
0
 def load_spec(self, file):
     spec = filepath.try_import(module_file=file)
     aspnames = (aspname for aspname in spec.__all__)
     aspects = (getattr(spec, aspname) for aspname in aspnames)
     return Worklist(*aspects)