Advertisement
Guest User

Untitled

a guest
Jan 19th, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.04 KB | None | 0 0
  1. import inspect
  2.  
  3. tab = " "
  4.  
  5. def print_module(mod, indent=1):
  6. lines = ["module: %s" % mod.__name__]
  7. for k, v in mod.__dict__.iteritems():
  8. if k.startswith("__"):
  9. continue
  10. line = format_any(v, name=k)
  11. if "\n" in line:
  12. line = "\n".join([tab * indent + _ for _ in line.split("\n")])
  13. lines.append(line)
  14. else:
  15. lines.append("%s%s" % (tab * indent, line))
  16.  
  17. print "\n".join(lines)
  18.  
  19. def format_class(klass):
  20. lines = ["class: %s" % klass.__name__]
  21. for k, v in klass.__dict__.iteritems():
  22. if k.startswith("__"):
  23. continue
  24. line = format_any(v, name=k)
  25. lines.append("%s%s" % (tab, line))
  26. return "\n".join(lines)
  27.  
  28. def format_any(v, name=""):
  29. if inspect.isclass(v):
  30. return format_class(v)
  31. elif inspect.isfunction(v):
  32. return format_function(v)
  33. else:
  34. return "%s %s" % (name, repr(v))
  35.  
  36. def format_function(v):
  37. args = inspect.getargspec(v)
  38.  
  39. defaults = list(args.defaults if args.defaults else [])
  40. while len(defaults) != len(args.args):
  41. defaults.insert(0, None)
  42.  
  43. l = ""
  44. for k, value in zip(args.args, defaults):
  45. if value is None:
  46. l += "%s, " % k
  47. else:
  48. l += "%s = %s, " % (k, value)
  49. if l.endswith(", "):
  50. l = l [:-2]
  51. if args.varargs:
  52. l += ", *%s" % args.varargs
  53. if args.keywords:
  54. l += ", **%s" % args.keywords
  55.  
  56. return "%s(%s)" % (v.__name__, l)
  57.  
  58. def print_function(v):
  59. print format_function(v)
  60.  
  61. def print_class(v):
  62. for k, v in v.__dict__.iteritems():
  63. if k == "__builtins__":
  64. continue
  65. print k, format_any(v)
  66.  
  67. import cProfile
  68. print_module(cProfile)
  69.  
  70. import profile
  71. print_module(profile)
  72.  
  73. if 0:
  74.  
  75. def a():
  76. pass
  77.  
  78. def b(x, y):
  79. pass
  80.  
  81. def c(x, y=1, z=2):
  82. pass
  83.  
  84. def d(x, y=1, z=2, *args):
  85. pass
  86.  
  87. def e(x, y=1, z=2, *args, **kw):
  88. pass
  89.  
  90.  
  91. print_function(a)
  92. print_function(b)
  93. print_function(c)
  94. print_function(d)
  95. print_function(e)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement