Advertisement
Guest User

Untitled

a guest
May 27th, 2015
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.62 KB | None | 0 0
  1. ASTTYPES = {}
  2. ASTTYPES[ast.Num] = lambda x: x.n
  3. ASTTYPES[ast.NameConstant] = lambda x: x.value
  4. ASTTYPES[ast.Name] = lambda x: x.id
  5. ASTTYPES[ast.Str] = lambda x: x.s
  6. ASTTYPES[ast.Tuple] = lambda x: tuple([ASTTYPES[type(y)](y) for y in x.elts])
  7. ASTTYPES[ast.Attribute] = lambda x: ASTTYPES[type(x.value)](x.value)+'.'+x.attr
  8. ASTTYPES[ast.List] = lambda x: str([ASTTYPES[type(y)](y) for y in x.elts])
  9. ASTTYPES[ast.Bytes] = lambda x: x.s
  10. ASTTYPES[ast.Call] = lambda x: (ASTTYPES[type(x.func)](x.func)+
  11.                                 '('+', '.join([str(ASTTYPES[type(y)](y)) for y in x.args])+')')
  12. ASTTYPES[ast.UnaryOp] = lambda x: x.operand.n*-1
  13. ASTTYPES[ast.Dict] = lambda x: dict((ASTTYPES[type(x.keys[y])](x.keys[y]),
  14.                                      ASTTYPES[type(x.values[y])](x.values[y]))
  15.                                     for y in range(0, len(x.keys)))
  16. ASTTYPES[ast.Set] = lambda x: str(set([ASTTYPES[type(y)](y) for y in x.elts]))
  17. TYPES = ['str', 'list', 'tuple', 'int', 'float', 'None', 'bool', 'False',
  18.          'True', 'bytes', 'bytearray']
  19.  
  20. def get_sign(astfunc):
  21.     '''
  22.    Get signature of given ast.FunctionDef.
  23.    '''
  24.     args = astfunc.args.args
  25.     defaults = []
  26.     for value in astfunc.args.defaults:
  27.         try:
  28.             defaults.append('='+str(ASTTYPES[type(value)](value)))
  29.         except KeyError:
  30.             defaults.append('')
  31.     defaults = list(reversed(defaults))
  32.     while len(defaults) != len(args):
  33.         defaults.append('')
  34.     defaults = list(reversed(defaults))
  35.     result = ', '.join([x.arg+defaults[index] for index, x in enumerate(args)])
  36.     return html.escape(result)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement