Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ASTTYPES = {}
- ASTTYPES[ast.Num] = lambda x: x.n
- ASTTYPES[ast.NameConstant] = lambda x: x.value
- ASTTYPES[ast.Name] = lambda x: x.id
- ASTTYPES[ast.Str] = lambda x: x.s
- ASTTYPES[ast.Tuple] = lambda x: tuple([ASTTYPES[type(y)](y) for y in x.elts])
- ASTTYPES[ast.Attribute] = lambda x: ASTTYPES[type(x.value)](x.value)+'.'+x.attr
- ASTTYPES[ast.List] = lambda x: str([ASTTYPES[type(y)](y) for y in x.elts])
- ASTTYPES[ast.Bytes] = lambda x: x.s
- ASTTYPES[ast.Call] = lambda x: (ASTTYPES[type(x.func)](x.func)+
- '('+', '.join([str(ASTTYPES[type(y)](y)) for y in x.args])+')')
- ASTTYPES[ast.UnaryOp] = lambda x: x.operand.n*-1
- ASTTYPES[ast.Dict] = lambda x: dict((ASTTYPES[type(x.keys[y])](x.keys[y]),
- ASTTYPES[type(x.values[y])](x.values[y]))
- for y in range(0, len(x.keys)))
- ASTTYPES[ast.Set] = lambda x: str(set([ASTTYPES[type(y)](y) for y in x.elts]))
- TYPES = ['str', 'list', 'tuple', 'int', 'float', 'None', 'bool', 'False',
- 'True', 'bytes', 'bytearray']
- def get_sign(astfunc):
- '''
- Get signature of given ast.FunctionDef.
- '''
- args = astfunc.args.args
- defaults = []
- for value in astfunc.args.defaults:
- try:
- defaults.append('='+str(ASTTYPES[type(value)](value)))
- except KeyError:
- defaults.append('')
- defaults = list(reversed(defaults))
- while len(defaults) != len(args):
- defaults.append('')
- defaults = list(reversed(defaults))
- result = ', '.join([x.arg+defaults[index] for index, x in enumerate(args)])
- return html.escape(result)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement