Example #1
0
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
Example #2
0
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
Example #3
0
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)
Example #4
0
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)
Example #5
0
    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)
Example #6
0
 def pop(self, *index):
     value = list.pop(self, *index)
     print('    + ', end='')
     print_ast(value, indent='', newline='')
     print()
     return value
Example #7
0
 def append(self, object):
     print('    + ', end='')
     print_ast(object, indent='', newline='')
     print()
     list.append(self, object)
Example #8
0
 def pop(self, *index):
     value = list.pop(self, *index)
     print('    + ', end='')
     print_ast(value, indent='', newline='')
     print()
     return value
Example #9
0
 def append(self, object):
     print('    + ', end='')
     print_ast(object, indent='', newline='')
     print()
     list.append(self, object)