Advertisement
Guest User

Untitled

a guest
Jan 19th, 2017
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.42 KB | None | 0 0
  1. def assertme(m, monsterassert=True):
  2. with open('asserted.txt', 'w') as f:
  3. todo = []
  4. def inner(m=None, override_name=''):
  5. keys = sorted([k for k in m.__dict__.keys() if not k.startswith('_')])
  6. tags = ['genres', 'roles', 'writers', 'directors', 'writers']
  7. l_type_to_inspect = ['videoStreams', 'part', 'subtitleStreams',
  8. 'media', 'audioStreams', 'parts', 'streams', 'video']
  9.  
  10. for k in keys:
  11. try:
  12. v = m.__dict__.get(k)
  13. ass_start = override_name or 'ep'
  14.  
  15. if k.startswith('_'):
  16. continue
  17. # check new classes
  18. print repr(v), type(v)
  19.  
  20. #if inspect.isclass(v) or isinstance(v, type(v)) and not isinstance(v, datetime.datetime):
  21. # print 'is class'
  22. # kek_name = '%s' % (k[:3])
  23. # #f.write('# Assign %s %s.%s\n' % (ass_start, k))
  24. # #f.write('%s = %s.%s[%s]\n' % (kek_name, ass_start, k, i))
  25. # func = partial(inner, m=v, override_name=kek_name)
  26. # todo.append(func)
  27. #continue
  28.  
  29. if isinstance(v, (str, unicode)):
  30. v = "'%s'" % v.encode('utf-8')
  31. elif isinstance(v, datetime.datetime):
  32. v = "'%s'" % str(v.date())
  33. k = "str(%s.%s.date())" % (ass_start, k)
  34.  
  35. elif isinstance(v, list) and k in tags:
  36. v = [i.tag for i in v]
  37. k = '[i.tag for i in %s.%s]' % (ass_start, k)
  38.  
  39. elif isinstance(v, list) and k in l_type_to_inspect:
  40. if monsterassert:
  41. for i, nn in enumerate(v):
  42. kek_name = '%s%s' % (k[:3], i)
  43. f.write('# Assign %s %s.%s\n' % (i, ass_start, k))
  44. f.write('%s = %s.%s[%s]\n' % (kek_name, ass_start, k, i))
  45. func = partial(inner, m=v[i], override_name=kek_name)
  46. todo.append(func)
  47. #raise Breakloop
  48. continue
  49. if k == 'server':
  50. v = "'%s'" % v.baseurl
  51. k = 'server.baseurl'
  52.  
  53. if k == 'summary':
  54. v = 'u"%s"' % v
  55.  
  56. check = '=='
  57. if isinstance(v, _NA):
  58. try:
  59. k = "str(%s.%s)" % (ass_start, k)
  60. v = "'__NA__'"
  61. except Exception as e:
  62. print e
  63.  
  64. if v is None or v is True or v is False:
  65. check = 'is'
  66.  
  67. if isinstance(v, (str, unicode)) and v.startswith('<'):
  68. continue
  69.  
  70. if ass_start in k:
  71. f.write('assert %s %s %s\n' % (k, check, v))
  72. else:
  73. f.write('assert %s.%s %s %s\n' % (ass_start, k, check, v))
  74.  
  75. except Breakloop:
  76. continue
  77.  
  78. inner(m)
  79. print len(todo)
  80. for z in todo:
  81. z()
  82.  
  83. print('done')
  84.  
  85. assertme(m, monsterassert=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement