def src_tool(args): print("Analysing python module %r" % (args.input.name,), file=sys.stderr) source = args.input.read() mod_ast = ast.parse(source, args.input.name) code = compile(source, args.input.name, mode="exec", dont_inherit=True) if args.output_type == "opcode": print_code(code) return elif args.output_type == "ast": print_ast(mod_ast, file=args.output) return elif args.output_type == "python": print(source.decode(), file=args.output) elif args.output_type == "pyc": if py3 and args.output is sys.stdout: args.output = sys.stdout.buffer try: timestamp = int(os.fstat(args.input.fileno()).st_mtime) except AttributeError: timestamp = int(os.stat(args.input.name).st_mtime) if py3 and args.output is sys.stdout: args.output = sys.stdout.buffer create_pyc(source, cfile=args.output, timestamp=timestamp) else: raise Exception("unknow output type %r" % args.output_type) return
def src_tool(args): print("Analysing python module %r" % (args.input.name, ), file=sys.stderr) source = args.input.read() mod_ast = ast.parse(source, args.input.name) code = compile(source, args.input.name, mode='exec', dont_inherit=True) if args.output_type == 'opcode': print_code(code) return elif args.output_type == 'ast': print_ast(mod_ast, file=args.output) return elif args.output_type == 'python': print(source.decode(), file=args.output) elif args.output_type == 'pyc': if py3 and args.output is sys.stdout: args.output = sys.stdout.buffer try: timestamp = int(os.fstat(args.input.fileno()).st_mtime) except AttributeError: timestamp = int(os.stat(args.input.name).st_mtime) if py3 and args.output is sys.stdout: args.output = sys.stdout.buffer create_pyc(source, cfile=args.output, timestamp=timestamp) else: raise Exception("unknow output type %r" % args.output_type) return
def depyc(args): binary = args.input.read() modtime, code = extract(binary) print("Decompiling module %r compiled on %s" % (args.input.name, modtime), file=sys.stderr) if args.output_type == "pyc": if py3 and args.output is sys.stdout: args.output = sys.stdout.buffer args.output.write(binary) return if args.output_type == "opcode": print_code(code) return mod_ast = make_module(code) if args.output_type == "ast": print_ast(mod_ast, file=args.output) return if args.output_type == "python": python_source(mod_ast, file=args.output) return raise Exception("unknow output type %r" % args.output_type)
def depyc(args): binary = args.input.read() modtime, code = extract(binary) print("Decompiling module %r compiled on %s" % ( args.input.name, modtime, ), file=sys.stderr) if args.output_type == 'pyc': if py3 and args.output is sys.stdout: args.output = sys.stdout.buffer args.output.write(binary) return if args.output_type == 'opcode': print_code(code) return mod_ast = make_module(code) if args.output_type == 'ast': print_ast(mod_ast, file=args.output) return if args.output_type == 'python': python_source(mod_ast, file=args.output) return raise Exception("unknow output type %r" % args.output_type)
def assertAstEqual(self, left, right): if not isinstance(left, _ast.AST): raise self.failureException("%s is not an _ast.AST instance" % (left)) if not isinstance(right, _ast.AST): raise self.failureException("%s is not an _ast.AST instance" % (right)) result = cmp_ast(left, right) if not result: lstream = StringIO() print_ast(left, indent='', file=lstream, newline='') rstream = StringIO() print_ast(right, indent='', file=rstream, newline='') lstream.seek(0) rstream.seek(0) msg = 'Ast Not Equal:\nGenerated: %r\nExpected: %r' % (lstream.read(), rstream.read()) raise self.failureException(msg)
def pop(self, *index): value = list.pop(self, *index) print(' + ', end='') print_ast(value, indent='', newline='') print() return value
def append(self, object): print(' + ', end='') print_ast(object, indent='', newline='') print() list.append(self, object)