Beispiel #1
0
    def runsource(self, source, filename='<input>', symbol='single'):
        try:
            code_object = self.compile(source, filename, symbol)
        except (OverflowError, SyntaxError, ValueError):
            code_object = ''

        if code_object is None:
            # This means it's incomplete
            return True

        try:
            tree = transform(source)
            tree = ast.Interactive(tree.body)
            code_object = compile(tree, filename, symbol, self.compile.compiler.flags, 1)
        except (OverflowError, SyntaxError, ValueError):
            # This means there's a syntax error
            self.showsyntaxerror(filename)
            return False

        # This means it was successfully compiled; `runcode` takes care of any runtime failures
        self.runcode(code_object)
        return False
Beispiel #2
0
    def runsource(self, source, filename='<input>', symbol='single'):
        try:
            code_object = self.compile(source, filename, symbol)
        except (OverflowError, SyntaxError, ValueError):
            code_object = ''

        if code_object is None:
            # This means it's incomplete
            return True

        try:
            tree = transform(source)
            tree = ast.Interactive(tree.body)
            code_object = compile(tree, filename, symbol,
                                  self.compile.compiler.flags, 1)
        except (OverflowError, SyntaxError, ValueError):
            # This means there's a syntax error
            self.showsyntaxerror(filename)
            return False

        # This means it was successfully compiled; `runcode` takes care of any runtime failures
        self.runcode(code_object)
        return False
Beispiel #3
0
    def load_module(self, name):
        try:
            suffix = name.split('.')[-1]
            fd, pathname, (suffix, mode, type_) = imp.find_module(suffix)
        except ImportError:
            return None

        module = types.ModuleType(name) #create empty module object

        with fd:
            if type_ == imp.PY_SOURCE:
                filename = pathname
            elif type_ == imp.PY_COMPILED:
                filename = pathname[:-1]
            elif type_ == imp.PKG_DIRECTORY:
                filename = os.path.join(pathname, '__init__.py')
                module.__path__ = [pathname]
            else:
                return imp.load_module(name, fd, pathname, (suffix, mode, type_))

            if filename != pathname:
                try:
                    with open(filename, 'U') as real_file:
                        src = real_file.read()
                except IOError: #fallback
                    return imp.load_module(name, fd, pathname, (suffix, mode, type_))
            else:
                src = fd.read()

        module.__file__ = filename
        inlined = transform(src)
        code = compile(inlined, filename, 'exec')
        sys.modules[name] = module
        exec(code,  module.__dict__)

        return module