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
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